#ifndef SPRITE_H_70503825 #define SPRITE_H_70503825 #include #include #include #include "direction.h" #include "renderer.h" #include "vector.h" struct SpriteFrame { SDL_Rect srcRect; vec2i center; vec2i size; }; class Sprite { public: Sprite(std::string_view filename, Renderer& renderer); int getTextureId() const { return textureId_; } const vec2i& loc() const { return loc_; } vec2i& loc() { return loc_; } const SpriteFrame& getFrame() const { return frames_.at(animations_[curAnim_][curFrame_]); } void setDirection(Direction dir); Direction getDirection() const { return curDir_; } void setState(std::string state); void tickAnim(); private: void updateAnimation(); int textureId_; vec2i loc_ { 0, 0 }; Direction curDir_ = Direction::down; std::string state_; int curAnim_ = 0; int curFrame_ = 0; std::vector frames_; std::vector> animations_; std::map> stateDirToAnim_; }; #endif /* end of include guard: SPRITE_H_70503825 */