diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-06 12:15:07 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-06 12:15:07 -0500 |
commit | ef17fecfb22ccacbf098f6869ffaf644a1a627d6 (patch) | |
tree | 96e8379a0c351b32812dd23158413a207dbf3d42 /src/transform_system.h | |
parent | 478bc11eec70e6127161ff360cd77d6893a81c42 (diff) | |
download | tanetane-ef17fecfb22ccacbf098f6869ffaf644a1a627d6.tar.gz tanetane-ef17fecfb22ccacbf098f6869ffaf644a1a627d6.tar.bz2 tanetane-ef17fecfb22ccacbf098f6869ffaf644a1a627d6.zip |
Added collidable object cache
Diffstat (limited to 'src/transform_system.h')
-rw-r--r-- | src/transform_system.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/transform_system.h b/src/transform_system.h index eb1a95b..1ad661c 100644 --- a/src/transform_system.h +++ b/src/transform_system.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <range/v3/all.hpp> | 4 | #include <range/v3/all.hpp> |
5 | #include <set> | 5 | #include <set> |
6 | #include <map> | ||
6 | #include <tuple> | 7 | #include <tuple> |
7 | #include "direction.h" | 8 | #include "direction.h" |
8 | #include "system.h" | 9 | #include "system.h" |
@@ -29,6 +30,8 @@ public: | |||
29 | 30 | ||
30 | void initSprite(int spriteId, vec2i loc); | 31 | void initSprite(int spriteId, vec2i loc); |
31 | 32 | ||
33 | void setUpCollision(int spriteId, vec2i offset, vec2i size); | ||
34 | |||
32 | void moveSprite(int spriteId, vec2i newLoc); | 35 | void moveSprite(int spriteId, vec2i newLoc); |
33 | 36 | ||
34 | auto getSpritesByY() const { | 37 | auto getSpritesByY() const { |
@@ -43,6 +46,34 @@ private: | |||
43 | 46 | ||
44 | Game& game_; | 47 | Game& game_; |
45 | std::set<std::tuple<int, int>> spritesByY_; | 48 | std::set<std::tuple<int, int>> spritesByY_; |
49 | |||
50 | struct Collidable { | ||
51 | int lower; | ||
52 | int upper; | ||
53 | |||
54 | Collidable(int lower, int upper) : lower(lower), upper(upper) {} | ||
55 | }; | ||
56 | |||
57 | using asc_collidables_type = | ||
58 | std::map< | ||
59 | std::tuple<int, int>, | ||
60 | const Collidable, | ||
61 | std::less<std::tuple<int, int>>>; | ||
62 | |||
63 | using desc_collidables_type = | ||
64 | std::map< | ||
65 | std::tuple<int, int>, | ||
66 | const Collidable, | ||
67 | std::greater<std::tuple<int, int>>>; | ||
68 | |||
69 | desc_collidables_type leftCollidables_; | ||
70 | asc_collidables_type rightCollidables_; | ||
71 | desc_collidables_type upCollidables_; | ||
72 | asc_collidables_type downCollidables_; | ||
73 | |||
74 | void addCollidable(int spriteId); | ||
75 | |||
76 | void removeCollidable(int spriteId); | ||
46 | }; | 77 | }; |
47 | 78 | ||
48 | #endif /* end of include guard: TRANSFORM_SYSTEM_H_BA2633BC */ | 79 | #endif /* end of include guard: TRANSFORM_SYSTEM_H_BA2633BC */ |