This commit is contained in:
Paul 2001-07-16 16:27:50 +00:00
parent ed08839edd
commit 599c18dc1c
3 changed files with 13 additions and 6 deletions

View file

@ -722,9 +722,9 @@ if(newmode!=-1)
platform=isOnPlatform(); platform=isOnPlatform();
if(platform) if(platform)
{ {
if ( ( (CNpcPlatform *) platform )->isCart() ) if ( m_currentMode != PLAYER_MODE_CART && m_currentMode != PLAYER_MODE_DEAD )
{ {
if ( m_currentMode != PLAYER_MODE_CART && m_currentMode != PLAYER_MODE_DEAD ) if ( ( (CNpcPlatform *) platform )->isCart() )
{ {
setMode( PLAYER_MODE_CART ); setMode( PLAYER_MODE_CART );
} }
@ -1616,6 +1616,7 @@ void CPlayer::setMode(PLAYER_MODE _mode)
} }
m_currentMode=_mode; m_currentMode=_mode;
m_currentPlayerModeClass=s_playerModes[_mode]; m_currentPlayerModeClass=s_playerModes[_mode];
m_currentPlayerModeClass->setInitialState(state);
if(!m_currentPlayerModeClass->setState(state)) if(!m_currentPlayerModeClass->setState(state))
{ {
m_currentPlayerModeClass->setState(STATE_IDLE); m_currentPlayerModeClass->setState(STATE_IDLE);

View file

@ -87,6 +87,7 @@ public:
virtual void initialise(class CPlayer *_player) {m_player=_player;} virtual void initialise(class CPlayer *_player) {m_player=_player;}
virtual void shutdown() {;} virtual void shutdown() {;}
virtual void enter() {;} virtual void enter() {;}
virtual void setInitialState(int _state) {;}
virtual void think() {;} virtual void think() {;}
virtual void render(DVECTOR *_pos) {;} virtual void render(DVECTOR *_pos) {;}
virtual void renderModeUi() {;} // Ui specific to this mode (eg: ammo) virtual void renderModeUi() {;} // Ui specific to this mode (eg: ammo)
@ -128,6 +129,7 @@ public:
}; };
virtual void enter(); virtual void enter();
virtual void setInitialState(int _state) {m_currentState=(PLAYER_STATE)_state;}
virtual void think(); virtual void think();
virtual void render() {;} virtual void render() {;}
virtual int canDoLookAround(); virtual int canDoLookAround();

View file

@ -69,12 +69,16 @@ CPlayerStateJump s_stateJump;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateJump::enter(CPlayerModeBase *_playerMode) void CPlayerStateJump::enter(CPlayerModeBase *_playerMode)
{ {
_playerMode->setAnimNo(ANIM_SPONGEBOB_JUMP); // If already in this state then don't do the entry code
m_jumpFrames=0; if(_playerMode->getState()!=STATE_JUMP)
{
_playerMode->setAnimNo(ANIM_SPONGEBOB_JUMP);
m_jumpFrames=0;
_playerMode->jump(); _playerMode->jump();
CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_JUMP); CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_JUMP);
}
} }