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

@ -22,6 +22,7 @@ public:
void shutdown(); void shutdown();
void render(); void render();
void think(int _frames); void think(int _frames);
int readyToShutdown();
char *getSceneName() {return "Game";} char *getSceneName() {return "Game";}

View file

@ -40,6 +40,7 @@ public:
void shutdown(); void shutdown();
void render(); void render();
void think(int _frames); void think(int _frames);
int readyToShutdown() {return false;}
char *getSceneName() {return"PaulsScene";} char *getSceneName() {return"PaulsScene";}
}; };

View file

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

View file

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