summary refs log tree commit diff stats
path: root/src/transform_system.h
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-06 12:15:07 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-06 12:15:07 -0500
commitef17fecfb22ccacbf098f6869ffaf644a1a627d6 (patch)
tree96e8379a0c351b32812dd23158413a207dbf3d42 /src/transform_system.h
parent478bc11eec70e6127161ff360cd77d6893a81c42 (diff)
downloadtanetane-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.h31
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 */