aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2011-11-02 19:43:52 +1100
committerPaul Gilbert2011-11-02 19:43:52 +1100
commite9aebf0a210271cb2489332ad0c4ea13bea7542f (patch)
treee738125de60036502eb5e4f64c6b8d9e6644e314 /engines
parente38921855cfb88b36c85eb38f18323b476478e78 (diff)
downloadscummvm-rg350-e9aebf0a210271cb2489332ad0c4ea13bea7542f.tar.gz
scummvm-rg350-e9aebf0a210271cb2489332ad0c4ea13bea7542f.tar.bz2
scummvm-rg350-e9aebf0a210271cb2489332ad0c4ea13bea7542f.zip
TSAGE: Implement code for restarting the game in Blue Force
Diffstat (limited to 'engines')
-rw-r--r--engines/tsage/blue_force/blueforce_logic.cpp18
-rw-r--r--engines/tsage/blue_force/blueforce_logic.h1
-rw-r--r--engines/tsage/blue_force/blueforce_scenes1.cpp4
3 files changed, 22 insertions, 1 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 77609715c7..6bfc74627d 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -315,6 +315,24 @@ void BlueForceGame::processEvent(Event &event) {
}
}
+void BlueForceGame::restart() {
+ g_globals->_scenePalette.clearListeners();
+ g_globals->_soundHandler.stop();
+
+ // Reset the globals
+ g_globals->reset();
+
+ // Clear save/load slots
+ g_globals->_sceneHandler->_saveGameSlot = -1;
+ g_globals->_sceneHandler->_loadGameSlot = -1;
+
+ g_globals->_stripNum = 0;
+ g_globals->_events.setCursor(CURSOR_WALK);
+
+ // Change to the first game scene
+ g_globals->_sceneManager.changeScene(190);
+}
+
/*--------------------------------------------------------------------------*/
AObjectArray::AObjectArray(): EventHandler() {
diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h
index 1b161bce06..d0d0e0ee40 100644
--- a/engines/tsage/blue_force/blueforce_logic.h
+++ b/engines/tsage/blue_force/blueforce_logic.h
@@ -45,6 +45,7 @@ public:
virtual void processEvent(Event &event);
virtual bool canSaveGameStateCurrently();
virtual bool canLoadGameStateCurrently();
+ virtual void restart();
};
#define OBJ_ARRAY_SIZE 10
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index c73f3f8499..c97bb20e97 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -3220,9 +3220,11 @@ void Scene190::postInit(SceneObjectList *OwnerList) {
(BF_GLOBALS._sceneManager._previousScene == 20)) {
// clearScreen();
}
- if (BF_GLOBALS._dayNumber == 0)
+ if (BF_GLOBALS._dayNumber == 0) {
// If at start of game, change to first day
BF_GLOBALS._dayNumber = 1;
+ g_globals->_sceneManager._previousScene = 100;
+ }
// Load the scene data
loadScene(190);