diff options
Diffstat (limited to 'src/game.h')
| -rw-r--r-- | src/game.h | 27 |
1 files changed, 20 insertions, 7 deletions
| diff --git a/src/game.h b/src/game.h index bb99543..abb70ce 100644 --- a/src/game.h +++ b/src/game.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef GAME_H_E6F1396E | 1 | #ifndef GAME_H_E6F1396E |
| 2 | #define GAME_H_E6F1396E | 2 | #define GAME_H_E6F1396E |
| 3 | 3 | ||
| 4 | #include <set> | ||
| 5 | #include <range/v3/all.hpp> | ||
| 4 | #include <vector> | 6 | #include <vector> |
| 5 | #include "sprite.h" | 7 | #include "sprite.h" |
| 6 | 8 | ||
| @@ -14,23 +16,34 @@ struct Input { | |||
| 14 | class Game { | 16 | class Game { |
| 15 | public: | 17 | public: |
| 16 | 18 | ||
| 17 | int addSprite(Sprite sprite) { | 19 | int addSprite(Sprite sprite); |
| 18 | int id = sprites_.size(); | ||
| 19 | sprites_.push_back(std::move(sprite)); | ||
| 20 | return id; | ||
| 21 | } | ||
| 22 | 20 | ||
| 23 | Sprite& getSprite(int id) { | 21 | const Sprite& getSprite(int id) const { |
| 24 | return sprites_.at(id); | 22 | return sprites_.at(id); |
| 25 | } | 23 | } |
| 26 | 24 | ||
| 27 | std::vector<Sprite>& getSprites() { | 25 | const std::vector<Sprite>& getSprites() { |
| 28 | return sprites_; | 26 | return sprites_; |
| 29 | } | 27 | } |
| 30 | 28 | ||
| 29 | auto spriteView() const { | ||
| 30 | return ranges::views::transform([&] (int id) -> const Sprite& { | ||
| 31 | return sprites_.at(id); | ||
| 32 | }); | ||
| 33 | } | ||
| 34 | |||
| 35 | auto getSpritesByY() const { | ||
| 36 | return spritesByY_ | ranges::views::transform([] (const std::tuple<int, int>& val) { | ||
| 37 | return std::get<1>(val); | ||
| 38 | }); | ||
| 39 | } | ||
| 40 | |||
| 41 | void moveSprite(int id, vec2i newLoc); | ||
| 42 | |||
| 31 | private: | 43 | private: |
| 32 | 44 | ||
| 33 | std::vector<Sprite> sprites_; | 45 | std::vector<Sprite> sprites_; |
| 46 | std::set<std::tuple<int, int>> spritesByY_; | ||
| 34 | }; | 47 | }; |
| 35 | 48 | ||
| 36 | #endif /* end of include guard: GAME_H_E6F1396E */ | 49 | #endif /* end of include guard: GAME_H_E6F1396E */ |
