This commit is contained in:
Paul 2000-10-26 16:50:54 +00:00
parent 98a2014037
commit ee30817b75
5 changed files with 34 additions and 20 deletions

View File

@ -110,3 +110,9 @@ void CGameScene::think(int _frames)
}
/*****************************************************************************/
int CGameScene::readyToShutdown()
{
return false;
}
/*****************************************************************************/

View File

@ -18,11 +18,12 @@ public:
virtual ~CGameScene() {;}
void init();
void shutdown();
void render();
void think(int _frames);
char *getSceneName() {return "Game";}
void init();
void shutdown();
void render();
void think(int _frames);
int readyToShutdown();
char *getSceneName() {return "Game";}
private:

View File

@ -36,11 +36,12 @@
class CPaulScene : public CScene
{
public:
void init();
void shutdown();
void render();
void think(int _frames);
char *getSceneName() {return"PaulsScene";}
void init();
void shutdown();
void render();
void think(int _frames);
int readyToShutdown() {return false;}
char *getSceneName() {return"PaulsScene";}
};

View File

@ -46,21 +46,26 @@ void GameState::think()
{
updateTimer();
if( s_pendingScene )
if(s_pendingScene)
{
if(s_currentScene)
{
if( !s_currentScene)
if(s_currentScene->readyToShutdown())
{
if( s_currentScene )
{
ASSERT(s_pendingScene); // There really should be a scene pending before you shutdown..!
s_currentScene->shutdown();
}
s_currentScene=s_pendingScene;
s_pendingScene=NULL;
s_currentScene->init();
s_currentScene=NULL;
}
}
if(!s_currentScene)
{
s_currentScene=s_pendingScene;
s_currentScene->init();
s_pendingScene=NULL;
}
}
ASSERT(s_currentScene);
s_currentScene->think(getFramesSinceLast());
}

View File

@ -31,6 +31,7 @@ public:
virtual void shutdown()=0;
virtual void render()=0;
virtual void think(int _frames)=0;
virtual int readyToShutdown()=0;
virtual char *getSceneName()=0;
protected: