From 7747a943b1831eca1be213610a729f8071ebd5d7 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 24 Feb 2021 17:50:06 -0500 Subject: Added animation for being in a hot spring --- src/character_system.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/character_system.cpp') diff --git a/src/character_system.cpp b/src/character_system.cpp index bc02e6c..bcd3beb 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp @@ -75,7 +75,8 @@ void CharacterSystem::moveInDirection(int spriteId, Direction dir) { sprite.movementDir = dir; switch (sprite.characterMedium) { - case CharacterMedium::Normal: { + case CharacterMedium::Normal: + case CharacterMedium::Water: { game_.getSystem().setSpriteDirection(spriteId, dir); break; } @@ -171,6 +172,12 @@ void CharacterSystem::tick(double dt) { sprite.characterMedium = newMedium; setAnimationFor(spriteId, sprite.characterState); adjustPartyTrails(spriteId); + + // Stop running if you go into water. + if (newMedium == CharacterMedium::Water && + sprite.characterState == CharacterState::Running) { + stopRunning(spriteId); + } } if (sprite.characterState == CharacterState::Running) { @@ -214,7 +221,8 @@ void CharacterSystem::beginCrouch(int spriteId) { if (sprite.characterState == CharacterState::Running) { stopRunning(spriteId); } else { - if (sprite.characterMedium == CharacterMedium::Ladder) { + if (sprite.characterMedium == CharacterMedium::Ladder || + sprite.characterMedium == CharacterMedium::Water) { return; } @@ -321,6 +329,17 @@ void CharacterSystem::setAnimationFor(int spriteId, CharacterState state) { sprite.animPaused = false; } + break; + } + case CharacterMedium::Water: { + std::string animName = "swim_still"; + if (state == CharacterState::Walking) { + animName = "swim_walk"; + } + + game_.getSystem().setSpriteAnimation(spriteId, animName); + sprite.hasShadow = false; + break; } } -- cgit 1.4.1