diff --git a/source/game/game.cpp b/source/game/game.cpp index d6d3074ec..9f2b08166 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -266,6 +266,8 @@ void CGameScene::render() break; case GAMESTATE_PLAYING: case GAMESTATE_FADING_INTO_BOSS_INTRO: + case GAMESTATE_TELEPORT_START: + case GAMESTATE_TELEPORT_END: render_playing(); break; case GAMESTATE_BOSS_INTRO: @@ -367,6 +369,11 @@ void CGameScene::render_playing() /*****************************************************************************/ void CGameScene::think(int _frames) { +//#if defined (__USER_paul__) +//if(PadGetDown(0)&PAD_UP) +//{ +//} +//#endif if(!m_musicStarted&&!CFader::isFading()) { // Song is loaded/dumped by the level, and played from here. This just gives some @@ -402,6 +409,22 @@ void CGameScene::think(int _frames) CFader::setFadingIn(); } break; + case GAMESTATE_TELEPORT_START: + if(!CFader::isFading()) + { + think_playing(1); // Let the teleport happen.. + think_playing(1); + think_playing(1); + m_gamestate=GAMESTATE_TELEPORT_END; + CFader::setFadingIn(CFader::WHITE_FADE); + } + break; + case GAMESTATE_TELEPORT_END: + if(!CFader::isFading()) + { + m_gamestate=GAMESTATE_PLAYING; + } + break; } @@ -653,6 +676,20 @@ int CGameScene::getTotalSpatCountForThisLevel() return Level.getTotalSpatCount(); } + +/*****************************************************************************/ +int CGameScene::triggerTeleportEffect() +{ + if(m_gamestate==GAMESTATE_PLAYING) + { + m_gamestate=GAMESTATE_TELEPORT_START; + CFader::setFadingOut(CFader::WHITE_FADE); + return true; + } + return false; +} + + /*****************************************************************************/ void CGameScene::respawnLevel() { diff --git a/source/game/game.h b/source/game/game.h index 58ffe80e7..cca24ba56 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -59,6 +59,8 @@ static void levelFinished() {s_levelFinished=true;} static void restartlevel() {s_restartLevel=true;} CLevel &GetLevel() {return(Level);} + int triggerTeleportEffect(); + static ACTOR_TYPE getActorType( int actorNum ) {return actorType[actorNum];} @@ -80,6 +82,8 @@ private: GAMESTATE_PLAYING, GAMESTATE_FADING_INTO_BOSS_INTRO, GAMESTATE_BOSS_INTRO, + GAMESTATE_TELEPORT_START, + GAMESTATE_TELEPORT_END, }GAMESTATE; enum diff --git a/source/player/player.cpp b/source/player/player.cpp index 696c0147a..ffc4b45eb 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -150,8 +150,10 @@ Tyepdefs && Defines ------------------- */ +#ifdef __VERSION_DEBUG__ //#define _RECORD_DEMO_MODE_ #define _STATE_DEBUG_ +#endif /*---------------------------------------------------------------------- diff --git a/source/triggers/tteleprt.cpp b/source/triggers/tteleprt.cpp index ce7e04384..b3ca9e897 100644 --- a/source/triggers/tteleprt.cpp +++ b/source/triggers/tteleprt.cpp @@ -84,8 +84,11 @@ void CTeleportTrigger::collidedWith(CThing *_thisThing) } } - ((CPlayer*)_thisThing)->clearPlatform(); - ((CPlayer*)_thisThing)->teleportTo(m_boxX1+8,m_boxY1+16); + if(GameScene.triggerTeleportEffect()) + { + ((CPlayer*)_thisThing)->clearPlatform(); + ((CPlayer*)_thisThing)->teleportTo(m_boxX1+8,m_boxY1+16); + } break; }