holesome/src/sprites/sprite_sheet.hpp

38 lines
1 KiB
C++
Raw Normal View History

#ifndef HOLESOME_SPRITE_SHEET_HPP
#define HOLESOME_SPRITE_SHEET_HPP
#include <memory>
#include <SFML/Graphics/Texture.hpp>
#include <SFML/Graphics/Sprite.hpp>
#include "animated_sprite.hpp"
#include "single_sprite.hpp"
class SpriteSheet
{
public:
SpriteSheet(const std::shared_ptr<sf::Texture>& texture, int columns, int rows);
[[nodiscard]] std::shared_ptr<SingleSprite> getSprite(int sequenceIndex) const;
[[nodiscard]] std::shared_ptr<AnimatedSprite> getAnimation(int startingSequenceIndex, int numberOfFrames) const;
[[nodiscard]] std::shared_ptr<sf::Texture> getTexture() const;
2023-06-11 13:24:27 +02:00
[[nodiscard]] sf::IntRect getTextureRect(int sequenceIndex) const;
[[nodiscard]] int getColumns() const;
[[nodiscard]] int getRows() const;
2023-06-11 13:24:27 +02:00
private:
2023-06-11 13:24:27 +02:00
int columns;
int rows;
std::shared_ptr<sf::Texture> texture;
std::vector<sf::Sprite> sprites;
[[nodiscard]] sf::Rect<int> getRect(int spriteWidth, int spriteHeight, int row, int column) const;
};
#endif //HOLESOME_SPRITE_SHEET_HPP