From 12432dd61aed474c94de4f512c417058706617f2 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Wed, 21 Aug 2024 18:00:48 -0500 Subject: [PATCH] Added burrow animation effect. --- assets/Terrain.tsx | 3 +++ src/Hamster.cpp | 9 +++++++++ src/Hamster.h | 1 + 3 files changed, 13 insertions(+) diff --git a/assets/Terrain.tsx b/assets/Terrain.tsx index 12c723a..3156dc6 100644 --- a/assets/Terrain.tsx +++ b/assets/Terrain.tsx @@ -3937,6 +3937,7 @@ + @@ -3954,6 +3955,7 @@ + @@ -4534,6 +4536,7 @@ + diff --git a/src/Hamster.cpp b/src/Hamster.cpp index 108b402..4b5f7eb 100644 --- a/src/Hamster.cpp +++ b/src/Hamster.cpp @@ -129,6 +129,9 @@ void Hamster::UpdateHamsters(const float fElapsedTime){ }break; case BURROWING:{ h.burrowTimer-=fElapsedTime; + h.burrowImgShrinkTimer-=fElapsedTime; + h.shrinkEffectColor=BLACK; + h.imgScale=std::max(0.f,util::lerp(0,1,h.burrowImgShrinkTimer*2.f)); if(h.burrowTimer<=0.f){ h.burrowTimer=3.f; h.SetState(BURROW_WAIT); @@ -139,6 +142,8 @@ void Hamster::UpdateHamsters(const float fElapsedTime){ if(h.burrowTimer<=0.f){ h.burrowTimer=1.f; h.SetState(SURFACING); + h.imgScale=0.f; + h.burrowImgShrinkTimer=0.5f; } const Tunnel&enteredTunnel{HamsterGame::Game().GetTunnels().at(h.enteredTunnel)}; const vf2d destinationTunnelPos{HamsterGame::Game().GetTunnels().at(enteredTunnel.linkedTo).worldPos+vi2d{8,8}}; @@ -146,6 +151,8 @@ void Hamster::UpdateHamsters(const float fElapsedTime){ }break; case SURFACING:{ h.burrowTimer-=fElapsedTime; + h.burrowImgShrinkTimer-=fElapsedTime; + h.imgScale=std::min(1.f,util::lerp(1,0,h.burrowImgShrinkTimer*2.f)); vf2d targetDirVec{0.f,-16.f}; const Tunnel&enteredTunnel{HamsterGame::Game().GetTunnels().at(h.enteredTunnel)}; const vf2d destinationTunnelPos{HamsterGame::Game().GetTunnels().at(enteredTunnel.linkedTo).worldPos+vi2d{8,8}}; @@ -164,6 +171,7 @@ void Hamster::UpdateHamsters(const float fElapsedTime){ h.pos=walkOutTunnelDest.lerp(destinationTunnelPos,h.burrowTimer); if(h.burrowTimer<=0.f){ h.SetState(Hamster::NORMAL); + h.imgScale=1.f; } }break; } @@ -407,6 +415,7 @@ void Hamster::HandleCollision(){ SetState(Hamster::BURROWING); burrowTimer=1.f; enteredTunnel=id; + burrowImgShrinkTimer=0.5f; } } } diff --git a/src/Hamster.h b/src/Hamster.h index fe458bb..8f8adfd 100644 --- a/src/Hamster.h +++ b/src/Hamster.h @@ -118,6 +118,7 @@ class Hamster{ float raceFinishAnimTimer{0.f}; std::paircollectedCheckpointInfo{INFINITY,{}}; float burrowTimer{}; + float burrowImgShrinkTimer{}; uint16_t enteredTunnel{}; public: Hamster(const vf2d spawnPos,const std::string&img,const PlayerControlled IsPlayerControlled=NPC);