aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/module2000.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/neverhood/module2000.cpp')
-rw-r--r--engines/neverhood/module2000.cpp105
1 files changed, 42 insertions, 63 deletions
diff --git a/engines/neverhood/module2000.cpp b/engines/neverhood/module2000.cpp
index cf7256bce8..a30bb93541 100644
--- a/engines/neverhood/module2000.cpp
+++ b/engines/neverhood/module2000.cpp
@@ -29,24 +29,12 @@ namespace Neverhood {
Module2000::Module2000(NeverhoodEngine *vm, Module *parentModule, int which)
: Module(vm, parentModule) {
- debug("Create Module2000(%d)", which);
-
if (which < 0) {
- switch (_vm->gameState().sceneNum) {
- case 0:
- createScene2001(-1);
- break;
- case 2:
- createScene2003(-1);
- break;
- default:
- createScene2002(-1);
- break;
- }
+ createScene(_vm->gameState().sceneNum, -1);
} else if (which == 0) {
- createScene2001(3);
+ createScene(0, 3);
} else if (which == 1) {
- createScene2001(1);
+ createScene(0, 1);
}
}
@@ -55,65 +43,56 @@ Module2000::~Module2000() {
// TODO Sound1ChList_sub_407A50(0x81293110);
}
-void Module2000::createScene2001(int which) {
- _vm->gameState().sceneNum = 0;
- _childObject = new Scene2001(_vm, this, which);
- SetUpdateHandler(&Module2000::updateScene2001);
- _childObject->handleUpdate();
-}
-
-void Module2000::createScene2002(int which) {
- _vm->gameState().sceneNum = 1;
- if (getGlobalVar(0x98109F12)) {
- createNavigationScene(0x004B7B48, which);
- } else {
- createNavigationScene(0x004B7B00, which);
+void Module2000::createScene(int sceneNum, int which) {
+ debug("Module2000::createScene(%d, %d)", sceneNum, which);
+ _vm->gameState().sceneNum = sceneNum;
+ switch (_vm->gameState().sceneNum) {
+ case 0:
+ _childObject = new Scene2001(_vm, this, which);
+ break;
+ case 1:
+ createNavigationScene(getGlobalVar(0x98109F12) ? 0x004B7B48 : 0x004B7B00, which);
+ break;
+ case 2:
+ setGlobalVar(0x98109F12, 1);
+ setSubVar(0x2C145A98, 1, 1);
+ createSmackerScene(0x204B2031, true, true, false);
+ break;
}
- SetUpdateHandler(&Module2000::updateScene2002);
+ SetUpdateHandler(&Module2000::updateScene);
_childObject->handleUpdate();
}
-void Module2000::createScene2003(int which) {
- _vm->gameState().sceneNum = 2;
- setGlobalVar(0x98109F12, 1);
- setSubVar(0x2C145A98, 1, 1);
- createSmackerScene(0x204B2031, true, true, false);
- SetUpdateHandler(&Module2000::updateScene2003);
- _childObject->handleUpdate();
-}
-
-void Module2000::updateScene2001() {
- if (!updateChild()) {
- if (_moduleResult == 1) {
- sendMessage(_parentModule, 0x1009, 0);
- } else {
- createScene2002(0);
- }
- }
-}
-
-void Module2000::updateScene2002() {
+void Module2000::updateScene() {
if (!updateChild()) {
- if (_moduleResult == 0) {
- if (getGlobalVar(0x98109F12)) {
- createScene2002(0);
+ switch (_vm->gameState().sceneNum) {
+ case 0:
+ if (_moduleResult == 1) {
+ sendMessage(_parentModule, 0x1009, 0);
} else {
- createScene2003(-1);
+ createScene(1, 0);
+ }
+ break;
+ case 1:
+ if (_moduleResult == 0) {
+ if (getGlobalVar(0x98109F12)) {
+ createScene(1, 0);
+ } else {
+ createScene(2, -1);
+ }
+ } else if (_moduleResult == 1) {
+ createScene(1, 1);
+ } else if (_moduleResult == 2) {
+ createScene(0, 0);
}
- } else if (_moduleResult == 1) {
- createScene2002(1);
- } else if (_moduleResult == 2) {
- createScene2001(0);
+ break;
+ case 2:
+ createScene(1, 0);
+ break;
}
}
}
-void Module2000::updateScene2003() {
- if (!updateChild()) {
- createScene2002(0);
- }
-}
-
// Scene2001
Scene2001::Scene2001(NeverhoodEngine *vm, Module *parentModule, int which)