summary refs log tree commit diff stats
path: root/src/transform_system.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-09 20:34:59 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-09 20:34:59 -0500
commit315ca2fb388f790791c9ce372cf44e00d51e0e7f (patch)
tree99fd0a66ce191959c73fe5058e538a4dcd07100e /src/transform_system.cpp
parent0c2cd251fa0427b19f7c995bc7da7319d2ac80a5 (diff)
downloadtanetane-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.cpp31
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
11void TransformSystem::setUpCollision(int spriteId, vec2i offset, vec2i size) { 11void 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 }