This commit is contained in:
Paul 2001-07-30 15:08:29 +00:00
parent 22ac2f0d4a
commit d5b89cc1e7
3 changed files with 45 additions and 21 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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;
};