diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-03-09 13:49:03 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-03-09 13:49:03 -0500 |
| commit | aac3b1bc1ba48b6e50f661b97326ef191cce3e6c (patch) | |
| tree | dff16d2e26332a09576ff4965d0126070efa1b63 /src/character_system.cpp | |
| parent | 032f60bc2686364f4df5bfb6c9faf86b84de31a6 (diff) | |
| download | tanetane-aac3b1bc1ba48b6e50f661b97326ef191cce3e6c.tar.gz tanetane-aac3b1bc1ba48b6e50f661b97326ef191cce3e6c.tar.bz2 tanetane-aac3b1bc1ba48b6e50f661b97326ef191cce3e6c.zip | |
switch_claus starts talking when he gets ya
Kumatora, Duster, and Boney had to be given hitboxes, but they are not considered solid. #10
Diffstat (limited to 'src/character_system.cpp')
| -rw-r--r-- | src/character_system.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
| diff --git a/src/character_system.cpp b/src/character_system.cpp index 48d2a33..548bd9d 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp | |||
| @@ -18,6 +18,7 @@ void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | |||
| 18 | Sprite& leader = game_.getSprite(leaderId); | 18 | Sprite& leader = game_.getSprite(leaderId); |
| 19 | Sprite& follower = game_.getSprite(followerId); | 19 | Sprite& follower = game_.getSprite(followerId); |
| 20 | follower.orientable = false; | 20 | follower.orientable = false; |
| 21 | follower.leaderId = leaderId; | ||
| 21 | 22 | ||
| 22 | vec2i targetPos = leader.loc; | 23 | vec2i targetPos = leader.loc; |
| 23 | 24 | ||
| @@ -83,6 +84,7 @@ void CharacterSystem::breakUpParty(int leaderId) { | |||
| 83 | for (int followerId : followers) { | 84 | for (int followerId : followers) { |
| 84 | Sprite& follower = game_.getSprite(followerId); | 85 | Sprite& follower = game_.getSprite(followerId); |
| 85 | follower.trail.clear(); | 86 | follower.trail.clear(); |
| 87 | follower.leaderId = -1; | ||
| 86 | } | 88 | } |
| 87 | } | 89 | } |
| 88 | 90 | ||
| @@ -153,6 +155,7 @@ void CharacterSystem::tick(double dt) { | |||
| 153 | // Check collision. | 155 | // Check collision. |
| 154 | CollisionResult collision = game_.getSystem<TransformSystem>().checkCollision(spriteId, sprite.loc, pLoc, sprite.movementDir); | 156 | CollisionResult collision = game_.getSystem<TransformSystem>().checkCollision(spriteId, sprite.loc, pLoc, sprite.movementDir); |
| 155 | bool blocked = collision.horiz.blocked || collision.vert.blocked; | 157 | bool blocked = collision.horiz.blocked || collision.vert.blocked; |
| 158 | int colliderSpriteId = (collision.horiz.colliderSprite == -1) ? collision.vert.colliderSprite : collision.horiz.colliderSprite; | ||
| 156 | 159 | ||
| 157 | if (collision.horiz.blocked && !sprite.clipping) { | 160 | if (collision.horiz.blocked && !sprite.clipping) { |
| 158 | pLoc.x() = sprite.loc.x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; | 161 | pLoc.x() = sprite.loc.x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; |
| @@ -179,6 +182,20 @@ void CharacterSystem::tick(double dt) { | |||
| 179 | game_.getMixer().playSound("../res/sfx/bump.wav"); | 182 | game_.getMixer().playSound("../res/sfx/bump.wav"); |
| 180 | } | 183 | } |
| 181 | 184 | ||
| 185 | if (colliderSpriteId != -1 && !sprite.bumpPlayerScript.empty()) { | ||
| 186 | Sprite& collider = game_.getSprite(colliderSpriteId); | ||
| 187 | bool bumpedPlayer = collider.player; | ||
| 188 | |||
| 189 | if (!bumpedPlayer && collider.leaderId != -1) { | ||
| 190 | Sprite& colliderLeader = game_.getSprite(collider.leaderId); | ||
| 191 | bumpedPlayer = colliderLeader.player; | ||
| 192 | } | ||
| 193 | |||
| 194 | if (bumpedPlayer) { | ||
| 195 | game_.getSystem<ScriptSystem>().runScript(game_.getMap().getName(), sprite.bumpPlayerScript); | ||
| 196 | } | ||
| 197 | } | ||
| 198 | |||
| 182 | // Move everything | 199 | // Move everything |
| 183 | if (pLoc != sprite.loc) { | 200 | if (pLoc != sprite.loc) { |
| 184 | game_.getSystem<TransformSystem>().moveSprite(spriteId, pLoc); | 201 | game_.getSystem<TransformSystem>().moveSprite(spriteId, pLoc); |
