aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/gamemodule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/neverhood/gamemodule.cpp')
-rw-r--r--engines/neverhood/gamemodule.cpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp
index fa8a6d5d29..48462a2282 100644
--- a/engines/neverhood/gamemodule.cpp
+++ b/engines/neverhood/gamemodule.cpp
@@ -75,7 +75,7 @@ enum {
GameModule::GameModule(NeverhoodEngine *vm)
: Module(vm, NULL), _moduleNum(-1), _prevChildObject(NULL), _prevModuleNum(-1),
- _restartGameRequested(false), _mainMenuRequested(false), _gameWasLoaded(false) {
+ _restoreGameRequested(false), _restartGameRequested(false), _mainMenuRequested(false), _gameWasLoaded(false) {
// Other initializations moved to actual engine class
_vm->_soundMan->playSoundThree(0x002D0031, 0x8861079);
@@ -464,13 +464,8 @@ void GameModule::startup() {
#endif
}
-void GameModule::restoreGame() {
- delete _childObject;
- delete _prevChildObject;
- _childObject = NULL;
- _prevChildObject = NULL;
- _prevModuleNum = 0;
- createModuleByHash(getGlobalVar(V_MODULE_NAME));
+void GameModule::requestRestoreGame() {
+ _restoreGameRequested = true;
}
void GameModule::requestRestartGame(bool requestMainMenu) {
@@ -478,11 +473,27 @@ void GameModule::requestRestartGame(bool requestMainMenu) {
_mainMenuRequested = requestMainMenu;
}
-void GameModule::checkMainMenu() {
+void GameModule::redrawPrevChildObject() {
+ if (_prevChildObject) {
+ _prevChildObject->draw();
+ _vm->_screen->update();
+ }
+}
+
+void GameModule::checkRequests() {
if (_restartGameRequested) {
_restartGameRequested = false;
_vm->_gameVars->clear();
- restoreGame();
+ requestRestoreGame();
+ }
+ if (_restoreGameRequested) {
+ _restoreGameRequested = false;
+ delete _childObject;
+ delete _prevChildObject;
+ _childObject = NULL;
+ _prevChildObject = NULL;
+ _prevModuleNum = 0;
+ createModuleByHash(getGlobalVar(V_MODULE_NAME));
}
if (_mainMenuRequested)
openMainMenu();