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); |