summary refs log tree commit diff stats
path: root/src/game.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.h')
-rw-r--r--src/game.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/game.h b/src/game.h index a717d53..189cabb 100644 --- a/src/game.h +++ b/src/game.h
@@ -8,6 +8,7 @@
8#include "sprite.h" 8#include "sprite.h"
9#include "map.h" 9#include "map.h"
10#include "consts.h" 10#include "consts.h"
11#include "transform_system.h"
11 12
12struct Input { 13struct Input {
13 bool left = false; 14 bool left = false;
@@ -19,14 +20,20 @@ struct Input {
19class Game { 20class Game {
20public: 21public:
21 22
23 Game() : transform_(*this) {}
24
22 int addSprite(Sprite sprite); 25 int addSprite(Sprite sprite);
23 26
24 const Sprite& getSprite(int id) const { 27 const Sprite& getSprite(int id) const {
25 return sprites_.at(id); 28 return sprites_.at(id);
26 } 29 }
27 30
28 const std::vector<Sprite>& getSprites() { 31 Sprite& getSprite(int id) {
29 return sprites_; 32 return sprites_.at(id);
33 }
34
35 const std::vector<int>& getSprites() {
36 return spriteIds_;
30 } 37 }
31 38
32 auto spriteView() const { 39 auto spriteView() const {
@@ -35,13 +42,8 @@ public:
35 }); 42 });
36 } 43 }
37 44
38 auto getSpritesByY() const { 45 TransformSystem& getTransformSystem() { return transform_; }
39 return spritesByY_ | ranges::views::transform([] (const std::tuple<int, int>& val) {
40 return std::get<1>(val);
41 });
42 }
43 46
44 void moveSprite(int id, vec2i newLoc);
45 47
46 void setSpriteState(int id, std::string state) { 48 void setSpriteState(int id, std::string state) {
47 sprites_[id].setState(std::move(state)); 49 sprites_[id].setState(std::move(state));
@@ -77,8 +79,10 @@ public:
77 79
78private: 80private:
79 81
82 TransformSystem transform_;
83
84 std::vector<int> spriteIds_;
80 std::vector<Sprite> sprites_; 85 std::vector<Sprite> sprites_;
81 std::set<std::tuple<int, int>> spritesByY_;
82 std::unique_ptr<Map> map_; 86 std::unique_ptr<Map> map_;
83 87
84 // Camera 88 // Camera