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 +++++++++++++++++++++-- src/map.cpp | 2 ++ src/sprite.h | 3 ++- 3 files changed, 25 insertions(+), 3 deletions(-) (limited to 'src') 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; } } diff --git a/src/map.cpp b/src/map.cpp index 0425962..23445e4 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -47,6 +47,8 @@ Map::Map(std::string_view name) : name_(name) { } else if (property.getName() == "medium") { if (property.getStringValue() == "ladder") { tile.medium = CharacterMedium::Ladder; + } else if (property.getStringValue() == "water") { + tile.medium = CharacterMedium::Water; } } } diff --git a/src/sprite.h b/src/sprite.h index bb78442..32a082c 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -36,7 +36,8 @@ enum class CharacterState { enum class CharacterMedium { Normal, - Ladder + Ladder, + Water }; struct Movement { -- cgit 1.4.1