aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/module1700.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/neverhood/module1700.cpp')
-rw-r--r--engines/neverhood/module1700.cpp158
1 files changed, 61 insertions, 97 deletions
diff --git a/engines/neverhood/module1700.cpp b/engines/neverhood/module1700.cpp
index 2b0f25d163..9188dab2b0 100644
--- a/engines/neverhood/module1700.cpp
+++ b/engines/neverhood/module1700.cpp
@@ -27,36 +27,19 @@ namespace Neverhood {
Module1700::Module1700(NeverhoodEngine *vm, Module *parentModule, int which)
: Module(vm, parentModule), _soundResource(vm) {
- debug("Create Module1700(%d)", which);
-
// TODO Music18hList_add(0x04212331);
// TODO Sound1ChList_addSoundResources(0x04212331, dword_4AE930, true);
// TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 1, 50, 600, 5, 150);
// TODO Sound1ChList_sub_407C70(0x04212331, 0x41861371, 0x43A2507F, 0);
if (which < 0) {
- switch (_vm->gameState().sceneNum) {
- case 0:
- createScene1701(-1);
- break;
- case 1:
- createScene1702(-1);
- break;
- case 2:
- createScene1703(-1);
- break;
- case 3:
- createScene1704(-1);
- break;
- default:
- createScene1705(-1);
- }
+ createScene(_vm->gameState().sceneNum, -1);
} else if (which == 0) {
- createScene1701(-1);
+ createScene(0, -1);
} else if (which == 1) {
- createScene1705(1);
+ createScene(4, 1);
} else {
- createScene1705(3);
+ createScene(4, 3);
}
}
@@ -65,90 +48,71 @@ Module1700::~Module1700() {
// TODO Sound1ChList_sub_407A50(0x04212331);
}
-void Module1700::createScene1701(int which) {
- _vm->gameState().sceneNum = 0;
- // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
- createSmackerScene(0x3028A005, true, true, false);
- SetUpdateHandler(&Module1700::updateScene1701);
-}
-
-void Module1700::createScene1702(int which) {
- _vm->gameState().sceneNum = 1;
- createNavigationScene(0x004AE8B8, which);
- SetUpdateHandler(&Module1700::updateScene1702);
-}
-
-void Module1700::createScene1703(int which) {
- _vm->gameState().sceneNum = 2;
- createNavigationScene(0x004AE8E8, which);
- SetUpdateHandler(&Module1700::updateScene1703);
-}
-
-void Module1700::createScene1704(int which) {
- _vm->gameState().sceneNum = 3;
- // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
- createSmackerScene(0x01190041, true, true, false);
- SetUpdateHandler(&Module1700::updateScene1701);
-}
-
-void Module1700::createScene1705(int which) {
- _vm->gameState().sceneNum = 4;
- // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
- // TODO Music18hList_play(0x31114225, 0, 2, 1);
- _childObject = new Scene1705(_vm, this, which);
- SetUpdateHandler(&Module1700::updateScene1705);
-}
-
-void Module1700::updateScene1701() {
- if (!updateChild()) {
- if (_vm->gameState().sceneNum == 3) {
- createScene1705(0);
- _childObject->handleUpdate();
- } else {
- // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 1, 0, 0, 0);
- createScene1702(0);
- _childObject->handleUpdate();
- }
- }
-}
-
-void Module1700::updateScene1702() {
- if (!updateChild()) {
- if (_moduleResult == 0) {
- createScene1703(0);
- _childObject->handleUpdate();
- } else if (_moduleResult == 1) {
- createScene1702(1);
- _childObject->handleUpdate();
- }
+void Module1700::createScene(int sceneNum, int which) {
+ debug("Module1700::createScene(%d, %d)", sceneNum, which);
+ _vm->gameState().sceneNum = sceneNum;
+ switch (_vm->gameState().sceneNum) {
+ case 0:
+ // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
+ createSmackerScene(0x3028A005, true, true, false);
+ break;
+ case 1:
+ createNavigationScene(0x004AE8B8, which);
+ break;
+ case 2:
+ createNavigationScene(0x004AE8E8, which);
+ break;
+ case 3:
+ // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
+ createSmackerScene(0x01190041, true, true, false);
+ break;
+ case 4:
+ // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 0, 0, 0, 0, 0);
+ // TODO Music18hList_play(0x31114225, 0, 2, 1);
+ _childObject = new Scene1705(_vm, this, which);
+ break;
}
+ SetUpdateHandler(&Module1700::updateScene);
+ _childObject->handleUpdate();
}
-void Module1700::updateScene1703() {
+void Module1700::updateScene() {
if (!updateChild()) {
- if (_moduleResult == 0) {
- createScene1704(-1);
- _childObject->handleUpdate();
- } else if (_moduleResult == 1) {
- createScene1702(1);
- _childObject->handleUpdate();
- } else if (_moduleResult == 2) {
- if (!_soundResource.isPlaying()) {
- // TODO _soundResource.setVolume(60);
- _soundResource.play(0x58B45E58);
+ switch (_vm->gameState().sceneNum) {
+ case 0:
+ // TODO Sound1ChList_setSoundValuesMulti(dword_4AE930, 1, 0, 0, 0);
+ createScene(1, 0);
+ break;
+ case 1:
+ if (_moduleResult == 0) {
+ createScene(2, 0);
+ } else if (_moduleResult == 1) {
+ createScene(1, 1);
+ }
+ break;
+ case 2:
+ if (_moduleResult == 0) {
+ createScene(3, -1);
+ } else if (_moduleResult == 1) {
+ createScene(1, 1);
+ } else if (_moduleResult == 2) {
+ if (!_soundResource.isPlaying()) {
+ // TODO _soundResource.setVolume(60);
+ _soundResource.play(0x58B45E58);
+ }
+ createScene(2, 2);
}
- createScene1703(2);
- _childObject->handleUpdate();
+ break;
+ case 3:
+ createScene(4, 0);
+ break;
+ case 4:
+ sendMessage(_parentModule, 0x1009, 1);
+ break;
}
}
}
-
-void Module1700::updateScene1705() {
- if (!updateChild()) {
- sendMessage(_parentModule, 0x1009, 1);
- }
-}
-
+
// Scene1705
static const uint32 kScene1705FileHashes[] = {