From 312a3738359cc4841cb3ce675583094becd8e830 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 10 Feb 2021 18:12:15 -0500 Subject: Running is preserved across screen transitions --- src/character_system.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'src/character_system.cpp') 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) { Sprite& sprite = game_.getSprite(spriteId); if (sprite.characterState == CharacterState::Crouching) { - setPartyState(spriteId, CharacterState::Running); + startRunning(spriteId); + } +} - for (int followerId : sprite.followers) { - // Halve the movement buffer for the followers. - Sprite& follower = game_.getSprite(followerId); - std::deque newMove; - - while (!follower.trail.empty()) { - newMove.push_back(follower.trail.front()); - follower.trail.pop_front(); - follower.trail.pop_front(); - } +void CharacterSystem::startRunning(int spriteId) { + Sprite& sprite = game_.getSprite(spriteId); + setPartyState(spriteId, CharacterState::Running); + + for (int followerId : sprite.followers) { + // Halve the movement buffer for the followers. + Sprite& follower = game_.getSprite(followerId); + std::deque newMove; - follower.trail = std::move(newMove); + while (!follower.trail.empty()) { + newMove.push_back(follower.trail.front()); + follower.trail.pop_front(); + follower.trail.pop_front(); } + + follower.trail = std::move(newMove); } } -- cgit 1.4.1