#ifndef GAME_H_E6F1396E #define GAME_H_E6F1396E #include #include #include #include #include "sprite.h" struct Input { bool left = false; bool right = false; bool up = false; bool down = false; }; class Game { public: int addSprite(Sprite sprite); const Sprite& getSprite(int id) const { return sprites_.at(id); } const std::vector& getSprites() { return sprites_; } auto spriteView() const { return ranges::views::transform([&] (int id) -> const Sprite& { return sprites_.at(id); }); } auto getSpritesByY() const { return spritesByY_ | ranges::views::transform([] (const std::tuple& val) { return std::get<1>(val); }); } void moveSprite(int id, vec2i newLoc); void setSpriteState(int id, std::string state) { sprites_[id].setState(std::move(state)); } void setSpriteDirection(int id, Direction dir) { sprites_[id].setDirection(dir); } void tickSpriteAnim() { for (Sprite& sprite : sprites_) { sprite.tickAnim(); } } void loadMapFromFile(std::string_view filename) { tson::Tileson t; map_ = t.parse(fs::path(filename)); } tson::Map* getMap() const { return map_.get(); } private: std::vector sprites_; std::set> spritesByY_; std::unique_ptr map_; }; #endif /* end of include guard: GAME_H_E6F1396E */