diff --git a/source/frontend/frontend.cpp b/source/frontend/frontend.cpp index 073f2cc3f..9d19f3bd0 100644 --- a/source/frontend/frontend.cpp +++ b/source/frontend/frontend.cpp @@ -79,7 +79,8 @@ CFrontEndMode *CFrontEndScene::s_modeCodes[]= &s_frontEndDemoMode, // MODE__DEMO &s_frontEndCredits, // MODE__CREDITS - NULL, // MODE__NONE + // NULL, // MODE__NONE + // NULL, // MODE__EXIT_TO_GAME }; @@ -99,6 +100,7 @@ void CFrontEndScene::init() s_modeCodes[i]->init(); } + m_exitToGame=false; m_mode=MODE__NONE; setMode(MODE__MAIN_TITLES); } @@ -158,7 +160,7 @@ void CFrontEndScene::think(int _frames) ---------------------------------------------------------------------- */ int CFrontEndScene::readyToShutdown() { - return false; + return m_exitToGame; } @@ -173,14 +175,22 @@ void CFrontEndScene::setMode(FrontEndMode _newMode) PAUL_DBGMSG("CFrontEndScene::setMode(%d)",_newMode); // Close old mode - if(s_modeCodes[m_mode]) + if(m_mode!=MODE__NONE) { s_modeCodes[m_mode]->unselect(); } // Open new mode - m_mode=_newMode; - s_modeCodes[m_mode]->select(); + if(_newMode==MODE__EXIT_TO_GAME) + { + m_exitToGame=true; + GameState::setNextScene(&FrontEndScene); + } + else + { + m_mode=_newMode; + s_modeCodes[m_mode]->select(); + } } diff --git a/source/frontend/frontend.h b/source/frontend/frontend.h index 522dc7717..686683da2 100644 --- a/source/frontend/frontend.h +++ b/source/frontend/frontend.h @@ -46,6 +46,8 @@ public: MODE__CREDITS, MODE__NONE, + + MODE__EXIT_TO_GAME, } FrontEndMode; void init(); @@ -59,6 +61,8 @@ public: private: void setMode(FrontEndMode _newMode); + int m_exitToGame; + FrontEndMode m_mode; class CFrontEndMode *m_modeCode; static class CFrontEndMode *s_modeCodes[]; diff --git a/source/frontend/start.cpp b/source/frontend/start.cpp index ee0b0c1f3..cffabb587 100644 --- a/source/frontend/start.cpp +++ b/source/frontend/start.cpp @@ -131,10 +131,19 @@ void CFrontEndStart::render() Params: Returns: ---------------------------------------------------------------------- */ +#ifndef __PAD_PADS_H__ +#include "pad\pads.h" +#endif void CFrontEndStart::think(int _frames) { if(!m_shuttingDown) { +/////////// PKG +if(PadGetDown(0)&PAD_START) +{ + m_selectedSlot=0; +} +/////////// PKG if(m_selectedSlot!=NO_SLOT_SELECTED|| m_escapeToTitles) { @@ -163,13 +172,13 @@ int CFrontEndStart::isReadyToExit() ---------------------------------------------------------------------- */ CFrontEndScene::FrontEndMode CFrontEndStart::getNextMode() { - if(m_selectedSlot!=NO_SLOT_SELECTED) + if(m_selectedSlot==NO_SLOT_SELECTED) { - return CFrontEndScene::MODE__MAIN_TITLES; + return CFrontEndScene::MODE__MAIN_TITLES; } else { - return CFrontEndScene::MODE__MAIN_TITLES; // PKG + return CFrontEndScene::MODE__EXIT_TO_GAME; } } diff --git a/source/system/gstate.cpp b/source/system/gstate.cpp index 6cd44104b..b135be8bd 100644 --- a/source/system/gstate.cpp +++ b/source/system/gstate.cpp @@ -53,6 +53,7 @@ void GameState::think() { if(s_currentScene->readyToShutdown()) { + SYSTEM_DBGMSG("GameState: Closing down scene.."); ASSERT(s_pendingScene); // There really should be a scene pending before you shutdown..! s_currentScene->shutdown(); s_currentScene=NULL; @@ -60,6 +61,7 @@ void GameState::think() } if(!s_currentScene) { + SYSTEM_DBGMSG("GameState: Opening new scene.."); s_currentScene=s_pendingScene; s_currentScene->init(); s_pendingScene=NULL;