diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-09 20:34:59 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-09 20:34:59 -0500 |
commit | 315ca2fb388f790791c9ce372cf44e00d51e0e7f (patch) | |
tree | 99fd0a66ce191959c73fe5058e538a4dcd07100e /src/transform_system.cpp | |
parent | 0c2cd251fa0427b19f7c995bc7da7319d2ac80a5 (diff) | |
download | tanetane-315ca2fb388f790791c9ce372cf44e00d51e0e7f.tar.gz tanetane-315ca2fb388f790791c9ce372cf44e00d51e0e7f.tar.bz2 tanetane-315ca2fb388f790791c9ce372cf44e00d51e0e7f.zip |
Added trigger zones to the map
Walking into a trigger zone runs a script.
Diffstat (limited to 'src/transform_system.cpp')
-rw-r--r-- | src/transform_system.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/transform_system.cpp b/src/transform_system.cpp index 3d65acb..2ec133e 100644 --- a/src/transform_system.cpp +++ b/src/transform_system.cpp | |||
@@ -8,11 +8,12 @@ void TransformSystem::initSprite(int spriteId, vec2i loc) { | |||
8 | spritesByY_.emplace(loc.y(), spriteId); | 8 | spritesByY_.emplace(loc.y(), spriteId); |
9 | } | 9 | } |
10 | 10 | ||
11 | void TransformSystem::setUpCollision(int spriteId, vec2i offset, vec2i size) { | 11 | void TransformSystem::setUpCollision(int spriteId, vec2i offset, vec2i size, bool solid) { |
12 | Sprite& sprite = game_.getSprite(spriteId); | 12 | Sprite& sprite = game_.getSprite(spriteId); |
13 | sprite.collidable = true; | 13 | sprite.collidable = true; |
14 | sprite.collisionOffset = offset; | 14 | sprite.collisionOffset = offset; |
15 | sprite.collisionSize = size; | 15 | sprite.collisionSize = size; |
16 | sprite.solid = solid; | ||
16 | 17 | ||
17 | addCollidable(spriteId); | 18 | addCollidable(spriteId); |
18 | } | 19 | } |
@@ -74,9 +75,11 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i newLoc, Dire | |||
74 | it++) { | 75 | it++) { |
75 | if (newColDR.y() >= it->second.lower && | 76 | if (newColDR.y() >= it->second.lower && |
76 | newColUL.y() <= it->second.upper) { | 77 | newColUL.y() <= it->second.upper) { |
77 | result.horiz.blocked = true; | 78 | int colliderSpriteId = std::get<1>(it->first); |
79 | Sprite& collider = game_.getSprite(colliderSpriteId); | ||
80 | result.horiz.blocked = collider.solid; | ||
78 | result.horiz.dir = Direction::right; | 81 | result.horiz.dir = Direction::right; |
79 | result.horiz.colliderSprite = std::get<1>(it->first); | 82 | result.horiz.colliderSprite = colliderSpriteId; |
80 | 83 | ||
81 | break; | 84 | break; |
82 | } | 85 | } |
@@ -104,9 +107,11 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i newLoc, Dire | |||
104 | it++) { | 107 | it++) { |
105 | if (newColDR.y() >= it->second.lower && | 108 | if (newColDR.y() >= it->second.lower && |
106 | newColUL.y() <= it->second.upper) { | 109 | newColUL.y() <= it->second.upper) { |
107 | result.horiz.blocked = true; | 110 | int colliderSpriteId = std::get<1>(it->first); |
111 | Sprite& collider = game_.getSprite(colliderSpriteId); | ||
112 | result.horiz.blocked = collider.solid; | ||
108 | result.horiz.dir = Direction::left; | 113 | result.horiz.dir = Direction::left; |
109 | result.horiz.colliderSprite = std::get<1>(it->first); | 114 | result.horiz.colliderSprite = colliderSpriteId; |
110 | 115 | ||
111 | break; | 116 | break; |
112 | } | 117 | } |
@@ -134,9 +139,11 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i newLoc, Dire | |||
134 | it++) { | 139 | it++) { |
135 | if (newColDR.x() >= it->second.lower && | 140 | if (newColDR.x() >= it->second.lower && |
136 | newColUL.x() <= it->second.upper) { | 141 | newColUL.x() <= it->second.upper) { |
137 | result.vert.blocked = true; | 142 | int colliderSpriteId = std::get<1>(it->first); |
138 | result.vert.dir = Direction::down; | 143 | Sprite& collider = game_.getSprite(colliderSpriteId); |
139 | result.vert.colliderSprite = std::get<1>(it->first); | 144 | result.horiz.blocked = collider.solid; |
145 | result.horiz.dir = Direction::down; | ||
146 | result.horiz.colliderSprite = colliderSpriteId; | ||
140 | 147 | ||
141 | break; | 148 | break; |
142 | } | 149 | } |
@@ -164,9 +171,11 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i newLoc, Dire | |||
164 | it++) { | 171 | it++) { |
165 | if (newColDR.x() >= it->second.lower && | 172 | if (newColDR.x() >= it->second.lower && |
166 | newColUL.x() <= it->second.upper) { | 173 | newColUL.x() <= it->second.upper) { |
167 | result.vert.blocked = true; | 174 | int colliderSpriteId = std::get<1>(it->first); |
168 | result.vert.dir = Direction::up; | 175 | Sprite& collider = game_.getSprite(colliderSpriteId); |
169 | result.vert.colliderSprite = std::get<1>(it->first); | 176 | result.horiz.blocked = collider.solid; |
177 | result.horiz.dir = Direction::up; | ||
178 | result.horiz.colliderSprite = colliderSpriteId; | ||
170 | 179 | ||
171 | break; | 180 | break; |
172 | } | 181 | } |