diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-03-10 11:53:11 -0500 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2021-03-11 17:33:15 -0500 |
| commit | 4c29543e44deb7a327b21b0af6a85a92e83ff103 (patch) | |
| tree | d8522851bb86a7872100ec800392d48a2de99f7b /src/transform_system.cpp | |
| parent | 883490ba63110fca757610a169621953bf2bd288 (diff) | |
| download | tanetane-4c29543e44deb7a327b21b0af6a85a92e83ff103.tar.gz tanetane-4c29543e44deb7a327b21b0af6a85a92e83ff103.tar.bz2 tanetane-4c29543e44deb7a327b21b0af6a85a92e83ff103.zip | |
Fixed improperly calculated sprite hitboxes
Also made sprite hitboxes bigger. #15
Diffstat (limited to 'src/transform_system.cpp')
| -rw-r--r-- | src/transform_system.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
| diff --git a/src/transform_system.cpp b/src/transform_system.cpp index 055f546..4ed47c0 100644 --- a/src/transform_system.cpp +++ b/src/transform_system.cpp | |||
| @@ -61,9 +61,9 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 | |||
| 61 | vec2i horizMovement = { newLoc.x(), curLoc.y() }; | 61 | vec2i horizMovement = { newLoc.x(), curLoc.y() }; |
| 62 | 62 | ||
| 63 | vec2i oldColUL = curLoc + sprite.collisionOffset; | 63 | vec2i oldColUL = curLoc + sprite.collisionOffset; |
| 64 | vec2i oldColDR = oldColUL + sprite.collisionSize; | 64 | vec2i oldColDR = oldColUL + sprite.collisionSize - vec2i{1,1}; |
| 65 | vec2i newColUL = horizMovement + sprite.collisionOffset; | 65 | vec2i newColUL = horizMovement + sprite.collisionOffset; |
| 66 | vec2i newColDR = newColUL + sprite.collisionSize; | 66 | vec2i newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; |
| 67 | 67 | ||
| 68 | vec2i oldTileUL = oldColUL / map.getTileSize(); | 68 | vec2i oldTileUL = oldColUL / map.getTileSize(); |
| 69 | vec2i newTileUL = newColUL / map.getTileSize(); | 69 | vec2i newTileUL = newColUL / map.getTileSize(); |
| @@ -89,8 +89,8 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 | |||
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | if (!result.horiz.blocked && enclosureZone) { | 91 | if (!result.horiz.blocked && enclosureZone) { |
| 92 | if (oldColDR.x() <= enclosureZone->dr.x() && | 92 | if (oldColDR.x() <= enclosureZone->dr.x()-1 && |
| 93 | newColDR.x() > enclosureZone->dr.x()) { | 93 | newColDR.x() > enclosureZone->dr.x()-1) { |
| 94 | result.horiz.blocked = true; | 94 | result.horiz.blocked = true; |
| 95 | result.horiz.dir = Direction::right; | 95 | result.horiz.dir = Direction::right; |
| 96 | } | 96 | } |
| @@ -168,9 +168,9 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 | |||
| 168 | } | 168 | } |
| 169 | 169 | ||
| 170 | oldColUL = effectiveCurLoc + sprite.collisionOffset; | 170 | oldColUL = effectiveCurLoc + sprite.collisionOffset; |
| 171 | oldColDR = oldColUL + sprite.collisionSize; | 171 | oldColDR = oldColUL + sprite.collisionSize - vec2i{1,1}; |
| 172 | newColUL = vertMovement + sprite.collisionOffset; | 172 | newColUL = vertMovement + sprite.collisionOffset; |
| 173 | newColDR = newColUL + sprite.collisionSize; | 173 | newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; |
| 174 | 174 | ||
| 175 | oldTileUL = oldColUL / map.getTileSize(); | 175 | oldTileUL = oldColUL / map.getTileSize(); |
| 176 | newTileUL = newColUL / map.getTileSize(); | 176 | newTileUL = newColUL / map.getTileSize(); |
| @@ -191,8 +191,8 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 | |||
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | if (!result.vert.blocked && enclosureZone) { | 193 | if (!result.vert.blocked && enclosureZone) { |
| 194 | if (oldColDR.y() <= enclosureZone->dr.y() && | 194 | if (oldColDR.y() <= enclosureZone->dr.y()-1 && |
| 195 | newColDR.y() > enclosureZone->dr.y()) { | 195 | newColDR.y() > enclosureZone->dr.y()-1) { |
| 196 | result.vert.blocked = true; | 196 | result.vert.blocked = true; |
| 197 | result.vert.dir = Direction::down; | 197 | result.vert.dir = Direction::down; |
| 198 | } | 198 | } |
| @@ -268,7 +268,7 @@ CharacterMedium TransformSystem::getMediumAtPosition(int spriteId, vec2i newLoc) | |||
| 268 | const Map& map = game_.getMap(); | 268 | const Map& map = game_.getMap(); |
| 269 | 269 | ||
| 270 | vec2i newColUL = newLoc + sprite.collisionOffset; | 270 | vec2i newColUL = newLoc + sprite.collisionOffset; |
| 271 | vec2i newColDR = newColUL + sprite.collisionSize; | 271 | vec2i newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; |
| 272 | vec2i newTileUL = newColUL / map.getTileSize(); | 272 | vec2i newTileUL = newColUL / map.getTileSize(); |
| 273 | vec2i newTileDR = newColDR / map.getTileSize(); | 273 | vec2i newTileDR = newColDR / map.getTileSize(); |
| 274 | 274 | ||
