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