mirror of
https://github.com/sigonasr2/hamster.git
synced 2025-04-18 06:39:39 -05:00
Added burrow animation effect.
This commit is contained in:
parent
a3214adc77
commit
12432dd61a
@ -3937,6 +3937,7 @@
|
||||
</tile>
|
||||
<tile id="687" type="TileProps">
|
||||
<properties>
|
||||
<property name="Solid" type="bool" value="true"/>
|
||||
<property name="Terrain Type" type="int" propertytype="TerrainType" value="1"/>
|
||||
</properties>
|
||||
</tile>
|
||||
@ -3954,6 +3955,7 @@
|
||||
</tile>
|
||||
<tile id="690" type="TileProps">
|
||||
<properties>
|
||||
<property name="Solid" type="bool" value="true"/>
|
||||
<property name="Terrain Type" type="int" propertytype="TerrainType" value="1"/>
|
||||
</properties>
|
||||
</tile>
|
||||
@ -4534,6 +4536,7 @@
|
||||
<tile id="835" type="TileProps">
|
||||
<properties>
|
||||
<property name="Solid" type="bool" value="true"/>
|
||||
<property name="Terrain Type" type="int" propertytype="TerrainType" value="1"/>
|
||||
</properties>
|
||||
</tile>
|
||||
<tile id="836" type="TileProps">
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,6 +118,7 @@ class Hamster{
|
||||
float raceFinishAnimTimer{0.f};
|
||||
std::pair<Timer,vf2d>collectedCheckpointInfo{INFINITY,{}};
|
||||
float burrowTimer{};
|
||||
float burrowImgShrinkTimer{};
|
||||
uint16_t enteredTunnel{};
|
||||
public:
|
||||
Hamster(const vf2d spawnPos,const std::string&img,const PlayerControlled IsPlayerControlled=NPC);
|
||||
|
Loading…
x
Reference in New Issue
Block a user