This commit is contained in:
Paul 2001-05-17 18:42:59 +00:00
parent 49e1b9bfda
commit 12b6a1f2cb
9 changed files with 113 additions and 45 deletions

View file

@ -173,11 +173,6 @@ void CFrontEndScene::init()
m_font=new ("frontendfont") FontBank(); m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont); m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE); m_font->setJustification(FontBank::JUST_CENTRE);
#ifndef __E3__
CGameSlotManager::eraseGameSlot(0);
CGameSlotManager::setActiveSlot(0);
#endif
} }

View file

@ -145,12 +145,10 @@ void CFrontEndMainTitles::init()
50,20,200,20, 50,20,200,20,
STR__FRONTEND__OPTIONS, STR__FRONTEND__OPTIONS,
&m_gotoOptionsFlag,true); &m_gotoOptionsFlag,true);
#ifdef __E3__
CGUIFactory::createValueButtonFrame(m_mainMenu, CGUIFactory::createValueButtonFrame(m_mainMenu,
50,40,200,20, 50,40,200,20,
STR__FRONTEND__CREDITS, STR__FRONTEND__CREDITS,
&m_gotoCreditsFlag,true); &m_gotoCreditsFlag,true);
#endif
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -447,7 +447,9 @@ void CLevel::initThings(int _respawningLevel)
createThisPickup=false; createThisPickup=false;
} }
if((PICKUP_TYPE)ItemList->Type==PICKUP__NET&&_respawningLevel) if(((PICKUP_TYPE)ItemList->Type==PICKUP__NET||
(PICKUP_TYPE)ItemList->Type==PICKUP__HELMET)&&
_respawningLevel)
{ {
createThisPickup=false; createThisPickup=false;
} }

View file

@ -134,7 +134,6 @@ extern int s_globalLevelSelectThing;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CMapScene::init() void CMapScene::init()
{ {
#ifdef __E3__
m_font=new ("map screen font") FontBank(); m_font=new ("map screen font") FontBank();
m_font->initialise(&standardFont); m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE); m_font->setJustification(FontBank::JUST_CENTRE);
@ -150,10 +149,9 @@ void CMapScene::init()
m_screenImage=MemAlloc(512*256*2,"MapScreen"); m_screenImage=MemAlloc(512*256*2,"MapScreen");
generateMapScreenImage(); generateMapScreenImage();
SetScreenImage((u8*)m_screenImage); SetScreenImage((u8*)m_screenImage);
#endif
m_readyToExit=false; m_readyToExit=false;
// CFader::setFadingIn(CFader::BLACK_FADE); CFader::setFadingIn(CFader::BLACK_FADE);
} }
@ -165,12 +163,10 @@ void CMapScene::init()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CMapScene::shutdown() void CMapScene::shutdown()
{ {
#ifdef __E3__
ClearScreenImage(); ClearScreenImage();
MemFree(m_screenImage); MemFree(m_screenImage);
m_spriteBank->dump(); delete m_spriteBank; m_spriteBank->dump(); delete m_spriteBank;
m_font->dump(); delete m_font; m_font->dump(); delete m_font;
#endif
} }
@ -182,7 +178,6 @@ void CMapScene::shutdown()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CMapScene::render() void CMapScene::render()
{ {
#ifdef __E3__
int i,x,y,xpos,ypos; int i,x,y,xpos,ypos;
int compilerGetsComfused; int compilerGetsComfused;
char spatCount[10]; char spatCount[10];
@ -223,7 +218,6 @@ m_font->setColour(0,255,0);
m_font->print(24,24,buf); m_font->print(24,24,buf);
m_font->setColour(0,0,0); m_font->setColour(0,0,0);
m_font->print(25,25,buf); m_font->print(25,25,buf);
#endif
} }
@ -235,7 +229,6 @@ m_font->print(25,25,buf);
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CMapScene::think(int _frames) void CMapScene::think(int _frames)
{ {
#ifdef __E3__
if(!CFader::isFading()&&!m_readyToExit) if(!CFader::isFading()&&!m_readyToExit)
{ {
// Change chapter // Change chapter
@ -314,14 +307,6 @@ void CMapScene::think(int _frames)
GameState::setNextScene(&GameScene); GameState::setNextScene(&GameScene);
} }
} }
#else
if(!m_readyToExit)
{
s_globalLevelSelectThing=0;
m_readyToExit=true;
GameState::setNextScene(&GameScene);
}
#endif
} }

View file

@ -38,6 +38,7 @@ class CHelmetPickup : public CBasePickup
{ {
public: public:
virtual void init(); virtual void init();
virtual int dontKillDuringLevelRespawn() {return true;}
virtual DVECTOR getSizeForPlacement(); virtual DVECTOR getSizeForPlacement();
virtual void collect(class CPlayer *_player); virtual void collect(class CPlayer *_player);

View file

@ -112,8 +112,8 @@
#include <ACTOR_SPONGEBOB_GLASSES_Anim.h> #include <ACTOR_SPONGEBOB_GLASSES_Anim.h>
#endif #endif
//#ifndef __ANIM_SPONGEBOB_BUBBLEWAND_HEADER__ //#ifndef __ANIM_SPONGEBOB_WAND_HEADER__
//#include <ACTOR_SPONGEBOB_BUBBLEWAND_Anim.h> //#include <ACTOR_SPONGEBOB_WAND_Anim.h>
//#endif //#endif
#ifndef __ANIM_SPONGEBOB_JELLYFISH_HEADER__ #ifndef __ANIM_SPONGEBOB_JELLYFISH_HEADER__
@ -325,7 +325,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE, ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_NET_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS,
ANIM_SPONGEBOB_NET_DEATHSQUASH, // ANIM_SPONGEBOB_DEATHSQUASH,
ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND, -1, // ANIM_SPONGEBOB_FIREEND,
@ -356,7 +359,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
ANIM_SPONGEBOB_CORALBLOWER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_CORALBLOWER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_CORALBLOWER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_CORALBLOWER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE, -1, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_CORALBLOWER_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS,
ANIM_SPONGEBOB_CORALBLOWER_DEATHSQUASH, // ANIM_SPONGEBOB_DEATHSQUASH,
ANIM_SPONGEBOB_CORALBLOWER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, ANIM_SPONGEBOB_CORALBLOWER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
ANIM_SPONGEBOB_CORALBLOWER_FIREEND, // ANIM_SPONGEBOB_FIREEND, ANIM_SPONGEBOB_CORALBLOWER_FIREEND, // ANIM_SPONGEBOB_FIREEND,
@ -387,7 +393,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE, -1, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS,
ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHSQUASH, // ANIM_SPONGEBOB_DEATHSQUASH,
ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
ANIM_SPONGEBOB_JELLYLAUNCHER_FIREEND, // ANIM_SPONGEBOB_FIREEND, ANIM_SPONGEBOB_JELLYLAUNCHER_FIREEND, // ANIM_SPONGEBOB_FIREEND,
@ -418,7 +427,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
ANIM_SPONGEBOB_GLASSES_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_GLASSES_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_GLASSES_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_GLASSES_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
ANIM_SPONGEBOB_GLASSES_SWIPE, // ANIM_SPONGEBOB_SWIPE, ANIM_SPONGEBOB_GLASSES_SWIPE, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_GLASSES_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS,
ANIM_SPONGEBOB_GLASSES_DEATHSQUASH, // ANIM_SPONGEBOB_DEATHSQUASH,
ANIM_SPONGEBOB_GLASSES_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, ANIM_SPONGEBOB_GLASSES_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
ANIM_SPONGEBOB_GLASSES_BALLOONJUMP, // ANIM_SPONGEBOB_BALLOONJUMP, ANIM_SPONGEBOB_GLASSES_BALLOONJUMP, // ANIM_SPONGEBOB_BALLOONJUMP,
ANIM_SPONGEBOB_GLASSES_BLOWBUBBLE, // ANIM_SPONGEBOB_BLOWBUBBLE, ANIM_SPONGEBOB_GLASSES_BLOWBUBBLE, // ANIM_SPONGEBOB_BLOWBUBBLE,
ANIM_SPONGEBOB_GLASSES_FIREEND, // ANIM_SPONGEBOB_FIREEND, ANIM_SPONGEBOB_GLASSES_FIREEND, // ANIM_SPONGEBOB_FIREEND,
@ -449,7 +461,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
-1, // ANIM_SPONGEBOB_TEETERBACK, -1, // ANIM_SPONGEBOB_TEETERBACK,
-1, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE, -1, // ANIM_SPONGEBOB_SWIPE,
-1, // ANIM_SPONGEBOB_DEATHFORWARDS,
-1, // ANIM_SPONGEBOB_DEATHSQUASH,
-1, // ANIM_SPONGEBOB_DEATHSPIN, -1, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND, -1, // ANIM_SPONGEBOB_FIREEND,
@ -480,7 +495,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
ANIM_SPONGEBOB_JELLYFISH_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, ANIM_SPONGEBOB_JELLYFISH_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_JELLYFISH_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, ANIM_SPONGEBOB_JELLYFISH_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
ANIM_SPONGEBOB_JELLYFISH_SWIPE, // ANIM_SPONGEBOB_SWIPE, ANIM_SPONGEBOB_JELLYFISH_SWIPE, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_JELLYFISH_DEATHFORWARDS, // ANIM_SPONGEBOB_DEATHFORWARDS,
ANIM_SPONGEBOB_JELLYFISH_DEATHSQUASH, // ANIM_SPONGEBOB_DEATHSQUASH,
ANIM_SPONGEBOB_JELLYFISH_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, ANIM_SPONGEBOB_JELLYFISH_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND, -1, // ANIM_SPONGEBOB_FIREEND,
@ -511,7 +529,10 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
-1, // ANIM_SPONGEBOB_TEETERBACK, -1, // ANIM_SPONGEBOB_TEETERBACK,
-1, // ANIM_SPONGEBOB_TEETERFRONT, -1, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE, -1, // ANIM_SPONGEBOB_SWIPE,
-1, // ANIM_SPONGEBOB_DEATHFORWARDS,
-1, // ANIM_SPONGEBOB_DEATHSQUASH,
-1, // ANIM_SPONGEBOB_DEATHSPIN, -1, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_DEATHDRY
-1, // ANIM_SPONGEBOB_BALLOONJUMP, -1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE, -1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND, -1, // ANIM_SPONGEBOB_FIREEND,
@ -650,7 +671,6 @@ void CPlayer::think(int _frames)
int i; int i;
#if !defined(__USER_CDBUILD__)
if(PadGetDown(0)&PAD_L1) if(PadGetDown(0)&PAD_L1)
{ {
oldmode=m_currentMode; oldmode=m_currentMode;
@ -661,7 +681,6 @@ else if(oldmode!=-1&&!(PadGetHeld(0)&PAD_L1))
newmode=oldmode; newmode=oldmode;
oldmode=-1; oldmode=-1;
} }
#endif
#ifdef __USER_paul__ #ifdef __USER_paul__
if(PadGetHeld(0)&PAD_L1&&PadGetHeld(0)&PAD_L2) if(PadGetHeld(0)&PAD_L1&&PadGetHeld(0)&PAD_L2)
@ -878,7 +897,7 @@ if(newmode!=-1)
m_healthWaterLevel-=waterDrainSpeed*_frames; m_healthWaterLevel-=waterDrainSpeed*_frames;
if(m_healthWaterLevel<=0) if(m_healthWaterLevel<=0)
{ {
dieYouPorousFreak(); dieYouPorousFreak(DEATHTYPE__DRYUP);
} }
} }
@ -986,8 +1005,14 @@ int stateDebugY=60;
#endif #endif
#ifdef __USER_paul__ #ifdef __USER_paul__
#define NUM_LASTPOS 50 #define NUM_LASTPOS 100
static DVECTOR lastpos[NUM_LASTPOS]; typedef struct
{
int vx,vy;
int h;
int onp;
}POSMEM;
static POSMEM lastpos[NUM_LASTPOS];
static int lastposnum=0; static int lastposnum=0;
#endif #endif
@ -1001,7 +1026,6 @@ void CPlayer::render()
CPlayerThing::render(); CPlayerThing::render();
#ifdef __E3__
#ifdef _STATE_DEBUG_ #ifdef _STATE_DEBUG_
char buf[100]; char buf[100];
#ifdef __USER_paul__ #ifdef __USER_paul__
@ -1011,13 +1035,12 @@ sprintf(buf,"Pos: %04d,%04d",Pos.vx,Pos.vy);
#endif #endif
m_fontBank->print(stateDebugX,stateDebugY,buf); m_fontBank->print(stateDebugX,stateDebugY,buf);
#endif #endif
#endif
#ifdef __USER_paul__ #ifdef __USER_paul__
if(PadGetDown(0)&PAD_R1) if(PadGetDown(0)&PAD_R1)
{ {
DVECTOR clear={0,0}; POSMEM clear={0,0,0,false};
for(int i=0;i<NUM_LASTPOS;i++) for(int i=0;i<NUM_LASTPOS;i++)
{ {
lastpos[i]=clear; lastpos[i]=clear;
@ -1026,15 +1049,38 @@ if(PadGetDown(0)&PAD_R1)
if(Pos.vx!=lastpos[lastposnum].vx||Pos.vy!=lastpos[lastposnum].vy) if(Pos.vx!=lastpos[lastposnum].vx||Pos.vy!=lastpos[lastposnum].vy)
{ {
lastposnum=(lastposnum+1)%NUM_LASTPOS; lastposnum=(lastposnum+1)%NUM_LASTPOS;
lastpos[lastposnum]=Pos; POSMEM *p=&lastpos[lastposnum];
p->vx=Pos.vx;
p->vy=Pos.vy;
p->onp=isOnPlatform()!=NULL;
if(p->onp)
{
p->h=getHeightFromPlatformNoGround(Pos.vx,Pos.vy,150);
}
else
{
p->h=getHeightFromGround(Pos.vx,Pos.vy,150);
}
} }
POSMEM *p=lastpos;
for(int i=0;i<NUM_LASTPOS;i++) for(int i=0;i<NUM_LASTPOS;i++)
{ {
int x,y; int x,y;
x=lastpos[i].vx-m_cameraPos.vx; x=p->vx-m_cameraPos.vx;
y=lastpos[i].vy-m_cameraPos.vy; y=p->vy-m_cameraPos.vy;
DrawLine(x-4,y-4,x+4,y+4,0,0,255,0); DrawLine(x-4,y-4,x+4,y+4,0,0,255,0);
DrawLine(x-4,y+4,x+4,y-4,0,0,255,0); DrawLine(x-4,y+4,x+4,y-4,0,0,255,0);
y=y+p->h;
if(p->onp)
{
DrawLine(x-6,y,x+6,y,255,0,255,0);
}
else
{
DrawLine(x-6,y,x+6,y,128,0,255,0);
}
p++;
} }
#endif #endif
@ -1304,6 +1350,8 @@ void CPlayer::registerAddon(PLAYER_ADDONS _addon)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::setMode(PLAYER_MODE _mode) void CPlayer::setMode(PLAYER_MODE _mode)
{ {
int state;
if(_mode==PLAYER_MODE_DEAD) if(_mode==PLAYER_MODE_DEAD)
{ {
ASSERT(m_currentMode!=PLAYER_MODE_DEAD); ASSERT(m_currentMode!=PLAYER_MODE_DEAD);
@ -1311,8 +1359,22 @@ void CPlayer::setMode(PLAYER_MODE _mode)
} }
resetPlayerCollisionSizeToBase(); resetPlayerCollisionSizeToBase();
if(m_currentPlayerModeClass)
{
state=m_currentPlayerModeClass->getState();
}
else
{
state=STATE_IDLE;
}
m_currentMode=_mode; m_currentMode=_mode;
m_currentPlayerModeClass=s_playerModes[_mode]; m_currentPlayerModeClass=s_playerModes[_mode];
if(!m_currentPlayerModeClass->setState(state))
{
m_currentPlayerModeClass->setState(STATE_IDLE);
m_moveVelocity.vx=m_moveVelocity.vy=0;
}
m_currentPlayerModeClass->enter(); m_currentPlayerModeClass->enter();
} }
@ -1815,10 +1877,11 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage,REACT_DIRECTION _reactDirection,CTh
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::dieYouPorousFreak() void CPlayer::dieYouPorousFreak(DEATH_TYPE _deathType)
{ {
ASSERT(m_currentMode!=PLAYER_MODE_DEAD); ASSERT(m_currentMode!=PLAYER_MODE_DEAD);
m_deathType=_deathType;
CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_DEFEATED_JINGLE); CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_DEFEATED_JINGLE);
setMode(PLAYER_MODE_DEAD); setMode(PLAYER_MODE_DEAD);
} }

View file

@ -125,6 +125,13 @@ typedef enum
DAMAGE__KILL_OUTRIGHT, DAMAGE__KILL_OUTRIGHT,
}DAMAGE_TYPE; }DAMAGE_TYPE;
typedef enum
{
DEATHTYPE__NORMAL,
DEATHTYPE__DRYUP,
DEATHTYPE__SQUASH,
} DEATH_TYPE;
typedef enum typedef enum
{ {
REACT__LEFT=-1, REACT__LEFT=-1,
@ -309,6 +316,8 @@ private:
PLAYER_MODE m_currentMode; PLAYER_MODE m_currentMode;
PLAYER_MODE m_lastModeBeforeDeath; PLAYER_MODE m_lastModeBeforeDeath;
public:
DEATH_TYPE getDeathType() {return m_deathType;}
private: private:
int m_lives; int m_lives;
@ -316,7 +325,8 @@ private:
int m_healthWaterLevel; int m_healthWaterLevel;
int m_healthReactFrames; int m_healthReactFrames;
void dieYouPorousFreak(); void dieYouPorousFreak(DEATH_TYPE _deathType=DEATHTYPE__NORMAL);
DEATH_TYPE m_deathType;
void updatePadInput(); void updatePadInput();

View file

@ -57,8 +57,24 @@
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerModeDead::enter() void CPlayerModeDead::enter()
{ {
int deathAnim;
m_deadTime=0; m_deadTime=0;
m_player->setAnimNo(ANIM_SPONGEBOB_DEATHSPIN);
switch(m_player->getDeathType())
{
default:
case DEATHTYPE__NORMAL:
deathAnim=ANIM_SPONGEBOB_DEATHSPIN;
break;
case DEATHTYPE__DRYUP:
deathAnim=ANIM_SPONGEBOB_DEATHDRY;
break;
case DEATHTYPE__SQUASH:
deathAnim=ANIM_SPONGEBOB_DEATHSQUASH;
break;
}
m_player->setAnimNo(deathAnim);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -183,8 +183,6 @@ void CPlayerMode::respawn() {m_player->respawn();}
void CPlayerModeBase::enter() void CPlayerModeBase::enter()
{ {
m_fallFrames=0; m_fallFrames=0;
setState(STATE_IDLE);
zeroMoveVelocity();
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------