From 599c18dc1c9bb64ab51f874da435ed905d887499 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Jul 2001 16:27:50 +0000 Subject: [PATCH] --- source/player/player.cpp | 5 +++-- source/player/pmodes.h | 2 ++ source/player/psjump.cpp | 12 ++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/source/player/player.cpp b/source/player/player.cpp index 1d1290138..b6622dca3 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -722,9 +722,9 @@ if(newmode!=-1) platform=isOnPlatform(); 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 ); } @@ -1616,6 +1616,7 @@ void CPlayer::setMode(PLAYER_MODE _mode) } m_currentMode=_mode; m_currentPlayerModeClass=s_playerModes[_mode]; + m_currentPlayerModeClass->setInitialState(state); if(!m_currentPlayerModeClass->setState(state)) { m_currentPlayerModeClass->setState(STATE_IDLE); diff --git a/source/player/pmodes.h b/source/player/pmodes.h index 8f245fb42..117ac70ce 100644 --- a/source/player/pmodes.h +++ b/source/player/pmodes.h @@ -87,6 +87,7 @@ public: virtual void initialise(class CPlayer *_player) {m_player=_player;} virtual void shutdown() {;} virtual void enter() {;} + virtual void setInitialState(int _state) {;} virtual void think() {;} virtual void render(DVECTOR *_pos) {;} virtual void renderModeUi() {;} // Ui specific to this mode (eg: ammo) @@ -128,6 +129,7 @@ public: }; virtual void enter(); + virtual void setInitialState(int _state) {m_currentState=(PLAYER_STATE)_state;} virtual void think(); virtual void render() {;} virtual int canDoLookAround(); diff --git a/source/player/psjump.cpp b/source/player/psjump.cpp index 0e1857057..a59e3618d 100644 --- a/source/player/psjump.cpp +++ b/source/player/psjump.cpp @@ -69,12 +69,16 @@ CPlayerStateJump s_stateJump; ---------------------------------------------------------------------- */ void CPlayerStateJump::enter(CPlayerModeBase *_playerMode) { - _playerMode->setAnimNo(ANIM_SPONGEBOB_JUMP); - m_jumpFrames=0; + // If already in this state then don't do the entry code + 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); + } }