This commit is contained in:
parent
22ac2f0d4a
commit
d5b89cc1e7
3 changed files with 45 additions and 21 deletions
|
@ -2608,10 +2608,18 @@ int CPlayer::moveVertical(int _moveDistance)
|
|||
for(i=0;i<2;i++)
|
||||
{
|
||||
if(colHeightBefore[i]>=0&&colHeightAfter[i]<=0)
|
||||
{
|
||||
int goingIntoThisBlock=blockAfter[i]&COLLISION_TYPE_MASK;
|
||||
if(goingIntoThisBlock!=COLLISION_TYPE_FLAG_DEATH_FALL)
|
||||
{
|
||||
moveRequired[i]=colHeightAfter[i];
|
||||
hitGround=true;
|
||||
if(!hitThisSuspectBlock)hitThisSuspectBlock=blockAfter[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
moveRequired[i]=0;
|
||||
}
|
||||
if(!hitThisSuspectBlock)hitThisSuspectBlock=goingIntoThisBlock;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2720,6 +2728,7 @@ int CPlayer::moveVertical(int _moveDistance)
|
|||
// Stood on any important types of collision?
|
||||
hitThisSuspectBlock=CGameScene::getCollision()->getCollisionBlock(pos.vx,pos.vy+_moveDistance);
|
||||
}
|
||||
|
||||
pos.vy+=_moveDistance;
|
||||
setPlayerPos(&pos);
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@
|
|||
Vars
|
||||
---- */
|
||||
|
||||
static int anim=0;
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
|
@ -61,38 +63,35 @@
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeDead::enter()
|
||||
{
|
||||
int deathAnim;
|
||||
|
||||
m_deadTime=0;
|
||||
|
||||
switch(m_player->getDeathType())
|
||||
{
|
||||
default:
|
||||
case DEATHTYPE__NORMAL:
|
||||
deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS;
|
||||
m_deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS;
|
||||
break;
|
||||
case DEATHTYPE__DRYUP:
|
||||
deathAnim=ANIM_SPONGEBOB_DEATHDRY;
|
||||
m_deathAnim=ANIM_SPONGEBOB_DEATHDRY;
|
||||
break;
|
||||
case DEATHTYPE__SQUASH:
|
||||
deathAnim=ANIM_SPONGEBOB_DEATHSQUASH;
|
||||
m_deathAnim=ANIM_SPONGEBOB_DEATHSQUASH;
|
||||
break;
|
||||
case DEATHTYPE__LIQUID:
|
||||
deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS;
|
||||
m_deathAnim=ANIM_SPONGEBOB_DEATHFORWARDS;
|
||||
break;
|
||||
case DEATHTYPE__FALL_TO_DEATH:
|
||||
deathAnim=-1;
|
||||
m_deathAnim=-1;
|
||||
break;
|
||||
}
|
||||
|
||||
if(deathAnim!=-1)
|
||||
if(m_deathAnim!=-1)
|
||||
{
|
||||
m_player->setAnimNo(deathAnim);
|
||||
m_player->setAnimNo(m_deathAnim);
|
||||
}
|
||||
|
||||
CSoundMediator::stopSpeech();
|
||||
|
||||
|
||||
m_killed=false;
|
||||
}
|
||||
|
||||
|
@ -107,15 +106,28 @@ void CPlayerModeDead::think()
|
|||
m_deadTime++;
|
||||
if(m_player->getDeathType()!=DEATHTYPE__FALL_TO_DEATH)
|
||||
{
|
||||
if(m_deadTime<m_player->getAnimFrameCount())
|
||||
int frameCount,frame;
|
||||
|
||||
if(m_deathAnim!=-1)
|
||||
{
|
||||
m_player->setAnimFrame(m_deadTime);
|
||||
m_player->setAnimNo(m_deathAnim);
|
||||
}
|
||||
frameCount=m_player->getAnimFrameCount()-1;
|
||||
if(m_deadTime<=frameCount)
|
||||
{
|
||||
frame=m_deadTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
frame=frameCount;
|
||||
}
|
||||
m_player->setAnimFrame(frame);
|
||||
}
|
||||
|
||||
m_player->moveVertical(5);
|
||||
|
||||
if(!m_killed)
|
||||
{
|
||||
if((m_deadTime>DEATH_DELAY&&m_player->getPadInputDown()&(PI_JUMP|PI_FIRE))||
|
||||
m_deadTime>DEATH_TIMEOUT)
|
||||
{
|
||||
|
@ -126,6 +138,7 @@ void CPlayerModeDead::think()
|
|||
m_killed=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
|
|
|
@ -49,12 +49,14 @@ private:
|
|||
DEATH_TIMEOUT=5*60, // SB respawns automatically after this long
|
||||
};
|
||||
int m_deadTime;
|
||||
int m_deathAnim;
|
||||
|
||||
void fall();
|
||||
int m_yVelocity;
|
||||
|
||||
int m_killed;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue