diff options
Diffstat (limited to 'engines/mohawk/myst_stacks/myst.cpp')
-rw-r--r-- | engines/mohawk/myst_stacks/myst.cpp | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index bbecebbb66..c63f908bda 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -633,25 +633,41 @@ uint16 Myst::getVar(uint16 var) { return 10; case 79: // Stellar Observatory Date - Year #4 (Right) return (_state.observatoryYearSetting / 1) % 10; - case 80: // Stellar Observatory Hour #1 - Left ( Number 1 (0) or Blank (10)) + case 80: // Stellar Observatory Hour #1 - Left ( Hour digits can be 10 (Blank), or 0-2) + uint32 observatoryLeftMinutes; if (!observatoryIsDDMMYYYY2400()) { - if (_state.observatoryTimeSetting % (12 * 60) < (10 * 60)) + // 12 Hour Format + observatoryLeftMinutes = _state.observatoryTimeSetting % (12 * 60); + if (observatoryLeftMinutes > 59 && observatoryLeftMinutes < (10 * 60)) return 10; else return 1; } else { - if (_state.observatoryTimeSetting < (10 * 60)) - return 10; - else if (_state.observatoryTimeSetting < (20 * 60)) + // 24 Hour Format + observatoryLeftMinutes = _state.observatoryTimeSetting; + if (observatoryLeftMinutes < (10 * 60)) + return 0; + else if (observatoryLeftMinutes < (20 * 60)) return 1; else return 2; } case 81: // Stellar Observatory Hour #2 - Right - if (!observatoryIsDDMMYYYY2400()) - return ((_state.observatoryTimeSetting % (12 * 60)) / 60) % 10; - else - return (_state.observatoryTimeSetting / 60) % 10; + uint32 observatoryRightMinutes,observatoryRightHour; + if (!observatoryIsDDMMYYYY2400()) { + // 12 Hour Format + observatoryRightMinutes = _state.observatoryTimeSetting % (12 * 60); + observatoryRightHour = observatoryRightMinutes / 60; + if (observatoryRightHour % 12 == 0) + return 2; + else + return observatoryRightHour % 10; + } else { + // 24 Hour Format + observatoryRightMinutes = _state.observatoryTimeSetting; + observatoryRightHour = observatoryRightMinutes / 60; + return observatoryRightHour % 10; + } case 82: // Stellar Observatory Minutes #1 - Left return (_state.observatoryTimeSetting % 60) / 10; case 83: // Stellar Observatory Minutes #2 - Right @@ -1626,6 +1642,7 @@ void Myst::observatoryIncrementMonth(int16 increment) { } _vm->_sound->playEffect(8500); + _vm->wait(20); } void Myst::observatoryMonthChange_run() { @@ -1692,6 +1709,7 @@ void Myst::observatoryIncrementDay(int16 increment) { } _vm->_sound->playEffect(8500); + _vm->wait(20); } void Myst::observatoryDayChange_run() { @@ -1752,6 +1770,7 @@ void Myst::observatoryIncrementYear(int16 increment) { } _vm->_sound->playEffect(8500); + _vm->wait(20); } void Myst::observatoryYearChange_run() { @@ -1817,6 +1836,7 @@ void Myst::observatoryIncrementTime(int16 increment) { } _vm->_sound->playEffect(8500); + _vm->wait(20); } void Myst::observatoryTimeChange_run() { @@ -2441,7 +2461,7 @@ void Myst::o_rocketLeverMove(uint16 var, const ArgumentsArray &args) { uint16 soundId = lever->getList2(0); if (soundId) - _vm->_sound->playEffect(soundId); + _vm->playSoundBlocking(soundId); // If rocket correctly powered if (_state.generatorVoltage == 59 && !_state.generatorBreakers) @@ -2512,6 +2532,7 @@ void Myst::observatoryUpdateMonth() { _state.observatoryMonthSetting = month; _state.observatoryMonthSlider = _observatoryMonthSlider->_pos.y; _vm->_sound->playEffect(8500); + _vm->wait(20); // Redraw digits _vm->redrawArea(73); @@ -2539,6 +2560,7 @@ void Myst::observatoryUpdateDay() { _state.observatoryDaySetting = day; _state.observatoryDaySlider = _observatoryDaySlider->_pos.y; _vm->_sound->playEffect(8500); + _vm->wait(20); // Redraw digits _vm->redrawArea(75); @@ -2567,6 +2589,7 @@ void Myst::observatoryUpdateYear() { _state.observatoryYearSetting = year; _state.observatoryYearSlider = _observatoryYearSlider->_pos.y; _vm->_sound->playEffect(8500); + _vm->wait(20); // Redraw digits _vm->redrawArea(79); @@ -2597,6 +2620,7 @@ void Myst::observatoryUpdateTime() { _state.observatoryTimeSetting = time; _state.observatoryTimeSlider = _observatoryTimeSlider->_pos.y; _vm->_sound->playEffect(8500); + _vm->wait(20); // Redraw digits _vm->redrawArea(80); |