summary refs log tree commit diff stats
path: root/src/character_system.cpp
diff options
context:
space:
mode:
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