summary refs log tree commit diff stats
path: root/src/character_system.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-10 18:12:15 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-10 18:12:15 -0500
commit312a3738359cc4841cb3ce675583094becd8e830 (patch)
tree7028d5fa8fdc0f98653e4638452daeaa4120ce41 /src/character_system.cpp
parentee7077c7ff0c22a4909c15ab34aed777b45b977e (diff)
downloadtanetane-312a3738359cc4841cb3ce675583094becd8e830.tar.gz
tanetane-312a3738359cc4841cb3ce675583094becd8e830.tar.bz2
tanetane-312a3738359cc4841cb3ce675583094becd8e830.zip
Running is preserved across screen transitions
Diffstat (limited to 'src/character_system.cpp')
-rw-r--r--src/character_system.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/character_system.cpp b/src/character_system.cpp index 888914f..94833a8 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp
@@ -156,21 +156,26 @@ void CharacterSystem::endCrouch(int spriteId) {
156 Sprite& sprite = game_.getSprite(spriteId); 156 Sprite& sprite = game_.getSprite(spriteId);
157 157
158 if (sprite.characterState == CharacterState::Crouching) { 158 if (sprite.characterState == CharacterState::Crouching) {
159 setPartyState(spriteId, CharacterState::Running); 159 startRunning(spriteId);
160 }
161}
160 162
161 for (int followerId : sprite.followers) { 163void CharacterSystem::startRunning(int spriteId) {
162 // Halve the movement buffer for the followers. 164 Sprite& sprite = game_.getSprite(spriteId);
163 Sprite& follower = game_.getSprite(followerId); 165 setPartyState(spriteId, CharacterState::Running);
164 std::deque<Movement> newMove; 166
165 167 for (int followerId : sprite.followers) {
166 while (!follower.trail.empty()) { 168 // Halve the movement buffer for the followers.
167 newMove.push_back(follower.trail.front()); 169 Sprite& follower = game_.getSprite(followerId);
168 follower.trail.pop_front(); 170 std::deque<Movement> newMove;
169 follower.trail.pop_front();
170 }
171 171
172 follower.trail = std::move(newMove); 172 while (!follower.trail.empty()) {
173 newMove.push_back(follower.trail.front());
174 follower.trail.pop_front();
175 follower.trail.pop_front();
173 } 176 }
177
178 follower.trail = std::move(newMove);
174 } 179 }
175} 180}
176 181