diff --git a/Graphics/characters/SpongeBob/AnimList.Txt b/Graphics/characters/SpongeBob/AnimList.Txt index 0d745b0b0..120f0c9dc 100644 --- a/Graphics/characters/SpongeBob/AnimList.Txt +++ b/Graphics/characters/SpongeBob/AnimList.Txt @@ -12,9 +12,7 @@ RunStart TeeterBack TeeterFront Swipe -DeathForwards DeathTar -DeathDry balloonJump blowbubble FireEnd @@ -37,3 +35,5 @@ IdleZorro Celebrate IdleBlink Electrocuted +DeathBounce + diff --git a/Graphics/characters/SpongeBob_CoralBlower/AnimList.Txt b/Graphics/characters/SpongeBob_CoralBlower/AnimList.Txt index a04bb67b3..f273c56ee 100644 --- a/Graphics/characters/SpongeBob_CoralBlower/AnimList.Txt +++ b/Graphics/characters/SpongeBob_CoralBlower/AnimList.Txt @@ -10,7 +10,6 @@ Jump TeeterBack TeeterFront Walk -DeathForwards DeathTar GetHit CrouchDown @@ -18,4 +17,5 @@ CrouchUp LookUp Celebrate IdleBlink -Electrocuted \ No newline at end of file +Electrocuted +DeathBounce diff --git a/Graphics/characters/SpongeBob_JellyFish/AnimList.Txt b/Graphics/characters/SpongeBob_JellyFish/AnimList.Txt index 9fa06b047..6bd2e45ca 100644 --- a/Graphics/characters/SpongeBob_JellyFish/AnimList.Txt +++ b/Graphics/characters/SpongeBob_JellyFish/AnimList.Txt @@ -13,7 +13,6 @@ TeeterBack TeeterFront Swipe DeathTar -DeathForwards GetHit CrouchDown CrouchUp @@ -22,4 +21,5 @@ IdleWeapon IdleNet Celebrate IdleBlink -Electrocuted \ No newline at end of file +Electrocuted +DeathBounce diff --git a/Graphics/characters/SpongeBob_JellyLauncher/AnimList.Txt b/Graphics/characters/SpongeBob_JellyLauncher/AnimList.Txt index 8041c49f4..ecd24c045 100644 --- a/Graphics/characters/SpongeBob_JellyLauncher/AnimList.Txt +++ b/Graphics/characters/SpongeBob_JellyLauncher/AnimList.Txt @@ -14,7 +14,6 @@ RunStart TeeterBack TeeterFront DeathTar -DeathForwards GetHit CrouchDown CrouchUp @@ -22,4 +21,5 @@ LookUp IdleWeapon Celebrate IdleBlink -Electrocuted \ No newline at end of file +Electrocuted +DeathBounce diff --git a/Graphics/characters/SpongeBob_Net/AnimList.Txt b/Graphics/characters/SpongeBob_Net/AnimList.Txt index 131526dbc..ec7f97534 100644 --- a/Graphics/characters/SpongeBob_Net/AnimList.Txt +++ b/Graphics/characters/SpongeBob_Net/AnimList.Txt @@ -1,4 +1,3 @@ - ButtBounceEnd ButtBounceStart Fall @@ -13,7 +12,6 @@ RunStart TeeterBack TeeterFront Swipe -DeathForwards DeathTar GetHit CrouchDown @@ -22,4 +20,5 @@ LookUp IdleWeapon Celebrate IdleBlink -Electrocuted \ No newline at end of file +Electrocuted +DeathBounce diff --git a/Graphics/characters/SpongeBob_Wand/AnimList.Txt b/Graphics/characters/SpongeBob_Wand/AnimList.Txt index b7800600d..1ad7fb2f6 100644 --- a/Graphics/characters/SpongeBob_Wand/AnimList.Txt +++ b/Graphics/characters/SpongeBob_Wand/AnimList.Txt @@ -14,11 +14,11 @@ RunStop RunStart TeeterBack TeeterFront -DeathForwards DeathTar GetHit CrouchDown CrouchUp Celebrate IdleBlink -Electrocuted \ No newline at end of file +Electrocuted +DeathBounce diff --git a/source/paul/animtest.cpp b/source/paul/animtest.cpp index bedbbb2ce..c538618a7 100644 --- a/source/paul/animtest.cpp +++ b/source/paul/animtest.cpp @@ -94,9 +94,7 @@ static const char *s_animNames[NUM_ANIM_SPONGEBOB]= "ANIM_SPONGEBOB_TEETERBACK", "ANIM_SPONGEBOB_TEETERFRONT", "ANIM_SPONGEBOB_SWIPE", - "ANIM_SPONGEBOB_DEATHFORWARDS", "ANIM_SPONGEBOB_DEATHTAR", - "ANIM_SPONGEBOB_DEATHDRY", "ANIM_SPONGEBOB_BALLOONJUMP", "ANIM_SPONGEBOB_BLOWBUBBLE", "ANIM_SPONGEBOB_FIREEND", @@ -118,6 +116,7 @@ static const char *s_animNames[NUM_ANIM_SPONGEBOB]= "ANIM_SPONGEBOB_CELEBRATE", "ANIM_SPONGEBOB_IDLEBLINK", "ANIM_SPONGEBOB_ELECTROCUTED", + "ANIM_SPONGEBOB_DEATHBOUNCE", }; diff --git a/source/player/player.cpp b/source/player/player.cpp index f72ae0b7d..3b4d8948b 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -90,6 +90,10 @@ #include "gfx\sprbank.h" #endif +#ifndef __GFX_OTPOS_H__ +#include "gfx\otpos.h" +#endif + #ifndef __PLATFORM_PLATFORM_H__ #include "platform\platform.h" #endif @@ -334,9 +338,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_NET_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS, ANIM_SPONGEBOB_NET_DEATHTAR, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_FIREEND, @@ -358,6 +360,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_NET_CELEBRATE, // ANIM_SPONGEBOB_CELEBRATE, ANIM_SPONGEBOB_NET_IDLEBLINK, // ANIM_SPONGEBOB_IDLEBLINK, ANIM_SPONGEBOB_NET_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_NET_DEATHBOUNCE, // ANIM_SPONGEBOB_DEATHBOUNCE, }, // PLAYER_ADDON_CORALBLOWER, @@ -376,9 +379,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_CORALBLOWER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_CORALBLOWER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_CORALBLOWER_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS, ANIM_SPONGEBOB_CORALBLOWER_DEATHTAR, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BLOWBUBBLE, ANIM_SPONGEBOB_CORALBLOWER_FIREEND, // ANIM_SPONGEBOB_FIREEND, @@ -400,6 +401,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_CORALBLOWER_CELEBRATE, // ANIM_SPONGEBOB_CELEBRATE, ANIM_SPONGEBOB_CORALBLOWER_IDLEBLINK, // ANIM_SPONGEBOB_IDLEBLINK, ANIM_SPONGEBOB_CORALBLOWER_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_CORALBLOWER_DEATHBOUNCE, // ANIM_SPONGEBOB_DEATHBOUNCE, }, // PLAYER_ADDON_JELLYLAUNCHER, @@ -418,9 +420,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS, ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHTAR, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BLOWBUBBLE, ANIM_SPONGEBOB_JELLYLAUNCHER_FIREEND, // ANIM_SPONGEBOB_FIREEND, @@ -442,6 +442,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_JELLYLAUNCHER_CELEBRATE, // ANIM_SPONGEBOB_CELEBRATE, ANIM_SPONGEBOB_JELLYLAUNCHER_IDLEBLINK, // ANIM_SPONGEBOB_IDLEBLINK, ANIM_SPONGEBOB_JELLYLAUNCHER_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHBOUNCE, // ANIM_SPONGEBOB_DEATHBOUNCE, }, // PLAYER_ADDON_BUBBLEWAND, @@ -460,9 +461,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_WAND_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_WAND_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_WAND_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS, ANIM_SPONGEBOB_WAND_DEATHTAR, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, ANIM_SPONGEBOB_WAND_BLOWBUBBLE, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_FIREEND, @@ -484,6 +483,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_WAND_CELEBRATE, // ANIM_SPONGEBOB_CELEBRATE, ANIM_SPONGEBOB_WAND_IDLEBLINK, // ANIM_SPONGEBOB_IDLEBLINK, ANIM_SPONGEBOB_WAND_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_WAND_DEATHBOUNCE, // ANIM_SPONGEBOB_DEATHBOUNCE, }, // PLAYER_ADDON_JELLYFISHINNET @@ -502,9 +502,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= ANIM_SPONGEBOB_JELLYFISH_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_JELLYFISH_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_JELLYFISH_SWIPE, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_JELLYFISH_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS, ANIM_SPONGEBOB_JELLYFISH_DEATHTAR, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_FIREEND, @@ -525,7 +523,8 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= -1, // ANIM_SPONGEBOB_IDLEZORRO, ANIM_SPONGEBOB_JELLYFISH_CELEBRATE, // ANIM_SPONGEBOB_CELEBRATE, ANIM_SPONGEBOB_JELLYFISH_IDLEBLINK, // ANIM_SPONGEBOB_IDLEBLINK, - ANIM_SPONGEBOB_JELLYFISH_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_JELLYFISH_ELECTROCUTED, // ANIM_SPONGEBOB_ELECTROCUTED, + ANIM_SPONGEBOB_JELLYFISH_DEATHBOUNCE, // ANIM_SPONGEBOB_DEATHBOUNCE, }, // PLAYER_ADDON_GLOVE @@ -544,9 +543,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= -1, // ANIM_SPONGEBOB_TEETERBACK, -1, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_SWIPE, - -1, // ANIM_SPONGEBOB_DEATHFORWARDS, -1, // ANIM_SPONGEBOB_DEATHTAR, - -1, // ANIM_SPONGEBOB_DEATHDRY -1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_FIREEND, @@ -568,6 +565,7 @@ s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= -1, // ANIM_SPONGEBOB_CELEBRATE, -1, // ANIM_SPONGEBOB_IDLEBLINK, -1, // ANIM_SPONGEBOB_ELECTROCUTED, + -1, // ANIM_SPONGEBOB_DEATHBOUNCE, }, }; @@ -2004,6 +2002,8 @@ void CPlayer::respawn() m_canExitLevel=false; m_teleportPending=false; + + setSBOTPos(OTPOS__ACTOR_POS); } /*---------------------------------------------------------------------- @@ -2384,6 +2384,34 @@ void CPlayer::dieYouPorousFreak(DEATH_TYPE _deathType) } +/*---------------------------------------------------------------------- + Function: + Purpose: When SB dies and falls off the screen, he needs to be drawn in + front of the level - hence this + Params: + Returns: + ---------------------------------------------------------------------- */ +void CPlayer::setSBOTPosToFront() +{ + setSBOTPos(0); +} + +void CPlayer::setSBOTPos(int _ot) +{ + int i; + + for(i=0;iSetOtPos(_ot); + } + } + + m_actorGfx->SetOtPos(_ot); +} + + /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/player/player.h b/source/player/player.h index 58375483b..4a03a0883 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -364,6 +364,11 @@ public: DEATH_TYPE getDeathType() {return m_deathType;} void dieYouPorousFreak(DEATH_TYPE _deathType=DEATHTYPE__NORMAL); + void setSBOTPosToFront(); +private: + void setSBOTPos(int _ot); + + private: int m_numSpatulasHeld; int m_spatulaWarningTimer; diff --git a/source/player/pmdead.cpp b/source/player/pmdead.cpp index d5be7bdd7..fd71b0047 100644 --- a/source/player/pmdead.cpp +++ b/source/player/pmdead.cpp @@ -53,8 +53,6 @@ Vars ---- */ -static int anim=0; - /*---------------------------------------------------------------------- Function: Purpose: @@ -69,19 +67,21 @@ void CPlayerModeDead::enter() { default: case DEATHTYPE__NORMAL: - m_deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS; - break; case DEATHTYPE__DRYUP: - m_deathAnim=ANIM_SPONGEBOB_DEATHDRY; - break; case DEATHTYPE__SQUASH: - m_deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS; + m_deathAnim=ANIM_SPONGEBOB_DEATHBOUNCE; + m_deathMovementType=BOUNCE_OFF_SCREEN; + m_bounceVelocity.vx=BOUNCE_INITIALX*m_player->getFacing(); + m_bounceVelocity.vy=BOUNCE_INITIALY; + m_player->setSBOTPosToFront(); break; case DEATHTYPE__LIQUID: m_deathAnim=ANIM_SPONGEBOB_DEATHTAR; + m_deathMovementType=STAY_STILL; break; case DEATHTYPE__FALL_TO_DEATH: m_deathAnim=-1; + m_deathMovementType=FALL_TO_DEATH; break; } @@ -126,7 +126,44 @@ void CPlayerModeDead::think() if(m_player->getPos().vy<(GameScene.GetLevel().getMapHeight()+4)*16) { - m_player->moveVertical(5); + if(m_deathMovementType==FALL_TO_DEATH) + { + m_player->moveVertical(5); + } + else if(m_deathMovementType==BOUNCE_OFF_SCREEN) + { + DVECTOR pos=m_player->getPos(); + pos.vx+=m_bounceVelocity.vx>>BOUNCE_VELOCITY_SHIFT; + pos.vy+=m_bounceVelocity.vy>>BOUNCE_VELOCITY_SHIFT; + if(pos.vy<0)pos.vy=0; + m_player->setPos(pos); + + if(m_bounceVelocity.vyBOUNCE_MAXY) + { + m_bounceVelocity.vy=BOUNCE_MAXY; + } + } + + if(m_bounceVelocity.vx<0) + { + m_bounceVelocity.vx+=BOUNCE_MOVEX; + if(m_bounceVelocity.vx>0) + { + m_bounceVelocity.vx=0; + } + } + else if(m_bounceVelocity.vx>0) + { + m_bounceVelocity.vx-=BOUNCE_MOVEX; + if(m_bounceVelocity.vx<0) + { + m_bounceVelocity.vx=0; + } + } + } } if(!m_killed) @@ -145,43 +182,5 @@ void CPlayerModeDead::think() } } } - -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -/* -void CPlayerModeDead::render(DVECTOR *_pos) -{ - DVECTOR deadSbPos; - - deadSbPos=*_pos; - deadSbPos.vy-=m_deadTime; - - m_player->renderSb(&deadSbPos,ANIM_SPONGEBOB_DEATHANGLE,0); -} -*/ - - - -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CPlayerModeDead::fall() -{ - /* - m_yVelocity+=getPlayerMetrics()->m_metric[DEFAULT_PLAYER_PLAYER_GRAVITY]; - if(m_yVelocity>=metrics->m_metric[DEFAULT_PLAYER_TERMINAL_VELOCITY]<m_metric[DEFAULT_PLAYER_TERMINAL_VELOCITY]<