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 --- res/maps/hallucination.tsx | 30 ++++++++++++++++++++++++++++++ res/sprites/boney.png | Bin 77904 -> 79614 bytes res/sprites/boney_anim.txt | 18 +++++++++++++++++- res/sprites/boney_frames.txt | 10 +++++++++- res/sprites/duster.png | Bin 97607 -> 99956 bytes res/sprites/duster_anim.txt | 18 +++++++++++++++++- res/sprites/duster_frames.txt | 18 +++++++++++++++++- res/sprites/kuma_anim.txt | 18 +++++++++++++++++- res/sprites/kumatora.png | Bin 67143 -> 68906 bytes res/sprites/kumatora_frames.txt | 18 +++++++++++++++++- res/sprites/lucas.png | Bin 90846 -> 96860 bytes res/sprites/lucas_anim.txt | 18 +++++++++++++++++- res/sprites/lucas_frames.txt | 37 ++++++++++++++++++++++++++++++++++++- src/character_system.cpp | 23 +++++++++++++++++++++-- src/map.cpp | 2 ++ src/sprite.h | 3 ++- 16 files changed, 202 insertions(+), 11 deletions(-) diff --git a/res/maps/hallucination.tsx b/res/maps/hallucination.tsx index 6317866..130bc9c 100644 --- a/res/maps/hallucination.tsx +++ b/res/maps/hallucination.tsx @@ -1557,6 +1557,16 @@ + + + + + + + + + + @@ -1572,6 +1582,21 @@ + + + + + + + + + + + + + + + @@ -1587,6 +1612,11 @@ + + + + + diff --git a/res/sprites/boney.png b/res/sprites/boney.png index 9c699ad..4c98d3c 100644 Binary files a/res/sprites/boney.png and b/res/sprites/boney.png differ diff --git a/res/sprites/boney_anim.txt b/res/sprites/boney_anim.txt index 3c8c139..9066ee0 100644 --- a/res/sprites/boney_anim.txt +++ b/res/sprites/boney_anim.txt @@ -49,4 +49,20 @@ barking[up_right]: 5,37,45,37,45,37,45 barking[right]: 6,38,46,38,46,38,46 barking[down_right]: 7,39,47,39,47,39,47 climb[up]%60: 240#5,241#4,242#8,243#2,244#2,245#2,246#2,247#2,248#2,249#2,250#2,251#3,252#3 -climb[down]%60: 253#5,254#4,255#8,256#2,257#2,258#2,259#2,260#2,261#2,262#2,263#2,264#3,265#3 \ No newline at end of file +climb[down]%60: 253#5,254#4,255#8,256#2,257#2,258#2,259#2,260#2,261#2,262#2,263#2,264#3,265#3 +swim_still[down]: 366 +swim_still[down_left]: 367 +swim_still[left]: 368 +swim_still[up_left]: 369 +swim_still[up]: 370 +swim_still[up_right]: 371 +swim_still[right]: 372 +swim_still[down_right]: 373 +swim_walk[down]: 366 +swim_walk[down_left]: 367 +swim_walk[left]: 368 +swim_walk[up_left]: 369 +swim_walk[up]: 370 +swim_walk[up_right]: 371 +swim_walk[right]: 372 +swim_walk[down_right]: 373 \ No newline at end of file diff --git a/res/sprites/boney_frames.txt b/res/sprites/boney_frames.txt index 786cac5..b950382 100644 --- a/res/sprites/boney_frames.txt +++ b/res/sprites/boney_frames.txt @@ -1,6 +1,6 @@ 32,32 cell size 10 frames per row -366 frames +374 frames 16,24,8,24 32,24,16,24 @@ -368,3 +368,11 @@ 16,24,8,21 17,24,9,21 17,24,8,21 +16,16,8,16 +16,16,9,16 +32,16,16,16 +32,16,16,16 +16,16,8,16 +32,16,16,16 +32,16,16,16 +16,16,7,16 diff --git a/res/sprites/duster.png b/res/sprites/duster.png index 48e8261..5403d5c 100644 Binary files a/res/sprites/duster.png and b/res/sprites/duster.png differ diff --git a/res/sprites/duster_anim.txt b/res/sprites/duster_anim.txt index da5b0fe..45562c0 100644 --- a/res/sprites/duster_anim.txt +++ b/res/sprites/duster_anim.txt @@ -41,4 +41,20 @@ run[up_right]: 77,85,93,101,109 run[right]: 78,86,94,102,110 run[down_right]: 79,87,95,103,111 climb[up]%60: 200#10,201,202,208#10,207,206,203#10,204,205,208#10,207,206 -climb[down]%60: 200#10,201,202,208#10,207,206,203#10,204,205,208#10,207,206 \ No newline at end of file +climb[down]%60: 200#10,201,202,208#10,207,206,203#10,204,205,208#10,207,206 +swim_still[down]: 331#57,339,331,339 +swim_still[down_left]: 332#57,332,340,332 +swim_still[left]: 333#57,341,333,341 +swim_still[up_left]: 334 +swim_still[up]: 335 +swim_still[up_right]: 336 +swim_still[right]: 337#57,345,337,345 +swim_still[down_right]: 338#57,346,338,346 +swim_walk[down]: 331 +swim_walk[down_left]: 332 +swim_walk[left]: 333 +swim_walk[up_left]: 334 +swim_walk[up]: 335 +swim_walk[up_right]: 336 +swim_walk[right]: 337 +swim_walk[down_right]: 338 \ No newline at end of file diff --git a/res/sprites/duster_frames.txt b/res/sprites/duster_frames.txt index 8335bf3..30415b6 100644 --- a/res/sprites/duster_frames.txt +++ b/res/sprites/duster_frames.txt @@ -1,6 +1,6 @@ 40,32 cell size 10 frames per row -331 frames +347 frames 32,32,16,32 32,32,16,32 @@ -333,3 +333,19 @@ 32,32,16,32 33,32,17,32 33,32,16,32 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 +32,24,16,24 diff --git a/res/sprites/kuma_anim.txt b/res/sprites/kuma_anim.txt index 532a0f0..8ffb634 100644 --- a/res/sprites/kuma_anim.txt +++ b/res/sprites/kuma_anim.txt @@ -49,4 +49,20 @@ talk[up_right]: 37,45 talk[right]: 38,46 talk[down_right]: 39,47 climb[up]%60: 257#10,258,259,265#10,264,263,260#10,261,262,265#10,264,263 -climb[down]%60: 257#10,258,259,265#10,264,263,260#10,261,262,265#10,264,263 \ No newline at end of file +climb[down]%60: 257#10,258,259,265#10,264,263,260#10,261,262,265#10,264,263 +swim_still[down]: 274#80,282,274,282 +swim_still[down_left]: 275#80,283,275,283 +swim_still[left]: 276#80,284,276,284 +swim_still[up_left]: 277 +swim_still[up]: 278 +swim_still[up_right]: 279 +swim_still[right]: 280#80,288,280,288 +swim_still[down_right]: 281#80,289,281,289 +swim_walk[down]: 274 +swim_walk[down_left]: 275 +swim_walk[left]: 276 +swim_walk[up_left]: 277 +swim_walk[up]: 278 +swim_walk[up_right]: 279 +swim_walk[right]: 280 +swim_walk[down_right]: 281 \ No newline at end of file diff --git a/res/sprites/kumatora.png b/res/sprites/kumatora.png index 6fe4b26..bc40798 100644 Binary files a/res/sprites/kumatora.png and b/res/sprites/kumatora.png differ diff --git a/res/sprites/kumatora_frames.txt b/res/sprites/kumatora_frames.txt index 14aecc6..7f2a1de 100644 --- a/res/sprites/kumatora_frames.txt +++ b/res/sprites/kumatora_frames.txt @@ -1,6 +1,6 @@ 33,32 cell size 10 frames per row -274 frames +290 frames 32,32,16,32 32,32,16,32 @@ -276,3 +276,19 @@ 32,32,16,32 32,32,17,32 32,32,15,32 +32,16,16,16 +32,16,16,16 +16,16,7,16 +16,16,7,16 +32,16,16,16 +16,16,9,16 +16,16,9,16 +32,16,16,16 +32,16,16,16 +32,16,16,16 +16,16,7,16 +16,16,7,16 +16,16,7,16 +16,16,7,16 +16,16,9,16 +32,16,16,16 diff --git a/res/sprites/lucas.png b/res/sprites/lucas.png index dd053e5..82875d4 100644 Binary files a/res/sprites/lucas.png and b/res/sprites/lucas.png differ diff --git a/res/sprites/lucas_anim.txt b/res/sprites/lucas_anim.txt index f6ed06e..5eb7d91 100644 --- a/res/sprites/lucas_anim.txt +++ b/res/sprites/lucas_anim.txt @@ -43,4 +43,20 @@ run[down_right]: 74,82,90,98 lightning_electrocute![down]: 116,117,118,116,117,118 lightning_collapse![down]: 119,120,121,122 climb[up]%60: 123#10,124,125,128#10,127,126,129#10,130,131,128#10,127,126 -climb[down]%60: 123#10,124,125,128#10,127,126,129#10,130,131,128#10,127,126 \ No newline at end of file +climb[down]%60: 123#10,124,125,128#10,127,126,129#10,130,131,128#10,127,126 +swim_still[down]: 399#53,407,399,407 +swim_still[down_left]: 400#53,408,400,408 +swim_still[left]: 401#53,409,401,409 +swim_still[up_left]: 402 +swim_still[up]: 403 +swim_still[up_right]: 404 +swim_still[right]: 405#53,413,405,413 +swim_still[down_right]: 406#53,414,406,414 +swim_walk[down]: 399 +swim_walk[down_left]: 400 +swim_walk[left]: 401 +swim_walk[up_left]: 402 +swim_walk[up]: 403 +swim_walk[up_right]: 404 +swim_walk[right]: 405 +swim_walk[down_right]: 406 \ No newline at end of file diff --git a/res/sprites/lucas_frames.txt b/res/sprites/lucas_frames.txt index e64d1e1..a1bc88f 100644 --- a/res/sprites/lucas_frames.txt +++ b/res/sprites/lucas_frames.txt @@ -1,6 +1,6 @@ 32,64 cell size 10 frames per row -399 frames +434 frames 16,32,8,32 16,32,8,32 @@ -401,3 +401,38 @@ 16,24,9,25 16,24,9,24 16,32,8,32 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,9,15 +16,16,9,15 +16,16,9,15 +16,16,9,15 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,16,9,15 +16,16,9,15 +32,32,15,23 +32,32,15,23 +32,32,15,23 +16,24,8,23 +16,16,8,15 +16,16,8,15 +16,16,8,15 +16,24,8,15 +16,24,8,15 +16,24,8,15 +16,24,8,15 +16,24,8,15 +16,24,8,15 +16,16,8,15 +32,24,16,23 +32,24,16,23 +32,32,16,23 +32,24,16,15 +32,24,16,15 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