aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/scenes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/scenes.cpp')
-rw-r--r--engines/tsage/scenes.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index 8ff063668f..3741bdafd7 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -127,7 +127,7 @@ void SceneManager::sceneChange() {
}
Scene *SceneManager::getNewScene() {
- return SceneFactory::createScene(_nextSceneNumber);
+ return _globals->_game->createScene(_nextSceneNumber);
}
void SceneManager::fadeInIfNecessary() {
@@ -490,4 +490,22 @@ void Scene::setZoomPercents(int yStart, int minPercent, int yEnd, int maxPercent
_zoomPercents[yEnd++] = minPercent;
}
+/*--------------------------------------------------------------------------*/
+
+void Game::execute() {
+ // Main game loop
+ bool activeFlag = false;
+ do {
+ // Process all currently atcive game handlers
+ activeFlag = false;
+ for (SynchronizedList<GameHandler *>::iterator i = _handlers.begin(); i != _handlers.end(); ++i) {
+ GameHandler *gh = *i;
+ if (gh->_lockCtr.getCtr() == 0) {
+ gh->execute();
+ activeFlag = true;
+ }
+ }
+ } while (activeFlag && !_vm->getEventManager()->shouldQuit());
+}
+
} // End of namespace tSage