Creating a SpriteComponent
The next component that we're going to make is a SpriteComponent. This will provide an object with either a static or an animated sprite. It's a behavior that is commonly reused through many objects so is a great candidate to be moved into a component.
Encapsulating sprite behavior
Currently, all the animation-related behavior is inherited from the base Object class. The following code consists of all the sprite- and animation-related functions and variables that we'll pull from Object into its own class:
public:
virtual void Draw(sf::RenderWindow &window, float timeDelta);
bool SetSprite(sf::Texture& texture, bool isSmooth, int frames = 1, int frameSpeed = 0);
sf::Sprite& GetSprite();
int GetFrameCount() const;
bool IsAnimated();
void SetAnimated(bool isAnimated);
protected:
sf::Sprite m_sprite;
private:
void NextFrame();
private:
int m_animationSpeed;
bool m_isAnimated;
int m_frameCount;
int m_currentFrame...