#ifndef SPRITE_H_70503825 #define SPRITE_H_70503825 #include #include #include #include "direction.h" #include "renderer.h" #include "vector.h" 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 vec2i& size() const { return size_; } vec2i& size() { return size_; } int getFrame() const { return 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 }; vec2i size_; Direction curDir_ = Direction::down; std::string state_; int curAnim_ = 0; int curFrame_ = 0; std::vector> animations_; std::map> stateDirToAnim_; }; #endif /* end of include guard: SPRITE_H_70503825 */