Пример #1
0
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;
}
Пример #2
0
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;
		}
	}
}
Пример #3
0
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;
		}
	}
}