aboutsummaryrefslogtreecommitdiff
path: root/engines/mutationofjb/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mutationofjb/game.cpp')
-rw-r--r--engines/mutationofjb/game.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/mutationofjb/game.cpp b/engines/mutationofjb/game.cpp
index 134dc72e90..96ebe554cf 100644
--- a/engines/mutationofjb/game.cpp
+++ b/engines/mutationofjb/game.cpp
@@ -42,6 +42,7 @@ Game::Game(MutationOfJBEngine *vm)
: _vm(vm),
_randomSource("mutationofjb"),
_delayedLocalScript(nullptr),
+ _runDelayedScriptStartup(false),
_gui(*this, _vm->getScreen()),
_scriptExecCtx(*this),
_taskManager(*this),
@@ -148,8 +149,9 @@ void Game::changeScene(uint8 sceneId, bool partB) {
}
}
-Script *Game::changeSceneDelayScript(uint8 sceneId, bool partB) {
+Script *Game::changeSceneDelayScript(uint8 sceneId, bool partB, bool runDelayedScriptStartup) {
_delayedLocalScript = changeSceneLoadScript(sceneId, partB);
+ _runDelayedScriptStartup = runDelayedScriptStartup;
return _delayedLocalScript;
}
@@ -190,7 +192,12 @@ void Game::update() {
if (res == Command::Finished && _delayedLocalScript) {
delete _localScript;
_localScript = _delayedLocalScript;
+
+ if (_localScript && _runDelayedScriptStartup)
+ _scriptExecCtx.startStartupSection();
+
_delayedLocalScript = nullptr;
+ _runDelayedScriptStartup = false;
}
_taskManager.update();
@@ -263,4 +270,10 @@ Common::Language Game::getLanguage() const {
return _vm->getGameDescription()->language;
}
+void Game::switchToPartB() {
+ getGameData().getInventory().removeAllItems();
+ loadGameData(true);
+ changeSceneDelayScript(3, true, true);
+}
+
}