This commit is contained in:
parent
12e8907ece
commit
bdc2cc0a7a
6 changed files with 75 additions and 14 deletions
|
@ -184,32 +184,33 @@ void CPlayer::init()
|
||||||
TPLoadTex(ACTORS_SPONGEBOB_TEX);
|
TPLoadTex(ACTORS_SPONGEBOB_TEX);
|
||||||
m_skel.setAnimDatabase(CAnimDB::GetPlayerAnimBank());
|
m_skel.setAnimDatabase(CAnimDB::GetPlayerAnimBank());
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __USER_paul__
|
||||||
|
m_respawnPos.vx=23*16;
|
||||||
|
m_respawnPos.vy=10*16;
|
||||||
|
#else
|
||||||
|
m_respawnPos.vx=10;
|
||||||
|
m_respawnPos.vy=10;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
m_animNo=0;
|
m_animNo=0;
|
||||||
m_animFrame=0;
|
m_animFrame=0;
|
||||||
m_currentMode=PLAYER_MODE_BASICUNARMED;
|
m_currentMode=PLAYER_MODE_BASICUNARMED;
|
||||||
setState(STATE_IDLE);
|
|
||||||
m_moveVel.vx=0;
|
m_moveVel.vx=0;
|
||||||
m_moveVel.vy=0;
|
m_moveVel.vy=0;
|
||||||
setFacing(FACING_RIGHT);
|
setFacing(FACING_RIGHT);
|
||||||
|
respawn();
|
||||||
|
|
||||||
m_lives=CGameSlotManager::getSlotData().m_lives;
|
m_lives=CGameSlotManager::getSlotData().m_lives;
|
||||||
|
|
||||||
m_invincibleFrameCount=INVIBCIBLE_FRAMES__START;
|
|
||||||
|
|
||||||
#ifdef __USER_paul__
|
|
||||||
Pos.vx=23*16;
|
|
||||||
Pos.vy=10*16;
|
|
||||||
#else
|
|
||||||
Pos.vx=10;
|
|
||||||
Pos.vy=10;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_cameraOffset.vx=0;
|
m_cameraOffset.vx=0;
|
||||||
m_cameraOffset.vy=0;
|
m_cameraOffset.vy=0;
|
||||||
|
|
||||||
m_lastPadInput=m_padInput=PI_NONE;
|
m_lastPadInput=m_padInput=PI_NONE;
|
||||||
|
|
||||||
s_health=5;
|
|
||||||
s_screenPos=128;
|
s_screenPos=128;
|
||||||
|
|
||||||
m_skel.setAng(512);
|
m_skel.setAng(512);
|
||||||
|
@ -932,6 +933,29 @@ void CPlayer::fall()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CPlayer::respawn()
|
||||||
|
{
|
||||||
|
setState(STATE_IDLE);
|
||||||
|
|
||||||
|
// Strip any items that the player might be holding
|
||||||
|
if(m_currentMode!=PLAYER_MODE_BASICUNARMED)
|
||||||
|
{
|
||||||
|
setMode(PLAYER_MODE_FULLUNARMED);
|
||||||
|
}
|
||||||
|
|
||||||
|
s_health=5;
|
||||||
|
m_invincibleFrameCount=INVIBCIBLE_FRAMES__START;
|
||||||
|
Pos=m_respawnPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
@ -939,7 +963,7 @@ void CPlayer::fall()
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
#ifdef __VERSION_DEBUG__
|
#ifdef __VERSION_DEBUG__
|
||||||
int invincibleSponge=false; // NB: This is for debugging purposes only
|
int invincibleSponge=false; // NB: This is for debugging purposes only so don't try and use it for a permenant cheat mode..
|
||||||
#endif
|
#endif
|
||||||
void CPlayer::takeDamage(DAMAGE_TYPE _damage)
|
void CPlayer::takeDamage(DAMAGE_TYPE _damage)
|
||||||
{
|
{
|
||||||
|
|
|
@ -195,6 +195,8 @@ protected:
|
||||||
void jump();
|
void jump();
|
||||||
void fall();
|
void fall();
|
||||||
|
|
||||||
|
void respawn();
|
||||||
|
|
||||||
void takeDamage(DAMAGE_TYPE _damage);
|
void takeDamage(DAMAGE_TYPE _damage);
|
||||||
|
|
||||||
friend class CPlayerState;
|
friend class CPlayerState;
|
||||||
|
@ -263,6 +265,7 @@ private:
|
||||||
// Various info about the current map
|
// Various info about the current map
|
||||||
class CLayerCollision *m_layerCollision;
|
class CLayerCollision *m_layerCollision;
|
||||||
DVECTOR m_mapCameraEdges;
|
DVECTOR m_mapCameraEdges;
|
||||||
|
DVECTOR m_respawnPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@
|
||||||
#include "player\player.h"
|
#include "player\player.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __SYSTEM_GSTATE_H__
|
||||||
|
#include "system\gstate.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -59,6 +63,8 @@
|
||||||
void CPlayerStateDead::enter(CPlayer *_player)
|
void CPlayerStateDead::enter(CPlayer *_player)
|
||||||
{
|
{
|
||||||
setAnimNo(_player,ANIM_PLAYER_ANIM_DEATHSPIN);
|
setAnimNo(_player,ANIM_PLAYER_ANIM_DEATHSPIN);
|
||||||
|
|
||||||
|
m_deadCounter=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,11 +76,22 @@ void CPlayerStateDead::enter(CPlayer *_player)
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerStateDead::think(CPlayer *_player)
|
void CPlayerStateDead::think(CPlayer *_player)
|
||||||
{
|
{
|
||||||
if(advanceAnimFrameAndCheckForEndOfAnim(_player))
|
if(!m_deadCounter)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_IDLE);
|
if(advanceAnimFrameAndCheckForEndOfAnim(_player))
|
||||||
|
{
|
||||||
|
retreatAnimFrameAndCheckForEndOfAnim(_player);
|
||||||
|
m_deadCounter=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(++m_deadCounter>10*GameState::getOneSecondInFrames()||
|
||||||
|
getPadInputDown(_player)&PI_ACTION)
|
||||||
|
{
|
||||||
|
respawn(_player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,9 @@ public:
|
||||||
virtual void enter(class CPlayer *_player);
|
virtual void enter(class CPlayer *_player);
|
||||||
virtual void think(class CPlayer *_player);
|
virtual void think(class CPlayer *_player);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_deadCounter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -310,5 +310,17 @@ void CPlayerState::fall(CPlayer *_player)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CPlayerState::respawn(CPlayer *_player)
|
||||||
|
{
|
||||||
|
_player->respawn();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*===========================================================================
|
/*===========================================================================
|
||||||
end */
|
end */
|
||||||
|
|
|
@ -68,6 +68,8 @@ protected:
|
||||||
void jump(class CPlayer *_player);
|
void jump(class CPlayer *_player);
|
||||||
void fall(class CPlayer *_player);
|
void fall(class CPlayer *_player);
|
||||||
|
|
||||||
|
void respawn(class CPlayer *_player);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue