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 */ |