aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks
diff options
context:
space:
mode:
authorBastien Bouclet2018-05-27 20:39:26 +0200
committerBastien Bouclet2018-06-13 07:55:55 +0200
commit13b3371f1af143a319656bf476712abf41ee613b (patch)
treeae4c51e877e2627358c12a6431931c56bd905d1c /engines/mohawk/myst_stacks
parente3972150482531fdeea16609680fa6db1209c6ac (diff)
downloadscummvm-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.cpp15
-rw-r--r--engines/mohawk/myst_stacks/credits.cpp3
-rw-r--r--engines/mohawk/myst_stacks/mechanical.cpp39
-rw-r--r--engines/mohawk/myst_stacks/myst.cpp173
-rw-r--r--engines/mohawk/myst_stacks/selenitic.cpp48
-rw-r--r--engines/mohawk/myst_stacks/stoneship.cpp29
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);
}
}
}