bool Module::updateChild() { if (_childObject) { _childObject->handleUpdate(); if (_done) { _done = false; // Save the last area type if it's a NavigationScene for further processing if (_sceneType == kSceneTypeNavigation) _navigationAreaType = navigationScene()->getNavigationAreaType(); delete _childObject; _childObject = NULL; _sceneType = kSceneTypeNormal; return false; } } return true; }
void Module2300::updateScene() { if (!updateChild()) { switch (_sceneNum) { case 0: if (_moduleResult == 1) createScene(1, 4); else leaveModule(0); break; case 1: if (_moduleResult == 1) createScene(0, 0); else if (_vm->isDemo()) createScene(9999, 0); else if (_moduleResult == 2) createScene(2, 1); else if (_moduleResult == 3) createScene(1, 3); else if (_moduleResult == 4) createScene(3, 1); else if (_moduleResult == 5) leaveModule(3); else leaveModule(4); break; case 2: if (_moduleResult == 1) leaveModule(1); else createScene(1, 5); break; case 3: if (_moduleResult == 1) leaveModule(2); else createScene(1, 1); break; case 4: _vm->_soundMan->setTwoSoundsPlayFlag(false); createScene(1, 2); break; case 9999: createScene(1, -1); break; } } else { switch (_sceneNum) { case 1: if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 4 && navigationScene()->getFrameNumber() % 2) { _soundVolume++; _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume); } if (navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 0 && navigationScene()->getFrameNumber() == 50) { _vm->_soundMan->playTwoSounds(0x1A214010, 0x48498E46, 0x50399F64, 0); _vm->_soundMan->setSoundVolume(0x48498E46, 70); _vm->_soundMan->setSoundVolume(0x50399F64, 70); } break; case 3: if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getFrameNumber() % 2) { _soundVolume--; _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume); } break; } } }
void Module1100::updateScene() { if (!updateChild()) { switch (_sceneNum) { case 0: _countdown = 0; _vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0); _vm->_soundMan->setSoundVolume(0x48498E46, 65); _vm->_soundMan->setSoundVolume(0x50399F64, 65); if (_moduleResult == 0) createScene(1, 0); else if (_moduleResult == 1) createScene(8, 0); break; case 1: _vm->_soundMan->playTwoSounds(0x0002C818, 0x41861371, 0x43A2507F, 0); if (getGlobalVar(V_ROBOT_HIT)) { if (_moduleResult == 0) createScene(6, -1); else if (_moduleResult == 1) createScene(0, 1); } else { if (_moduleResult == 0) createScene(2, 0); else if (_moduleResult == 1) createScene(0, 1); } break; case 2: _vm->_soundMan->setSoundParams(0x74E01054, false, 0, 0, 0, 0); if (_navigationAreaType == 3) createScene(7, -1); else if (_moduleResult == 1) createScene(3, 0); else if (_moduleResult == 2) createScene(1002, -1); break; case 3: if (_moduleResult == 0) createScene(4, 0); else if (_moduleResult == 1) createScene(2, 3); break; case 4: if (_moduleResult == 0) createScene(3, 0); else if (_moduleResult == 1) createScene(5, -1); break; case 5: _vm->_soundMan->setTwoSoundsPlayFlag(false); if (getGlobalVar(V_ROBOT_TARGET)) createScene(3, 0); else createScene(4, 0); break; case 6: _vm->_soundMan->setTwoSoundsPlayFlag(false); leaveModule(1); break; case 7: _vm->_soundMan->setTwoSoundsPlayFlag(false); createScene(2, 2); break; case 8: if (_moduleResult == 0) createScene(0, 0); else if (_moduleResult == 1) leaveModule(0); break; case 1002: _vm->_soundMan->setTwoSoundsPlayFlag(false); _countdown = 0; _vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0); createScene(1, 1); break; } } else { switch (_sceneNum) { case 0: if (navigationScene()->isWalkingForward() && _countdown != 0 && (--_countdown == 0)) { _vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0); _vm->_soundMan->setSoundVolume(0x48498E46, 65); _vm->_soundMan->setSoundVolume(0x50399F64, 65); } break; case 1: if (navigationScene()->isWalkingForward() && _countdown != 0 && (--_countdown == 0)) _vm->_soundMan->playTwoSounds(0x0002C818, 0x41861371, 0x43A2507F, 0); break; case 2: _vm->_soundMan->setSoundParams(0x74E01054, !navigationScene()->isWalkingForward(), 0, 0, 0, 0); break; case 5: case 6: case 7: case 1002: if (_countdown != 0 && (--_countdown == 0)) { _vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0); _vm->_soundMan->setSoundVolume(0x48498E46, 65); _vm->_soundMan->setSoundVolume(0x50399F64, 65); } break; } } }