diff options
author | Bastien Bouclet | 2018-05-27 20:39:26 +0200 |
---|---|---|
committer | Bastien Bouclet | 2018-06-13 07:55:55 +0200 |
commit | 13b3371f1af143a319656bf476712abf41ee613b (patch) | |
tree | ae4c51e877e2627358c12a6431931c56bd905d1c /engines/mohawk/myst_stacks | |
parent | e3972150482531fdeea16609680fa6db1209c6ac (diff) | |
download | scummvm-rg350-13b3371f1af143a319656bf476712abf41ee613b.tar.gz scummvm-rg350-13b3371f1af143a319656bf476712abf41ee613b.tar.bz2 scummvm-rg350-13b3371f1af143a319656bf476712abf41ee613b.zip |
MOHAWK: MYST: Extract a Card class out of the main engine class
This is to allow having multiple cards loaded at the same time in the
future.
Diffstat (limited to 'engines/mohawk/myst_stacks')
-rw-r--r-- | engines/mohawk/myst_stacks/channelwood.cpp | 15 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/credits.cpp | 3 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/mechanical.cpp | 39 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/myst.cpp | 173 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/selenitic.cpp | 48 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/stoneship.cpp | 29 |
6 files changed, 157 insertions, 150 deletions
diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp index 726b3d6526..d1281fa5e0 100644 --- a/engines/mohawk/myst_stacks/channelwood.cpp +++ b/engines/mohawk/myst_stacks/channelwood.cpp @@ -23,6 +23,7 @@ #include "mohawk/cursors.h" #include "mohawk/myst.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_graphics.h" #include "mohawk/myst_state.h" #include "mohawk/myst_sound.h" @@ -409,7 +410,7 @@ void Channelwood::o_leverEndMove(uint16 var, const ArgumentsArray &args) { if (soundId) _vm->_sound->playEffect(soundId); - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Channelwood::o_leverEndMoveResumeBackground(uint16 var, const ArgumentsArray &args) { @@ -513,10 +514,10 @@ void Channelwood::o_valveHandleMoveStop(uint16 var, const ArgumentsArray &args) _vm->_sound->playEffect(soundId); // Redraw valve - _vm->redrawArea(_valveVar); + _vm->getCard()->redrawArea(_valveVar); // Restore cursor - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Channelwood::o_valveHandleMove2(uint16 var, const ArgumentsArray &args) { @@ -573,7 +574,7 @@ void Channelwood::o_hologramMonitor(uint16 var, const ArgumentsArray &args) { if (_state.holoprojectorSelection != button || !_vm->_video->isVideoPlaying()) { _state.holoprojectorSelection = button; - _vm->redrawArea(17); + _vm->getCard()->redrawArea(17); _vm->_video->stopVideos(); @@ -605,8 +606,8 @@ void Channelwood::o_hologramMonitor(uint16 var, const ArgumentsArray &args) { void Channelwood::o_drawerOpen(uint16 var, const ArgumentsArray &args) { _siriusDrawerState = 1; - _vm->redrawArea(18, false); - _vm->redrawArea(102, false); + _vm->getCard()->redrawArea(18, false); + _vm->getCard()->redrawArea(102, false); } void Channelwood::o_hologramTemple(uint16 var, const ArgumentsArray &args) { @@ -635,7 +636,7 @@ void Channelwood::o_hologramTemple(uint16 var, const ArgumentsArray &args) { } void Channelwood::o_executeMouseUp(uint16 var, const ArgumentsArray &args) { - MystArea *resource = _vm->getViewResource<MystArea>(args[0]); + MystArea *resource = _vm->getCard()->getResource<MystArea>(args[0]); resource->handleMouseUp(); } diff --git a/engines/mohawk/myst_stacks/credits.cpp b/engines/mohawk/myst_stacks/credits.cpp index 80ccf7fe9a..135aded96c 100644 --- a/engines/mohawk/myst_stacks/credits.cpp +++ b/engines/mohawk/myst_stacks/credits.cpp @@ -22,6 +22,7 @@ #include "mohawk/myst.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_graphics.h" #include "mohawk/cursors.h" #include "mohawk/sound.h" @@ -71,7 +72,7 @@ void Credits::runPersistentScripts() { } // Draw next image - _vm->drawCardBackground(); + _vm->getCard()->drawBackground(); _vm->_gfx->copyBackBufferToScreen(Common::Rect(544, 333)); _startTime = _vm->_system->getMillis(); diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index a58e278590..495f40bee2 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -23,6 +23,7 @@ #include "mohawk/cursors.h" #include "mohawk/myst.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_graphics.h" #include "mohawk/myst_state.h" #include "mohawk/myst_sound.h" @@ -298,7 +299,7 @@ bool Mechanical::setVarValue(uint16 var, uint16 value) { } void Mechanical::o_throneEnablePassage(uint16 var, const ArgumentsArray &args) { - _vm->_resources[args[0]]->setEnabled(getVar(var)); + _vm->getCard()->getResource<MystArea>(args[0])->setEnabled(getVar(var)); } void Mechanical::o_birdCrankStart(uint16 var, const ArgumentsArray &args) { @@ -407,7 +408,7 @@ void Mechanical::o_elevatorRotationStop(uint16 var, const ArgumentsArray &args) if (_elevatorRotationGearPosition > 12) break; - _vm->redrawArea(12); + _vm->getCard()->redrawArea(12); _vm->wait(100); } @@ -415,10 +416,10 @@ void Mechanical::o_elevatorRotationStop(uint16 var, const ArgumentsArray &args) _state.elevatorRotation = (_state.elevatorRotation + 1) % 10; _vm->_sound->playEffect(_elevatorRotationSoundId); - _vm->redrawArea(11); + _vm->getCard()->redrawArea(11); } - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Mechanical::o_fortressRotationSpeedStart(uint16 var, const ArgumentsArray &args) { @@ -455,7 +456,7 @@ void Mechanical::o_fortressRotationSpeedStop(uint16 var, const ArgumentsArray &a _fortressRotationSpeed = 0; - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Mechanical::o_fortressRotationBrakeStart(uint16 var, const ArgumentsArray &args) { @@ -485,7 +486,7 @@ void Mechanical::o_fortressRotationBrakeStop(uint16 var, const ArgumentsArray &a MystVideoInfo *lever = getInvokingResource<MystVideoInfo>(); lever->drawFrame(_fortressRotationBrake); - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Mechanical::o_fortressSimulationSpeedStart(uint16 var, const ArgumentsArray &args) { @@ -522,7 +523,7 @@ void Mechanical::o_fortressSimulationSpeedStop(uint16 var, const ArgumentsArray _fortressSimulationSpeed = 0; - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Mechanical::o_fortressSimulationBrakeStart(uint16 var, const ArgumentsArray &args) { @@ -552,7 +553,7 @@ void Mechanical::o_fortressSimulationBrakeStop(uint16 var, const ArgumentsArray MystVideoInfo *lever = getInvokingResource<MystVideoInfo>(); lever->drawFrame(_fortressSimulationBrake); - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Mechanical::o_elevatorWindowMovie(uint16 var, const ArgumentsArray &args) { @@ -664,32 +665,32 @@ void Mechanical::o_elevatorWaitTimeout(uint16 var, const ArgumentsArray &args) { void Mechanical::o_crystalEnterYellow(uint16 var, const ArgumentsArray &args) { _crystalLit = 3; - _vm->redrawArea(20); + _vm->getCard()->redrawArea(20); } void Mechanical::o_crystalEnterGreen(uint16 var, const ArgumentsArray &args) { _crystalLit = 1; - _vm->redrawArea(21); + _vm->getCard()->redrawArea(21); } void Mechanical::o_crystalEnterRed(uint16 var, const ArgumentsArray &args) { _crystalLit = 2; - _vm->redrawArea(22); + _vm->getCard()->redrawArea(22); } void Mechanical::o_crystalLeaveYellow(uint16 var, const ArgumentsArray &args) { _crystalLit = 0; - _vm->redrawArea(20); + _vm->getCard()->redrawArea(20); } void Mechanical::o_crystalLeaveGreen(uint16 var, const ArgumentsArray &args) { _crystalLit = 0; - _vm->redrawArea(21); + _vm->getCard()->redrawArea(21); } void Mechanical::o_crystalLeaveRed(uint16 var, const ArgumentsArray &args) { _crystalLit = 0; - _vm->redrawArea(22); + _vm->getCard()->redrawArea(22); } void Mechanical::o_throne_init(uint16 var, const ArgumentsArray &args) { @@ -698,9 +699,9 @@ void Mechanical::o_throne_init(uint16 var, const ArgumentsArray &args) { } void Mechanical::o_fortressStaircase_init(uint16 var, const ArgumentsArray &args) { - _vm->_resources[args[0]]->setEnabled(!_state.staircaseState); - _vm->_resources[args[1]]->setEnabled(!_state.staircaseState); - _vm->_resources[args[2]]->setEnabled(_state.staircaseState); + _vm->getCard()->getResource<MystArea>(args[0])->setEnabled(!_state.staircaseState); + _vm->getCard()->getResource<MystArea>(args[1])->setEnabled(!_state.staircaseState); + _vm->getCard()->getResource<MystArea>(args[2])->setEnabled(_state.staircaseState); } void Mechanical::birdSing_run() { @@ -724,7 +725,7 @@ void Mechanical::o_snakeBox_init(uint16 var, const ArgumentsArray &args) { } void Mechanical::elevatorRotation_run() { - _vm->redrawArea(12); + _vm->getCard()->redrawArea(12); _elevatorRotationGearPosition += _elevatorRotationSpeed; @@ -735,7 +736,7 @@ void Mechanical::elevatorRotation_run() { _state.elevatorRotation = (_state.elevatorRotation + 1) % 10; _vm->_sound->playEffect(_elevatorRotationSoundId); - _vm->redrawArea(11); + _vm->getCard()->redrawArea(11); _vm->wait(100); } } diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index 4adee5fc20..a3e5685be1 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -23,6 +23,7 @@ #include "mohawk/cursors.h" #include "mohawk/myst.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_graphics.h" #include "mohawk/myst_state.h" #include "mohawk/myst_sound.h" @@ -1077,7 +1078,7 @@ void Myst::o_imagerChangeSelection(uint16 var, const ArgumentsArray &args) { _state.imagerSelection = 10 * d1 + d2; _state.imagerActive = 0; - _vm->redrawArea(var); + _vm->getCard()->redrawArea(var); } } @@ -1101,7 +1102,7 @@ void Myst::o_dockVaultOpen(uint16 var, const ArgumentsArray &args) { _dockVaultState = 1; _vm->_sound->playEffect(soundId); - _vm->redrawArea(41, false); + _vm->getCard()->redrawArea(41, false); animatedUpdate(ArgumentsArray(args.begin() + 3, directionalUpdateDataSize), delay); } } @@ -1124,7 +1125,7 @@ void Myst::o_dockVaultClose(uint16 var, const ArgumentsArray &args) { _dockVaultState = 0; _vm->_sound->playEffect(soundId); - _vm->redrawArea(41, false); + _vm->getCard()->redrawArea(41, false); animatedUpdate(ArgumentsArray(args.begin() + 3, directionalUpdateDataSize), delay); } } @@ -1238,7 +1239,7 @@ void Myst::o_clockWheelsExecute(uint16 var, const ArgumentsArray &args) { _vm->waitUntilMovieEnds(gears); _state.clockTowerBridgeOpen = 1; - _vm->redrawArea(12); + _vm->getCard()->redrawArea(12); } else if (_state.clockTowerBridgeOpen && !correctTime) { _vm->_sound->playEffect(soundId); _vm->wait(500); @@ -1251,7 +1252,7 @@ void Myst::o_clockWheelsExecute(uint16 var, const ArgumentsArray &args) { _vm->waitUntilMovieEnds(gears); _state.clockTowerBridgeOpen = 0; - _vm->redrawArea(12); + _vm->getCard()->redrawArea(12); } } @@ -1464,7 +1465,7 @@ void Myst::o_generatorButtonPressed(uint16 var, const ArgumentsArray &args) { } // Redraw button - _vm->redrawArea(button->getImageSwitchVar()); + _vm->getCard()->redrawArea(button->getImageSwitchVar()); // Blow breaker if (_state.generatorVoltage > 59) @@ -1472,9 +1473,9 @@ void Myst::o_generatorButtonPressed(uint16 var, const ArgumentsArray &args) { } void Myst::generatorRedrawRocket() { - _vm->redrawArea(64); - _vm->redrawArea(65); - _vm->redrawArea(97); + _vm->getCard()->redrawArea(64); + _vm->getCard()->redrawArea(65); + _vm->getCard()->redrawArea(97); } void Myst::generatorButtonValue(MystArea *button, uint16 &mask, uint16 &value) { @@ -1536,7 +1537,7 @@ void Myst::o_cabinSafeChangeDigit(uint16 var, const ArgumentsArray &args) { _state.cabinSafeCombination = 100 * d1 + 10 * d2 + d3; - _vm->redrawArea(var); + _vm->getCard()->redrawArea(var); } void Myst::o_cabinSafeHandleStartMove(uint16 var, const ArgumentsArray &args) { @@ -1579,7 +1580,7 @@ void Myst::o_cabinSafeHandleEndMove(uint16 var, const ArgumentsArray &args) { // Used on Card 4100 MystVideoInfo *handle = getInvokingResource<MystVideoInfo>(); handle->drawFrame(0); - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Myst::o_observatoryMonthChangeStartIncrease(uint16 var, const ArgumentsArray &args) { @@ -1630,7 +1631,7 @@ void Myst::observatoryIncrementMonth(int16 increment) { _state.observatoryMonthSetting = newMonth; // Redraw digits - _vm->redrawArea(73); + _vm->getCard()->redrawArea(73); // Update slider _observatoryMonthSlider->setPosition(94 + 94 * _state.observatoryMonthSetting / 11); @@ -1696,8 +1697,8 @@ void Myst::observatoryIncrementDay(int16 increment) { _state.observatoryDaySetting = newDay; // Redraw digits - _vm->redrawArea(75); - _vm->redrawArea(74); + _vm->getCard()->redrawArea(75); + _vm->getCard()->redrawArea(74); // Update slider _observatoryDaySlider->setPosition(91 + 3 * _state.observatoryDaySetting); @@ -1755,10 +1756,10 @@ void Myst::observatoryIncrementYear(int16 increment) { _state.observatoryYearSetting = newYear; // Redraw digits - _vm->redrawArea(79); - _vm->redrawArea(78); - _vm->redrawArea(77); - _vm->redrawArea(76); + _vm->getCard()->redrawArea(79); + _vm->getCard()->redrawArea(78); + _vm->getCard()->redrawArea(77); + _vm->getCard()->redrawArea(76); // Update slider _observatoryYearSlider->setPosition(94 + 94 * _state.observatoryYearSetting / 9999); @@ -1816,14 +1817,14 @@ void Myst::observatoryIncrementTime(int16 increment) { _state.observatoryTimeSetting = newTime; // Redraw digits - _vm->redrawArea(80); - _vm->redrawArea(81); - _vm->redrawArea(82); - _vm->redrawArea(83); + _vm->getCard()->redrawArea(80); + _vm->getCard()->redrawArea(81); + _vm->getCard()->redrawArea(82); + _vm->getCard()->redrawArea(83); // Draw AM/PM if (!observatoryIsDDMMYYYY2400()) { - _vm->redrawArea(88); + _vm->getCard()->redrawArea(88); } // Update slider @@ -1870,7 +1871,7 @@ void Myst::o_observatoryGoButton(uint16 var, const ArgumentsArray &args) { // Redraw button _tempVar = 0; - _vm->redrawArea(105); + _vm->getCard()->redrawArea(105); } } @@ -1948,8 +1949,8 @@ void Myst::o_circuitBreakerMove(uint16 var, const ArgumentsArray &args) { void Myst::o_circuitBreakerEndMove(uint16 var, const ArgumentsArray &args) { MystVideoInfo *breaker = getInvokingResource<MystVideoInfo>(); - _vm->redrawArea(breaker->getImageSwitchVar()); - _vm->checkCursorHints(); + _vm->getCard()->redrawArea(breaker->getImageSwitchVar()); + _vm->refreshCursor(); } void Myst::o_boilerIncreasePressureStart(uint16 var, const ArgumentsArray &args) { @@ -1964,7 +1965,7 @@ void Myst::o_boilerLightPilot(uint16 var, const ArgumentsArray &args) { // Match is lit if (_cabinMatchState == 1) { _state.cabinPilotLightLit = 1; - _vm->redrawArea(98); + _vm->getCard()->redrawArea(98); boilerFireUpdate(false); @@ -1995,7 +1996,7 @@ Common::Rational Myst::boilerComputeGaugeRate(uint16 pressure, uint32 delay) { void Myst::boilerResetGauge(const Common::Rational &rate) { if (!_cabinGaugeMovie || _cabinGaugeMovie->endOfVideo()) { - if (_vm->getCurCard() == 4098) { + if (_vm->getCard()->getId() == 4098) { _cabinGaugeMovie = _vm->playMovie("cabingau", kMystStack); _cabinGaugeMovie->moveTo(243, 96); } else { @@ -2042,7 +2043,7 @@ void Myst::boilerPressureIncrease_run() { boilerFireUpdate(false); // Draw fire - _vm->redrawArea(305); + _vm->getCard()->redrawArea(305); } else if (_state.cabinValvePosition == 25) { if (_state.cabinPilotLightLit == 1) _vm->_sound->playBackground(8098, 49152); @@ -2054,7 +2055,7 @@ void Myst::boilerPressureIncrease_run() { _vm->_sound->playEffect(5098); // Redraw wheel - _vm->redrawArea(99); + _vm->getCard()->redrawArea(99); } } @@ -2067,14 +2068,14 @@ void Myst::boilerPressureDecrease_run() { boilerFireUpdate(false); // Draw fire - _vm->redrawArea(305); + _vm->getCard()->redrawArea(305); } // Pressure increasing sound _vm->_sound->playEffect(5098); // Redraw wheel - _vm->redrawArea(99); + _vm->getCard()->redrawArea(99); } } @@ -2126,7 +2127,7 @@ void Myst::basementPressureIncrease_run() { _vm->_sound->playEffect(4642); // Redraw wheel - _vm->redrawArea(99); + _vm->getCard()->redrawArea(99); } } @@ -2139,7 +2140,7 @@ void Myst::basementPressureDecrease_run() { _vm->_sound->playEffect(4642); // Redraw wheel - _vm->redrawArea(99); + _vm->getCard()->redrawArea(99); } } @@ -2184,7 +2185,7 @@ void Myst::tree_run() { } // Stop background music if going up from book room - if (_vm->getCurCard() == 4630) { + if (_vm->getCard()->getId() == 4630) { if (_state.treePosition > 0) _vm->_sound->stopBackground(); else @@ -2192,7 +2193,7 @@ void Myst::tree_run() { } // Redraw tree - _vm->redrawArea(72); + _vm->getCard()->redrawArea(72); // Check if alcove is accessible treeSetAlcoveAccessible(); @@ -2235,7 +2236,7 @@ void Myst::o_rocketSoundSliderMove(uint16 var, const ArgumentsArray &args) { } void Myst::o_rocketSoundSliderEndMove(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); if (_state.generatorVoltage == 59 && !_state.generatorBreakers && _rocketSliderSound) _vm->_sound->stopEffect(); @@ -2382,7 +2383,7 @@ void Myst::o_rocketPianoMove(uint16 var, const ArgumentsArray &args) { _vm->_gfx->copyImageSectionToScreen(key->getSubImage(0).wdib, src, dest); if (piano.contains(mouse)) { - MystArea *resource = _vm->forceUpdateClickedResource(); + MystArea *resource = _vm->getCard()->forceUpdateClickedResource(mouse); if (resource && resource->hasType(kMystAreaDrag)) { // Press new key key = static_cast<MystAreaDrag *>(resource); @@ -2472,7 +2473,7 @@ void Myst::o_rocketLeverMove(uint16 var, const ArgumentsArray &args) { void Myst::o_rocketLeverEndMove(uint16 var, const ArgumentsArray &args) { MystVideoInfo *lever = getInvokingResource<MystVideoInfo>(); - _vm->checkCursorHints(); + _vm->refreshCursor(); _rocketLeverPosition = 0; lever->drawFrame(0); } @@ -2517,7 +2518,7 @@ void Myst::o_observatoryMonthSliderStartMove(uint16 var, const ArgumentsArray &a } void Myst::o_observatoryMonthSliderEndMove(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); _vm->_sound->resumeBackground(); observatoryUpdateMonth(); @@ -2533,7 +2534,7 @@ void Myst::observatoryUpdateMonth() { _vm->wait(20); // Redraw digits - _vm->redrawArea(73); + _vm->getCard()->redrawArea(73); } } @@ -2545,7 +2546,7 @@ void Myst::o_observatoryDaySliderStartMove(uint16 var, const ArgumentsArray &arg } void Myst::o_observatoryDaySliderEndMove(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); _vm->_sound->resumeBackground(); observatoryUpdateDay(); @@ -2561,8 +2562,8 @@ void Myst::observatoryUpdateDay() { _vm->wait(20); // Redraw digits - _vm->redrawArea(75); - _vm->redrawArea(74); + _vm->getCard()->redrawArea(75); + _vm->getCard()->redrawArea(74); } } @@ -2574,7 +2575,7 @@ void Myst::o_observatoryYearSliderStartMove(uint16 var, const ArgumentsArray &ar } void Myst::o_observatoryYearSliderEndMove(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); _vm->_sound->resumeBackground(); observatoryUpdateYear(); @@ -2590,10 +2591,10 @@ void Myst::observatoryUpdateYear() { _vm->wait(20); // Redraw digits - _vm->redrawArea(79); - _vm->redrawArea(78); - _vm->redrawArea(77); - _vm->redrawArea(76); + _vm->getCard()->redrawArea(79); + _vm->getCard()->redrawArea(78); + _vm->getCard()->redrawArea(77); + _vm->getCard()->redrawArea(76); } } @@ -2605,7 +2606,7 @@ void Myst::o_observatoryTimeSliderStartMove(uint16 var, const ArgumentsArray &ar } void Myst::o_observatoryTimeSliderEndMove(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); _vm->_sound->resumeBackground(); observatoryUpdateTime(); @@ -2621,14 +2622,14 @@ void Myst::observatoryUpdateTime() { _vm->wait(20); // Redraw digits - _vm->redrawArea(80); - _vm->redrawArea(81); - _vm->redrawArea(82); - _vm->redrawArea(83); + _vm->getCard()->redrawArea(80); + _vm->getCard()->redrawArea(81); + _vm->getCard()->redrawArea(82); + _vm->getCard()->redrawArea(83); // Draw AM/PM if (!observatoryIsDDMMYYYY2400()) - _vm->redrawArea(88); + _vm->getCard()->redrawArea(88); } } @@ -2706,12 +2707,12 @@ void Myst::matchBurn_run() { void Myst::o_courtyardBoxEnter(uint16 var, const ArgumentsArray &args) { _tempVar = 1; _vm->_sound->playEffect(_courtyardBoxSound); - _vm->redrawArea(var); + _vm->getCard()->redrawArea(var); } void Myst::o_courtyardBoxLeave(uint16 var, const ArgumentsArray &args) { _tempVar = 0; - _vm->redrawArea(var); + _vm->getCard()->redrawArea(var); } void Myst::o_clockMinuteWheelStartTurn(uint16 var, const ArgumentsArray &args) { @@ -2741,7 +2742,7 @@ void Myst::clockWheel_run() { else clockWheelTurn(38); - _vm->redrawArea(37); + _vm->getCard()->redrawArea(37); } } @@ -2758,7 +2759,7 @@ void Myst::clockWheelStartTurn(uint16 wheel) { else clockWheelTurn(38); - _vm->redrawArea(37); + _vm->getCard()->redrawArea(37); // Continue turning wheel until mouse button is released _clockTurningWheel = wheel; @@ -2877,12 +2878,12 @@ void Myst::o_dockVaultForceClose(uint16 var, const ArgumentsArray &args) { // Open switch _state.dockMarkerSwitch = 1; _vm->_sound->playEffect(4143); - _vm->redrawArea(4); + _vm->getCard()->redrawArea(4); // Close vault _dockVaultState = 0; _vm->_sound->playEffect(soundId); - _vm->redrawArea(41, false); + _vm->getCard()->redrawArea(41, false); animatedUpdate(ArgumentsArray(args.begin() + 3, directionalUpdateDataSize), delay); } } @@ -3027,7 +3028,7 @@ void Myst::clockGearsCheckSolution() { // Gear opening video _vm->playMovieBlocking("cl1wggat", kMystStack, 195, 225); _state.gearsOpen = 1; - _vm->redrawArea(40); + _vm->getCard()->redrawArea(40); _vm->_sound->playBackground(4113, 16384); } @@ -3085,7 +3086,7 @@ void Myst::clockReset() { // Redraw gear _state.gearsOpen = 0; - _vm->redrawArea(40); + _vm->getCard()->redrawArea(40); } _vm->_cursor->showCursor(); @@ -3131,7 +3132,7 @@ void Myst::o_clockResetLeverEndMove(uint16 var, const ArgumentsArray &args) { lever->releaseLeverV(); - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Myst::o_libraryBook_init(uint16 var, const ArgumentsArray &args) { @@ -3189,7 +3190,7 @@ void Myst::towerRotationMap_run() { void Myst::o_towerRotationMap_init(uint16 var, const ArgumentsArray &args) { _towerRotationMapRunning = true; _towerRotationMapTower = getInvokingResource<MystAreaImageSwitch>(); - _towerRotationMapLabel = _vm->getViewResource<MystAreaImageSwitch>(args[0]); + _towerRotationMapLabel = _vm->getCard()->getResource<MystAreaImageSwitch>(args[0]); _tempVar = 0; _startTime = 0; _towerRotationMapClicked = false; @@ -3197,11 +3198,11 @@ void Myst::o_towerRotationMap_init(uint16 var, const ArgumentsArray &args) { void Myst::towerRotationDrawBuildings() { // Draw library - _vm->redrawArea(304, false); + _vm->getCard()->redrawArea(304, false); // Draw other resources for (uint i = 1; i <= 10; i++) { - MystAreaImageSwitch *resource = _vm->getViewResource<MystAreaImageSwitch>(i); + MystAreaImageSwitch *resource = _vm->getCard()->getResource<MystAreaImageSwitch>(i); _vm->redrawResource(resource, false); } } @@ -3279,7 +3280,7 @@ void Myst::towerRotationMapDrawLine(const Common::Point &end, bool rotationLabel src.bottom = 332 - rect.top; // Redraw background - _vm->_gfx->copyImageSectionToBackBuffer(_vm->getCardBackgroundId(), src, rect); + _vm->_gfx->copyImageSectionToBackBuffer(_vm->getCard()->getBackgroundImageId(), src, rect); // Draw buildings towerRotationDrawBuildings(); @@ -3392,9 +3393,9 @@ void Myst::generatorControlRoom_run(void) { _generatorVoltage++; // Redraw generator gauge - _vm->redrawArea(62); - _vm->redrawArea(63); - _vm->redrawArea(96); + _vm->getCard()->redrawArea(62); + _vm->getCard()->redrawArea(63); + _vm->getCard()->redrawArea(96); } } @@ -3457,16 +3458,16 @@ void Myst::o_observatory_init(uint16 var, const ArgumentsArray &args) { _tempVar = 0; _observatoryNotInitialized = true; _observatoryVisualizer = getInvokingResource<MystAreaImageSwitch>(); - _observatoryGoButton = _vm->getViewResource<MystAreaImageSwitch>(args[0]); + _observatoryGoButton = _vm->getCard()->getResource<MystAreaImageSwitch>(args[0]); if (observatoryIsDDMMYYYY2400()) { - _observatoryDaySlider = _vm->getViewResource<MystAreaSlider>(args[1]); - _observatoryMonthSlider = _vm->getViewResource<MystAreaSlider>(args[2]); + _observatoryDaySlider = _vm->getCard()->getResource<MystAreaSlider>(args[1]); + _observatoryMonthSlider = _vm->getCard()->getResource<MystAreaSlider>(args[2]); } else { - _observatoryMonthSlider = _vm->getViewResource<MystAreaSlider>(args[1]); - _observatoryDaySlider = _vm->getViewResource<MystAreaSlider>(args[2]); + _observatoryMonthSlider = _vm->getCard()->getResource<MystAreaSlider>(args[1]); + _observatoryDaySlider = _vm->getCard()->getResource<MystAreaSlider>(args[2]); } - _observatoryYearSlider = _vm->getViewResource<MystAreaSlider>(args[3]); - _observatoryTimeSlider = _vm->getViewResource<MystAreaSlider>(args[4]); + _observatoryYearSlider = _vm->getCard()->getResource<MystAreaSlider>(args[3]); + _observatoryTimeSlider = _vm->getCard()->getResource<MystAreaSlider>(args[4]); // Set date selection sliders position _observatoryDaySlider->setPosition(_state.observatoryDaySlider); @@ -3610,13 +3611,13 @@ void Myst::o_boilerMovies_init(uint16 var, const ArgumentsArray &args) { } void Myst::boilerFireInit() { - if (_vm->getCurCard() == 4098) { + if (_vm->getCard()->getId() == 4098) { _cabinFireMovie = _vm->playMovie("cabfire", kMystStack); _cabinFireMovie->moveTo(240, 279); _cabinFireMovie->setLooping(true); _cabinFireMovie->pause(true); - _vm->redrawArea(305); + _vm->getCard()->redrawArea(305); boilerFireUpdate(true); } else { if (_state.cabinPilotLightLit == 1 && _state.cabinValvePosition >= 1) { @@ -3646,7 +3647,7 @@ void Myst::boilerFireUpdate(bool init) { } void Myst::boilerGaugeInit() { - if (_vm->getCurCard() == 4098) { + if (_vm->getCard()->getId() == 4098) { _cabinGaugeMovie = _vm->playMovie("cabingau", kMystStack); _cabinGaugeMovie->moveTo(243, 96); } else { @@ -3668,11 +3669,11 @@ void Myst::boilerGaugeInit() { void Myst::o_rocketSliders_init(uint16 var, const ArgumentsArray &args) { _rocketLinkBook.reset(); - _rocketSlider1 = _vm->getViewResource<MystAreaSlider>(args[0]); - _rocketSlider2 = _vm->getViewResource<MystAreaSlider>(args[1]); - _rocketSlider3 = _vm->getViewResource<MystAreaSlider>(args[2]); - _rocketSlider4 = _vm->getViewResource<MystAreaSlider>(args[3]); - _rocketSlider5 = _vm->getViewResource<MystAreaSlider>(args[4]); + _rocketSlider1 = _vm->getCard()->getResource<MystAreaSlider>(args[0]); + _rocketSlider2 = _vm->getCard()->getResource<MystAreaSlider>(args[1]); + _rocketSlider3 = _vm->getCard()->getResource<MystAreaSlider>(args[2]); + _rocketSlider4 = _vm->getCard()->getResource<MystAreaSlider>(args[3]); + _rocketSlider5 = _vm->getCard()->getResource<MystAreaSlider>(args[4]); // Initialize sliders position for (uint i = 0; i < 5; i++) diff --git a/engines/mohawk/myst_stacks/selenitic.cpp b/engines/mohawk/myst_stacks/selenitic.cpp index 239030645c..8d95cb5172 100644 --- a/engines/mohawk/myst_stacks/selenitic.cpp +++ b/engines/mohawk/myst_stacks/selenitic.cpp @@ -24,6 +24,7 @@ #include "mohawk/myst.h" #include "mohawk/graphics.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_state.h" #include "mohawk/myst_sound.h" #include "mohawk/video.h" @@ -1086,19 +1087,19 @@ void Selenitic::o_soundReceiver_init(uint16 var, const ArgumentsArray &args) { // Used for Card 1245 (Sound Receiver) _soundReceiverRunning = true; - _soundReceiverRightButton = _vm->getViewResource<MystAreaImageSwitch>(0); - _soundReceiverLeftButton = _vm->getViewResource<MystAreaImageSwitch>(1); - _soundReceiverSigmaButton = _vm->getViewResource<MystAreaImageSwitch>(2); - _soundReceiverSources[4] = _vm->getViewResource<MystAreaImageSwitch>(3); - _soundReceiverSources[3] = _vm->getViewResource<MystAreaImageSwitch>(4); - _soundReceiverSources[2] = _vm->getViewResource<MystAreaImageSwitch>(5); - _soundReceiverSources[1] = _vm->getViewResource<MystAreaImageSwitch>(6); - _soundReceiverSources[0] = _vm->getViewResource<MystAreaImageSwitch>(7); - _soundReceiverViewer = _vm->getViewResource<MystAreaImageSwitch>(8); - _soundReceiverAngle1 = _vm->getViewResource<MystAreaImageSwitch>(10); - _soundReceiverAngle2 = _vm->getViewResource<MystAreaImageSwitch>(11); - _soundReceiverAngle3 = _vm->getViewResource<MystAreaImageSwitch>(12); - _soundReceiverAngle4 = _vm->getViewResource<MystAreaImageSwitch>(13); + _soundReceiverRightButton = _vm->getCard()->getResource<MystAreaImageSwitch>(0); + _soundReceiverLeftButton = _vm->getCard()->getResource<MystAreaImageSwitch>(1); + _soundReceiverSigmaButton = _vm->getCard()->getResource<MystAreaImageSwitch>(2); + _soundReceiverSources[4] = _vm->getCard()->getResource<MystAreaImageSwitch>(3); + _soundReceiverSources[3] = _vm->getCard()->getResource<MystAreaImageSwitch>(4); + _soundReceiverSources[2] = _vm->getCard()->getResource<MystAreaImageSwitch>(5); + _soundReceiverSources[1] = _vm->getCard()->getResource<MystAreaImageSwitch>(6); + _soundReceiverSources[0] = _vm->getCard()->getResource<MystAreaImageSwitch>(7); + _soundReceiverViewer = _vm->getCard()->getResource<MystAreaImageSwitch>(8); + _soundReceiverAngle1 = _vm->getCard()->getResource<MystAreaImageSwitch>(10); + _soundReceiverAngle2 = _vm->getCard()->getResource<MystAreaImageSwitch>(11); + _soundReceiverAngle3 = _vm->getCard()->getResource<MystAreaImageSwitch>(12); + _soundReceiverAngle4 = _vm->getCard()->getResource<MystAreaImageSwitch>(13); uint16 currentSource = _state.soundReceiverCurrentSource; _soundReceiverPosition = &_state.soundReceiverPositions[currentSource]; @@ -1111,32 +1112,33 @@ void Selenitic::o_soundReceiver_init(uint16 var, const ArgumentsArray &args) { } void Selenitic::o_soundLock_init(uint16 var, const ArgumentsArray &args) { - for (uint i = 0; i < _vm->_resources.size(); i++) { - if (_vm->_resources[i]->hasType(kMystAreaSlider)) { - switch (_vm->_resources[i]->getImageSwitchVar()) { + for (uint i = 0; i < _vm->getCard()->_resources.size(); i++) { + if (_vm->getCard()->_resources[i]->hasType(kMystAreaSlider)) { + switch (_vm->getCard()->_resources[i]->getImageSwitchVar()) { case 20: - _soundLockSlider1 = _vm->getViewResource<MystAreaSlider>(i); + _soundLockSlider1 = _vm->getCard()->getResource<MystAreaSlider>(i); _soundLockSlider1->setStep(_state.soundLockSliderPositions[0]); break; case 21: - _soundLockSlider2 = _vm->getViewResource<MystAreaSlider>(i); + _soundLockSlider2 = _vm->getCard()->getResource<MystAreaSlider>(i); _soundLockSlider2->setStep(_state.soundLockSliderPositions[1]); break; case 22: - _soundLockSlider3 = _vm->getViewResource<MystAreaSlider>(i); + _soundLockSlider3 = _vm->getCard()->getResource<MystAreaSlider>(i); _soundLockSlider3->setStep(_state.soundLockSliderPositions[2]); break; case 23: - _soundLockSlider4 = _vm->getViewResource<MystAreaSlider>(i); + _soundLockSlider4 = _vm->getCard()->getResource<MystAreaSlider>(i); _soundLockSlider4->setStep(_state.soundLockSliderPositions[3]); break; case 24: - _soundLockSlider5 = _vm->getViewResource<MystAreaSlider>(i); + _soundLockSlider5 = _vm->getCard()->getResource<MystAreaSlider>(i); _soundLockSlider5->setStep(_state.soundLockSliderPositions[4]); break; } - } else if (_vm->_resources[i]->hasType(kMystAreaImageSwitch) && _vm->_resources[i]->getImageSwitchVar() == 28) { - _soundLockButton = _vm->getViewResource<MystAreaImageSwitch>(i); + } else if (_vm->getCard()->_resources[i]->hasType(kMystAreaImageSwitch) + && _vm->getCard()->_resources[i]->getImageSwitchVar() == 28) { + _soundLockButton = _vm->getCard()->getResource<MystAreaImageSwitch>(i); } } diff --git a/engines/mohawk/myst_stacks/stoneship.cpp b/engines/mohawk/myst_stacks/stoneship.cpp index cd1db68d44..0ae78c17d8 100644 --- a/engines/mohawk/myst_stacks/stoneship.cpp +++ b/engines/mohawk/myst_stacks/stoneship.cpp @@ -23,6 +23,7 @@ #include "mohawk/cursors.h" #include "mohawk/myst.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_card.h" #include "mohawk/myst_graphics.h" #include "mohawk/myst_state.h" #include "mohawk/myst_sound.h" @@ -426,8 +427,8 @@ void Stoneship::o_pumpTurnOff(uint16 var, const ArgumentsArray &args) { warning("Incorrect pump state"); } - for (uint i = 0; i < _vm->_resources.size(); i++) { - MystArea *resource = _vm->_resources[i]; + for (uint i = 0; i < _vm->getCard()->_resources.size(); i++) { + MystArea *resource = _vm->getCard()->_resources[i]; if (resource->hasType(kMystAreaImageSwitch) && resource->getImageSwitchVar() == buttonVar) { static_cast<MystAreaImageSwitch *>(resource)->drawConditionalDataToScreen(0, true); break; @@ -438,7 +439,7 @@ void Stoneship::o_pumpTurnOff(uint16 var, const ArgumentsArray &args) { void Stoneship::o_brotherDoorOpen(uint16 var, const ArgumentsArray &args) { _brotherDoorOpen = 1; - _vm->redrawArea(19, 0); + _vm->getCard()->redrawArea(19, 0); animatedUpdate(args, 5); } @@ -454,7 +455,7 @@ void Stoneship::o_cabinBookMovie(uint16 var, const ArgumentsArray &args) { } void Stoneship::o_drawerOpenSirius(uint16 var, const ArgumentsArray &args) { - MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(args[0]); + MystAreaImageSwitch *drawer = _vm->getCard()->getResource<MystAreaImageSwitch>(args[0]); if (drawer->getImageSwitchVar() == 35) { drawer->drawConditionalDataToScreen(getVar(102), 0); @@ -496,7 +497,7 @@ void Stoneship::o_telescopeMove(uint16 var, const ArgumentsArray &args) { } void Stoneship::o_telescopeStop(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Stoneship::o_generatorStart(uint16 var, const ArgumentsArray &args) { @@ -589,7 +590,7 @@ void Stoneship::batteryDeplete_run() { } void Stoneship::o_drawerOpenAchenar(uint16 var, const ArgumentsArray &args) { - MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(args[0]); + MystAreaImageSwitch *drawer = _vm->getCard()->getResource<MystAreaImageSwitch>(args[0]); drawer->drawConditionalDataToScreen(0, 0); _vm->_gfx->runTransition(kTransitionTopToBottom, drawer->getRect(), 25, 5); } @@ -644,7 +645,7 @@ void Stoneship::o_hologramSelectionMove(uint16 var, const ArgumentsArray &args) } void Stoneship::o_hologramSelectionStop(uint16 var, const ArgumentsArray &args) { - _vm->checkCursorHints(); + _vm->refreshCursor(); } void Stoneship::o_compassButton(uint16 var, const ArgumentsArray &args) { @@ -785,10 +786,10 @@ void Stoneship::o_drawerCloseOpened(uint16 var, const ArgumentsArray &args) { void Stoneship::drawerClose(uint16 drawer) { _chestDrawersOpen = 0; - _vm->drawCardBackground(); - _vm->drawResourceImages(); + _vm->getCard()->drawBackground(); + _vm->getCard()->drawResourceImages(); - MystArea *res = _vm->_resources[drawer]; + MystArea *res = _vm->getCard()->getResource<MystArea>(drawer); _vm->_gfx->runTransition(kTransitionBottomToTop, res->getRect(), 25, 5); } @@ -844,8 +845,8 @@ void Stoneship::batteryGauge_run() { _batteryLastCharge = batteryCharge; // Redraw card - _vm->drawCardBackground(); - _vm->drawResourceImages(); + _vm->getCard()->drawBackground(); + _vm->getCard()->drawResourceImages(); _vm->_gfx->copyBackBufferToScreen(Common::Rect(544, 333)); } } @@ -946,12 +947,12 @@ void Stoneship::o_achenarDrawers_init(uint16 var, const ArgumentsArray &args) { uint16 count1 = args[0]; for (uint16 i = 0; i < count1; i++) { debugC(kDebugScript, "Disable hotspot index %d", args[i + 1]); - _vm->setResourceEnabled(args[i + 1], false); + _vm->getCard()->setResourceEnabled(args[i + 1], false); } uint16 count2 = args[count1 + 1]; for (uint16 i = 0; i < count2; i++) { debugC(kDebugScript, "Enable hotspot index %d", args[i + count1 + 2]); - _vm->setResourceEnabled(args[i + count1 + 2], true); + _vm->getCard()->setResourceEnabled(args[i + count1 + 2], true); } } } |