2024-03-16 11:31:39 -04:00
|
|
|
#include "PyTexture.h"
|
|
|
|
|
|
|
|
|
|
PyTexture::PyTexture(std::string filename, int sprite_w, int sprite_h)
|
2024-03-16 21:53:24 -04:00
|
|
|
: source(filename), sprite_width(sprite_w), sprite_height(sprite_h)
|
2024-03-16 11:31:39 -04:00
|
|
|
{
|
2024-03-16 21:53:24 -04:00
|
|
|
texture = sf::Texture();
|
|
|
|
|
texture.loadFromFile(source);
|
2024-03-16 14:52:35 -04:00
|
|
|
auto size = texture.getSize();
|
|
|
|
|
sheet_width = size.x;
|
|
|
|
|
sheet_height = size.y;
|
|
|
|
|
if (sheet_width % sprite_width != 0 || sheet_height % sprite_height != 0)
|
|
|
|
|
{
|
|
|
|
|
std::cout << "Warning: Texture `" << source << "` is not an even number of sprite widths or heights across." << std::endl
|
|
|
|
|
<< "Sprite size given was " << sprite_w << "x" << sprite_h << "px but the file has a resolution of " << sheet_width << "x" << sheet_height << "px." << std::endl;
|
|
|
|
|
}
|
2024-03-16 11:31:39 -04:00
|
|
|
}
|
|
|
|
|
|
2024-03-16 21:53:24 -04:00
|
|
|
sf::Sprite PyTexture::sprite(int index, sf::Vector2f pos, sf::Vector2f s)
|
2024-03-16 11:31:39 -04:00
|
|
|
{
|
|
|
|
|
int tx = index % sprite_width, ty = index / sprite_height;
|
|
|
|
|
auto ir = sf::IntRect(tx * sprite_width, ty * sprite_height, sprite_width, sprite_height);
|
|
|
|
|
auto sprite = sf::Sprite(texture, ir);
|
2024-03-16 14:52:35 -04:00
|
|
|
sprite.setPosition(pos);
|
|
|
|
|
sprite.setScale(s);
|
2024-03-16 11:31:39 -04:00
|
|
|
return sprite;
|
|
|
|
|
}
|