From 0da6b15539c4dbb1371cd18ae77b90688ef3f764 Mon Sep 17 00:00:00 2001 From: md5 Date: Mon, 14 Feb 2011 18:16:35 +0200 Subject: SCI2+: Point out that there is a hack in the text splitting code This particular hack causes issues in GK1, when talking with Grace, because the width of the associated plane isn't set correctly. --- engines/sci/graphics/frameout.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 5b690f289a..026a2ff405 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -584,6 +584,11 @@ void GfxFrameout::kernelFrameout() { uint16 startX = itemEntry->x + it->planeRect.left; uint16 curY = itemEntry->y + it->planeRect.top; const char *txt = text.c_str(); + // HACK. The plane sometimes doesn't contain the correct width. This + // hack breaks the dialog options when speaking with Grace, but it's + // the best we got up to now. + // TODO: Remove this, and figure out why the plane in question isn't + // initialized correctly (its width is 0). uint16 w = it->planeRect.width() >= 20 ? it->planeRect.width() : _screen->getWidth() - 10; int16 charCount; -- cgit v1.2.3 From 7ecab9a982e68e6f500b8c056987acafb1ae1552 Mon Sep 17 00:00:00 2001 From: eriktorbjorn Date: Mon, 14 Feb 2011 20:27:54 +0100 Subject: TOON: Disable quick save/load from the main menu screen. Saving is pointless and loading doesn't work right. Unless it's really easy, making quick load work from the main menu is hardly worth it, since it has a perfectly usable load button already. --- engines/toon/state.cpp | 1 + engines/toon/state.h | 1 + engines/toon/toon.cpp | 10 +++++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/engines/toon/state.cpp b/engines/toon/state.cpp index 71674688d5..abd8a409a6 100644 --- a/engines/toon/state.cpp +++ b/engines/toon/state.cpp @@ -80,6 +80,7 @@ State::State(void) { _showConversationIcons = false; + _inMenu = false; _inCloseUp = false; _inConversation = false; diff --git a/engines/toon/state.h b/engines/toon/state.h index 283e378443..d31ff4f3c2 100644 --- a/engines/toon/state.h +++ b/engines/toon/state.h @@ -62,6 +62,7 @@ public: int16 _confiscatedInventory[35]; int32 _numInventoryItems; int32 _numConfiscatedInventoryItems; + bool _inMenu; bool _inCloseUp; bool _inCutaway; bool _inConversation; diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 79e153a7db..d2b98c2ed0 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -185,7 +185,7 @@ void ToonEngine::parseInput() { bool hasModifier = event.kbd.hasFlags(Common::KBD_ALT|Common::KBD_CTRL|Common::KBD_SHIFT); switch (event.type) { - case Common::EVENT_KEYUP: + case Common::EVENT_KEYDOWN: if ((event.kbd.ascii == 27 || event.kbd.ascii == 32) && !hasModifier) { _audioManager->stopCurrentVoice(); } @@ -588,6 +588,8 @@ bool ToonEngine::showMainmenu(bool &loadedGame) { AudioStreamInstance *mainmenuMusic = NULL; bool musicPlaying = false; + _gameState->_inMenu = true; + while (!doExit) { clickingOn = MAINMENUHOTSPOT_NONE; clickRelease = false; @@ -700,6 +702,8 @@ bool ToonEngine::showMainmenu(bool &loadedGame) { } } + _gameState->_inMenu = false; + //delete mainmenuMusic; for (int entryNr = 0; entryNr < MAINMENU_ENTRYCOUNT; entryNr++) delete entries[entryNr].animation; @@ -2956,11 +2960,11 @@ void ToonEngine::pauseEngineIntern(bool pause) { } bool ToonEngine::canSaveGameStateCurrently() { - return !_gameState->_inInventory && !_gameState->_inConversation && !_gameState->_inCutaway && !_gameState->_mouseHidden && !_moviePlayer->isPlaying(); + return !_gameState->_inMenu && !_gameState->_inInventory && !_gameState->_inConversation && !_gameState->_inCutaway && !_gameState->_mouseHidden && !_moviePlayer->isPlaying(); } bool ToonEngine::canLoadGameStateCurrently() { - return !_gameState->_inInventory && !_gameState->_inConversation && !_gameState->_inCutaway && !_gameState->_mouseHidden && !_moviePlayer->isPlaying(); + return !_gameState->_inMenu && !_gameState->_inInventory && !_gameState->_inConversation && !_gameState->_inCutaway && !_gameState->_mouseHidden && !_moviePlayer->isPlaying(); } Common::String ToonEngine::getSavegameName(int nr) { -- cgit v1.2.3 From 31539697dc4551790f8da0b0a20f4f8008b1b1aa Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Mon, 14 Feb 2011 16:01:04 -0500 Subject: SCI: Fix loading pre-version 28 saved games This is a regression from a9b051beff3157e1aa8 --- engines/sci/engine/savegame.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index a59d4c000b..ea56a2faff 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -179,7 +179,7 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { mobj->saveLoadWithSerializer(s); - if (type == SEG_TYPE_SCRIPT && s.getVersion() >= 28) { + if (type == SEG_TYPE_SCRIPT) { Script *scr = (Script *)mobj; // If we are loading a script, perform some extra steps @@ -196,7 +196,8 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { } // Sync the script's string heap - scr->syncStringHeap(s); + if (s.getVersion() >= 28) + scr->syncStringHeap(s); } } -- cgit v1.2.3 From 50129178efcd2a6defae679f059bd9de796a3122 Mon Sep 17 00:00:00 2001 From: dhewg Date: Mon, 14 Feb 2011 22:00:01 +0100 Subject: WII: Fix 16bit cursors on some HE games --- backends/platform/wii/osystem_gfx.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp index 09575bb83d..4a925a60c9 100644 --- a/backends/platform/wii/osystem_gfx.cpp +++ b/backends/platform/wii/osystem_gfx.cpp @@ -333,16 +333,19 @@ void OSystem_Wii::setPalette(const byte *colors, uint start, uint num) { gfx_tex_flush_palette(&_texGame); + s = colors; + d = _cursorPalette; + + for (uint i = 0; i < num; ++i) { + d[start + i] = Graphics::ARGBToColor >(0xff, s[0], s[1], s[2]); + s += 4; + } + if (_cursorPaletteDisabled) { assert(_texMouse.palette); - s = colors; - d = _texMouse.palette; - - for (uint i = 0; i < num; ++i) { - d[start + i] = Graphics::ARGBToColor >(0xff, s[0], s[1], s[2]); - s += 4; - } + memcpy((u8 *)_texMouse.palette + start * 2, + (u8 *)_cursorPalette + start * 2, num * 2); _cursorPaletteDirty = true; } -- cgit v1.2.3 From 8ef4594f9b9016f6b93fc176dd8aea8bdd7d85cf Mon Sep 17 00:00:00 2001 From: md5 Date: Tue, 15 Feb 2011 01:30:33 +0200 Subject: SCI2+: Set the correct segment for SCI32 strings/arrays when loading This was an omission, observed after a discussion with clone2727 --- engines/sci/engine/savegame.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index ea56a2faff..610698fbd9 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -144,17 +144,15 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { SegmentType type = (s.isSaving() && mobj) ? mobj->getType() : SEG_TYPE_INVALID; s.syncAsUint32LE(type); - // If we were saving and mobj == 0, or if we are loading and this is an - // entry marked as empty -> skip to next - if (type == SEG_TYPE_INVALID) + if (type == SEG_TYPE_HUNK) { + // Don't save or load HunkTable segments continue; - - // Don't save or load HunkTable segments - if (type == SEG_TYPE_HUNK) + } else if (type == SEG_TYPE_INVALID) { + // If we were saving and mobj == 0, or if we are loading and this is an + // entry marked as empty -> skip to next continue; - - // Don't save or load the obsolete system string segments - if (type == 5) { + } else if (type == 5) { + // Don't save or load the obsolete system string segments if (s.isSaving()) { continue; } else { @@ -169,6 +167,15 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { continue; } } +#ifdef ENABLE_SCI32 + else if (type == SEG_TYPE_ARRAY) { + // Set the correct segment for SCI32 arrays + _arraysSegId = i; + } else if (type == SEG_TYPE_STRING) { + // Set the correct segment for SCI32 strings + _stringSegId = i; + } +#endif if (s.isLoading()) mobj = SegmentObj::createSegmentObj(type); @@ -178,7 +185,6 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { // Let the object sync custom data mobj->saveLoadWithSerializer(s); - if (type == SEG_TYPE_SCRIPT) { Script *scr = (Script *)mobj; -- cgit v1.2.3 From ee09af6a12e26f100a9a0457dcb552707abd4288 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Mon, 14 Feb 2011 22:38:12 -0500 Subject: SCI: Fix loading SCI32 games The frames/items in GfxFrameout need to be cleared upon loading --- engines/sci/engine/savegame.cpp | 16 +++++++++++++--- engines/sci/graphics/frameout.cpp | 6 ++++++ engines/sci/graphics/frameout.h | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 610698fbd9..ab355cebb4 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -47,6 +47,10 @@ #include "sci/sound/audio.h" #include "sci/sound/music.h" +#ifdef ENABLE_SCI32 +#include "sci/graphics/frameout.h" +#endif + namespace Sci { @@ -130,6 +134,13 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { // Reset _scriptSegMap, to be restored below _scriptSegMap.clear(); + +#ifdef ENABLE_SCI32 + // Clear any planes/screen items currently showing so they + // don't show up after the load. + if (getSciVersion() >= SCI_VERSION_2) + g_sci->_gfxFrameout->clear(); +#endif } s.skip(4, VER(14), VER(18)); // OBSOLETE: Used to be _exportsAreWide @@ -166,16 +177,15 @@ void SegManager::saveLoadWithSerializer(Common::Serializer &s) { _heap[i] = NULL; // set as freed continue; } - } #ifdef ENABLE_SCI32 - else if (type == SEG_TYPE_ARRAY) { + } else if (type == SEG_TYPE_ARRAY) { // Set the correct segment for SCI32 arrays _arraysSegId = i; } else if (type == SEG_TYPE_STRING) { // Set the correct segment for SCI32 strings _stringSegId = i; - } #endif + } if (s.isLoading()) mobj = SegmentObj::createSegmentObj(type); diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 026a2ff405..ab4a2c9c1a 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -58,6 +58,12 @@ GfxFrameout::GfxFrameout(SegManager *segMan, ResourceManager *resMan, GfxCoordAd GfxFrameout::~GfxFrameout() { } +void GfxFrameout::clear() { + _screenItems.clear(); + _planes.clear(); + _planePictures.clear(); +} + void GfxFrameout::kernelAddPlane(reg_t object) { PlaneEntry newPlane; diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h index 93d61ba22e..347ecb9424 100644 --- a/engines/sci/graphics/frameout.h +++ b/engines/sci/graphics/frameout.h @@ -28,6 +28,8 @@ namespace Sci { +class GfxPicture; + struct PlaneEntry { reg_t object; uint16 priority; @@ -99,6 +101,7 @@ public: void addPlanePicture(reg_t object, GuiResourceId pictureId, uint16 startX); void deletePlanePictures(reg_t object); + void clear(); private: SegManager *_segMan; -- cgit v1.2.3 From f1030515d0875c2d306f0e97517f8dfac1375f6c Mon Sep 17 00:00:00 2001 From: Littleboy Date: Mon, 14 Feb 2011 23:14:13 -0500 Subject: GIT: Ignore Visual Studio precompiled headers folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 951ef3978d..0b302073ae 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,7 @@ Thumbs.db *.opensdf obj/ _ReSharper*/ +ipch/ [Tt]est[Rr]esult* *.vcproj *.sln -- cgit v1.2.3 From 402ac930fe440af42354bd0c635abb07a69cfc4a Mon Sep 17 00:00:00 2001 From: strangerke Date: Tue, 15 Feb 2011 10:15:21 +0100 Subject: HUGO: more refactoring and encapsulation --- engines/hugo/display.cpp | 6 +- engines/hugo/file.cpp | 13 +- engines/hugo/hugo.cpp | 297 ++++---------------------------------------- engines/hugo/hugo.h | 27 +--- engines/hugo/intro.cpp | 45 +++++-- engines/hugo/intro.h | 11 +- engines/hugo/inventory.cpp | 41 +++++- engines/hugo/inventory.h | 8 +- engines/hugo/object.cpp | 52 +++++++- engines/hugo/object.h | 4 + engines/hugo/parser.cpp | 154 ++++++++++++++++++++++- engines/hugo/parser.h | 20 ++- engines/hugo/parser_v1d.cpp | 18 +-- engines/hugo/parser_v1w.cpp | 8 +- engines/hugo/parser_v2d.cpp | 10 +- engines/hugo/parser_v3d.cpp | 20 +-- engines/hugo/schedule.cpp | 118 +++++++++++++++++- engines/hugo/schedule.h | 15 +++ 18 files changed, 496 insertions(+), 371 deletions(-) diff --git a/engines/hugo/display.cpp b/engines/hugo/display.cpp index a2902e3b9d..69ca06467e 100644 --- a/engines/hugo/display.cpp +++ b/engines/hugo/display.cpp @@ -607,11 +607,7 @@ void Screen::selectInventoryObjId(const int16 objId) { _vm->_inventory->setInventoryObjId(objId); // Select new object // Find index of icon - int16 iconId = 0; // Find index of dragged icon - for (; iconId < _vm->_maxInvent; iconId++) { - if (objId == _vm->_invent[iconId]) - break; - } + int16 iconId = _vm->_inventory->findIconId(objId); // Compute source coordinates in dib_u int16 ux = (iconId + kArrowNumb) * kInvDx % kXPix; diff --git a/engines/hugo/file.cpp b/engines/hugo/file.cpp index 7427771906..2e23247468 100644 --- a/engines/hugo/file.cpp +++ b/engines/hugo/file.cpp @@ -369,11 +369,7 @@ bool FileManager::saveGame(const int16 slot, const Common::String &descrip) { for (int i = 0; i < _vm->_numScreens; i++) out->writeByte(_vm->_screenStates[i]); - // Save points table - for (int i = 0; i < _vm->_numBonuses; i++) { - out->writeByte(_vm->_points[i].score); - out->writeByte((_vm->_points[i].scoredFl) ? 1 : 0); - } + _vm->_scheduler->savePoints(out); // Now save current time and all current events in event queue _vm->_scheduler->saveEvents(out); @@ -475,12 +471,7 @@ bool FileManager::restoreGame(const int16 slot) { for (int i = 0; i < _vm->_numScreens; i++) _vm->_screenStates[i] = in->readByte(); - // Restore points table - for (int i = 0; i < _vm->_numBonuses; i++) { - _vm->_points[i].score = in->readByte(); - _vm->_points[i].scoredFl = (in->readByte() == 1); - } - + _vm->_scheduler->restorePoints(in); _vm->_object->restoreAllSeq(); // Now restore time of the save and the event queue diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index 4a8b74fc1c..76898c62a9 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -54,10 +54,8 @@ maze_t _maze; // Default to not in maze hugo_boot_t _boot; // Boot info structure file HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(syst), _gameDescription(gd), - _arrayReqs(0), _invent(0), _uses(0), _catchallList(0), _backgroundObjects(0), _points(0), _cmdList(0), - _screenActs(0), _hero(0), _heroImage(0), _defltTunes(0), _introX(0), _introY(0), _maxInvent(0), _numBonuses(0), - _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0), _screenStates(0), _score(0), _maxscore(0), - _backgroundObjectsSize(0), _screenActsSize(0), _usesSize(0), _lastTime(0), _curTime(0) + _hero(0), _heroImage(0), _defltTunes(0), _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0), + _screenStates(0), _score(0), _maxscore(0), _lastTime(0), _curTime(0) { _system = syst; DebugMan.addDebugChannel(kDebugSchedule, "Schedule", "Script Schedule debug level"); @@ -80,47 +78,16 @@ HugoEngine::~HugoEngine() { _screen->freePalette(); _text->freeAllTexts(); - - free(_introX); - free(_introY); - - if (_arrayReqs) { - for (int i = 0; _arrayReqs[i] != 0; i++) - free(_arrayReqs[i]); - free(_arrayReqs); - } - + _intro->freeIntroData(); + _parser->freeArrayReqs(); _mouse->freeHotspots(); - free(_invent); - - if (_uses) { - for (int i = 0; i < _usesSize; i++) - free(_uses[i].targets); - free(_uses); - } - - free(_catchallList); - - if (_backgroundObjects) { - for (int i = 0; i < _backgroundObjectsSize; i++) - free(_backgroundObjects[i]); - free(_backgroundObjects); - } - - free(_points); - - if (_cmdList) { - for (int i = 0; i < _cmdListSize; i++) - free(_cmdList[i]); - free(_cmdList); - } - - if (_screenActs) { - for (int i = 0; i < _screenActsSize; i++) - free(_screenActs[i]); - free(_screenActs); - } - + _inventory->freeInvent(); + _object->freeObjectUses(); + _parser->freeCatchallList(); + _parser->freeBackgroundObjects(); + _scheduler->freePoints(); + _parser->freeCmdList(); + _scheduler->freeScreenAct(); _object->freeObjectArr(); _scheduler->freeActListArr(); @@ -388,207 +355,23 @@ bool HugoEngine::loadHugoDat() { } _numVariant = in.readUint16BE(); + _screen->loadPalette(in); _text->loadAllTexts(in); - - // Read x_intro and y_intro - for (int varnt = 0; varnt < _numVariant; varnt++) { - int numRows = in.readUint16BE(); - if (varnt == _gameVariant) { - _introXSize = numRows; - _introX = (byte *)malloc(sizeof(byte) * _introXSize); - _introY = (byte *)malloc(sizeof(byte) * _introXSize); - for (int i = 0; i < _introXSize; i++) { - _introX[i] = in.readByte(); - _introY[i] = in.readByte(); - } - } else { - for (int i = 0; i < numRows; i++) { - in.readByte(); - in.readByte(); - } - } - } - - // Read _arrayReqs - _arrayReqs = loadLongArray(in); - + _intro->loadIntroData(in); + _parser->loadArrayReqs(in); _mouse->loadHotspots(in); - - int numElem, numSubElem; - //Read _invent - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - if (varnt == _gameVariant) { - _maxInvent = numElem; - _invent = (int16 *)malloc(sizeof(int16) * numElem); - for (int i = 0; i < numElem; i++) - _invent[i] = in.readSint16BE(); - } else { - for (int i = 0; i < numElem; i++) - in.readSint16BE(); - } - } - - //Read _uses - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - uses_t *wrkUses = (uses_t *)malloc(sizeof(uses_t) * numElem); - - for (int i = 0; i < numElem; i++) { - wrkUses[i].objId = in.readSint16BE(); - wrkUses[i].dataIndex = in.readUint16BE(); - numSubElem = in.readUint16BE(); - wrkUses[i].targets = (target_t *)malloc(sizeof(target_t) * numSubElem); - for (int j = 0; j < numSubElem; j++) { - wrkUses[i].targets[j].nounIndex = in.readUint16BE(); - wrkUses[i].targets[j].verbIndex = in.readUint16BE(); - } - } - - if (varnt == _gameVariant) { - _usesSize = numElem; - _uses = wrkUses; - } else { - for (int i = 0; i < numElem; i++) - free(wrkUses[i].targets); - free(wrkUses); - } - } - - //Read _catchallList - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - background_t *wrkCatchallList = (background_t *)malloc(sizeof(background_t) * numElem); - - for (int i = 0; i < numElem; i++) { - wrkCatchallList[i].verbIndex = in.readUint16BE(); - wrkCatchallList[i].nounIndex = in.readUint16BE(); - wrkCatchallList[i].commentIndex = in.readSint16BE(); - wrkCatchallList[i].matchFl = (in.readByte() != 0); - wrkCatchallList[i].roomState = in.readByte(); - wrkCatchallList[i].bonusIndex = in.readByte(); - } - - if (varnt == _gameVariant) - _catchallList = wrkCatchallList; - else - free(wrkCatchallList); - } - - // Read _background_objects - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - - background_t **wrkBackgroundObjects = (background_t **)malloc(sizeof(background_t *) * numElem); - - for (int i = 0; i < numElem; i++) { - numSubElem = in.readUint16BE(); - wrkBackgroundObjects[i] = (background_t *)malloc(sizeof(background_t) * numSubElem); - for (int j = 0; j < numSubElem; j++) { - wrkBackgroundObjects[i][j].verbIndex = in.readUint16BE(); - wrkBackgroundObjects[i][j].nounIndex = in.readUint16BE(); - wrkBackgroundObjects[i][j].commentIndex = in.readSint16BE(); - wrkBackgroundObjects[i][j].matchFl = (in.readByte() != 0); - wrkBackgroundObjects[i][j].roomState = in.readByte(); - wrkBackgroundObjects[i][j].bonusIndex = in.readByte(); - } - } - - if (varnt == _gameVariant) { - _backgroundObjectsSize = numElem; - _backgroundObjects = wrkBackgroundObjects; - } else { - for (int i = 0; i < numElem; i++) - free(wrkBackgroundObjects[i]); - free(wrkBackgroundObjects); - } - } - - // Read _points - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - if (varnt == _gameVariant) { - _numBonuses = numElem; - _points = (point_t *)malloc(sizeof(point_t) * _numBonuses); - for (int i = 0; i < _numBonuses; i++) { - _points[i].score = in.readByte(); - _points[i].scoredFl = false; - } - } else { - for (int i = 0; i < numElem; i++) - in.readByte(); - } - } - - // Read _cmdList - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - if (varnt == _gameVariant) { - _cmdListSize = numElem; - _cmdList = (cmd **)malloc(sizeof(cmd *) * _cmdListSize); - for (int i = 0; i < _cmdListSize; i++) { - numSubElem = in.readUint16BE(); - _cmdList[i] = (cmd *)malloc(sizeof(cmd) * numSubElem); - for (int j = 0; j < numSubElem; j++) { - _cmdList[i][j].verbIndex = in.readUint16BE(); - _cmdList[i][j].reqIndex = in.readUint16BE(); - _cmdList[i][j].textDataNoCarryIndex = in.readUint16BE(); - _cmdList[i][j].reqState = in.readByte(); - _cmdList[i][j].newState = in.readByte(); - _cmdList[i][j].textDataWrongIndex = in.readUint16BE(); - _cmdList[i][j].textDataDoneIndex = in.readUint16BE(); - _cmdList[i][j].actIndex = in.readUint16BE(); - } - } - } else { - for (int i = 0; i < numElem; i++) { - numSubElem = in.readUint16BE(); - for (int j = 0; j < numSubElem; j++) { - in.readUint16BE(); - in.readUint16BE(); - in.readUint16BE(); - in.readByte(); - in.readByte(); - in.readUint16BE(); - in.readUint16BE(); - in.readUint16BE(); - } - } - } - } - - // Read _screenActs - for (int varnt = 0; varnt < _numVariant; varnt++) { - numElem = in.readUint16BE(); - - uint16 **wrkScreenActs = (uint16 **)malloc(sizeof(uint16 *) * numElem); - for (int i = 0; i < numElem; i++) { - numSubElem = in.readUint16BE(); - if (numSubElem == 0) { - wrkScreenActs[i] = 0; - } else { - wrkScreenActs[i] = (uint16 *)malloc(sizeof(uint16) * numSubElem); - for (int j = 0; j < numSubElem; j++) - wrkScreenActs[i][j] = in.readUint16BE(); - } - } - - if (varnt == _gameVariant) { - _screenActsSize = numElem; - _screenActs = wrkScreenActs; - } else { - for (int i = 0; i < numElem; i++) - free(wrkScreenActs[i]); - free(wrkScreenActs); - } - } + _inventory->loadInvent(in); + _object->loadObjectUses(in); + _parser->loadCatchallList(in); + _parser->loadBackgroundObjects(in); + _scheduler->loadPoints(in); + _parser->loadCmdList(in); + _scheduler->loadScreenAct(in); _object->loadObjectArr(in); - _hero = &_object->_objects[kHeroIndex]; // This always points to hero _screen_p = &(_object->_objects[kHeroIndex].screenIndex); // Current screen is hero's _heroImage = kHeroIndex; // Current in use hero image - _scheduler->loadActListArr(in); for (int varnt = 0; varnt < _numVariant; varnt++) { @@ -603,6 +386,8 @@ bool HugoEngine::loadHugoDat() { } } + int numElem; + //Read _defltTunes for (int varnt = 0; varnt < _numVariant; varnt++) { numElem = in.readUint16BE(); @@ -819,37 +604,6 @@ void HugoEngine::readScreenFiles(const int screenNum) { _object->clearScreenBoundary(50, 311, 152); } -/** - * Search background command list for this screen for supplied object. - * Return first associated verb (not "look") or 0 if none found. - */ -const char *HugoEngine::useBG(const char *name) { - debugC(1, kDebugEngine, "useBG(%s)", name); - - objectList_t p = _backgroundObjects[*_screen_p]; - for (int i = 0; p[i].verbIndex != 0; i++) { - if ((name == _text->getNoun(p[i].nounIndex, 0) && - p[i].verbIndex != _look) && - ((p[i].roomState == kStateDontCare) || (p[i].roomState == _screenStates[*_screen_p]))) - return _text->getVerb(p[i].verbIndex, 0); - } - - return 0; -} - -/** - * Add action lists for this screen to event queue - */ -void HugoEngine::screenActions(const int screenNum) { - debugC(1, kDebugEngine, "screenActions(%d)", screenNum); - - uint16 *screenAct = _screenActs[screenNum]; - if (screenAct) { - for (int i = 0; screenAct[i]; i++) - _scheduler->insertActionList(screenAct[i]); - } -} - /** * Set the new screen number into the hero object and any carried objects */ @@ -866,10 +620,7 @@ void HugoEngine::setNewScreen(const int screenNum) { void HugoEngine::calcMaxScore() { debugC(1, kDebugEngine, "calcMaxScore"); - _maxscore = _object->calcMaxScore(); - - for (int i = 0; i < _numBonuses; i++) - _maxscore += _points[i].score; + _maxscore = _object->calcMaxScore() + _scheduler->calcMaxPoints(); } /** diff --git a/engines/hugo/hugo.h b/engines/hugo/hugo.h index b73b24eccf..7c12fcd2ee 100644 --- a/engines/hugo/hugo.h +++ b/engines/hugo/hugo.h @@ -233,8 +233,6 @@ public: byte _numVariant; byte _gameVariant; - byte _maxInvent; - byte _numBonuses; int8 _soundSilence; int8 _soundTest; int8 _tunesNbr; @@ -245,23 +243,9 @@ public: byte *_screen_p; byte _heroImage; - byte *_introX; - byte *_introY; byte *_screenStates; command_t _line; // Line of user text input config_t _config; // User's config - uint16 **_arrayReqs; - int16 *_invent; - uses_t *_uses; - uint16 _usesSize; - background_t *_catchallList; - background_t **_backgroundObjects; - uint16 _backgroundObjectsSize; - point_t *_points; - cmd **_cmdList; - uint16 _cmdListSize; - uint16 **_screenActs; - uint16 _screenActsSize; int16 *_defltTunes; uint16 _look; uint16 _take; @@ -295,8 +279,6 @@ public: virtual bool canSaveGameStateCurrently(); bool loadHugoDat(); - const char *useBG(const char *name); - int8 getTPS() const; void initGame(const HugoGameDescription *gd); @@ -304,7 +286,6 @@ public: void endGame(); void initStatus(); void readScreenFiles(const int screen); - void screenActions(const int screen); void setNewScreen(const int screen); void shutdown(); void syncSoundSettings(); @@ -327,9 +308,6 @@ public: void setMaxScore(const int newScore) { _maxscore = newScore; } - byte getIntroSize() { - return _introXSize; - } Common::Error saveGameState(int slot, const char *desc) { return (_file->saveGame(slot, desc) ? Common::kWritingFailed : Common::kNoError); } @@ -345,6 +323,7 @@ public: const char *getCopyrightString() const { return "Copyright 1989-1997 David P Gray, All Rights Reserved."; } Common::String getSavegameFilename(int slot); + uint16 **loadLongArray(Common::ReadStream &in); FileManager *_file; Scheduler *_scheduler; @@ -357,7 +336,6 @@ public: IntroHandler *_intro; ObjectHandler *_object; TextHandler *_text; - TopMenu *_topMenu; protected: @@ -368,7 +346,6 @@ protected: private: static const int kTurboTps = 16; // This many in turbo mode - byte _introXSize; status_t _status; // Game status structure uint32 _lastTime; uint32 _curTime; @@ -384,8 +361,6 @@ private: int _score; // Holds current score int _maxscore; // Holds maximum score - uint16 **loadLongArray(Common::ReadStream &in); - void initPlaylist(bool playlist[kMaxTunes]); void initConfig(); void initialize(); diff --git a/engines/hugo/intro.cpp b/engines/hugo/intro.cpp index 02fb94c83d..4ee46f80b5 100644 --- a/engines/hugo/intro.cpp +++ b/engines/hugo/intro.cpp @@ -41,12 +41,41 @@ namespace Hugo { -IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm) { +IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm), _introX(0), _introY(0) { + _introXSize = 0; } IntroHandler::~IntroHandler() { } +/** + * Read _introX and _introY from hugo.dat + */ +void IntroHandler::loadIntroData(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + int numRows = in.readUint16BE(); + if (varnt == _vm->_gameVariant) { + _introXSize = numRows; + _introX = (byte *)malloc(sizeof(byte) * _introXSize); + _introY = (byte *)malloc(sizeof(byte) * _introXSize); + for (int i = 0; i < _introXSize; i++) { + _introX[i] = in.readByte(); + _introY[i] = in.readByte(); + } + } else { + for (int i = 0; i < numRows; i++) { + in.readByte(); + in.readByte(); + } + } + } +} + +void IntroHandler::freeIntroData() { + free(_introX); + free(_introY); +} + intro_v1d::intro_v1d(HugoEngine *vm) : IntroHandler(vm) { } @@ -68,7 +97,7 @@ void intro_v1d::introInit() { } bool intro_v1d::introPlay() { - byte introSize = _vm->getIntroSize(); + byte introSize = getIntroSize(); if (_vm->getGameStatus().skipIntroFl) return true; @@ -296,8 +325,8 @@ bool intro_v3d::introPlay() { if (_vm->getGameStatus().skipIntroFl) return true; - if (introTicks < _vm->getIntroSize()) { - font.drawString(&surf, ".", _vm->_introX[introTicks], _vm->_introY[introTicks] - kDibOffY, 320, _TBRIGHTWHITE); + if (introTicks < getIntroSize()) { + font.drawString(&surf, ".", _introX[introTicks], _introY[introTicks] - kDibOffY, 320, _TBRIGHTWHITE); _vm->_screen->displayBackground(); // Text boxes at various times @@ -314,7 +343,7 @@ bool intro_v3d::introPlay() { } } - return (++introTicks >= _vm->getIntroSize()); + return (++introTicks >= getIntroSize()); } intro_v1w::intro_v1w(HugoEngine *vm) : IntroHandler(vm) { @@ -387,9 +416,9 @@ bool intro_v3w::introPlay() { if (_vm->getGameStatus().skipIntroFl) return true; - if (introTicks < _vm->getIntroSize()) { + if (introTicks < getIntroSize()) { // Scale viewport x_intro,y_intro to screen (offsetting y) - _vm->_screen->writeStr(_vm->_introX[introTicks], _vm->_introY[introTicks] - kDibOffY, "x", _TBRIGHTWHITE); + _vm->_screen->writeStr(_introX[introTicks], _introY[introTicks] - kDibOffY, "x", _TBRIGHTWHITE); _vm->_screen->displayBackground(); // Text boxes at various times @@ -406,6 +435,6 @@ bool intro_v3w::introPlay() { } } - return (++introTicks >= _vm->getIntroSize()); + return (++introTicks >= getIntroSize()); } } // End of namespace Hugo diff --git a/engines/hugo/intro.h b/engines/hugo/intro.h index 37c846fc10..351352554e 100644 --- a/engines/hugo/intro.h +++ b/engines/hugo/intro.h @@ -54,9 +54,18 @@ public: virtual void introInit() = 0; virtual bool introPlay() = 0; + void freeIntroData(); + void loadIntroData(Common::ReadStream &in); + + byte getIntroSize() const { return _introXSize; } + protected: HugoEngine *_vm; - int16 introTicks; // Count calls to introPlay() + + byte *_introX; + byte *_introY; + byte _introXSize; + int16 introTicks; // Count calls to introPlay() }; class intro_v1w : public IntroHandler { diff --git a/engines/hugo/inventory.cpp b/engines/hugo/inventory.cpp index 4bf107575e..a45df7e077 100644 --- a/engines/hugo/inventory.cpp +++ b/engines/hugo/inventory.cpp @@ -46,11 +46,30 @@ namespace Hugo { static const int kMaxDisp = (kXPix / kInvDx); // Max icons displayable -InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm) { +InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm), _invent(0) { _firstIconId = 0; _inventoryState = kInventoryOff; // Inventory icon bar state _inventoryHeight = 0; // Inventory icon bar pos _inventoryObjId = -1; // Inventory object selected (none) + _maxInvent = 0; +} + +/** + * Read _invent from Hugo.dat + */ +void InventoryHandler::loadInvent(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + int16 numElem = in.readUint16BE(); + if (varnt == _vm->_gameVariant) { + _maxInvent = numElem; + _invent = (int16 *)malloc(sizeof(int16) * numElem); + for (int i = 0; i < numElem; i++) + _invent[i] = in.readSint16BE(); + } else { + for (int i = 0; i < numElem; i++) + in.readSint16BE(); + } + } } /** @@ -78,7 +97,7 @@ void InventoryHandler::constructInventory(const int16 imageTotNumb, int displayN int16 displayed = 0; int16 carried = 0; for (int16 i = 0; (i < imageTotNumb) && (displayed < displayNumb); i++) { - if (_vm->_object->isCarried(_vm->_invent[i])) { + if (_vm->_object->isCarried(_invent[i])) { // Check still room to display and past first scroll index if (displayed < displayNumb && carried >= firstObjId) { // Compute source coordinates in dib_u @@ -107,8 +126,8 @@ int16 InventoryHandler::processInventory(const invact_t action, ...) { int16 imageNumb; // Total number of inventory items int displayNumb; // Total number displayed/carried // Compute total number and number displayed, i.e. number carried - for (imageNumb = 0, displayNumb = 0; imageNumb < _vm->_maxInvent && _vm->_invent[imageNumb] != -1; imageNumb++) { - if (_vm->_object->isCarried(_vm->_invent[imageNumb])) + for (imageNumb = 0, displayNumb = 0; imageNumb < _maxInvent && _invent[imageNumb] != -1; imageNumb++) { + if (_vm->_object->isCarried(_invent[imageNumb])) displayNumb++; } @@ -236,4 +255,18 @@ void InventoryHandler::runInventory() { } } + +/** + * Find index of dragged icon + */ +int16 InventoryHandler::findIconId(int16 objId) { + int16 iconId = 0; + for (; iconId < _maxInvent; iconId++) { + if (objId == _invent[iconId]) + break; + } + + return iconId; +} + } // End of namespace Hugo diff --git a/engines/hugo/inventory.h b/engines/hugo/inventory.h index deb22cf9aa..8d60904c6f 100644 --- a/engines/hugo/inventory.h +++ b/engines/hugo/inventory.h @@ -45,11 +45,15 @@ public: void setInventoryObjId(int16 objId) { _inventoryObjId = objId; } void setInventoryState(istate_t state) { _inventoryState = state; } + void freeInvent() { free(_invent); } + int16 getInventoryObjId() const { return _inventoryObjId; } istate_t getInventoryState() const { return _inventoryState; } + int16 findIconId(int16 objId); + void loadInvent(Common::ReadStream &in); int16 processInventory(const invact_t action, ...); - void runInventory(); + void runInventory(); private: HugoEngine *_vm; @@ -57,9 +61,11 @@ private: static const int kStepDy = 8; // Pixels per step movement int16 _firstIconId; // Index of first icon to display + int16 *_invent; istate_t _inventoryState; // Inventory icon bar state int16 _inventoryHeight; // Inventory icon bar height int16 _inventoryObjId; // Inventory object selected, or -1 + byte _maxInvent; void constructInventory(const int16 imageTotNumb, int displayNumb, const bool scrollFl, int16 firstObjId); }; diff --git a/engines/hugo/object.cpp b/engines/hugo/object.cpp index b909df45bb..c2bcffb833 100644 --- a/engines/hugo/object.cpp +++ b/engines/hugo/object.cpp @@ -48,9 +48,10 @@ namespace Hugo { -ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm), _objects(0) { +ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm), _objects(0), _uses(0) { _numObj = 0; _objCount = 0; + _usesSize = 0; memset(_objBound, '\0', sizeof(overlay_t)); memset(_boundary, '\0', sizeof(overlay_t)); memset(_overlay, '\0', sizeof(overlay_t)); @@ -108,20 +109,20 @@ void ObjectHandler::useObject(int16 objId) { if ((obj->genericCmd & TAKE) || obj->objValue) // Get collectible item sprintf(_vm->_line, "%s %s", _vm->_text->getVerb(_vm->_take, 0), _vm->_text->getNoun(obj->nounIndex, 0)); else if (obj->cmdIndex != 0) // Use non-collectible item if able - sprintf(_vm->_line, "%s %s", _vm->_text->getVerb(_vm->_cmdList[obj->cmdIndex][0].verbIndex, 0), _vm->_text->getNoun(obj->nounIndex, 0)); - else if ((verb = _vm->useBG(_vm->_text->getNoun(obj->nounIndex, 0))) != 0) + sprintf(_vm->_line, "%s %s", _vm->_text->getVerb(_vm->_parser->getCmdDefaultVerbIdx(obj->cmdIndex), 0), _vm->_text->getNoun(obj->nounIndex, 0)); + else if ((verb = _vm->_parser->useBG(_vm->_text->getNoun(obj->nounIndex, 0))) != 0) sprintf(_vm->_line, "%s %s", verb, _vm->_text->getNoun(obj->nounIndex, 0)); else return; // Can't use object directly } else { // Use status.objid on objid // Default to first cmd verb - sprintf(_vm->_line, "%s %s %s", _vm->_text->getVerb(_vm->_cmdList[_objects[inventObjId].cmdIndex][0].verbIndex, 0), + sprintf(_vm->_line, "%s %s %s", _vm->_text->getVerb(_vm->_parser->getCmdDefaultVerbIdx(_objects[inventObjId].cmdIndex), 0), _vm->_text->getNoun(_objects[inventObjId].nounIndex, 0), _vm->_text->getNoun(obj->nounIndex, 0)); // Check valid use of objects and override verb if necessary - for (uses_t *use = _vm->_uses; use->objId != _numObj; use++) { + for (uses_t *use = _uses; use->objId != _numObj; use++) { if (inventObjId == use->objId) { // Look for secondary object, if found use matching verb bool foundFl = false; @@ -248,6 +249,16 @@ void ObjectHandler::freeObjects() { } } +/** + * Free all object uses + */ +void ObjectHandler::freeObjectUses() { + if (_uses) { + for (int i = 0; i < _usesSize; i++) + free(_uses[i].targets); + free(_uses); + } +} /** * Compare function for the quicksort. The sort is to order the objects in * increasing vertical position, using y+y2 as the baseline @@ -367,6 +378,37 @@ void ObjectHandler::freeObjectArr() { _objects = 0; } +/** + * Load _uses from Hugo.dat + */ +void ObjectHandler::loadObjectUses(Common::ReadStream &in) { + //Read _uses + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + uses_t *wrkUses = (uses_t *)malloc(sizeof(uses_t) * numElem); + + for (int i = 0; i < numElem; i++) { + wrkUses[i].objId = in.readSint16BE(); + wrkUses[i].dataIndex = in.readUint16BE(); + uint16 numSubElem = in.readUint16BE(); + wrkUses[i].targets = (target_t *)malloc(sizeof(target_t) * numSubElem); + for (int j = 0; j < numSubElem; j++) { + wrkUses[i].targets[j].nounIndex = in.readUint16BE(); + wrkUses[i].targets[j].verbIndex = in.readUint16BE(); + } + } + + if (varnt == _vm->_gameVariant) { + _usesSize = numElem; + _uses = wrkUses; + } else { + for (int i = 0; i < numElem; i++) + free(wrkUses[i].targets); + free(wrkUses); + } + } +} + /** * Load ObjectArr from Hugo.dat */ diff --git a/engines/hugo/object.h b/engines/hugo/object.h index aa2ed9ba9f..09dcfeb30f 100644 --- a/engines/hugo/object.h +++ b/engines/hugo/object.h @@ -73,7 +73,9 @@ public: int calcMaxScore(); int16 findObject(uint16 x, uint16 y); void freeObjects(); + void freeObjectUses(); void loadObjectArr(Common::ReadStream &in); + void loadObjectUses(Common::ReadStream &in); void freeObjectArr(); void loadNumObj(Common::ReadStream &in); void lookObject(object_t *obj); @@ -114,6 +116,8 @@ protected: static const int kMaxObjNumb = 128; // Used in Update_images() uint16 _objCount; + uses_t *_uses; + uint16 _usesSize; void restoreSeq(object_t *obj); diff --git a/engines/hugo/parser.cpp b/engines/hugo/parser.cpp index 001ddac8e4..5cc704eb21 100644 --- a/engines/hugo/parser.cpp +++ b/engines/hugo/parser.cpp @@ -51,17 +51,167 @@ namespace Hugo { -Parser::Parser(HugoEngine *vm) : - _vm(vm), _putIndex(0), _getIndex(0), _checkDoubleF1Fl(false) { +Parser::Parser(HugoEngine *vm) : _vm(vm), _putIndex(0), _getIndex(0), _arrayReqs(0), _catchallList(0), _backgroundObjects(0), _cmdList(0) { _cmdLineIndex = 0; _cmdLineTick = 0; _cmdLineCursor = '_'; _cmdLine[0] = '\0'; + _cmdListSize = 0; + _checkDoubleF1Fl = false; + _backgroundObjectsSize = 0; } Parser::~Parser() { } +/** + * Read _cmdList from Hugo.dat + */ +void Parser::loadCmdList(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + if (varnt == _vm->_gameVariant) { + _cmdListSize = numElem; + _cmdList = (cmd **)malloc(sizeof(cmd *) * _cmdListSize); + for (int i = 0; i < _cmdListSize; i++) { + uint16 numSubElem = in.readUint16BE(); + _cmdList[i] = (cmd *)malloc(sizeof(cmd) * numSubElem); + for (int j = 0; j < numSubElem; j++) { + _cmdList[i][j].verbIndex = in.readUint16BE(); + _cmdList[i][j].reqIndex = in.readUint16BE(); + _cmdList[i][j].textDataNoCarryIndex = in.readUint16BE(); + _cmdList[i][j].reqState = in.readByte(); + _cmdList[i][j].newState = in.readByte(); + _cmdList[i][j].textDataWrongIndex = in.readUint16BE(); + _cmdList[i][j].textDataDoneIndex = in.readUint16BE(); + _cmdList[i][j].actIndex = in.readUint16BE(); + } + } + } else { + for (int i = 0; i < numElem; i++) { + uint16 numSubElem = in.readUint16BE(); + for (int j = 0; j < numSubElem; j++) { + in.readUint16BE(); + in.readUint16BE(); + in.readUint16BE(); + in.readByte(); + in.readByte(); + in.readUint16BE(); + in.readUint16BE(); + in.readUint16BE(); + } + } + } + } +} + +void Parser::freeCmdList() { + if (_cmdList) { + for (int i = 0; i < _cmdListSize; i++) + free(_cmdList[i]); + free(_cmdList); + } +} + +/** + * Read _backgrounObjects from Hugo.dat + */ +void Parser::loadBackgroundObjects(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + + background_t **wrkBackgroundObjects = (background_t **)malloc(sizeof(background_t *) * numElem); + + for (int i = 0; i < numElem; i++) { + uint16 numSubElem = in.readUint16BE(); + wrkBackgroundObjects[i] = (background_t *)malloc(sizeof(background_t) * numSubElem); + for (int j = 0; j < numSubElem; j++) { + wrkBackgroundObjects[i][j].verbIndex = in.readUint16BE(); + wrkBackgroundObjects[i][j].nounIndex = in.readUint16BE(); + wrkBackgroundObjects[i][j].commentIndex = in.readSint16BE(); + wrkBackgroundObjects[i][j].matchFl = (in.readByte() != 0); + wrkBackgroundObjects[i][j].roomState = in.readByte(); + wrkBackgroundObjects[i][j].bonusIndex = in.readByte(); + } + } + + if (varnt == _vm->_gameVariant) { + _backgroundObjectsSize = numElem; + _backgroundObjects = wrkBackgroundObjects; + } else { + for (int i = 0; i < numElem; i++) + free(wrkBackgroundObjects[i]); + free(wrkBackgroundObjects); + } + } +} + +void Parser::freeBackgroundObjects() { + if (_backgroundObjects) { + for (int i = 0; i < _backgroundObjectsSize; i++) + free(_backgroundObjects[i]); + free(_backgroundObjects); + } +} + +/** + * Read _catchallList from Hugo.dat + */ +void Parser::loadCatchallList(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + background_t *wrkCatchallList = (background_t *)malloc(sizeof(background_t) * numElem); + + for (int i = 0; i < numElem; i++) { + wrkCatchallList[i].verbIndex = in.readUint16BE(); + wrkCatchallList[i].nounIndex = in.readUint16BE(); + wrkCatchallList[i].commentIndex = in.readSint16BE(); + wrkCatchallList[i].matchFl = (in.readByte() != 0); + wrkCatchallList[i].roomState = in.readByte(); + wrkCatchallList[i].bonusIndex = in.readByte(); + } + + if (varnt == _vm->_gameVariant) + _catchallList = wrkCatchallList; + else + free(wrkCatchallList); + } +} + +void Parser::freeCatchallList() { + free(_catchallList); +} + +void Parser::loadArrayReqs(Common::ReadStream &in) { + _arrayReqs = _vm->loadLongArray(in); +} + +/** + * Search background command list for this screen for supplied object. + * Return first associated verb (not "look") or 0 if none found. + */ +const char *Parser::useBG(const char *name) { + debugC(1, kDebugEngine, "useBG(%s)", name); + + objectList_t p = _backgroundObjects[*_vm->_screen_p]; + for (int i = 0; p[i].verbIndex != 0; i++) { + if ((name == _vm->_text->getNoun(p[i].nounIndex, 0) && + p[i].verbIndex != _vm->_look) && + ((p[i].roomState == kStateDontCare) || (p[i].roomState == _vm->_screenStates[*_vm->_screen_p]))) + return _vm->_text->getVerb(p[i].verbIndex, 0); + } + + return 0; +} + +void Parser::freeArrayReqs() { + if (_arrayReqs) { + for (int i = 0; _arrayReqs[i] != 0; i++) + free(_arrayReqs[i]); + free(_arrayReqs); + } +} + void Parser::switchTurbo() { _vm->_config.turboFl = !_vm->_config.turboFl; } diff --git a/engines/hugo/parser.h b/engines/hugo/parser.h index 2e807e543f..283bcd4541 100644 --- a/engines/hugo/parser.h +++ b/engines/hugo/parser.h @@ -48,11 +48,22 @@ public: virtual ~Parser(); bool isWordPresent(char **wordArr) const; - + + uint16 getCmdDefaultVerbIdx(const uint16 index) const { return _cmdList[index][0].verbIndex; } + void charHandler(); void command(const char *format, ...); + void freeArrayReqs(); + void freeBackgroundObjects(); + void freeCatchallList(); + void freeCmdList(); void keyHandler(Common::Event event); + void loadArrayReqs(Common::ReadStream &in); + void loadBackgroundObjects(Common::ReadStream &in); + void loadCatchallList(Common::ReadStream &in); + void loadCmdList(Common::ReadStream &in); void switchTurbo(); + const char *useBG(const char *name); virtual void lineHandler() = 0; virtual void showInventory() const = 0; @@ -64,6 +75,13 @@ protected: uint32 _cmdLineTick; // For flashing cursor char _cmdLineCursor; command_t _cmdLine; // Build command line + uint16 _backgroundObjectsSize; + uint16 _cmdListSize; + + uint16 **_arrayReqs; + background_t **_backgroundObjects; + background_t *_catchallList; + cmd **_cmdList; const char *findNoun() const; const char *findVerb() const; diff --git a/engines/hugo/parser_v1d.cpp b/engines/hugo/parser_v1d.cpp index 1565490ce3..5796749354 100644 --- a/engines/hugo/parser_v1d.cpp +++ b/engines/hugo/parser_v1d.cpp @@ -192,18 +192,18 @@ bool Parser_v1d::isObjectVerb_v1(const char *word, object_t *obj) { return false; int i; - for (i = 0; _vm->_cmdList[cmdIndex][i].verbIndex != 0; i++) { // For each cmd - if (!strcmp(word, _vm->_text->getVerb(_vm->_cmdList[cmdIndex][i].verbIndex, 0))) // Is this verb catered for? + for (i = 0; _cmdList[cmdIndex][i].verbIndex != 0; i++) { // For each cmd + if (!strcmp(word, _vm->_text->getVerb(_cmdList[cmdIndex][i].verbIndex, 0))) // Is this verb catered for? break; } - if (_vm->_cmdList[cmdIndex][i].verbIndex == 0) // No + if (_cmdList[cmdIndex][i].verbIndex == 0) // No return false; // Verb match found, check all required objects are being carried - cmd *cmnd = &_vm->_cmdList[cmdIndex][i]; // ptr to struct cmd + cmd *cmnd = &_cmdList[cmdIndex][i]; // ptr to struct cmd if (cmnd->reqIndex) { // At least 1 thing in list - uint16 *reqs = _vm->_arrayReqs[cmnd->reqIndex]; // ptr to list of required objects + uint16 *reqs = _arrayReqs[cmnd->reqIndex]; // ptr to list of required objects for (i = 0; reqs[i]; i++) { // for each obj if (!_vm->_object->isCarrying(reqs[i])) { Utils::Box(kBoxAny, "%s", _vm->_text->getTextData(cmnd->textDataNoCarryIndex)); @@ -413,16 +413,16 @@ void Parser_v1d::lineHandler() { return; } } - if ((*farComment == '\0') && isBackgroundWord_v1(noun, verb, _vm->_backgroundObjects[*_vm->_screen_p])) + if ((*farComment == '\0') && isBackgroundWord_v1(noun, verb, _backgroundObjects[*_vm->_screen_p])) return; } while (noun); } noun = findNextNoun(noun); if (*farComment != '\0') // An object matched but not near enough Utils::Box(kBoxAny, "%s", farComment); - else if (!isCatchallVerb_v1(true, noun, verb, _vm->_catchallList) && - !isCatchallVerb_v1(false, noun, verb, _vm->_backgroundObjects[*_vm->_screen_p]) && - !isCatchallVerb_v1(false, noun, verb, _vm->_catchallList)) + else if (!isCatchallVerb_v1(true, noun, verb, _catchallList) && + !isCatchallVerb_v1(false, noun, verb, _backgroundObjects[*_vm->_screen_p]) && + !isCatchallVerb_v1(false, noun, verb, _catchallList)) Utils::Box(kBoxAny, "%s", _vm->_text->getTextParser(kTBEh_1d)); } diff --git a/engines/hugo/parser_v1w.cpp b/engines/hugo/parser_v1w.cpp index 2b6741d440..ad00549dcc 100644 --- a/engines/hugo/parser_v1w.cpp +++ b/engines/hugo/parser_v1w.cpp @@ -172,14 +172,14 @@ void Parser_v1w::lineHandler() { } // No objects match command line, try background and catchall commands - if (isBackgroundWord_v3(_vm->_backgroundObjects[*_vm->_screen_p])) + if (isBackgroundWord_v3(_backgroundObjects[*_vm->_screen_p])) return; - if (isCatchallVerb_v3(_vm->_backgroundObjects[*_vm->_screen_p])) + if (isCatchallVerb_v3(_backgroundObjects[*_vm->_screen_p])) return; - if (isBackgroundWord_v3(_vm->_catchallList)) + if (isBackgroundWord_v3(_catchallList)) return; - if (isCatchallVerb_v3(_vm->_catchallList)) + if (isCatchallVerb_v3(_catchallList)) return; // If a not-near comment was generated, print it diff --git a/engines/hugo/parser_v2d.cpp b/engines/hugo/parser_v2d.cpp index cd7928e069..c963441481 100644 --- a/engines/hugo/parser_v2d.cpp +++ b/engines/hugo/parser_v2d.cpp @@ -165,16 +165,16 @@ void Parser_v2d::lineHandler() { return; } } - if ((*farComment != '\0') && isBackgroundWord_v1(noun, verb, _vm->_backgroundObjects[*_vm->_screen_p])) + if ((*farComment != '\0') && isBackgroundWord_v1(noun, verb, _backgroundObjects[*_vm->_screen_p])) return; } while (noun); } noun = findNextNoun(noun); - if ( !isCatchallVerb_v1(true, noun, verb, _vm->_backgroundObjects[*_vm->_screen_p]) - && !isCatchallVerb_v1(true, noun, verb, _vm->_catchallList) - && !isCatchallVerb_v1(false, noun, verb, _vm->_backgroundObjects[*_vm->_screen_p]) - && !isCatchallVerb_v1(false, noun, verb, _vm->_catchallList)) { + if ( !isCatchallVerb_v1(true, noun, verb, _backgroundObjects[*_vm->_screen_p]) + && !isCatchallVerb_v1(true, noun, verb, _catchallList) + && !isCatchallVerb_v1(false, noun, verb, _backgroundObjects[*_vm->_screen_p]) + && !isCatchallVerb_v1(false, noun, verb, _catchallList)) { if (*farComment != '\0') { // An object matched but not near enough Utils::Box(kBoxAny, "%s", farComment); } else if (_maze.enabledFl && (verb == _vm->_text->getVerb(_vm->_look, 0))) { diff --git a/engines/hugo/parser_v3d.cpp b/engines/hugo/parser_v3d.cpp index 532b1f92d1..670f6efb73 100644 --- a/engines/hugo/parser_v3d.cpp +++ b/engines/hugo/parser_v3d.cpp @@ -174,14 +174,14 @@ void Parser_v3d::lineHandler() { } // No objects match command line, try background and catchall commands - if (isBackgroundWord_v3(_vm->_backgroundObjects[*_vm->_screen_p])) + if (isBackgroundWord_v3(_backgroundObjects[*_vm->_screen_p])) return; - if (isCatchallVerb_v3(_vm->_backgroundObjects[*_vm->_screen_p])) + if (isCatchallVerb_v3(_backgroundObjects[*_vm->_screen_p])) return; - if (isBackgroundWord_v3(_vm->_catchallList)) + if (isBackgroundWord_v3(_catchallList)) return; - if (isCatchallVerb_v3(_vm->_catchallList)) + if (isCatchallVerb_v3(_catchallList)) return; // If a not-near comment was generated, print it @@ -219,23 +219,23 @@ bool Parser_v3d::isObjectVerb_v3(object_t *obj, char *comment) { return false; int i; - for (i = 0; _vm->_cmdList[cmdIndex][i].verbIndex != 0; i++) { // For each cmd - if (isWordPresent(_vm->_text->getVerbArray(_vm->_cmdList[cmdIndex][i].verbIndex))) // Was this verb used? + for (i = 0; _cmdList[cmdIndex][i].verbIndex != 0; i++) { // For each cmd + if (isWordPresent(_vm->_text->getVerbArray(_cmdList[cmdIndex][i].verbIndex))) // Was this verb used? break; } - if (_vm->_cmdList[cmdIndex][i].verbIndex == 0) // No verbs used. + if (_cmdList[cmdIndex][i].verbIndex == 0) // No verbs used. return false; // Verb match found. Check if object is Near - char *verb = *_vm->_text->getVerbArray(_vm->_cmdList[cmdIndex][i].verbIndex); + char *verb = *_vm->_text->getVerbArray(_cmdList[cmdIndex][i].verbIndex); if (!isNear_v3(obj, verb, comment)) return false; // Check all required objects are being carried - cmd *cmnd = &_vm->_cmdList[cmdIndex][i]; // ptr to struct cmd + cmd *cmnd = &_cmdList[cmdIndex][i]; // ptr to struct cmd if (cmnd->reqIndex) { // At least 1 thing in list - uint16 *reqs = _vm->_arrayReqs[cmnd->reqIndex]; // ptr to list of required objects + uint16 *reqs = _arrayReqs[cmnd->reqIndex]; // ptr to list of required objects for (i = 0; reqs[i]; i++) { // for each obj if (!_vm->_object->isCarrying(reqs[i])) { Utils::Box(kBoxAny, "%s", _vm->_text->getTextData(cmnd->textDataNoCarryIndex)); diff --git a/engines/hugo/schedule.cpp b/engines/hugo/schedule.cpp index b36ce70847..02f8e48b88 100644 --- a/engines/hugo/schedule.cpp +++ b/engines/hugo/schedule.cpp @@ -48,8 +48,10 @@ namespace Hugo { -Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0), _curTick(0), _oldTime(0), _refreshTimeout(0) { +Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0), _curTick(0), _oldTime(0), _refreshTimeout(0), _points(0), _screenActs(0) { memset(_events, 0, sizeof(_events)); + _numBonuses = 0; + _screenActsSize = 0; } Scheduler::~Scheduler() { @@ -142,9 +144,9 @@ uint32 Scheduler::getDosTicks(const bool updateFl) { void Scheduler::processBonus(const int bonusIndex) { debugC(1, kDebugSchedule, "processBonus(%d)", bonusIndex); - if (!_vm->_points[bonusIndex].scoredFl) { - _vm->adjustScore(_vm->_points[bonusIndex].score); - _vm->_points[bonusIndex].scoredFl = true; + if (!_points[bonusIndex].scoredFl) { + _vm->adjustScore(_points[bonusIndex].score); + _points[bonusIndex].scoredFl = true; } } @@ -186,7 +188,7 @@ void Scheduler::newScreen(const int screenIndex) { _vm->readScreenFiles(screenIndex); // 4. Schedule action list for this screen - _vm->screenActions(screenIndex); + _vm->_scheduler->screenActions(screenIndex); // 5. Initialise prompt line and status line _vm->_screen->initNewScreenDisplay(); @@ -244,6 +246,28 @@ void Scheduler::loadAlNewscrIndex(Common::ReadStream &in) { } } +/** + * Load Points from Hugo.dat + */ +void Scheduler::loadPoints(Common::ReadStream &in) { + debugC(6, kDebugSchedule, "loadPoints(&in)"); + + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + if (varnt == _vm->_gameVariant) { + _numBonuses = numElem; + _points = (point_t *)malloc(sizeof(point_t) * _numBonuses); + for (int i = 0; i < _numBonuses; i++) { + _points[i].score = in.readByte(); + _points[i].scoredFl = false; + } + } else { + for (int i = 0; i < numElem; i++) + in.readByte(); + } + } +} + /** * Load actListArr from Hugo.dat */ @@ -831,6 +855,57 @@ void Scheduler::freeActListArr() { } } +/** + * Read _screenActs + */ +void Scheduler::loadScreenAct(Common::ReadStream &in) { + for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { + uint16 numElem = in.readUint16BE(); + + uint16 **wrkScreenActs = (uint16 **)malloc(sizeof(uint16 *) * numElem); + for (int i = 0; i < numElem; i++) { + uint16 numSubElem = in.readUint16BE(); + if (numSubElem == 0) { + wrkScreenActs[i] = 0; + } else { + wrkScreenActs[i] = (uint16 *)malloc(sizeof(uint16) * numSubElem); + for (int j = 0; j < numSubElem; j++) + wrkScreenActs[i][j] = in.readUint16BE(); + } + } + + if (varnt == _vm->_gameVariant) { + _screenActsSize = numElem; + _screenActs = wrkScreenActs; + } else { + for (int i = 0; i < numElem; i++) + free(wrkScreenActs[i]); + free(wrkScreenActs); + } + } +} + +void Scheduler::freeScreenAct() { + if (_screenActs) { + for (int i = 0; i < _screenActsSize; i++) + free(_screenActs[i]); + free(_screenActs); + } +} + +/** + * Add action lists for this screen to event queue + */ +void Scheduler::screenActions(const int screenNum) { + debugC(1, kDebugEngine, "screenActions(%d)", screenNum); + + uint16 *screenAct = _screenActs[screenNum]; + if (screenAct) { + for (int i = 0; screenAct[i]; i++) + insertActionList(screenAct[i]); + } +} + /** * Maze mode is enabled. Check to see whether hero has crossed the maze * bounding box, if so, go to the next room @@ -935,6 +1010,13 @@ void Scheduler::restoreActions(Common::ReadStream *f) { } } +int16 Scheduler::calcMaxPoints() const { + int16 tmpScore = 0; + for (int i = 0; i < _numBonuses; i++) + tmpScore += _points[i].score; + return tmpScore; +} + /* * Save the action data in the file with handle f */ @@ -1262,7 +1344,7 @@ event_t *Scheduler::doAction(event_t *curEvent) { Utils::Box(kBoxOk, "%s", _vm->_file->fetchString(action->a40.stringIndex)); break; case COND_BONUS: // act41: Perform action if got bonus - if (_vm->_points[action->a41.BonusIndex].scoredFl) + if (_points[action->a41.BonusIndex].scoredFl) insertActionList(action->a41.actPassIndex); else insertActionList(action->a41.actFailIndex); @@ -1354,6 +1436,9 @@ void Scheduler::delQueue(event_t *curEvent) { _freeEvent = curEvent; } +/** + * Delete all the active events of a given type + */ void Scheduler::delEventType(const action_t actTypeDel) { // Note: actions are not deleted here, simply turned into NOPs! event_t *wrkEvent = _headEvent; // The earliest event @@ -1367,6 +1452,27 @@ void Scheduler::delEventType(const action_t actTypeDel) { } } +/** + * Save the points table + */ +void Scheduler::savePoints(Common::WriteStream *out) { + for (int i = 0; i < _numBonuses; i++) { + out->writeByte(_points[i].score); + out->writeByte((_points[i].scoredFl) ? 1 : 0); + } +} + +/** + * Restore the points table + */ +void Scheduler::restorePoints(Common::ReadStream *in) { + // Restore points table + for (int i = 0; i < _numBonuses; i++) { + _points[i].score = in->readByte(); + _points[i].scoredFl = (in->readByte() == 1); + } +} + Scheduler_v1d::Scheduler_v1d(HugoEngine *vm) : Scheduler(vm) { } diff --git a/engines/hugo/schedule.h b/engines/hugo/schedule.h index b4889aa728..c621a618eb 100644 --- a/engines/hugo/schedule.h +++ b/engines/hugo/schedule.h @@ -458,17 +458,27 @@ public: virtual void decodeString(char *line) = 0; virtual void runScheduler() = 0; + void freePoints() { free(_points); } + + int16 calcMaxPoints() const; + void freeActListArr(); + void freeScreenAct(); void initEventQueue(); void insertActionList(const uint16 actIndex); void loadActListArr(Common::ReadStream &in); void loadAlNewscrIndex(Common::ReadStream &in); + void loadPoints(Common::ReadStream &in); + void loadScreenAct(Common::ReadStream &in); void newScreen(const int screenIndex); void processBonus(const int bonusIndex); void processMaze(const int x1, const int x2, const int y1, const int y2); void restoreScreen(const int screenIndex); void restoreEvents(Common::ReadStream *f); + void restorePoints(Common::ReadStream *in); void saveEvents(Common::WriteStream *f); + void savePoints(Common::WriteStream *out); + void screenActions(const int screenNum); void waitForRefresh(); void findAction(act* action, int16* index, int16* subElem); @@ -483,6 +493,11 @@ protected: uint16 _actListArrSize; uint16 _alNewscrIndex; + uint16 _screenActsSize; + uint16 **_screenActs; + + byte _numBonuses; + point_t *_points; uint32 _curTick; // Current system time in ticks uint32 _oldTime; // The previous wall time in ticks -- cgit v1.2.3 From 9505becefa114e9da12d3ef40de16f0a46527a2c Mon Sep 17 00:00:00 2001 From: md5 Date: Tue, 15 Feb 2011 11:25:54 +0200 Subject: SCI: Removed several redundant helper functions Removed validate_arithmetic(), signed_validate_arithmetic(), validate_unsignedInteger() and validate_signedInteger() --- engines/sci/engine/vm.cpp | 173 ++++++++++++++++++++---------------------- engines/sci/engine/vm_types.h | 26 +++++++ 2 files changed, 107 insertions(+), 92 deletions(-) diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 6d11a1ad8a..9c7f52d28e 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -131,21 +131,6 @@ static StackPtr validate_stack_addr(EngineState *s, StackPtr sp) { return 0; } -static int validate_arithmetic(reg_t reg) { - if (reg.segment) { - // The results of this are likely unpredictable... It most likely means that a kernel function is returning something wrong. - // If such an error occurs, we usually need to find the last kernel function called and check its return value. - error("[VM] Attempt to read arithmetic value from non-zero segment [%04x]. Address: %04x:%04x", reg.segment, PRINT_REG(reg)); - return 0; - } - - return reg.offset; -} - -static int signed_validate_arithmetic(reg_t reg) { - return (int16)validate_arithmetic(reg); -} - static bool validate_variable(reg_t *r, reg_t *stack_base, int type, int max, int index) { const char *names[4] = {"global", "local", "temp", "param"}; @@ -176,20 +161,6 @@ static bool validate_variable(reg_t *r, reg_t *stack_base, int type, int max, in return true; } -static bool validate_unsignedInteger(reg_t reg, uint16 &integer) { - if (reg.segment) - return false; - integer = reg.offset; - return true; -} - -static bool validate_signedInteger(reg_t reg, int16 &integer) { - if (reg.segment) - return false; - integer = (int16)reg.offset; - return true; -} - extern const char *opcodeNames[]; // from scriptdebug.cpp static reg_t arithmetic_lookForWorkaround(const byte opcode, const SciWorkaroundEntry *workaroundList, reg_t value1, reg_t value2) { @@ -427,12 +398,12 @@ ExecStack *send_selector(EngineState *s, reg_t send_obj, reg_t work_obj, StackPt int activeBreakpointTypes = g_sci->_debugState._activeBreakpointTypes; while (framesize > 0) { - selector = validate_arithmetic(*argp++); - argc = validate_arithmetic(*argp); + selector = argp->requireUint16(); + argp++; + argc = argp->requireUint16(); - if (argc > 0x800) { // More arguments than the stack could possibly accomodate for + if (argc > 0x800) // More arguments than the stack could possibly accomodate for error("send_selector(): More than 0x800 arguments to function call"); - } #ifdef VM_DEBUG_SEND debugN("Send to %04x:%04x (%s), selector %04x (%s):", PRINT_REG(send_obj), @@ -1014,8 +985,8 @@ void run_vm(EngineState *s) { case op_bnot: { // 0x00 (00) // Binary not - int16 value; - if (validate_signedInteger(s->r_acc, value)) + int16 value = s->r_acc.toSint16(); + if (s->r_acc.isNumber()) s->r_acc = make_reg(0, 0xffff ^ value); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, s->r_acc, NULL_REG); @@ -1087,8 +1058,9 @@ void run_vm(EngineState *s) { case op_mul: { // 0x03 (03) r_temp = POP32(); - int16 value1, value2; - if (validate_signedInteger(s->r_acc, value1) && validate_signedInteger(r_temp, value2)) + int16 value1 = s->r_acc.toSint16(); + int16 value2 = r_temp.toSint16(); + if (s->r_acc.isNumber() && r_temp.isNumber()) s->r_acc = make_reg(0, value1 * value2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeMulWorkarounds, s->r_acc, r_temp); @@ -1097,8 +1069,9 @@ void run_vm(EngineState *s) { case op_div: { // 0x04 (04) r_temp = POP32(); - int16 divisor, dividend; - if (validate_signedInteger(s->r_acc, divisor) && validate_signedInteger(r_temp, dividend)) + int16 divisor = s->r_acc.toSint16(); + int16 dividend = r_temp.toSint16(); + if (s->r_acc.isNumber() && r_temp.isNumber()) s->r_acc = make_reg(0, (divisor != 0 ? dividend / divisor : 0)); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeDivWorkarounds, s->r_acc, r_temp); @@ -1109,8 +1082,9 @@ void run_vm(EngineState *s) { r_temp = POP32(); if (getSciVersion() <= SCI_VERSION_0_LATE) { - uint16 modulo, value; - if (validate_unsignedInteger(s->r_acc, modulo) && validate_unsignedInteger(r_temp, value)) + uint16 modulo = s->r_acc.toUint16(); + uint16 value = r_temp.toUint16(); + if (s->r_acc.isNumber() && r_temp.isNumber()) s->r_acc = make_reg(0, (modulo != 0 ? value % modulo : 0)); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, s->r_acc, r_temp); @@ -1121,8 +1095,10 @@ void run_vm(EngineState *s) { // for simplicity's sake and use the new code for SCI01 and newer // games. Fixes the battlecruiser mini game in SQ5 (room 850), // bug #3035755 - int16 modulo, value, result; - if (validate_signedInteger(s->r_acc, modulo) && validate_signedInteger(r_temp, value)) { + int16 modulo = s->r_acc.toSint16(); + int16 value = r_temp.toSint16(); + int16 result; + if (s->r_acc.isNumber() && r_temp.isNumber()) { modulo = ABS(modulo); result = (modulo != 0 ? value % modulo : 0); if (result < 0) @@ -1137,8 +1113,9 @@ void run_vm(EngineState *s) { case op_shr: { // 0x06 (06) // Shift right logical r_temp = POP32(); - uint16 value, shiftCount; - if (validate_unsignedInteger(r_temp, value) && validate_unsignedInteger(s->r_acc, shiftCount)) + uint16 value = r_temp.toUint16(); + uint16 shiftCount = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, value >> shiftCount); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1148,8 +1125,9 @@ void run_vm(EngineState *s) { case op_shl: { // 0x07 (07) // Shift left logical r_temp = POP32(); - uint16 value, shiftCount; - if (validate_unsignedInteger(r_temp, value) && validate_unsignedInteger(s->r_acc, shiftCount)) + uint16 value = r_temp.toUint16(); + uint16 shiftCount = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, value << shiftCount); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1158,8 +1136,9 @@ void run_vm(EngineState *s) { case op_xor: { // 0x08 (08) r_temp = POP32(); - uint16 value1, value2; - if (validate_unsignedInteger(r_temp, value1) && validate_unsignedInteger(s->r_acc, value2)) + uint16 value1 = r_temp.toUint16(); + uint16 value2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, value1 ^ value2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1168,8 +1147,9 @@ void run_vm(EngineState *s) { case op_and: { // 0x09 (09) r_temp = POP32(); - uint16 value1, value2; - if (validate_unsignedInteger(r_temp, value1) && validate_unsignedInteger(s->r_acc, value2)) + uint16 value1 = r_temp.toUint16(); + uint16 value2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, value1 & value2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeAndWorkarounds, r_temp, s->r_acc); @@ -1178,8 +1158,9 @@ void run_vm(EngineState *s) { case op_or: { // 0x0a (10) r_temp = POP32(); - uint16 value1, value2; - if (validate_unsignedInteger(r_temp, value1) && validate_unsignedInteger(s->r_acc, value2)) + uint16 value1 = r_temp.toUint16(); + uint16 value2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, value1 | value2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeOrWorkarounds, r_temp, s->r_acc); @@ -1187,8 +1168,8 @@ void run_vm(EngineState *s) { } case op_neg: { // 0x0b (11) - int16 value; - if (validate_signedInteger(s->r_acc, value)) + int16 value = s->r_acc.toSint16(); + if (s->r_acc.isNumber()) s->r_acc = make_reg(0, -value); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, s->r_acc, NULL_REG); @@ -1232,8 +1213,9 @@ void run_vm(EngineState *s) { // Happens in SQ1, room 28, when throwing the water at Orat s->r_acc = make_reg(0, 1); } else { - int16 compare1, compare2; - if (validate_signedInteger(r_temp, compare1) && validate_signedInteger(s->r_acc, compare2)) + int16 compare1 = r_temp.toSint16(); + int16 compare2 = s->r_acc.toSint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 > compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1249,8 +1231,9 @@ void run_vm(EngineState *s) { warning("[VM] Comparing pointers in different segments (%04x:%04x vs. %04x:%04x)", PRINT_REG(r_temp), PRINT_REG(s->r_acc)); s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset >= s->r_acc.offset); } else { - int16 compare1, compare2; - if (validate_signedInteger(r_temp, compare1) && validate_signedInteger(s->r_acc, compare2)) + int16 compare1 = r_temp.toSint16(); + int16 compare2 = s->r_acc.toSint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 >= compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeGeWorkarounds, r_temp, s->r_acc); @@ -1272,8 +1255,9 @@ void run_vm(EngineState *s) { // Happens in SQ1, room 58, when giving id-card to robot s->r_acc = make_reg(0, 1); } else { - int16 compare1, compare2; - if (validate_signedInteger(r_temp, compare1) && validate_signedInteger(s->r_acc, compare2)) + int16 compare1 = r_temp.toSint16(); + int16 compare2 = s->r_acc.toSint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 < compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1289,8 +1273,9 @@ void run_vm(EngineState *s) { warning("[VM] Comparing pointers in different segments (%04x:%04x vs. %04x:%04x)", PRINT_REG(r_temp), PRINT_REG(s->r_acc)); s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset <= s->r_acc.offset); } else { - int16 compare1, compare2; - if (validate_signedInteger(r_temp, compare1) && validate_signedInteger(s->r_acc, compare2)) + int16 compare1 = r_temp.toSint16(); + int16 compare2 = s->r_acc.toSint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 <= compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeLeWorkarounds, r_temp, s->r_acc); @@ -1317,8 +1302,9 @@ void run_vm(EngineState *s) { else if (r_temp.segment && s->r_acc.segment) s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset > s->r_acc.offset); else { - uint16 compare1, compare2; - if (validate_unsignedInteger(r_temp, compare1) && validate_unsignedInteger(s->r_acc, compare2)) + uint16 compare1 = r_temp.toUint16(); + uint16 compare2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 > compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1336,8 +1322,9 @@ void run_vm(EngineState *s) { else if (r_temp.segment && s->r_acc.segment) s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset >= s->r_acc.offset); else { - uint16 compare1, compare2; - if (validate_unsignedInteger(r_temp, compare1) && validate_unsignedInteger(s->r_acc, compare2)) + uint16 compare1 = r_temp.toUint16(); + uint16 compare2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 >= compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1356,8 +1343,9 @@ void run_vm(EngineState *s) { else if (r_temp.segment && s->r_acc.segment) s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset < s->r_acc.offset); else { - uint16 compare1, compare2; - if (validate_unsignedInteger(r_temp, compare1) && validate_unsignedInteger(s->r_acc, compare2)) + uint16 compare1 = r_temp.toUint16(); + uint16 compare2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 < compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeUltWorkarounds, r_temp, s->r_acc); @@ -1375,8 +1363,9 @@ void run_vm(EngineState *s) { else if (r_temp.segment && s->r_acc.segment) s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset <= s->r_acc.offset); else { - uint16 compare1, compare2; - if (validate_unsignedInteger(r_temp, compare1) && validate_unsignedInteger(s->r_acc, compare2)) + uint16 compare1 = r_temp.toUint16(); + uint16 compare2 = s->r_acc.toUint16(); + if (r_temp.isNumber() && s->r_acc.isNumber()) s->r_acc = make_reg(0, compare1 <= compare2); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc); @@ -1446,7 +1435,7 @@ void run_vm(EngineState *s) { xs_new = add_exec_stack_entry(s->_executionStack, make_reg(s->xs->addr.pc.segment, localCallOffset), s->xs->sp, s->xs->objp, - (validate_arithmetic(*call_base)) + s->restAdjust, + (call_base->requireUint16()) + s->restAdjust, call_base, NULL_SELECTOR, -1, localCallOffset, s->xs->objp, s->_executionStack.size()-1, s->xs->local_segment); s->restAdjust = 0; // Used up the &rest adjustment @@ -1466,7 +1455,7 @@ void run_vm(EngineState *s) { if (!oldScriptHeader) s->xs->sp -= s->restAdjust; - int argc = validate_arithmetic(s->xs->sp[0]); + int argc = s->xs->sp[0].requireUint16(); if (!oldScriptHeader) argc += s->restAdjust; @@ -1663,7 +1652,7 @@ void run_vm(EngineState *s) { r_temp.offset = s->variables[var_number] - s->variablesBase[var_number]; if (temp & 0x08) // Add accumulator offset if requested - r_temp.offset += signed_validate_arithmetic(s->r_acc); + r_temp.offset += s->r_acc.requireSint16(); r_temp.offset += opparams[1]; // Add index r_temp.offset *= 2; // variables are 16 bit @@ -1710,8 +1699,8 @@ void run_vm(EngineState *s) { case op_ipToa: { // 0x35 (53) // Increment Property and copy To Accumulator reg_t &opProperty = validate_property(s, obj, opparams[0]); - uint16 valueProperty; - if (validate_unsignedInteger(opProperty, valueProperty)) + uint16 valueProperty = opProperty.toUint16(); + if (opProperty.isNumber()) s->r_acc = make_reg(0, valueProperty + 1); else s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, opProperty, NULL_REG); @@ -1722,8 +1711,8 @@ void run_vm(EngineState *s) { case op_dpToa: { // 0x36 (54) // Decrement Property and copy To Accumulator reg_t &opProperty = validate_property(s, obj, opparams[0]); - uint16 valueProperty; - if (validate_unsignedInteger(opProperty, valueProperty)) + uint16 valueProperty = opProperty.toUint16(); + if (opProperty.isNumber()) s->r_acc = make_reg(0, valueProperty - 1); else s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeDptoaWorkarounds, opProperty, NULL_REG); @@ -1734,8 +1723,8 @@ void run_vm(EngineState *s) { case op_ipTos: { // 0x37 (55) // Increment Property and push to Stack reg_t &opProperty = validate_property(s, obj, opparams[0]); - uint16 valueProperty; - if (validate_unsignedInteger(opProperty, valueProperty)) + uint16 valueProperty = opProperty.toUint16(); + if (opProperty.isNumber()) valueProperty++; else valueProperty = arithmetic_lookForWorkaround(opcode, NULL, opProperty, NULL_REG).offset; @@ -1747,8 +1736,8 @@ void run_vm(EngineState *s) { case op_dpTos: { // 0x38 (56) // Decrement Property and push to Stack reg_t &opProperty = validate_property(s, obj, opparams[0]); - uint16 valueProperty; - if (validate_unsignedInteger(opProperty, valueProperty)) + uint16 valueProperty = opProperty.toUint16(); + if (opProperty.isNumber()) valueProperty--; else valueProperty = arithmetic_lookForWorkaround(opcode, NULL, opProperty, NULL_REG).offset; @@ -1871,8 +1860,8 @@ void run_vm(EngineState *s) { // Load global, local, temp or param variable into the accumulator, // using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - int16 value; - if (!validate_signedInteger(s->r_acc, value)) + int16 value = s->r_acc.toSint16(); + if (!s->r_acc.isNumber()) value = arithmetic_lookForWorkaround(opcode, opcodeLaiWorkarounds, s->r_acc, NULL_REG).offset; var_number = opparams[0] + value; s->r_acc = READ_VAR(var_type, var_number); @@ -1886,8 +1875,8 @@ void run_vm(EngineState *s) { // Load global, local, temp or param variable into the stack, // using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - int16 value; - if (!validate_signedInteger(s->r_acc, value)) + int16 value = s->r_acc.toSint16(); + if (!s->r_acc.isNumber()) value = arithmetic_lookForWorkaround(opcode, opcodeLsiWorkarounds, s->r_acc, NULL_REG).offset; var_number = opparams[0] + value; PUSH32(READ_VAR(var_type, var_number)); @@ -1925,7 +1914,7 @@ void run_vm(EngineState *s) { // of sense otherwise, with acc being used for two things // simultaneously... var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); s->r_acc = POP32(); WRITE_VAR(var_type, var_number, s->r_acc); break; @@ -1937,7 +1926,7 @@ void run_vm(EngineState *s) { // Save the stack into the global, local, temp or param variable, // using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); WRITE_VAR(var_type, var_number, POP32()); break; @@ -1983,7 +1972,7 @@ void run_vm(EngineState *s) { // Increment the global, local, temp or param variable and save it // to the accumulator, using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); r_temp = READ_VAR(var_type, var_number); if (r_temp.segment) { // Pointer arithmetics! @@ -2000,7 +1989,7 @@ void run_vm(EngineState *s) { // Increment the global, local, temp or param variable and save it // to the stack, using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); r_temp = READ_VAR(var_type, var_number); if (r_temp.segment) { // Pointer arithmetics! @@ -2053,7 +2042,7 @@ void run_vm(EngineState *s) { // Decrement the global, local, temp or param variable and save it // to the accumulator, using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); r_temp = READ_VAR(var_type, var_number); if (r_temp.segment) { // Pointer arithmetics! @@ -2070,7 +2059,7 @@ void run_vm(EngineState *s) { // Decrement the global, local, temp or param variable and save it // to the stack, using the accumulator as an additional index var_type = opcode & 0x3; // Gets the variable type: g, l, t or p - var_number = opparams[0] + signed_validate_arithmetic(s->r_acc); + var_number = opparams[0] + s->r_acc.requireSint16(); r_temp = READ_VAR(var_type, var_number); if (r_temp.segment) { // Pointer arithmetics! diff --git a/engines/sci/engine/vm_types.h b/engines/sci/engine/vm_types.h index edf35a122a..cc1f9b2685 100644 --- a/engines/sci/engine/vm_types.h +++ b/engines/sci/engine/vm_types.h @@ -56,6 +56,32 @@ struct reg_t { int16 toSint16() const { return (int16) offset; } + + uint16 requireUint16() const { + if (isNumber()) + return toUint16(); + else + // The results of this are likely unpredictable... It most likely + // means that a kernel function is returning something wrong. If + // such an error occurs, we usually need to find the last kernel + // function called and check its return value. + error("[VM] Attempt to read unsigned arithmetic value from non-zero segment %04x. Offset: %04x", segment, offset); + } + + int16 requireSint16() const { + if (isNumber()) + return toSint16(); + else + // The results of this are likely unpredictable... It most likely + // means that a kernel function is returning something wrong. If + // such an error occurs, we usually need to find the last kernel + // function called and check its return value. + error("[VM] Attempt to read signed arithmetic value from non-zero segment %04x. Offset: %04x", segment, offset); + } + + bool isNumber() const { + return !segment; + } }; static inline reg_t make_reg(SegmentId segment, uint16 offset) { -- cgit v1.2.3 From 489a4598a12f66cb9450b574f874b50578ea00e6 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Tue, 15 Feb 2011 12:10:55 +0100 Subject: MOHAWK: Detect the French version of Rugrats. Thanks to Strangerke. --- engines/mohawk/detection_tables.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/engines/mohawk/detection_tables.h b/engines/mohawk/detection_tables.h index ae37a22dd3..92333f5fde 100644 --- a/engines/mohawk/detection_tables.h +++ b/engines/mohawk/detection_tables.h @@ -1156,7 +1156,7 @@ static const MohawkGameDescription gameDescriptions[] = { }, GType_LIVINGBOOKSV4, 0, - 0, + 0 }, { @@ -1171,7 +1171,25 @@ static const MohawkGameDescription gameDescriptions[] = { }, GType_LIVINGBOOKSV4, 0, + 0 + }, + + // Rugrats Adventure Game + // French Windows + // From Strangerke + { + { + "rugrats", + "", + AD_ENTRY1("outline", "36225e0b4986a80135cfdd9643cc7030"), + Common::FR_FRA, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_LIVINGBOOKSV4, 0, + 0 }, { -- cgit v1.2.3 From bd64c5078c3d07bb9cf80ef8e72f151bec8beec4 Mon Sep 17 00:00:00 2001 From: md5 Date: Tue, 15 Feb 2011 15:43:10 +0200 Subject: SCI: Cleaned up kMapKeyToDir and removed an incorrect heuristic The heuristic in question was used to detect the pseudo mouse control functionality, however the change in controls seems to have occurred with the transition to cursor views. Fixes keypad control in Conquest of the Longbow. Moreover, the code also checked for key scan code 76 when checking for the middle keypad button, which seems to be a mistake, as that case never occurred. --- engines/sci/engine/kevent.cpp | 71 ++++++++++++++++--------------------------- engines/sci/event.cpp | 20 ------------ engines/sci/event.h | 3 -- 3 files changed, 27 insertions(+), 67 deletions(-) diff --git a/engines/sci/engine/kevent.cpp b/engines/sci/engine/kevent.cpp index 58de38bd8e..e5a9931605 100644 --- a/engines/sci/engine/kevent.cpp +++ b/engines/sci/engine/kevent.cpp @@ -38,8 +38,6 @@ namespace Sci { -#define SCI_VARIABLE_GAME_SPEED 3 - reg_t kGetEvent(EngineState *s, int argc, reg_t *argv) { int mask = argv[0].toUint16(); reg_t obj = argv[1]; @@ -188,57 +186,42 @@ reg_t kGetEvent(EngineState *s, int argc, reg_t *argv) { return s->r_acc; } +struct KeyDirMapping { + uint16 key; + uint16 direction; +}; + +const KeyDirMapping keyToDirMap[] = { + { SCI_KEY_HOME, 8 }, { SCI_KEY_UP, 1 }, { SCI_KEY_PGUP, 2 }, + { SCI_KEY_LEFT, 7 }, { SCI_KEY_CENTER, 0 }, { SCI_KEY_RIGHT, 3 }, + { SCI_KEY_END, 6 }, { SCI_KEY_DOWN, 5 }, { SCI_KEY_PGDOWN, 4 }, +}; + reg_t kMapKeyToDir(EngineState *s, int argc, reg_t *argv) { reg_t obj = argv[0]; SegManager *segMan = s->_segMan; if (readSelectorValue(segMan, obj, SELECTOR(type)) == SCI_EVENT_KEYBOARD) { // Keyboard - int mover = -1; - switch (readSelectorValue(segMan, obj, SELECTOR(message))) { - case SCI_KEY_HOME: - mover = 8; - break; - case SCI_KEY_UP: - mover = 1; - break; - case SCI_KEY_PGUP: - mover = 2; - break; - case SCI_KEY_LEFT: - mover = 7; - break; - case SCI_KEY_CENTER: - case 76: - mover = 0; - break; - case SCI_KEY_RIGHT: - mover = 3; - break; - case SCI_KEY_END: - mover = 6; - break; - case SCI_KEY_DOWN: - mover = 5; - break; - case SCI_KEY_PGDOWN: - mover = 4; - break; - default: - break; + uint16 message = readSelectorValue(segMan, obj, SELECTOR(message)); + uint16 eventType = SCI_EVENT_DIRECTION; + // Check if the game is using cursor views. These games allowed control + // of the mouse cursor via the keyboard controls (the so called + // "PseudoMouse" functionality in script 933). + if (g_sci->_features->detectSetCursorType() == SCI_VERSION_1_1) + eventType |= SCI_EVENT_KEYBOARD; + + for (int i = 0; i < 9; i++) { + if (keyToDirMap[i].key == message) { + writeSelectorValue(segMan, obj, SELECTOR(type), eventType); + writeSelectorValue(segMan, obj, SELECTOR(message), keyToDirMap[i].direction); + return TRUE_REG; // direction mapped + } } - if (mover >= 0) { - if (g_sci->getEventManager()->getUsesNewKeyboardDirectionType()) - writeSelectorValue(segMan, obj, SELECTOR(type), SCI_EVENT_KEYBOARD | SCI_EVENT_DIRECTION); - else - writeSelectorValue(segMan, obj, SELECTOR(type), SCI_EVENT_DIRECTION); - writeSelectorValue(segMan, obj, SELECTOR(message), mover); - return make_reg(0, 1); - } else - return NULL_REG; + return NULL_REG; // unknown direction } - return s->r_acc; + return s->r_acc; // no keyboard event to map, leave accumulator unchanged } reg_t kGlobalToLocal(EngineState *s, int argc, reg_t *argv) { diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp index 0c17db6028..d607a5314f 100644 --- a/engines/sci/event.cpp +++ b/engines/sci/event.cpp @@ -36,31 +36,11 @@ namespace Sci { EventManager::EventManager(bool fontIsExtended) : _fontIsExtended(fontIsExtended), _modifierStates(0) { - - if (getSciVersion() >= SCI_VERSION_1_MIDDLE) { - _usesNewKeyboardDirectionType = true; - } else if (getSciVersion() <= SCI_VERSION_01) { - _usesNewKeyboardDirectionType = false; - } else { - // they changed this somewhere inbetween SCI1EGA/EARLY - _usesNewKeyboardDirectionType = false; - - // We are looking if script 933 exists, that one has the PseudoMouse class in it that handles it - // The good thing is that PseudoMouse seems to only exists in games that use the new method - if (g_sci->getResMan()->testResource(ResourceId(kResourceTypeScript, 933))) - _usesNewKeyboardDirectionType = true; - // Checking the keyboard driver size in here would also be a valid method, but the driver is only available - // in PC versions of the game - } } EventManager::~EventManager() { } -bool EventManager::getUsesNewKeyboardDirectionType() { - return _usesNewKeyboardDirectionType; -} - struct ScancodeRow { int offset; const char *keys; diff --git a/engines/sci/event.h b/engines/sci/event.h index fade7dd337..7c83476294 100644 --- a/engines/sci/event.h +++ b/engines/sci/event.h @@ -116,7 +116,6 @@ public: void updateScreen(); SciEvent getSciEvent(unsigned int mask); - bool getUsesNewKeyboardDirectionType(); private: SciEvent getScummVMEvent(); @@ -124,8 +123,6 @@ private: const bool _fontIsExtended; int _modifierStates; Common::List _events; - - bool _usesNewKeyboardDirectionType; }; } // End of namespace Sci -- cgit v1.2.3 From ea679567683c8e43255a0636e32ccf7c683c6997 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 15 Feb 2011 10:45:43 -0500 Subject: VIDEO: Add some stubs for QuickTime edit list work The edit lists are actually read in now. Minor cleanup of streams as well. --- video/qt_decoder.cpp | 55 ++++++++++++++++++++++++++++++++++++++-------------- video/qt_decoder.h | 10 +++++++++- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp index 6944fd5a77..a277d6bbde 100644 --- a/video/qt_decoder.cpp +++ b/video/qt_decoder.cpp @@ -820,19 +820,25 @@ int QuickTimeDecoder::readTKHD(MOVatom atom) { // edit list atom int QuickTimeDecoder::readELST(MOVatom atom) { + MOVStreamContext *st = _streams[_numStreams - 1]; + _fd->readByte(); // version _fd->readByte(); _fd->readByte(); _fd->readByte(); // flags - uint32 editCount = _streams[_numStreams - 1]->edit_count = _fd->readUint32BE(); // entries - for (uint32 i = 0; i < editCount; i++){ - _fd->readUint32BE(); // Track duration - _fd->readUint32BE(); // Media time - _fd->readUint32BE(); // Media rate - } + st->editCount = _fd->readUint32BE(); + st->editList = new EditListEntry[st->editCount]; - debug(0, "track[%i].edit_count = %i", _numStreams - 1, _streams[_numStreams - 1]->edit_count); + debug(2, "Track %d edit list count: %d", _numStreams - 1, st->editCount); + + for (uint32 i = 0; i < st->editCount; i++){ + st->editList[i].trackDuration = _fd->readUint32BE(); + st->editList[i].mediaTime = _fd->readSint32BE(); + st->editList[i].mediaRate = Common::Rational(_fd->readUint32BE(), 0x10000); + debugN(3, "\tDuration = %d, Media Time = %d, ", st->editList[i].trackDuration, st->editList[i].mediaTime); + st->editList[i].mediaRate.debugPrint(3, "Media Rate ="); + } - if (editCount != 1) + if (st->editCount != 1) warning("Multiple edit list entries. Things may go awry"); return 0; @@ -863,7 +869,7 @@ int QuickTimeDecoder::readHDLR(MOVatom atom) { else if (type == MKID_BE('soun')) st->codec_type = CODEC_TYPE_AUDIO; - _fd->readUint32BE(); // component manufacture + _fd->readUint32BE(); // component manufacture _fd->readUint32BE(); // component flags _fd->readUint32BE(); // component flags mask @@ -1465,12 +1471,30 @@ QuickTimeDecoder::STSDEntry::~STSDEntry() { } QuickTimeDecoder::MOVStreamContext::MOVStreamContext() { - // FIXME: Setting all members to 0 via memset is a hack -- it works - // because the only non-POD member of MOVStreamContext is of type - // Common::Rational, and that luckily has no virtual methods nor - // does it keep internal pointers or anything like that. But watch - // out if you ever extend MOVStreamContext! - memset(this, 0, sizeof(MOVStreamContext)); + chunk_count = 0; + chunk_offsets = 0; + stts_count = 0; + stts_data = 0; + sample_to_chunk_sz = 0; + sample_to_chunk = 0; + sample_size = 0; + sample_count = 0; + sample_sizes = 0; + keyframe_count = 0; + keyframes = 0; + time_scale = 0; + time_rate = 0; + width = 0; + height = 0; + codec_type = CODEC_TYPE_MOV_OTHER; + stsdEntryCount = 0; + stsdEntries = 0; + editCount = 0; + editList = 0; + extradata = 0; + nb_frames = 0; + duration = 0; + start_time = 0; } QuickTimeDecoder::MOVStreamContext::~MOVStreamContext() { @@ -1480,6 +1504,7 @@ QuickTimeDecoder::MOVStreamContext::~MOVStreamContext() { delete[] sample_sizes; delete[] keyframes; delete[] stsdEntries; + delete[] editList; delete extradata; } diff --git a/video/qt_decoder.h b/video/qt_decoder.h index 809c8a718d..e876097dfd 100644 --- a/video/qt_decoder.h +++ b/video/qt_decoder.h @@ -149,6 +149,12 @@ private: uint32 id; }; + struct EditListEntry { + uint32 trackDuration; + int32 mediaTime; + Common::Rational mediaRate; + }; + struct STSDEntry { STSDEntry(); ~STSDEntry(); @@ -183,7 +189,6 @@ private: uint32 *chunk_offsets; int stts_count; MOVstts *stts_data; - int edit_count; /* number of 'edit' (elst atom) */ uint32 sample_to_chunk_sz; MOVstsc *sample_to_chunk; uint32 sample_size; @@ -201,6 +206,9 @@ private: uint32 stsdEntryCount; STSDEntry *stsdEntries; + uint32 editCount; + EditListEntry *editList; + Common::SeekableReadStream *extradata; uint32 nb_frames; -- cgit v1.2.3 From 325a301a4feac17d8aa4bba80c6112116a1ceb1a Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 15 Feb 2011 11:02:01 -0500 Subject: SCI: Fill in the remaining Mac-specific kPlatform subops --- engines/sci/engine/kmisc.cpp | 59 +++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 6e961f72f3..f95b1dd0f8 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -362,20 +362,29 @@ reg_t kIconBar(EngineState *s, int argc, reg_t *argv) { return NULL_REG; switch (argv[0].toUint16()) { - case 0: - // Add the icons + case 0: // InitIconBar for (int i = 0; i < argv[1].toUint16(); i++) g_sci->_gfxMacIconBar->addIcon(argv[i + 2]); g_sci->_gfxMacIconBar->drawIcons(); + + // TODO: Should return icon bar handle + // Said handle is then used by DisposeIconBar + break; + case 1: // DisposeIconBar + warning("kIconBar(Dispose)"); + break; + case 2: // EnableIconBar (0xffff = all) + warning("kIconBar(Enable, %d)", argv[1].toUint16()); + break; + case 3: // DisableIconBar (0xffff = all) + warning("kIconBar(Disable, %d)", argv[1].toUint16()); break; - case 2: - case 3: - case 4: - // TODO: Other calls seem to handle selecting/deselecting them + case 4: // SetIconBarIcon + warning("kIconBar(SetIcon, %d, %d)", argv[1].toUint16(), argv[2].toUint16()); break; default: - warning("Unknown kIconBar subop %d", argv[0].toUint16()); + error("Unknown kIconBar(%d)", argv[0].toUint16()); } return NULL_REG; @@ -389,23 +398,28 @@ reg_t kMacPlatform(EngineState *s, int argc, reg_t *argv) { switch (argv[0].toUint16()) { case 0: - // Set Mac cursor remap - g_sci->_gfxCursor->setMacCursorRemapList(argc - 1, argv + 1); + // Subop 0 has changed a few times + // In SCI1, its usage is still unknown + // In SCI1.1, it's NOP + // In SCI32, it's used for remapping cursor ID's + if (getSciVersion() >= SCI_VERSION_2_1) // Set Mac cursor remap + g_sci->_gfxCursor->setMacCursorRemapList(argc - 1, argv + 1); + else if (getSciVersion() != SCI_VERSION_1_1) + warning("Unknown SCI1 kMacPlatform(0) call"); break; - case 1: - // Unknown - break; - case 2: - // Unknown - break; - case 3: - // Unknown - break; - case 4: - // Handle icon bar code + case 4: // Handle icon bar code return kIconBar(s, argc - 1, argv + 1); + case 7: // Unknown, but always return -1 + return SIGNAL_REG; + case 1: // Unknown, calls QuickDraw region functions (KQ5, QFG1VGA) + case 2: // Unknown, "UseNextWaitEvent" (Various) + case 3: // Unknown, "ProcessOpenDocuments" (Various) + case 5: // Unknown, plays a sound (KQ7) + case 6: // Unknown, menu-related (Unused?) + warning("Unhandled kMacPlatform(%d)", argv[0].toUint16()); + break; default: - warning("Unknown kMacPlatform subop %d", argv[0].toUint16()); + error("Unknown kMacPlatform(%d)", argv[0].toUint16()); } return s->r_acc; @@ -455,7 +469,8 @@ reg_t kPlatform(EngineState *s, int argc, reg_t *argv) { warning("STUB: kPlatform(CDCheck)"); break; case kPlatformUnk0: - if (g_sci->getPlatform() == Common::kPlatformMacintosh && getSciVersion() >= SCI_VERSION_1_1 && argc > 1) + // For Mac versions, kPlatform(0) with other args has more functionality + if (g_sci->getPlatform() == Common::kPlatformMacintosh && argc > 1) return kMacPlatform(s, argc - 1, argv + 1); // Otherwise, fall through case kPlatformGetPlatform: -- cgit v1.2.3 From 2f0b35bbb51dc94c379d48ef336dcb8502bb2db5 Mon Sep 17 00:00:00 2001 From: strangerke Date: Tue, 15 Feb 2011 19:30:15 +0100 Subject: HUGO: Replace cypher by a global variable, clean engine destructor --- engines/hugo/display.cpp | 9 ++---- engines/hugo/display.h | 3 +- engines/hugo/file.cpp | 18 ++---------- engines/hugo/hugo.cpp | 35 ++++++------------------ engines/hugo/object.cpp | 70 ++++++++++++++++++++--------------------------- engines/hugo/object.h | 2 -- engines/hugo/parser.cpp | 36 ++++++++++-------------- engines/hugo/parser.h | 5 +--- engines/hugo/schedule.cpp | 69 ++++++++++++++++++++++++++++++---------------- engines/hugo/schedule.h | 26 ++++++++++-------- 10 files changed, 119 insertions(+), 154 deletions(-) diff --git a/engines/hugo/display.cpp b/engines/hugo/display.cpp index 69ca06467e..f2c4990f66 100644 --- a/engines/hugo/display.cpp +++ b/engines/hugo/display.cpp @@ -585,17 +585,12 @@ void Screen::loadPalette(Common::ReadStream &in) { } /** - * Free main and current palettes + * Free fonts, main and current palettes */ -void Screen::freePalette() { +void Screen::freeScreen() { free(_curPalette); free(_mainPalette); -} -/** - * Free fonts - */ -void Screen::freeFonts() { for (int i = 0; i < kNumFonts; i++) { if (_arrayFont[i]) free(_arrayFont[i]); diff --git a/engines/hugo/display.h b/engines/hugo/display.h index 21e9fe2e9c..b5a3c763bc 100644 --- a/engines/hugo/display.h +++ b/engines/hugo/display.h @@ -65,8 +65,7 @@ public: void drawRectangle(const bool filledFl, const int16 x1, const int16 y1, const int16 x2, const int16 y2, const int color); void drawShape(const int x, const int y, const int color1, const int color2); void drawStatusText(); - void freeFonts(); - void freePalette(); + void freeScreen(); void hideCursor(); void initDisplay(); void initNewScreenDisplay(); diff --git a/engines/hugo/file.cpp b/engines/hugo/file.cpp index 2e23247468..a0602f0636 100644 --- a/engines/hugo/file.cpp +++ b/engines/hugo/file.cpp @@ -369,14 +369,7 @@ bool FileManager::saveGame(const int16 slot, const Common::String &descrip) { for (int i = 0; i < _vm->_numScreens; i++) out->writeByte(_vm->_screenStates[i]); - _vm->_scheduler->savePoints(out); - - // Now save current time and all current events in event queue - _vm->_scheduler->saveEvents(out); - - // Now save current actions - _vm->_scheduler->saveActions(out); - + _vm->_scheduler->saveSchedulerData(out); // Save palette table _vm->_screen->savePal(out); @@ -471,14 +464,7 @@ bool FileManager::restoreGame(const int16 slot) { for (int i = 0; i < _vm->_numScreens; i++) _vm->_screenStates[i] = in->readByte(); - _vm->_scheduler->restorePoints(in); - _vm->_object->restoreAllSeq(); - - // Now restore time of the save and the event queue - _vm->_scheduler->restoreEvents(in); - - // Now restore actions - _vm->_scheduler->restoreActions(in); + _vm->_scheduler->restoreSchedulerData(in); // Restore palette and change it if necessary _vm->_screen->restorePal(in); diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index 76898c62a9..9f64db83ff 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -74,30 +74,22 @@ HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(sy } HugoEngine::~HugoEngine() { - shutdown(); + _file->closeDatabaseFiles(); - _screen->freePalette(); - _text->freeAllTexts(); _intro->freeIntroData(); - _parser->freeArrayReqs(); - _mouse->freeHotspots(); _inventory->freeInvent(); - _object->freeObjectUses(); - _parser->freeCatchallList(); - _parser->freeBackgroundObjects(); - _scheduler->freePoints(); - _parser->freeCmdList(); - _scheduler->freeScreenAct(); - _object->freeObjectArr(); - _scheduler->freeActListArr(); + _mouse->freeHotspots(); + _object->freeObjects(); + _parser->freeParser(); + _scheduler->freeScheduler(); + _screen->freeScreen(); + _text->freeAllTexts(); free(_defltTunes); free(_screenStates); - _screen->freeFonts(); delete _topMenu; - delete _object; delete _sound; delete _route; @@ -203,11 +195,12 @@ Common::Error HugoEngine::run() { _screen->setCursorPal(); _screen->resetInventoryObjId(); + _scheduler->initCypher(); + initStatus(); // Initialize game status initConfig(); // Initialize user's config initialize(); resetConfig(); // Reset user's config - initMachine(); // Start the state machine @@ -576,16 +569,6 @@ void HugoEngine::initialize() { } } -/** - * Restore all resources before termination - */ -void HugoEngine::shutdown() { - debugC(1, kDebugEngine, "shutdown"); - - _file->closeDatabaseFiles(); - _object->freeObjects(); -} - /** * Read scenery, overlay files for given screen number */ diff --git a/engines/hugo/object.cpp b/engines/hugo/object.cpp index c2bcffb833..786ea4762a 100644 --- a/engines/hugo/object.cpp +++ b/engines/hugo/object.cpp @@ -213,52 +213,54 @@ void ObjectHandler::lookObject(object_t *obj) { } /** - * Free all object images + * Free all object images, uses and ObjArr (before exiting) */ void ObjectHandler::freeObjects() { debugC(1, kDebugObject, "freeObjects"); - // Nothing to do if not allocated yet - if (_vm->_hero == 0 || _vm->_hero->seqList[0].seqPtr == 0) - return; - - // Free all sequence lists and image data - for (int i = 0; i < _numObj; i++) { - object_t *obj = &_objects[i]; - for (int j = 0; j < obj->seqNumb; j++) { - seq_t *seq = obj->seqList[j].seqPtr; - seq_t *next; - if (seq == 0) // Failure during database load - break; - if (seq->imagePtr != 0) { - free(seq->imagePtr); - seq->imagePtr = 0; - } - seq = seq->nextSeqPtr; - while (seq != obj->seqList[j].seqPtr) { + if (_vm->_hero != 0 && _vm->_hero->seqList[0].seqPtr != 0) { + // Free all sequence lists and image data + for (int16 i = 0; i < _numObj; i++) { + object_t *obj = &_objects[i]; + for (int16 j = 0; j < obj->seqNumb; j++) { + seq_t *seq = obj->seqList[j].seqPtr; + seq_t *next; + if (seq == 0) // Failure during database load + break; if (seq->imagePtr != 0) { free(seq->imagePtr); seq->imagePtr = 0; } - next = seq->nextSeqPtr; + seq = seq->nextSeqPtr; + while (seq != obj->seqList[j].seqPtr) { + if (seq->imagePtr != 0) { + free(seq->imagePtr); + seq->imagePtr = 0; + } + next = seq->nextSeqPtr; + free(seq); + seq = next; + } free(seq); - seq = next; } - free(seq); } } -} -/** - * Free all object uses - */ -void ObjectHandler::freeObjectUses() { if (_uses) { - for (int i = 0; i < _usesSize; i++) + for (int16 i = 0; i < _usesSize; i++) free(_uses[i].targets); free(_uses); } + + for(int16 i = 0; i < _objCount; i++) { + free(_objects[i].stateDataIndex); + _objects[i].stateDataIndex = 0; + } + + free(_objects); + _objects = 0; } + /** * Compare function for the quicksort. The sort is to order the objects in * increasing vertical position, using y+y2 as the baseline @@ -366,18 +368,6 @@ bool ObjectHandler::findObjectSpace(object_t *obj, int16 *destx, int16 *desty) { return foundFl; } -/** - * Free ObjectArr (before exiting) - */ -void ObjectHandler::freeObjectArr() { - for(int16 i = 0; i < _objCount; i++) { - free(_objects[i].stateDataIndex); - _objects[i].stateDataIndex = 0; - } - free(_objects); - _objects = 0; -} - /** * Load _uses from Hugo.dat */ diff --git a/engines/hugo/object.h b/engines/hugo/object.h index 09dcfeb30f..ef60e622f8 100644 --- a/engines/hugo/object.h +++ b/engines/hugo/object.h @@ -73,10 +73,8 @@ public: int calcMaxScore(); int16 findObject(uint16 x, uint16 y); void freeObjects(); - void freeObjectUses(); void loadObjectArr(Common::ReadStream &in); void loadObjectUses(Common::ReadStream &in); - void freeObjectArr(); void loadNumObj(Common::ReadStream &in); void lookObject(object_t *obj); void readObjectImages(); diff --git a/engines/hugo/parser.cpp b/engines/hugo/parser.cpp index 5cc704eb21..c7e252b012 100644 --- a/engines/hugo/parser.cpp +++ b/engines/hugo/parser.cpp @@ -105,14 +105,6 @@ void Parser::loadCmdList(Common::ReadStream &in) { } } -void Parser::freeCmdList() { - if (_cmdList) { - for (int i = 0; i < _cmdListSize; i++) - free(_cmdList[i]); - free(_cmdList); - } -} - /** * Read _backgrounObjects from Hugo.dat */ @@ -146,14 +138,6 @@ void Parser::loadBackgroundObjects(Common::ReadStream &in) { } } -void Parser::freeBackgroundObjects() { - if (_backgroundObjects) { - for (int i = 0; i < _backgroundObjectsSize; i++) - free(_backgroundObjects[i]); - free(_backgroundObjects); - } -} - /** * Read _catchallList from Hugo.dat */ @@ -178,10 +162,6 @@ void Parser::loadCatchallList(Common::ReadStream &in) { } } -void Parser::freeCatchallList() { - free(_catchallList); -} - void Parser::loadArrayReqs(Common::ReadStream &in) { _arrayReqs = _vm->loadLongArray(in); } @@ -204,12 +184,26 @@ const char *Parser::useBG(const char *name) { return 0; } -void Parser::freeArrayReqs() { +void Parser::freeParser() { if (_arrayReqs) { for (int i = 0; _arrayReqs[i] != 0; i++) free(_arrayReqs[i]); free(_arrayReqs); } + + free(_catchallList); + + if (_backgroundObjects) { + for (int i = 0; i < _backgroundObjectsSize; i++) + free(_backgroundObjects[i]); + free(_backgroundObjects); + } + + if (_cmdList) { + for (int i = 0; i < _cmdListSize; i++) + free(_cmdList[i]); + free(_cmdList); + } } void Parser::switchTurbo() { diff --git a/engines/hugo/parser.h b/engines/hugo/parser.h index 283bcd4541..5bc602fb9a 100644 --- a/engines/hugo/parser.h +++ b/engines/hugo/parser.h @@ -53,10 +53,7 @@ public: void charHandler(); void command(const char *format, ...); - void freeArrayReqs(); - void freeBackgroundObjects(); - void freeCatchallList(); - void freeCmdList(); + void freeParser(); void keyHandler(Common::Event event); void loadArrayReqs(Common::ReadStream &in); void loadBackgroundObjects(Common::ReadStream &in); diff --git a/engines/hugo/schedule.cpp b/engines/hugo/schedule.cpp index 02f8e48b88..c5d1683a96 100644 --- a/engines/hugo/schedule.cpp +++ b/engines/hugo/schedule.cpp @@ -57,6 +57,10 @@ Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0), _curTick(0), _ol Scheduler::~Scheduler() { } +void Scheduler::initCypher() { + _cypher = getCypher(); +} + /** * Initialise the timer event queue */ @@ -840,21 +844,6 @@ void Scheduler::loadActListArr(Common::ReadStream &in) { } } -void Scheduler::freeActListArr() { - debugC(6, kDebugSchedule, "freeActListArr()"); - - if (_actListArr) { - for (int i = 0; i < _actListArrSize; i++) { - for (int j = 0; _actListArr[i][j].a0.actType != ANULL; j++) { - if (_actListArr[i][j].a0.actType == PROMPT) - free(_actListArr[i][j].a3.responsePtr); - } - free(_actListArr[i]); - } - free(_actListArr); - } -} - /** * Read _screenActs */ @@ -885,12 +874,27 @@ void Scheduler::loadScreenAct(Common::ReadStream &in) { } } -void Scheduler::freeScreenAct() { +void Scheduler::freeScheduler() { + debugC(6, kDebugSchedule, "freeActListArr()"); + + free(_points); + if (_screenActs) { for (int i = 0; i < _screenActsSize; i++) free(_screenActs[i]); free(_screenActs); } + + if (_actListArr) { + for (int i = 0; i < _actListArrSize; i++) { + for (int j = 0; _actListArr[i][j].a0.actType != ANULL; j++) { + if (_actListArr[i][j].a0.actType == PROMPT) + free(_actListArr[i][j].a3.responsePtr); + } + free(_actListArr[i]); + } + free(_actListArr); + } } /** @@ -1020,7 +1024,6 @@ int16 Scheduler::calcMaxPoints() const { /* * Save the action data in the file with handle f */ - void Scheduler::saveActions(Common::WriteStream* f) const { for (int i = 0; i < _actListArrSize; i++) { // write all the sub elems data @@ -1061,6 +1064,27 @@ void Scheduler::findAction(act* action, int16* index, int16* subElem) { assert(0); } +void Scheduler::saveSchedulerData(Common::WriteStream *out) { + savePoints(out); + + // Now save current time and all current events in event queue + saveEvents(out); + + // Now save current actions + saveActions(out); +} + +void Scheduler::restoreSchedulerData(Common::ReadStream *in) { + restorePoints(in); + _vm->_object->restoreAllSeq(); + + // Now restore time of the save and the event queue + restoreEvents(in); + + // Now restore actions + restoreActions(in); +} + /** * Restore the event list from file with handle f */ @@ -1455,7 +1479,7 @@ void Scheduler::delEventType(const action_t actTypeDel) { /** * Save the points table */ -void Scheduler::savePoints(Common::WriteStream *out) { +void Scheduler::savePoints(Common::WriteStream *out) const { for (int i = 0; i < _numBonuses; i++) { out->writeByte(_points[i].score); out->writeByte((_points[i].scoredFl) ? 1 : 0); @@ -1533,11 +1557,9 @@ void Scheduler_v1d::promptAction(act *action) { void Scheduler_v1d::decodeString(char *line) { debugC(1, kDebugSchedule, "decodeString(%s)", line); - static const Common::String cypher = getCypher(); - uint16 linelength = strlen(line); for(uint16 i = 0; i < linelength; i++) { - line[i] = (line[i] + cypher.c_str()[i % cypher.size()]) % '~'; + line[i] = (line[i] + _cypher.c_str()[i % _cypher.size()]) % '~'; if (line[i] < ' ') line[i] += ' '; } @@ -1586,11 +1608,10 @@ void Scheduler_v2d::promptAction(act *action) { void Scheduler_v2d::decodeString(char *line) { debugC(1, kDebugSchedule, "decodeString(%s)", line); - static const Common::String cypher = getCypher(); - int16 lineLength = strlen(line); for (uint16 i = 0; i < lineLength; i++) - line[i] -= cypher.c_str()[i % cypher.size()]; + line[i] -= _cypher.c_str()[i % _cypher.size()]; + debugC(1, kDebugSchedule, "result : %s", line); } diff --git a/engines/hugo/schedule.h b/engines/hugo/schedule.h index c621a618eb..e2169a0aa9 100644 --- a/engines/hugo/schedule.h +++ b/engines/hugo/schedule.h @@ -458,12 +458,10 @@ public: virtual void decodeString(char *line) = 0; virtual void runScheduler() = 0; - void freePoints() { free(_points); } - int16 calcMaxPoints() const; - void freeActListArr(); - void freeScreenAct(); + void freeScheduler(); + void initCypher(); void initEventQueue(); void insertActionList(const uint16 actIndex); void loadActListArr(Common::ReadStream &in); @@ -473,24 +471,20 @@ public: void newScreen(const int screenIndex); void processBonus(const int bonusIndex); void processMaze(const int x1, const int x2, const int y1, const int y2); + void restoreSchedulerData(Common::ReadStream *in); void restoreScreen(const int screenIndex); - void restoreEvents(Common::ReadStream *f); - void restorePoints(Common::ReadStream *in); - void saveEvents(Common::WriteStream *f); - void savePoints(Common::WriteStream *out); - void screenActions(const int screenNum); + void saveSchedulerData(Common::WriteStream *out); void waitForRefresh(); void findAction(act* action, int16* index, int16* subElem); - void saveActions(Common::WriteStream* f) const; - void restoreActions(Common::ReadStream *f); - protected: HugoEngine *_vm; static const int kFilenameLength = 12; // Max length of a DOS file name static const int kMaxEvents = 50; // Max events in event queue static const int kShiftSize = 8; // Place hero this far inside bounding box + Common::String _cypher; + uint16 _actListArrSize; uint16 _alNewscrIndex; uint16 _screenActsSize; @@ -525,6 +519,14 @@ protected: void delEventType(const action_t actTypeDel); void delQueue(event_t *curEvent); void insertAction(act *action); + void restoreActions(Common::ReadStream *f); + void restoreEvents(Common::ReadStream *f); + void restorePoints(Common::ReadStream *in); + void saveActions(Common::WriteStream* f) const; + void saveEvents(Common::WriteStream *f); + void savePoints(Common::WriteStream *out) const; + void screenActions(const int screenNum); + }; class Scheduler_v1d : public Scheduler { -- cgit v1.2.3 From 2d094af90c41e2c57f451b687490e95344e7ef74 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 13 Feb 2011 16:49:32 +0100 Subject: MOHAWK: Implement Mechanical opcode 200 --- engines/mohawk/myst_stacks/mechanical.cpp | 31 ++++--------------------------- engines/mohawk/myst_stacks/mechanical.h | 4 +--- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index add87694a8..0ab1b8df86 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -66,7 +66,7 @@ void MystScriptParser_Mechanical::setupOpcodes() { OPCODE(132, o_crystalLeaveRed); // "Init" Opcodes - OPCODE(200, opcode_200); + OPCODE(200, o_throne_init); OPCODE(201, opcode_201); OPCODE(202, opcode_202); OPCODE(203, opcode_203); @@ -82,7 +82,6 @@ void MystScriptParser_Mechanical::setupOpcodes() { #undef OPCODE void MystScriptParser_Mechanical::disablePersistentScripts() { - opcode_200_disable(); opcode_201_disable(); opcode_202_disable(); opcode_203_disable(); @@ -93,7 +92,6 @@ void MystScriptParser_Mechanical::disablePersistentScripts() { } void MystScriptParser_Mechanical::runPersistentScripts() { - opcode_200_run(); opcode_201_run(); opcode_202_run(); opcode_203_run(); @@ -361,32 +359,11 @@ void MystScriptParser_Mechanical::o_crystalLeaveRed(uint16 op, uint16 var, uint1 _vm->redrawArea(22); } -static struct { - bool enabled; - uint16 var; -} g_opcode200Parameters; - -void MystScriptParser_Mechanical::opcode_200_run() { +void MystScriptParser_Mechanical::o_throne_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne) - // g_opcode200Parameters.var == 0 for Achenar - // g_opcode200Parameters.var == 1 for Sirrus - - // TODO: Fill in Function... - // Variable indicates that this is related to Secret Panel State -} + debugC(kDebugScript, "Opcode %d: Brother throne init", op); -void MystScriptParser_Mechanical::opcode_200_disable() { - g_opcode200Parameters.enabled = false; - g_opcode200Parameters.var = 0; -} - -void MystScriptParser_Mechanical::opcode_200(uint16 op, uint16 var, uint16 argc, uint16 *argv) { - // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne) - if (argc == 0) { - g_opcode200Parameters.var = var; - g_opcode200Parameters.enabled = true; - } else - unknown(op, var, argc, argv); + _invokingResource->setEnabled(getVar(var)); } static struct { diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 3c7701c12d..7015c1b9c1 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -51,8 +51,6 @@ private: void toggleVar(uint16 var); bool setVarValue(uint16 var, uint16 value); - void opcode_200_run(); - void opcode_200_disable(); void opcode_201_run(); void opcode_201_disable(); void opcode_202_run(); @@ -83,7 +81,7 @@ private: DECLARE_OPCODE(o_crystalLeaveGreen); DECLARE_OPCODE(o_crystalLeaveRed); - DECLARE_OPCODE(opcode_200); + DECLARE_OPCODE(o_throne_init); DECLARE_OPCODE(opcode_201); DECLARE_OPCODE(opcode_202); DECLARE_OPCODE(opcode_203); -- cgit v1.2.3 From a76badf30746aea70745f0bf5bb87d44df2d9116 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 13 Feb 2011 16:57:32 +0100 Subject: MOHAWK: Implement Mechanical opcode 100 --- engines/mohawk/myst_stacks/mechanical.cpp | 11 +++++++++++ engines/mohawk/myst_stacks/mechanical.h | 1 + 2 files changed, 12 insertions(+) diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index 0ab1b8df86..46aade250d 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -50,6 +50,7 @@ MystScriptParser_Mechanical::~MystScriptParser_Mechanical() { void MystScriptParser_Mechanical::setupOpcodes() { // "Stack-Specific" Opcodes + OPCODE(100, o_throneEnablePassage); OPCODE(104, opcode_104); OPCODE(105, o_fortressStaircaseMovie); OPCODE(121, opcode_121); @@ -170,6 +171,10 @@ uint16 MystScriptParser_Mechanical::getVar(uint16 var) { void MystScriptParser_Mechanical::toggleVar(uint16 var) { switch(var) { + case 0: // Sirrus's Secret Panel State + _state.sirrusPanelState ^= 1; + case 1: // Achenar's Secret Panel State + _state.achenarPanelState ^= 1; case 3: // Achenar's Secret Room Crate State _state.achenarCrateOpened ^= 1; case 4: // Myst Book Room Staircase State @@ -216,6 +221,12 @@ bool MystScriptParser_Mechanical::setVarValue(uint16 var, uint16 value) { return refresh; } +void MystScriptParser_Mechanical::o_throneEnablePassage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { + debugC(kDebugScript, "Opcode %d: Enable throne passage", op); + + _vm->_resources[argv[0]]->setEnabled(getVar(var)); +} + void MystScriptParser_Mechanical::opcode_104(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 7015c1b9c1..346699b425 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -66,6 +66,7 @@ private: void opcode_209_run(); void opcode_209_disable(); + DECLARE_OPCODE(o_throneEnablePassage); DECLARE_OPCODE(opcode_104); DECLARE_OPCODE(o_fortressStaircaseMovie); DECLARE_OPCODE(opcode_121); -- cgit v1.2.3 From 7e52ae2f5e3534ba0c2f425361c4a3bc51f813f4 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 13 Feb 2011 17:14:56 +0100 Subject: MOHAWK: Implement Mechanical opcodes 203 and 104, snake box --- engines/mohawk/myst_stacks/mechanical.cpp | 43 ++++++------------------------- engines/mohawk/myst_stacks/mechanical.h | 8 +++--- 2 files changed, 12 insertions(+), 39 deletions(-) diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index 46aade250d..c8652d4951 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -51,7 +51,7 @@ MystScriptParser_Mechanical::~MystScriptParser_Mechanical() { void MystScriptParser_Mechanical::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_throneEnablePassage); - OPCODE(104, opcode_104); + OPCODE(104, o_snakeBoxTrigger); OPCODE(105, o_fortressStaircaseMovie); OPCODE(121, opcode_121); OPCODE(122, opcode_122); @@ -70,7 +70,7 @@ void MystScriptParser_Mechanical::setupOpcodes() { OPCODE(200, o_throne_init); OPCODE(201, opcode_201); OPCODE(202, opcode_202); - OPCODE(203, opcode_203); + OPCODE(203, o_snakeBox_init); OPCODE(204, opcode_204); OPCODE(205, opcode_205); OPCODE(206, opcode_206); @@ -85,7 +85,6 @@ void MystScriptParser_Mechanical::setupOpcodes() { void MystScriptParser_Mechanical::disablePersistentScripts() { opcode_201_disable(); opcode_202_disable(); - opcode_203_disable(); opcode_204_disable(); opcode_205_disable(); opcode_206_disable(); @@ -95,7 +94,6 @@ void MystScriptParser_Mechanical::disablePersistentScripts() { void MystScriptParser_Mechanical::runPersistentScripts() { opcode_201_run(); opcode_202_run(); - opcode_203_run(); opcode_204_run(); opcode_205_run(); opcode_206_run(); @@ -227,17 +225,11 @@ void MystScriptParser_Mechanical::o_throneEnablePassage(uint16 op, uint16 var, u _vm->_resources[argv[0]]->setEnabled(getVar(var)); } -void MystScriptParser_Mechanical::opcode_104(uint16 op, uint16 var, uint16 argc, uint16 *argv) { - varUnusedCheck(op, var); +void MystScriptParser_Mechanical::o_snakeBoxTrigger(uint16 op, uint16 var, uint16 argc, uint16 *argv) { + debugC(kDebugScript, "Opcode %d: Trigger Playing Of Snake Movie", op); // Used on Mechanical Card 6043 (Weapons Rack with Snake Box) - if (argc == 0) { - debugC(kDebugScript, "Opcode %d: Trigger Playing Of Snake Movie", op); - - // TODO: Trigger Type 6 To Play Snake Movie.. Resource #3 on card. - } else - unknown(op, var, argc, argv); - + _snakeBox->playMovie(); } void MystScriptParser_Mechanical::o_fortressStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { @@ -437,29 +429,10 @@ void MystScriptParser_Mechanical::opcode_202(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -static struct { - bool enabled; -} g_opcode203Parameters; - -void MystScriptParser_Mechanical::opcode_203_run() { - if (g_opcode203Parameters.enabled) { - // Used for Card 6043 (Weapons Rack with Snake Box) - // TODO: Fill in Logic for Snake Box... - } -} - -void MystScriptParser_Mechanical::opcode_203_disable() { - g_opcode203Parameters.enabled = false; -} +void MystScriptParser_Mechanical::o_snakeBox_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { + debugC(kDebugScript, "Opcode %d: Snake box init", op); -void MystScriptParser_Mechanical::opcode_203(uint16 op, uint16 var, uint16 argc, uint16 *argv) { - varUnusedCheck(op, var); - - // Used for Card 6043 (Weapons Rack with Snake Box) - if (argc == 0) - g_opcode203Parameters.enabled = true; - else - unknown(op, var, argc, argv); + _snakeBox = static_cast(_invokingResource); } static struct { diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 346699b425..345e838fc8 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -55,8 +55,6 @@ private: void opcode_201_disable(); void opcode_202_run(); void opcode_202_disable(); - void opcode_203_run(); - void opcode_203_disable(); void opcode_204_run(); void opcode_204_disable(); void opcode_205_run(); @@ -67,7 +65,7 @@ private: void opcode_209_disable(); DECLARE_OPCODE(o_throneEnablePassage); - DECLARE_OPCODE(opcode_104); + DECLARE_OPCODE(o_snakeBoxTrigger); DECLARE_OPCODE(o_fortressStaircaseMovie); DECLARE_OPCODE(opcode_121); DECLARE_OPCODE(opcode_122); @@ -85,7 +83,7 @@ private: DECLARE_OPCODE(o_throne_init); DECLARE_OPCODE(opcode_201); DECLARE_OPCODE(opcode_202); - DECLARE_OPCODE(opcode_203); + DECLARE_OPCODE(o_snakeBox_init); DECLARE_OPCODE(opcode_204); DECLARE_OPCODE(opcode_205); DECLARE_OPCODE(opcode_206); @@ -100,6 +98,8 @@ private: uint16 _fortressPosition; // 82 uint16 _crystalLit; // 130 + + MystResourceType6 *_snakeBox; // 156 }; } // End of namespace Mohawk -- cgit v1.2.3 From 30f1eead192b8cf6a8c3e3526d9ab6c01670a0aa Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 13 Feb 2011 19:04:53 +0100 Subject: MOHAWK: Add a workaround for a missing image when going up the stairs in Mechanical. --- engines/mohawk/myst_scripts.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engines/mohawk/myst_scripts.cpp b/engines/mohawk/myst_scripts.cpp index 25eeac0a6c..17a2c66091 100644 --- a/engines/mohawk/myst_scripts.cpp +++ b/engines/mohawk/myst_scripts.cpp @@ -599,6 +599,10 @@ void MystScriptParser::o_copyBackBufferToScreen(uint16 op, uint16 var, uint16 ar void MystScriptParser::o_copyImageToBackBuffer(uint16 op, uint16 var, uint16 argc, uint16 *argv) { uint16 imageId = argv[0]; + // WORKAROUND wrong image id in mechanical staircase + if (imageId == 7158) + imageId = 7178; + Common::Rect srcRect = Common::Rect(argv[1], argv[2], argv[3], argv[4]); Common::Rect dstRect = Common::Rect(argv[5], argv[6], 544, 333); -- cgit v1.2.3 From c6e86c672bdd3edddad6414a70646f4d458beee2 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sun, 13 Feb 2011 19:07:06 +0100 Subject: MOHAWK: Implement Mechanical opcode 201, staircase init --- engines/mohawk/myst_stacks/mechanical.cpp | 45 +++++-------------------------- engines/mohawk/myst_stacks/mechanical.h | 4 +-- 2 files changed, 7 insertions(+), 42 deletions(-) diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index c8652d4951..b1f30933c2 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -68,7 +68,7 @@ void MystScriptParser_Mechanical::setupOpcodes() { // "Init" Opcodes OPCODE(200, o_throne_init); - OPCODE(201, opcode_201); + OPCODE(201, o_fortressStaircase_init); OPCODE(202, opcode_202); OPCODE(203, o_snakeBox_init); OPCODE(204, opcode_204); @@ -83,7 +83,6 @@ void MystScriptParser_Mechanical::setupOpcodes() { #undef OPCODE void MystScriptParser_Mechanical::disablePersistentScripts() { - opcode_201_disable(); opcode_202_disable(); opcode_204_disable(); opcode_205_disable(); @@ -92,7 +91,6 @@ void MystScriptParser_Mechanical::disablePersistentScripts() { } void MystScriptParser_Mechanical::runPersistentScripts() { - opcode_201_run(); opcode_202_run(); opcode_204_run(); opcode_205_run(); @@ -369,43 +367,12 @@ void MystScriptParser_Mechanical::o_throne_init(uint16 op, uint16 var, uint16 ar _invokingResource->setEnabled(getVar(var)); } -static struct { - uint16 u0; - uint16 u1; - uint16 u2; - - bool enabled; -} g_opcode201Parameters; - -void MystScriptParser_Mechanical::opcode_201_run() { - // Used for Card 6159 (Facing Corridor to Fortress Elevator) - - // g_opcode201Parameters.u0 - // g_opcode201Parameters.u1 - // g_opcode201Parameters.u2 - - // TODO: Fill in Function... -} +void MystScriptParser_Mechanical::o_fortressStaircase_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { + debugC(kDebugScript, "Opcode %d: Staircase init", op); -void MystScriptParser_Mechanical::opcode_201_disable() { - g_opcode201Parameters.enabled = false; - g_opcode201Parameters.u0 = 0; - g_opcode201Parameters.u1 = 0; - g_opcode201Parameters.u2 = 0; -} - -void MystScriptParser_Mechanical::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) { - varUnusedCheck(op, var); - - // Used for Card 6159 (Facing Corridor to Fortress Elevator) - if (argc == 3) { - g_opcode201Parameters.u0 = argv[0]; - g_opcode201Parameters.u1 = argv[1]; - g_opcode201Parameters.u2 = argv[2]; - - g_opcode201Parameters.enabled = true; - } else - unknown(op, var, argc, argv); + _vm->_resources[argv[0]]->setEnabled(!_state.staircaseState); + _vm->_resources[argv[1]]->setEnabled(!_state.staircaseState); + _vm->_resources[argv[2]]->setEnabled(_state.staircaseState); } static struct { diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 345e838fc8..1853a56418 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -51,8 +51,6 @@ private: void toggleVar(uint16 var); bool setVarValue(uint16 var, uint16 value); - void opcode_201_run(); - void opcode_201_disable(); void opcode_202_run(); void opcode_202_disable(); void opcode_204_run(); @@ -81,7 +79,7 @@ private: DECLARE_OPCODE(o_crystalLeaveRed); DECLARE_OPCODE(o_throne_init); - DECLARE_OPCODE(opcode_201); + DECLARE_OPCODE(o_fortressStaircase_init); DECLARE_OPCODE(opcode_202); DECLARE_OPCODE(o_snakeBox_init); DECLARE_OPCODE(opcode_204); -- cgit v1.2.3 From fc605427a8021029b1e20ea7fca38eef450cc209 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Tue, 15 Feb 2011 21:24:05 +0100 Subject: MOHAWK: Put togeter the Myst stack classes in a namespace --- engines/mohawk/myst.cpp | 24 ++++++++++++------------ engines/mohawk/myst_stacks/channelwood.cpp | 2 ++ engines/mohawk/myst_stacks/channelwood.h | 7 +++++-- engines/mohawk/myst_stacks/credits.cpp | 2 ++ engines/mohawk/myst_stacks/credits.h | 7 +++++-- engines/mohawk/myst_stacks/demo.cpp | 2 ++ engines/mohawk/myst_stacks/demo.h | 7 +++++-- engines/mohawk/myst_stacks/dni.cpp | 2 ++ engines/mohawk/myst_stacks/dni.h | 7 +++++-- engines/mohawk/myst_stacks/intro.cpp | 2 ++ engines/mohawk/myst_stacks/intro.h | 7 +++++-- engines/mohawk/myst_stacks/makingof.cpp | 2 ++ engines/mohawk/myst_stacks/makingof.h | 7 +++++-- engines/mohawk/myst_stacks/mechanical.cpp | 2 ++ engines/mohawk/myst_stacks/mechanical.h | 7 +++++-- engines/mohawk/myst_stacks/myst.cpp | 4 ++-- engines/mohawk/myst_stacks/myst.h | 7 +++++-- engines/mohawk/myst_stacks/preview.cpp | 2 ++ engines/mohawk/myst_stacks/preview.h | 7 +++++-- engines/mohawk/myst_stacks/selenitic.cpp | 2 ++ engines/mohawk/myst_stacks/selenitic.h | 7 +++++-- engines/mohawk/myst_stacks/slides.cpp | 4 ++-- engines/mohawk/myst_stacks/slides.h | 7 +++++-- engines/mohawk/myst_stacks/stoneship.cpp | 2 ++ engines/mohawk/myst_stacks/stoneship.h | 7 +++++-- 25 files changed, 96 insertions(+), 40 deletions(-) diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index d8c9786fcf..2150b9668a 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -417,45 +417,45 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS switch (_curStack) { case kChannelwoodStack: _gameState->_globals.currentAge = 4; - _scriptParser = new MystScriptParser_Channelwood(this); + _scriptParser = new MystStacks::MystScriptParser_Channelwood(this); break; case kCreditsStack: - _scriptParser = new MystScriptParser_Credits(this); + _scriptParser = new MystStacks::MystScriptParser_Credits(this); break; case kDemoStack: - _scriptParser = new MystScriptParser_Demo(this); + _scriptParser = new MystStacks::MystScriptParser_Demo(this); break; case kDniStack: _gameState->_globals.currentAge = 6; - _scriptParser = new MystScriptParser_Dni(this); + _scriptParser = new MystStacks::MystScriptParser_Dni(this); break; case kIntroStack: - _scriptParser = new MystScriptParser_Intro(this); + _scriptParser = new MystStacks::MystScriptParser_Intro(this); break; case kMakingOfStack: - _scriptParser = new MystScriptParser_MakingOf(this); + _scriptParser = new MystStacks::MystScriptParser_MakingOf(this); break; case kMechanicalStack: _gameState->_globals.currentAge = 3; - _scriptParser = new MystScriptParser_Mechanical(this); + _scriptParser = new MystStacks::MystScriptParser_Mechanical(this); break; case kMystStack: _gameState->_globals.currentAge = 2; - _scriptParser = new MystScriptParser_Myst(this); + _scriptParser = new MystStacks::MystScriptParser_Myst(this); break; case kDemoPreviewStack: - _scriptParser = new MystScriptParser_Preview(this); + _scriptParser = new MystStacks::MystScriptParser_Preview(this); break; case kSeleniticStack: _gameState->_globals.currentAge = 0; - _scriptParser = new MystScriptParser_Selenitic(this); + _scriptParser = new MystStacks::MystScriptParser_Selenitic(this); break; case kDemoSlidesStack: - _scriptParser = new MystScriptParser_Slides(this); + _scriptParser = new MystStacks::MystScriptParser_Slides(this); break; case kStoneshipStack: _gameState->_globals.currentAge = 1; - _scriptParser = new MystScriptParser_Stoneship(this); + _scriptParser = new MystStacks::MystScriptParser_Stoneship(this); break; default: error("Unknown Myst stack"); diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp index 6e367d0167..e2598ef880 100644 --- a/engines/mohawk/myst_stacks/channelwood.cpp +++ b/engines/mohawk/myst_stacks/channelwood.cpp @@ -35,6 +35,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Channelwood::MystScriptParser_Channelwood(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_channelwood) { @@ -738,4 +739,5 @@ void MystScriptParser_Channelwood::o_drawer_init(uint16 op, uint16 var, uint16 a _siriusDrawerState = 0; } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/channelwood.h b/engines/mohawk/myst_stacks/channelwood.h index 8c52f864cd..b74cefc881 100644 --- a/engines/mohawk/myst_stacks/channelwood.h +++ b/engines/mohawk/myst_stacks/channelwood.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Channelwood : public MystScriptParser { public: MystScriptParser_Channelwood(MohawkEngine_Myst *vm); @@ -99,6 +101,7 @@ private: bool pipeChangeValve(bool open, uint16 mask); }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/credits.cpp b/engines/mohawk/myst_stacks/credits.cpp index 6c0b2c2951..9e2a5c8baf 100644 --- a/engines/mohawk/myst_stacks/credits.cpp +++ b/engines/mohawk/myst_stacks/credits.cpp @@ -33,6 +33,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { // NOTE: Credits Start Card is 10000 @@ -97,4 +98,5 @@ void MystScriptParser_Credits::o_runCredits(uint16 op, uint16 var, uint16 argc, _startTime = _vm->_system->getMillis(); } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/credits.h b/engines/mohawk/myst_stacks/credits.h index 46d23c67ca..5e71be2d36 100644 --- a/engines/mohawk/myst_stacks/credits.h +++ b/engines/mohawk/myst_stacks/credits.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Credits : public MystScriptParser { public: MystScriptParser_Credits(MohawkEngine_Myst *vm); @@ -55,6 +57,7 @@ private: uint16 _curImage; // 56 }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/demo.cpp b/engines/mohawk/myst_stacks/demo.cpp index 548a2d5390..6937931f74 100644 --- a/engines/mohawk/myst_stacks/demo.cpp +++ b/engines/mohawk/myst_stacks/demo.cpp @@ -29,6 +29,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Demo::MystScriptParser_Demo(MohawkEngine_Myst *vm) : MystScriptParser_Intro(vm) { setupOpcodes(); @@ -123,4 +124,5 @@ void MystScriptParser_Demo::opcode_300(uint16 op, uint16 var, uint16 argc, uint1 // TODO: Fill in Function... } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/demo.h b/engines/mohawk/myst_stacks/demo.h index f693ea4c35..8b33e76e2c 100644 --- a/engines/mohawk/myst_stacks/demo.h +++ b/engines/mohawk/myst_stacks/demo.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Demo : public MystScriptParser_Intro { public: MystScriptParser_Demo(MohawkEngine_Myst *vm); @@ -59,6 +61,7 @@ private: bool _enabled201; }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/dni.cpp b/engines/mohawk/myst_stacks/dni.cpp index 47382b7b81..361666a1b3 100644 --- a/engines/mohawk/myst_stacks/dni.cpp +++ b/engines/mohawk/myst_stacks/dni.cpp @@ -32,6 +32,7 @@ #include "mohawk/myst_stacks/dni.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Dni::MystScriptParser_Dni(MohawkEngine_Myst *vm) : MystScriptParser(vm) { @@ -194,4 +195,5 @@ void MystScriptParser_Dni::o_atrus_init(uint16 op, uint16 var, uint16 argc, uint _atrusRunning = true; } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/dni.h b/engines/mohawk/myst_stacks/dni.h index 85900ad562..bd7c586786 100644 --- a/engines/mohawk/myst_stacks/dni.h +++ b/engines/mohawk/myst_stacks/dni.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Dni : public MystScriptParser { public: MystScriptParser_Dni(MohawkEngine_Myst *vm); @@ -67,6 +69,7 @@ private: bool _atrusLeft; // 80 }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/intro.cpp b/engines/mohawk/myst_stacks/intro.cpp index a4a8cf2a89..60ab7b8a04 100644 --- a/engines/mohawk/myst_stacks/intro.cpp +++ b/engines/mohawk/myst_stacks/intro.cpp @@ -34,6 +34,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Intro::MystScriptParser_Intro(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); @@ -183,4 +184,5 @@ void MystScriptParser_Intro::o_mystLinkBook_init(uint16 op, uint16 var, uint16 a _linkBookRunning = true; } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/intro.h b/engines/mohawk/myst_stacks/intro.h index a40d268d7d..9aabd9f255 100644 --- a/engines/mohawk/myst_stacks/intro.h +++ b/engines/mohawk/myst_stacks/intro.h @@ -32,12 +32,14 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; class MystResourceType6; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Intro : public MystScriptParser { public: MystScriptParser_Intro(MohawkEngine_Myst *vm); @@ -65,6 +67,7 @@ private: MystResourceType6 *_linkBookMovie; }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/makingof.cpp b/engines/mohawk/myst_stacks/makingof.cpp index 28b8665f52..16167ba96a 100644 --- a/engines/mohawk/myst_stacks/makingof.cpp +++ b/engines/mohawk/myst_stacks/makingof.cpp @@ -33,6 +33,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_MakingOf::MystScriptParser_MakingOf(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); @@ -56,4 +57,5 @@ void MystScriptParser_MakingOf::disablePersistentScripts() { void MystScriptParser_MakingOf::runPersistentScripts() { } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/makingof.h b/engines/mohawk/myst_stacks/makingof.h index ab919fd174..495bc432e8 100644 --- a/engines/mohawk/myst_stacks/makingof.h +++ b/engines/mohawk/myst_stacks/makingof.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_MakingOf : public MystScriptParser { public: MystScriptParser_MakingOf(MohawkEngine_Myst *vm); @@ -49,6 +51,7 @@ private: void setupOpcodes(); }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index b1f30933c2..33d3f0bf6f 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -34,6 +34,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Mechanical::MystScriptParser_Mechanical(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_mechanical) { @@ -537,4 +538,5 @@ void MystScriptParser_Mechanical::opcode_300(uint16 op, uint16 var, uint16 argc, // TODO: Fill in Logic. Clearing Variable for View? } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 1853a56418..35cfab068b 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Mechanical : public MystScriptParser { public: MystScriptParser_Mechanical(MohawkEngine_Myst *vm); @@ -100,6 +102,7 @@ private: MystResourceType6 *_snakeBox; // 156 }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index 3bcc83527b..af4888582e 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -37,8 +37,7 @@ #include "gui/message.h" namespace Mohawk { - -// NOTE: Credits Start Card is 10000 +namespace MystStacks { MystScriptParser_Myst::MystScriptParser_Myst(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(_vm->_gameState->_myst) { @@ -3646,4 +3645,5 @@ void MystScriptParser_Myst::o_generatorControlRoom_exit(uint16 op, uint16 var, u _generatorVoltage = _state.generatorVoltage; } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/myst.h b/engines/mohawk/myst_stacks/myst.h index e41527a5b8..3b759160b1 100644 --- a/engines/mohawk/myst_stacks/myst.h +++ b/engines/mohawk/myst_stacks/myst.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Myst : public MystScriptParser { public: MystScriptParser_Myst(MohawkEngine_Myst *vm); @@ -333,6 +335,7 @@ private: void observatoryUpdateTime(); }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/preview.cpp b/engines/mohawk/myst_stacks/preview.cpp index bbf324714b..354e353936 100644 --- a/engines/mohawk/myst_stacks/preview.cpp +++ b/engines/mohawk/myst_stacks/preview.cpp @@ -33,6 +33,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Preview::MystScriptParser_Preview(MohawkEngine_Myst *vm) : MystScriptParser_Myst(vm) { setupOpcodes(); @@ -135,4 +136,5 @@ void MystScriptParser_Preview::opcode_299(uint16 op, uint16 var, uint16 argc, ui // can change the Myst Library to Red.. } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/preview.h b/engines/mohawk/myst_stacks/preview.h index 25f0ab514f..bd0d2e7869 100644 --- a/engines/mohawk/myst_stacks/preview.h +++ b/engines/mohawk/myst_stacks/preview.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Preview : public MystScriptParser_Myst { public: MystScriptParser_Preview(MohawkEngine_Myst *vm); @@ -54,6 +56,7 @@ private: DECLARE_OPCODE(opcode_299); }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/selenitic.cpp b/engines/mohawk/myst_stacks/selenitic.cpp index 3e00d242be..a9c77af7bd 100644 --- a/engines/mohawk/myst_stacks/selenitic.cpp +++ b/engines/mohawk/myst_stacks/selenitic.cpp @@ -35,6 +35,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Selenitic::MystScriptParser_Selenitic(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_selenitic) { @@ -1723,4 +1724,5 @@ const uint8 MystScriptParser_Selenitic::_mazeRunnerVideos[300][4] = { {0, 0, 0, 0} }; +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/selenitic.h b/engines/mohawk/myst_stacks/selenitic.h index 54e9db4d66..d758a318ca 100644 --- a/engines/mohawk/myst_stacks/selenitic.h +++ b/engines/mohawk/myst_stacks/selenitic.h @@ -32,12 +32,14 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; class MystResourceType8; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Selenitic : public MystScriptParser { public: MystScriptParser_Selenitic(MohawkEngine_Myst *vm); @@ -135,6 +137,7 @@ private: void mazeRunnerBacktrack(uint16 &oldPosition); }; +} // End of namespace MystStacks } #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/slides.cpp b/engines/mohawk/myst_stacks/slides.cpp index 128505d266..0fb7eb2456 100644 --- a/engines/mohawk/myst_stacks/slides.cpp +++ b/engines/mohawk/myst_stacks/slides.cpp @@ -33,8 +33,7 @@ #include "gui/message.h" namespace Mohawk { - -// NOTE: Credits Start Card is 10000 +namespace MystStacks { MystScriptParser_Slides::MystScriptParser_Slides(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); @@ -81,4 +80,5 @@ void MystScriptParser_Slides::o_setCardSwap(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/slides.h b/engines/mohawk/myst_stacks/slides.h index 7230eead25..6799556f31 100644 --- a/engines/mohawk/myst_stacks/slides.h +++ b/engines/mohawk/myst_stacks/slides.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Slides : public MystScriptParser { public: MystScriptParser_Slides(MohawkEngine_Myst *vm); @@ -57,6 +59,7 @@ private: uint32 _lastCardTime; }; +} // End of namespace MystStacks } // End of namespace Mohawk #undef DECLARE_OPCODE diff --git a/engines/mohawk/myst_stacks/stoneship.cpp b/engines/mohawk/myst_stacks/stoneship.cpp index ebf7f75d88..1b6a18d701 100644 --- a/engines/mohawk/myst_stacks/stoneship.cpp +++ b/engines/mohawk/myst_stacks/stoneship.cpp @@ -35,6 +35,7 @@ #include "gui/message.h" namespace Mohawk { +namespace MystStacks { MystScriptParser_Stoneship::MystScriptParser_Stoneship(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_stoneship) { @@ -990,4 +991,5 @@ void MystScriptParser_Stoneship::o_cloudOrb_init(uint16 op, uint16 var, uint16 a _cloudOrbStopSound = argv[1]; } +} // End of namespace MystStacks } // End of namespace Mohawk diff --git a/engines/mohawk/myst_stacks/stoneship.h b/engines/mohawk/myst_stacks/stoneship.h index eb58bd6543..3845121707 100644 --- a/engines/mohawk/myst_stacks/stoneship.h +++ b/engines/mohawk/myst_stacks/stoneship.h @@ -32,11 +32,13 @@ namespace Mohawk { -#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) - class MohawkEngine_Myst; struct MystScriptEntry; +namespace MystStacks { + +#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) + class MystScriptParser_Stoneship : public MystScriptParser { public: MystScriptParser_Stoneship(MohawkEngine_Myst *vm); @@ -142,6 +144,7 @@ private: uint16 batteryRemainingCharge(); }; +} // End of namespace MystStacks } #undef DECLARE_OPCODE -- cgit v1.2.3 From 369db4fdfd5dac16858505f91cb37f4ae386fe80 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Tue, 15 Feb 2011 21:42:00 +0100 Subject: MOHAWK: Shorten Myst stack classes names --- engines/mohawk/myst.cpp | 24 +- engines/mohawk/myst_stacks/channelwood.cpp | 84 +++---- engines/mohawk/myst_stacks/channelwood.h | 7 +- engines/mohawk/myst_stacks/credits.cpp | 16 +- engines/mohawk/myst_stacks/credits.h | 7 +- engines/mohawk/myst_stacks/demo.cpp | 28 +-- engines/mohawk/myst_stacks/demo.h | 7 +- engines/mohawk/myst_stacks/dni.cpp | 24 +- engines/mohawk/myst_stacks/dni.h | 7 +- engines/mohawk/myst_stacks/intro.cpp | 24 +- engines/mohawk/myst_stacks/intro.h | 7 +- engines/mohawk/myst_stacks/makingof.cpp | 12 +- engines/mohawk/myst_stacks/makingof.h | 7 +- engines/mohawk/myst_stacks/mechanical.cpp | 86 ++++---- engines/mohawk/myst_stacks/mechanical.h | 7 +- engines/mohawk/myst_stacks/myst.cpp | 342 ++++++++++++++--------------- engines/mohawk/myst_stacks/myst.h | 7 +- engines/mohawk/myst_stacks/preview.cpp | 22 +- engines/mohawk/myst_stacks/preview.h | 7 +- engines/mohawk/myst_stacks/selenitic.cpp | 96 ++++---- engines/mohawk/myst_stacks/selenitic.h | 7 +- engines/mohawk/myst_stacks/slides.cpp | 16 +- engines/mohawk/myst_stacks/slides.h | 7 +- engines/mohawk/myst_stacks/stoneship.cpp | 104 ++++----- engines/mohawk/myst_stacks/stoneship.h | 7 +- 25 files changed, 475 insertions(+), 487 deletions(-) diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index 2150b9668a..f842269893 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -417,45 +417,45 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS switch (_curStack) { case kChannelwoodStack: _gameState->_globals.currentAge = 4; - _scriptParser = new MystStacks::MystScriptParser_Channelwood(this); + _scriptParser = new MystStacks::Channelwood(this); break; case kCreditsStack: - _scriptParser = new MystStacks::MystScriptParser_Credits(this); + _scriptParser = new MystStacks::Credits(this); break; case kDemoStack: - _scriptParser = new MystStacks::MystScriptParser_Demo(this); + _scriptParser = new MystStacks::Demo(this); break; case kDniStack: _gameState->_globals.currentAge = 6; - _scriptParser = new MystStacks::MystScriptParser_Dni(this); + _scriptParser = new MystStacks::Dni(this); break; case kIntroStack: - _scriptParser = new MystStacks::MystScriptParser_Intro(this); + _scriptParser = new MystStacks::Intro(this); break; case kMakingOfStack: - _scriptParser = new MystStacks::MystScriptParser_MakingOf(this); + _scriptParser = new MystStacks::MakingOf(this); break; case kMechanicalStack: _gameState->_globals.currentAge = 3; - _scriptParser = new MystStacks::MystScriptParser_Mechanical(this); + _scriptParser = new MystStacks::Mechanical(this); break; case kMystStack: _gameState->_globals.currentAge = 2; - _scriptParser = new MystStacks::MystScriptParser_Myst(this); + _scriptParser = new MystStacks::Myst(this); break; case kDemoPreviewStack: - _scriptParser = new MystStacks::MystScriptParser_Preview(this); + _scriptParser = new MystStacks::Preview(this); break; case kSeleniticStack: _gameState->_globals.currentAge = 0; - _scriptParser = new MystStacks::MystScriptParser_Selenitic(this); + _scriptParser = new MystStacks::Selenitic(this); break; case kDemoSlidesStack: - _scriptParser = new MystStacks::MystScriptParser_Slides(this); + _scriptParser = new MystStacks::Slides(this); break; case kStoneshipStack: _gameState->_globals.currentAge = 1; - _scriptParser = new MystStacks::MystScriptParser_Stoneship(this); + _scriptParser = new MystStacks::Stoneship(this); break; default: error("Unknown Myst stack"); diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp index e2598ef880..26267cfbda 100644 --- a/engines/mohawk/myst_stacks/channelwood.cpp +++ b/engines/mohawk/myst_stacks/channelwood.cpp @@ -37,17 +37,17 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Channelwood::MystScriptParser_Channelwood(MohawkEngine_Myst *vm) : +Channelwood::Channelwood(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_channelwood) { setupOpcodes(); } -MystScriptParser_Channelwood::~MystScriptParser_Channelwood() { +Channelwood::~Channelwood() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Channelwood::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Channelwood::x, #x)) -void MystScriptParser_Channelwood::setupOpcodes() { +void Channelwood::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_bridgeToggle); OPCODE(101, o_pipeExtend); @@ -90,15 +90,15 @@ void MystScriptParser_Channelwood::setupOpcodes() { #undef OPCODE -void MystScriptParser_Channelwood::disablePersistentScripts() { +void Channelwood::disablePersistentScripts() { } -void MystScriptParser_Channelwood::runPersistentScripts() { +void Channelwood::runPersistentScripts() { } -uint16 MystScriptParser_Channelwood::getVar(uint16 var) { +uint16 Channelwood::getVar(uint16 var) { switch(var) { case 1: // Water Pump Bridge Raised return _state.waterPumpBridgeState; @@ -187,7 +187,7 @@ uint16 MystScriptParser_Channelwood::getVar(uint16 var) { } } -void MystScriptParser_Channelwood::toggleVar(uint16 var) { +void Channelwood::toggleVar(uint16 var) { switch(var) { case 1: // Water Pump Bridge Raised _state.waterPumpBridgeState ^= 1; @@ -220,7 +220,7 @@ void MystScriptParser_Channelwood::toggleVar(uint16 var) { } } -bool MystScriptParser_Channelwood::setVarValue(uint16 var, uint16 value) { +bool Channelwood::setVarValue(uint16 var, uint16 value) { bool refresh = false; switch (var) { @@ -271,7 +271,7 @@ bool MystScriptParser_Channelwood::setVarValue(uint16 var, uint16 value) { return refresh; } -bool MystScriptParser_Channelwood::pipeChangeValve(bool open, uint16 mask) { +bool Channelwood::pipeChangeValve(bool open, uint16 mask) { if (open) { if (!(_state.waterValveStates & mask)) { _state.waterValveStates |= mask; @@ -287,7 +287,7 @@ bool MystScriptParser_Channelwood::pipeChangeValve(bool open, uint16 mask) { return false; } -void MystScriptParser_Channelwood::o_bridgeToggle(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_bridgeToggle(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Bridge rise / skink video", op); VideoHandle bridge = _vm->_video->playMovie(_vm->wrapMovieFilename("bridge", kChannelwoodStack), 292, 203); @@ -301,7 +301,7 @@ void MystScriptParser_Channelwood::o_bridgeToggle(uint16 op, uint16 var, uint16 _vm->_video->waitUntilMovieEnds(bridge); } -void MystScriptParser_Channelwood::o_pipeExtend(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_pipeExtend(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Play Pipe Movie and Sound", op); uint16 soundId = argv[0]; @@ -320,7 +320,7 @@ void MystScriptParser_Channelwood::o_pipeExtend(uint16 op, uint16 var, uint16 ar _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Channelwood::o_drawImageChangeCardAndVolume(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_drawImageChangeCardAndVolume(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Draw Full Screen Image, Change Card, and change volume", op); uint16 imageId = argv[0]; @@ -341,7 +341,7 @@ void MystScriptParser_Channelwood::o_drawImageChangeCardAndVolume(uint16 op, uin } -void MystScriptParser_Channelwood::o_waterTankValveOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_waterTankValveOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Do Water Tank Valve Open Animation", op); Common::Rect rect = _invokingResource->getRect(); @@ -355,7 +355,7 @@ void MystScriptParser_Channelwood::o_waterTankValveOpen(uint16 op, uint16 var, u pipeChangeValve(true, 0x80); } -void MystScriptParser_Channelwood::o_leverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generic lever start move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -364,7 +364,7 @@ void MystScriptParser_Channelwood::o_leverStartMove(uint16 op, uint16 var, uint1 _leverPulled = false; } -void MystScriptParser_Channelwood::o_leverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generic lever move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -379,7 +379,7 @@ void MystScriptParser_Channelwood::o_leverMove(uint16 op, uint16 var, uint16 arg } } -void MystScriptParser_Channelwood::o_leverMoveFail(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverMoveFail(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generic lever move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -396,7 +396,7 @@ void MystScriptParser_Channelwood::o_leverMoveFail(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Channelwood::o_leverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generic lever end move", op); // Get current lever frame @@ -412,12 +412,12 @@ void MystScriptParser_Channelwood::o_leverEndMove(uint16 op, uint16 var, uint16 _vm->checkCursorHints(); } -void MystScriptParser_Channelwood::o_leverEndMoveResumeBackground(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverEndMoveResumeBackground(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _vm->_sound->resumeBackgroundMyst(); o_leverEndMove(op, var, argc, argv); } -void MystScriptParser_Channelwood::o_leverEndMoveWithSound(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverEndMoveWithSound(uint16 op, uint16 var, uint16 argc, uint16 *argv) { o_leverEndMove(op, var, argc, argv); MystResourceType12 *lever = static_cast(_invokingResource); @@ -426,20 +426,20 @@ void MystScriptParser_Channelwood::o_leverEndMoveWithSound(uint16 op, uint16 var _vm->_sound->replaceSoundMyst(soundId); } -void MystScriptParser_Channelwood::o_leverElev3StartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverElev3StartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _vm->_gfx->copyImageToScreen(3970, Common::Rect(544, 333)); _vm->_system->updateScreen(); o_leverStartMove(op, var, argc, argv); } -void MystScriptParser_Channelwood::o_leverElev3EndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_leverElev3EndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { o_leverEndMove(op, var, argc, argv); _vm->_gfx->copyImageToScreen(3265, Common::Rect(544, 333)); _vm->_system->updateScreen(); _vm->_sound->replaceSoundMyst(5265); } -void MystScriptParser_Channelwood::o_pumpLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_pumpLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Pump lever move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -453,7 +453,7 @@ void MystScriptParser_Channelwood::o_pumpLeverMove(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Channelwood::o_pumpLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_pumpLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { o_leverEndMove(op, var, argc, argv); MystResourceType12 *lever = static_cast(_invokingResource); @@ -462,7 +462,7 @@ void MystScriptParser_Channelwood::o_pumpLeverEndMove(uint16 op, uint16 var, uin _vm->_sound->replaceBackgroundMyst(soundId, 36864); } -void MystScriptParser_Channelwood::o_stairsDoorToggle(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_stairsDoorToggle(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Play stairs door video", op); MystResourceType6 *movie = static_cast(_invokingResource); @@ -475,7 +475,7 @@ void MystScriptParser_Channelwood::o_stairsDoorToggle(uint16 op, uint16 var, uin } } -void MystScriptParser_Channelwood::o_valveHandleMove1(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMove1(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -491,7 +491,7 @@ void MystScriptParser_Channelwood::o_valveHandleMove1(uint16 op, uint16 var, uin } } -void MystScriptParser_Channelwood::o_valveHandleMoveStart1(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMoveStart1(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move start", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -503,7 +503,7 @@ void MystScriptParser_Channelwood::o_valveHandleMoveStart1(uint16 op, uint16 var o_valveHandleMove1(op, var, argc, argv); } -void MystScriptParser_Channelwood::o_valveHandleMoveStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMoveStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move stop", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -526,7 +526,7 @@ void MystScriptParser_Channelwood::o_valveHandleMoveStop(uint16 op, uint16 var, _vm->checkCursorHints(); } -void MystScriptParser_Channelwood::o_valveHandleMove2(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMove2(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -542,7 +542,7 @@ void MystScriptParser_Channelwood::o_valveHandleMove2(uint16 op, uint16 var, uin } } -void MystScriptParser_Channelwood::o_valveHandleMoveStart2(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMoveStart2(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move start", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -554,7 +554,7 @@ void MystScriptParser_Channelwood::o_valveHandleMoveStart2(uint16 op, uint16 var o_valveHandleMove2(op, var, argc, argv); } -void MystScriptParser_Channelwood::o_valveHandleMove3(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMove3(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -570,7 +570,7 @@ void MystScriptParser_Channelwood::o_valveHandleMove3(uint16 op, uint16 var, uin } } -void MystScriptParser_Channelwood::o_valveHandleMoveStart3(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_valveHandleMoveStart3(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Valve handle move start", op); MystResourceType12 *handle = static_cast(_invokingResource); @@ -582,7 +582,7 @@ void MystScriptParser_Channelwood::o_valveHandleMoveStart3(uint16 op, uint16 var o_valveHandleMove3(op, var, argc, argv); } -void MystScriptParser_Channelwood::o_hologramMonitor(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_hologramMonitor(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram monitor", op); // Used on Card 3012 (Temple Hologram Monitor) @@ -614,7 +614,7 @@ void MystScriptParser_Channelwood::o_hologramMonitor(uint16 op, uint16 var, uint } } -void MystScriptParser_Channelwood::o_drawerOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_drawerOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Open Sirius drawer", op); _siriusDrawerState = 1; @@ -622,7 +622,7 @@ void MystScriptParser_Channelwood::o_drawerOpen(uint16 op, uint16 var, uint16 ar _vm->redrawArea(102, false); } -void MystScriptParser_Channelwood::o_hologramTemple(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_hologramTemple(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Temple hologram", op); _vm->_sound->pauseBackgroundMyst(); @@ -649,14 +649,14 @@ void MystScriptParser_Channelwood::o_hologramTemple(uint16 op, uint16 var, uint1 _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Channelwood::o_executeMouseUp(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_executeMouseUp(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Execute mouse up", op); MystResourceType5 *resource = static_cast(_vm->_resources[argv[0]]); resource->handleMouseUp(); } -void MystScriptParser_Channelwood::o_waterTankValveClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_waterTankValveClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Do Water Tank Valve Close Animation", op); Common::Rect rect = _invokingResource->getRect(); @@ -670,7 +670,7 @@ void MystScriptParser_Channelwood::o_waterTankValveClose(uint16 op, uint16 var, pipeChangeValve(false, 0x80); } -void MystScriptParser_Channelwood::o_elevatorMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_elevatorMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used by Card 3262 (Elevator) debugC(kDebugScript, "Opcode %d: Elevator movie", op); @@ -715,7 +715,7 @@ void MystScriptParser_Channelwood::o_elevatorMovies(uint16 op, uint16 var, uint1 _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Channelwood::o_soundReplace(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_soundReplace(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Play sound if not already playing", op); uint16 soundId = argv[0]; @@ -724,17 +724,17 @@ void MystScriptParser_Channelwood::o_soundReplace(uint16 op, uint16 var, uint16 _vm->_sound->replaceSoundMyst(soundId); } -void MystScriptParser_Channelwood::o_lever_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_lever_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generic lever init", op); _leverAction = static_cast(_invokingResource); } -void MystScriptParser_Channelwood::o_pipeValve_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_pipeValve_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Water valve init", op); _valveVar = var; } -void MystScriptParser_Channelwood::o_drawer_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Channelwood::o_drawer_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sirius's drawer init", op); _siriusDrawerState = 0; } diff --git a/engines/mohawk/myst_stacks/channelwood.h b/engines/mohawk/myst_stacks/channelwood.h index b74cefc881..5eeaa63e23 100644 --- a/engines/mohawk/myst_stacks/channelwood.h +++ b/engines/mohawk/myst_stacks/channelwood.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Channelwood : public MystScriptParser { +class Channelwood : public MystScriptParser { public: - MystScriptParser_Channelwood(MohawkEngine_Myst *vm); - ~MystScriptParser_Channelwood(); + Channelwood(MohawkEngine_Myst *vm); + ~Channelwood(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/credits.cpp b/engines/mohawk/myst_stacks/credits.cpp index 9e2a5c8baf..61772eda4d 100644 --- a/engines/mohawk/myst_stacks/credits.cpp +++ b/engines/mohawk/myst_stacks/credits.cpp @@ -37,16 +37,16 @@ namespace MystStacks { // NOTE: Credits Start Card is 10000 -MystScriptParser_Credits::MystScriptParser_Credits(MohawkEngine_Myst *vm) : MystScriptParser(vm) { +Credits::Credits(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); } -MystScriptParser_Credits::~MystScriptParser_Credits() { +Credits::~Credits() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Credits::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Credits::x, #x)) -void MystScriptParser_Credits::setupOpcodes() { +void Credits::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_quit); @@ -56,11 +56,11 @@ void MystScriptParser_Credits::setupOpcodes() { #undef OPCODE -void MystScriptParser_Credits::disablePersistentScripts() { +void Credits::disablePersistentScripts() { _creditsRunning = false; } -void MystScriptParser_Credits::runPersistentScripts() { +void Credits::runPersistentScripts() { if (!_creditsRunning) return; @@ -80,7 +80,7 @@ void MystScriptParser_Credits::runPersistentScripts() { } } -uint16 MystScriptParser_Credits::getVar(uint16 var) { +uint16 Credits::getVar(uint16 var) { switch(var) { case 0: // Credits Image Control return _curImage; @@ -91,7 +91,7 @@ uint16 MystScriptParser_Credits::getVar(uint16 var) { } } -void MystScriptParser_Credits::o_runCredits(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Credits::o_runCredits(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Activate the credits _creditsRunning = true; _curImage = 0; diff --git a/engines/mohawk/myst_stacks/credits.h b/engines/mohawk/myst_stacks/credits.h index 5e71be2d36..4f9eaa2944 100644 --- a/engines/mohawk/myst_stacks/credits.h +++ b/engines/mohawk/myst_stacks/credits.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Credits : public MystScriptParser { +class Credits : public MystScriptParser { public: - MystScriptParser_Credits(MohawkEngine_Myst *vm); - ~MystScriptParser_Credits(); + Credits(MohawkEngine_Myst *vm); + ~Credits(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/demo.cpp b/engines/mohawk/myst_stacks/demo.cpp index 6937931f74..a2dd148b22 100644 --- a/engines/mohawk/myst_stacks/demo.cpp +++ b/engines/mohawk/myst_stacks/demo.cpp @@ -31,24 +31,24 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Demo::MystScriptParser_Demo(MohawkEngine_Myst *vm) : MystScriptParser_Intro(vm) { +Demo::Demo(MohawkEngine_Myst *vm) : Intro(vm) { setupOpcodes(); } -MystScriptParser_Demo::~MystScriptParser_Demo() { +Demo::~Demo() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Demo::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Demo::x, #x)) #define OVERRIDE_OPCODE(opcode, x) \ for (uint32 i = 0; i < _opcodes.size(); i++) \ if (_opcodes[i]->op == opcode) { \ - _opcodes[i]->proc = (OpcodeProcMyst) &MystScriptParser_Demo::x; \ + _opcodes[i]->proc = (OpcodeProcMyst) &Demo::x; \ _opcodes[i]->desc = #x; \ break; \ } -void MystScriptParser_Demo::setupOpcodes() { +void Demo::setupOpcodes() { // "Stack-Specific" Opcodes OVERRIDE_OPCODE(100, opcode_100); OPCODE(101, opcode_101); @@ -64,14 +64,14 @@ void MystScriptParser_Demo::setupOpcodes() { #undef OPCODE #undef OVERRIDE_OPCODE -void MystScriptParser_Demo::disablePersistentScripts() { - MystScriptParser_Intro::disablePersistentScripts(); +void Demo::disablePersistentScripts() { + Intro::disablePersistentScripts(); _enabled201 = false; } -void MystScriptParser_Demo::runPersistentScripts() { - MystScriptParser_Intro::runPersistentScripts(); +void Demo::runPersistentScripts() { + Intro::runPersistentScripts(); if (_enabled201) { // Used on Card 2001, 2002 and 2003 @@ -80,11 +80,11 @@ void MystScriptParser_Demo::runPersistentScripts() { } } -void MystScriptParser_Demo::opcode_100(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Demo::opcode_100(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // TODO: Fill in Function... } -void MystScriptParser_Demo::opcode_101(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Demo::opcode_101(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card 2000, 2002 and 2003 @@ -95,7 +95,7 @@ void MystScriptParser_Demo::opcode_101(uint16 op, uint16 var, uint16 argc, uint1 unknown(op, var, argc, argv); } -void MystScriptParser_Demo::opcode_102(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Demo::opcode_102(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card 2002 and 2003 @@ -106,7 +106,7 @@ void MystScriptParser_Demo::opcode_102(uint16 op, uint16 var, uint16 argc, uint1 unknown(op, var, argc, argv); } -void MystScriptParser_Demo::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Demo::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card 2001, 2002 and 2003 @@ -117,7 +117,7 @@ void MystScriptParser_Demo::opcode_201(uint16 op, uint16 var, uint16 argc, uint1 } -void MystScriptParser_Demo::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Demo::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 2000 varUnusedCheck(op, var); diff --git a/engines/mohawk/myst_stacks/demo.h b/engines/mohawk/myst_stacks/demo.h index 8b33e76e2c..054dc7befe 100644 --- a/engines/mohawk/myst_stacks/demo.h +++ b/engines/mohawk/myst_stacks/demo.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Demo : public MystScriptParser_Intro { +class Demo : public Intro { public: - MystScriptParser_Demo(MohawkEngine_Myst *vm); - ~MystScriptParser_Demo(); + Demo(MohawkEngine_Myst *vm); + ~Demo(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/dni.cpp b/engines/mohawk/myst_stacks/dni.cpp index 361666a1b3..ffbf9c991f 100644 --- a/engines/mohawk/myst_stacks/dni.cpp +++ b/engines/mohawk/myst_stacks/dni.cpp @@ -34,18 +34,18 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Dni::MystScriptParser_Dni(MohawkEngine_Myst *vm) : +Dni::Dni(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); _notSeenAtrus = true; } -MystScriptParser_Dni::~MystScriptParser_Dni() { +Dni::~Dni() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Dni::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Dni::x, #x)) -void MystScriptParser_Dni::setupOpcodes() { +void Dni::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, NOP); OPCODE(101, o_handPage); @@ -59,13 +59,13 @@ void MystScriptParser_Dni::setupOpcodes() { #undef OPCODE -void MystScriptParser_Dni::disablePersistentScripts() { +void Dni::disablePersistentScripts() { _atrusRunning = false; _waitForLoop = false; _atrusLeft = false; } -void MystScriptParser_Dni::runPersistentScripts() { +void Dni::runPersistentScripts() { if (_atrusRunning) atrus_run(); @@ -76,7 +76,7 @@ void MystScriptParser_Dni::runPersistentScripts() { atrusLeft_run(); } -uint16 MystScriptParser_Dni::getVar(uint16 var) { +uint16 Dni::getVar(uint16 var) { switch(var) { case 0: // Atrus Gone (from across room) return _globals.ending == 2; @@ -96,7 +96,7 @@ uint16 MystScriptParser_Dni::getVar(uint16 var) { } } -void MystScriptParser_Dni::o_handPage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Dni::o_handPage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hand page to Atrus", op); // Used in Card 5014 (Atrus) @@ -119,7 +119,7 @@ void MystScriptParser_Dni::o_handPage(uint16 op, uint16 var, uint16 argc, uint16 } } -void MystScriptParser_Dni::atrusLeft_run() { +void Dni::atrusLeft_run() { if (_vm->_system->getMillis() > _atrusLeftTime + 63333) { _video = _vm->wrapMovieFilename("atrus2", kDniStack); VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77); @@ -138,7 +138,7 @@ void MystScriptParser_Dni::atrusLeft_run() { } } -void MystScriptParser_Dni::loopVideo_run() { +void Dni::loopVideo_run() { if (!_vm->_video->isVideoPlaying()) { VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77); _vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, _loopStart, 600), Audio::Timestamp(0, _loopEnd, 600)); @@ -148,7 +148,7 @@ void MystScriptParser_Dni::loopVideo_run() { } } -void MystScriptParser_Dni::atrus_run() { +void Dni::atrus_run() { if (_globals.ending == 2) { // Wait for atrus to come back _atrusLeft = true; @@ -189,7 +189,7 @@ void MystScriptParser_Dni::atrus_run() { } } -void MystScriptParser_Dni::o_atrus_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Dni::o_atrus_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Atrus init", op); _atrusRunning = true; diff --git a/engines/mohawk/myst_stacks/dni.h b/engines/mohawk/myst_stacks/dni.h index bd7c586786..b50f018d3e 100644 --- a/engines/mohawk/myst_stacks/dni.h +++ b/engines/mohawk/myst_stacks/dni.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Dni : public MystScriptParser { +class Dni : public MystScriptParser { public: - MystScriptParser_Dni(MohawkEngine_Myst *vm); - ~MystScriptParser_Dni(); + Dni(MohawkEngine_Myst *vm); + ~Dni(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/intro.cpp b/engines/mohawk/myst_stacks/intro.cpp index 60ab7b8a04..0d8f67a85b 100644 --- a/engines/mohawk/myst_stacks/intro.cpp +++ b/engines/mohawk/myst_stacks/intro.cpp @@ -36,16 +36,16 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Intro::MystScriptParser_Intro(MohawkEngine_Myst *vm) : MystScriptParser(vm) { +Intro::Intro(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); } -MystScriptParser_Intro::~MystScriptParser_Intro() { +Intro::~Intro() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Intro::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Intro::x, #x)) -void MystScriptParser_Intro::setupOpcodes() { +void Intro::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_useLinkBook); @@ -59,12 +59,12 @@ void MystScriptParser_Intro::setupOpcodes() { #undef OPCODE -void MystScriptParser_Intro::disablePersistentScripts() { +void Intro::disablePersistentScripts() { _introMoviesRunning = false; _linkBookRunning = false; } -void MystScriptParser_Intro::runPersistentScripts() { +void Intro::runPersistentScripts() { if (_introMoviesRunning) introMovies_run(); @@ -72,7 +72,7 @@ void MystScriptParser_Intro::runPersistentScripts() { mystLinkBook_run(); } -uint16 MystScriptParser_Intro::getVar(uint16 var) { +uint16 Intro::getVar(uint16 var) { switch(var) { case 0: if (_globals.currentAge == 9 || _globals.currentAge == 10) @@ -84,7 +84,7 @@ uint16 MystScriptParser_Intro::getVar(uint16 var) { } } -void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Hard coded SoundId valid only for Intro Stack. // Other stacks use Opcode 40, which takes SoundId values as arguments. const uint16 soundIdLinkSrc = 5; @@ -97,7 +97,7 @@ void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, u _vm->changeToStack(_stackMap[_globals.currentAge], _startCard[_globals.currentAge], soundIdLinkSrc, soundIdLinkDst[_globals.currentAge]); } -void MystScriptParser_Intro::introMovies_run() { +void Intro::introMovies_run() { // Play Intro Movies // This is all quite messy... @@ -157,12 +157,12 @@ void MystScriptParser_Intro::introMovies_run() { } } -void MystScriptParser_Intro::o_playIntroMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Intro::o_playIntroMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _introMoviesRunning = true; _introStep = 0; } -void MystScriptParser_Intro::mystLinkBook_run() { +void Intro::mystLinkBook_run() { if (_startTime == 1) { _startTime = 0; @@ -176,7 +176,7 @@ void MystScriptParser_Intro::mystLinkBook_run() { } } -void MystScriptParser_Intro::o_mystLinkBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Intro::o_mystLinkBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Myst link book init", op); _linkBookMovie = static_cast(_invokingResource); diff --git a/engines/mohawk/myst_stacks/intro.h b/engines/mohawk/myst_stacks/intro.h index 9aabd9f255..0ecd9e6883 100644 --- a/engines/mohawk/myst_stacks/intro.h +++ b/engines/mohawk/myst_stacks/intro.h @@ -32,7 +32,6 @@ namespace Mohawk { -class MohawkEngine_Myst; class MystResourceType6; struct MystScriptEntry; @@ -40,10 +39,10 @@ namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Intro : public MystScriptParser { +class Intro : public MystScriptParser { public: - MystScriptParser_Intro(MohawkEngine_Myst *vm); - ~MystScriptParser_Intro(); + Intro(MohawkEngine_Myst *vm); + ~Intro(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/makingof.cpp b/engines/mohawk/myst_stacks/makingof.cpp index 16167ba96a..e639092ed4 100644 --- a/engines/mohawk/myst_stacks/makingof.cpp +++ b/engines/mohawk/myst_stacks/makingof.cpp @@ -35,26 +35,26 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_MakingOf::MystScriptParser_MakingOf(MohawkEngine_Myst *vm) : MystScriptParser(vm) { +MakingOf::MakingOf(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); } -MystScriptParser_MakingOf::~MystScriptParser_MakingOf() { +MakingOf::~MakingOf() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_MakingOf::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MakingOf::x, #x)) -void MystScriptParser_MakingOf::setupOpcodes() { +void MakingOf::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_quit); } #undef OPCODE -void MystScriptParser_MakingOf::disablePersistentScripts() { +void MakingOf::disablePersistentScripts() { } -void MystScriptParser_MakingOf::runPersistentScripts() { +void MakingOf::runPersistentScripts() { } } // End of namespace MystStacks diff --git a/engines/mohawk/myst_stacks/makingof.h b/engines/mohawk/myst_stacks/makingof.h index 495bc432e8..3033bb851e 100644 --- a/engines/mohawk/myst_stacks/makingof.h +++ b/engines/mohawk/myst_stacks/makingof.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_MakingOf : public MystScriptParser { +class MakingOf : public MystScriptParser { public: - MystScriptParser_MakingOf(MohawkEngine_Myst *vm); - ~MystScriptParser_MakingOf(); + MakingOf(MohawkEngine_Myst *vm); + ~MakingOf(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp index 33d3f0bf6f..0ae9078974 100644 --- a/engines/mohawk/myst_stacks/mechanical.cpp +++ b/engines/mohawk/myst_stacks/mechanical.cpp @@ -36,7 +36,7 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Mechanical::MystScriptParser_Mechanical(MohawkEngine_Myst *vm) : +Mechanical::Mechanical(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_mechanical) { setupOpcodes(); @@ -44,12 +44,12 @@ MystScriptParser_Mechanical::MystScriptParser_Mechanical(MohawkEngine_Myst *vm) _fortressPosition = 0; } -MystScriptParser_Mechanical::~MystScriptParser_Mechanical() { +Mechanical::~Mechanical() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Mechanical::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Mechanical::x, #x)) -void MystScriptParser_Mechanical::setupOpcodes() { +void Mechanical::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_throneEnablePassage); OPCODE(104, o_snakeBoxTrigger); @@ -83,7 +83,7 @@ void MystScriptParser_Mechanical::setupOpcodes() { #undef OPCODE -void MystScriptParser_Mechanical::disablePersistentScripts() { +void Mechanical::disablePersistentScripts() { opcode_202_disable(); opcode_204_disable(); opcode_205_disable(); @@ -91,7 +91,7 @@ void MystScriptParser_Mechanical::disablePersistentScripts() { opcode_209_disable(); } -void MystScriptParser_Mechanical::runPersistentScripts() { +void Mechanical::runPersistentScripts() { opcode_202_run(); opcode_204_run(); opcode_205_run(); @@ -99,7 +99,7 @@ void MystScriptParser_Mechanical::runPersistentScripts() { opcode_209_run(); } -uint16 MystScriptParser_Mechanical::getVar(uint16 var) { +uint16 Mechanical::getVar(uint16 var) { switch(var) { case 0: // Sirrus's Secret Panel State return _state.sirrusPanelState; @@ -166,7 +166,7 @@ uint16 MystScriptParser_Mechanical::getVar(uint16 var) { } } -void MystScriptParser_Mechanical::toggleVar(uint16 var) { +void Mechanical::toggleVar(uint16 var) { switch(var) { case 0: // Sirrus's Secret Panel State _state.sirrusPanelState ^= 1; @@ -206,7 +206,7 @@ void MystScriptParser_Mechanical::toggleVar(uint16 var) { } } -bool MystScriptParser_Mechanical::setVarValue(uint16 var, uint16 value) { +bool Mechanical::setVarValue(uint16 var, uint16 value) { bool refresh = false; switch (var) { @@ -218,20 +218,20 @@ bool MystScriptParser_Mechanical::setVarValue(uint16 var, uint16 value) { return refresh; } -void MystScriptParser_Mechanical::o_throneEnablePassage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_throneEnablePassage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Enable throne passage", op); _vm->_resources[argv[0]]->setEnabled(getVar(var)); } -void MystScriptParser_Mechanical::o_snakeBoxTrigger(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_snakeBoxTrigger(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Trigger Playing Of Snake Movie", op); // Used on Mechanical Card 6043 (Weapons Rack with Snake Box) _snakeBox->playMovie(); } -void MystScriptParser_Mechanical::o_fortressStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_fortressStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Play Stairs Movement Movie", op); VideoHandle staircase = _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222); @@ -246,7 +246,7 @@ void MystScriptParser_Mechanical::o_fortressStaircaseMovie(uint16 op, uint16 var } -void MystScriptParser_Mechanical::opcode_121(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_121(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); if (argc == 2) { @@ -261,7 +261,7 @@ void MystScriptParser_Mechanical::opcode_121(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::opcode_122(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_122(uint16 op, uint16 var, uint16 argc, uint16 *argv) { if (argc == 0) { // Used on Card 6120 (Elevator) // Called when Exit Midde Button Pressed @@ -271,7 +271,7 @@ void MystScriptParser_Mechanical::opcode_122(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::opcode_123(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_123(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); if (argc == 2) { @@ -288,7 +288,7 @@ void MystScriptParser_Mechanical::opcode_123(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::opcode_124(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_124(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); if (argc == 0) { @@ -300,13 +300,13 @@ void MystScriptParser_Mechanical::opcode_124(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::o_mystStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_mystStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Myst book staircase video", op); _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("sstairs", kMechanicalStack), 199, 108); } -void MystScriptParser_Mechanical::opcode_126(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_126(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); if (argc == 0) { @@ -319,56 +319,56 @@ void MystScriptParser_Mechanical::opcode_126(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::o_crystalEnterYellow(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalEnterYellow(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal enter", op); _crystalLit = 3; _vm->redrawArea(20); } -void MystScriptParser_Mechanical::o_crystalEnterGreen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalEnterGreen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal enter", op); _crystalLit = 1; _vm->redrawArea(21); } -void MystScriptParser_Mechanical::o_crystalEnterRed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalEnterRed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal enter", op); _crystalLit = 2; _vm->redrawArea(22); } -void MystScriptParser_Mechanical::o_crystalLeaveYellow(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalLeaveYellow(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal leave", op); _crystalLit = 0; _vm->redrawArea(20); } -void MystScriptParser_Mechanical::o_crystalLeaveGreen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalLeaveGreen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal leave", op); _crystalLit = 0; _vm->redrawArea(21); } -void MystScriptParser_Mechanical::o_crystalLeaveRed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_crystalLeaveRed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Crystal leave", op); _crystalLit = 0; _vm->redrawArea(22); } -void MystScriptParser_Mechanical::o_throne_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_throne_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne) debugC(kDebugScript, "Opcode %d: Brother throne init", op); _invokingResource->setEnabled(getVar(var)); } -void MystScriptParser_Mechanical::o_fortressStaircase_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_fortressStaircase_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Staircase init", op); _vm->_resources[argv[0]]->setEnabled(!_state.staircaseState); @@ -380,16 +380,16 @@ static struct { bool enabled; } g_opcode202Parameters; -void MystScriptParser_Mechanical::opcode_202_run() { +void Mechanical::opcode_202_run() { // Used for Card 6220 (Sirrus' Mechanical Bird) // TODO: Fill in Function } -void MystScriptParser_Mechanical::opcode_202_disable() { +void Mechanical::opcode_202_disable() { g_opcode202Parameters.enabled = false; } -void MystScriptParser_Mechanical::opcode_202(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_202(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 6220 (Sirrus' Mechanical Bird) if (argc == 0) g_opcode202Parameters.enabled = true; @@ -397,7 +397,7 @@ void MystScriptParser_Mechanical::opcode_202(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::o_snakeBox_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::o_snakeBox_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Snake box init", op); _snakeBox = static_cast(_invokingResource); @@ -408,7 +408,7 @@ static struct { uint16 soundId; } g_opcode204Parameters; -void MystScriptParser_Mechanical::opcode_204_run() { +void Mechanical::opcode_204_run() { if (g_opcode204Parameters.enabled) { // TODO: Fill in Logic. // Var 12 holds Large Cog Position in range 0 to 5 @@ -420,11 +420,11 @@ void MystScriptParser_Mechanical::opcode_204_run() { } } -void MystScriptParser_Mechanical::opcode_204_disable() { +void Mechanical::opcode_204_disable() { g_opcode204Parameters.enabled = false; } -void MystScriptParser_Mechanical::opcode_204(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_204(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 6180 (Lower Elevator Puzzle) @@ -441,17 +441,17 @@ static struct { bool enabled; } g_opcode205Parameters; -void MystScriptParser_Mechanical::opcode_205_run() { +void Mechanical::opcode_205_run() { // Used for Card 6156 (Fortress Rotation Controls) // TODO: Fill in function... // g_opcode205Parameters.soundIdPosition[4] } -void MystScriptParser_Mechanical::opcode_205_disable() { +void Mechanical::opcode_205_disable() { g_opcode205Parameters.enabled = false; } -void MystScriptParser_Mechanical::opcode_205(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_205(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 6156 (Fortress Rotation Controls) @@ -474,7 +474,7 @@ static struct { bool enabled; } g_opcode206Parameters; -void MystScriptParser_Mechanical::opcode_206_run() { +void Mechanical::opcode_206_run() { if (g_opcode206Parameters.enabled) { // Used for Card 6044 (Fortress Rotation Simulator) @@ -485,11 +485,11 @@ void MystScriptParser_Mechanical::opcode_206_run() { } } -void MystScriptParser_Mechanical::opcode_206_disable() { +void Mechanical::opcode_206_disable() { g_opcode206Parameters.enabled = false; } -void MystScriptParser_Mechanical::opcode_206(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_206(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 6044 (Fortress Rotation Simulator) @@ -511,18 +511,18 @@ static struct { bool enabled; } g_opcode209Parameters; -void MystScriptParser_Mechanical::opcode_209_run() { +void Mechanical::opcode_209_run() { // Used for Card 6044 (Fortress Rotation Simulator) // TODO: Implement Function For Secret Panel State as // per Opcode 200 function (Mechanical) } -void MystScriptParser_Mechanical::opcode_209_disable() { +void Mechanical::opcode_209_disable() { g_opcode209Parameters.enabled = false; } -void MystScriptParser_Mechanical::opcode_209(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_209(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 6044 (Fortress Rotation Simulator) @@ -532,7 +532,7 @@ void MystScriptParser_Mechanical::opcode_209(uint16 op, uint16 var, uint16 argc, unknown(op, var, argc, argv); } -void MystScriptParser_Mechanical::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Mechanical::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used in Card 6156 (Fortress Elevator View) varUnusedCheck(op, var); // TODO: Fill in Logic. Clearing Variable for View? diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h index 35cfab068b..7142425eb4 100644 --- a/engines/mohawk/myst_stacks/mechanical.h +++ b/engines/mohawk/myst_stacks/mechanical.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Mechanical : public MystScriptParser { +class Mechanical : public MystScriptParser { public: - MystScriptParser_Mechanical(MohawkEngine_Myst *vm); - ~MystScriptParser_Mechanical(); + Mechanical(MohawkEngine_Myst *vm); + ~Mechanical(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index af4888582e..5f05a8dded 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -39,7 +39,7 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Myst::MystScriptParser_Myst(MohawkEngine_Myst *vm) : +Myst::Myst(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(_vm->_gameState->_myst) { setupOpcodes(); @@ -61,12 +61,12 @@ MystScriptParser_Myst::MystScriptParser_Myst(MohawkEngine_Myst *vm) : _state.treeLastMoveTime = _vm->_system->getMillis(); } -MystScriptParser_Myst::~MystScriptParser_Myst() { +Myst::~Myst() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Myst::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Myst::x, #x)) -void MystScriptParser_Myst::setupOpcodes() { +void Myst::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, NOP); OPCODE(101, o_libraryBookPageTurnLeft); @@ -210,7 +210,7 @@ void MystScriptParser_Myst::setupOpcodes() { #undef OPCODE -void MystScriptParser_Myst::disablePersistentScripts() { +void Myst::disablePersistentScripts() { _libraryBookcaseMoving = false; _generatorControlRoomRunning = false; _libraryCombinationBookPagesTurning = false; @@ -234,7 +234,7 @@ void MystScriptParser_Myst::disablePersistentScripts() { _gullsFlying3 = false; } -void MystScriptParser_Myst::runPersistentScripts() { +void Myst::runPersistentScripts() { if (_towerRotationMapRunning) towerRotationMap_run(); @@ -305,7 +305,7 @@ void MystScriptParser_Myst::runPersistentScripts() { gullsFly3_run(); } -uint16 MystScriptParser_Myst::getVar(uint16 var) { +uint16 Myst::getVar(uint16 var) { switch(var) { case 0: // Myst Library Bookcase Closed return _state.libraryBookcaseDoor; @@ -629,7 +629,7 @@ uint16 MystScriptParser_Myst::getVar(uint16 var) { } } -void MystScriptParser_Myst::toggleVar(uint16 var) { +void Myst::toggleVar(uint16 var) { switch(var) { case 2: // Marker Switch Near Cabin _state.cabinMarkerSwitch = (_state.cabinMarkerSwitch + 1) % 2; @@ -719,7 +719,7 @@ void MystScriptParser_Myst::toggleVar(uint16 var) { } } -bool MystScriptParser_Myst::setVarValue(uint16 var, uint16 value) { +bool Myst::setVarValue(uint16 var, uint16 value) { bool refresh = false; switch (var) { @@ -774,7 +774,7 @@ bool MystScriptParser_Myst::setVarValue(uint16 var, uint16 value) { return refresh; } -uint16 MystScriptParser_Myst::bookCountPages(uint16 var) { +uint16 Myst::bookCountPages(uint16 var) { uint16 pages = 0; uint16 cnt = 0; @@ -807,7 +807,7 @@ uint16 MystScriptParser_Myst::bookCountPages(uint16 var) { return cnt; } -void MystScriptParser_Myst::o_libraryBookPageTurnLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryBookPageTurnLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Turn book page left", op); if (_libraryBookPage - 1 >= 0) { @@ -825,7 +825,7 @@ void MystScriptParser_Myst::o_libraryBookPageTurnLeft(uint16 op, uint16 var, uin } } -void MystScriptParser_Myst::o_libraryBookPageTurnRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryBookPageTurnRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Turn book page right", op); if (_libraryBookPage + 1 < _libraryBookNumPages) { @@ -843,7 +843,7 @@ void MystScriptParser_Myst::o_libraryBookPageTurnRight(uint16 op, uint16 var, ui } } -void MystScriptParser_Myst::o_fireplaceToggleButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_fireplaceToggleButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Myst Card 4162 (Fireplace Grid) debugC(kDebugScript, "Opcode %d: Fireplace grid toggle button", op); @@ -872,7 +872,7 @@ void MystScriptParser_Myst::o_fireplaceToggleButton(uint16 op, uint16 var, uint1 } } -void MystScriptParser_Myst::o_fireplaceRotation(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_fireplaceRotation(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Myst Card 4162 and 4166 (Fireplace Puzzle Rotation Movies) uint16 movieNum = argv[0]; debugC(kDebugScript, "Opcode %d: Play Fireplace Puzzle Rotation Movies", op); @@ -884,7 +884,7 @@ void MystScriptParser_Myst::o_fireplaceRotation(uint16 op, uint16 var, uint16 ar _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("fpin", kMystStack), 167, 4); } -void MystScriptParser_Myst::o_courtyardBoxesCheckSolution(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_courtyardBoxesCheckSolution(uint16 op, uint16 var, uint16 argc, uint16 *argv) { uint16 soundId = argv[0]; debugC(kDebugScript, "Opcode %d: Ship Puzzle Logic", op); @@ -904,7 +904,7 @@ void MystScriptParser_Myst::o_courtyardBoxesCheckSolution(uint16 op, uint16 var, } } -void MystScriptParser_Myst::o_towerRotationStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_towerRotationStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _towerRotationBlinkLabel = false; _towerRotationMapClicked = true; _towerRotationSpeed = 0; @@ -919,7 +919,7 @@ void MystScriptParser_Myst::o_towerRotationStart(uint16 op, uint16 var, uint16 a _vm->_sound->replaceSoundMyst(5378, Audio::Mixer::kMaxChannelVolume, true); } -void MystScriptParser_Myst::o_towerRotationEnd(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_towerRotationEnd(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _towerRotationMapClicked = false; // Set angle value to expected value @@ -947,7 +947,7 @@ void MystScriptParser_Myst::o_towerRotationEnd(uint16 op, uint16 var, uint16 arg _towerRotationBlinkLabelCount = 0; } -void MystScriptParser_Myst::o_imagerChangeSelection(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_imagerChangeSelection(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Dock imager change selection", op); if (_imagerValidationStep != 10) { @@ -973,7 +973,7 @@ void MystScriptParser_Myst::o_imagerChangeSelection(uint16 op, uint16 var, uint1 } } -void MystScriptParser_Myst::o_dockVaultOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_dockVaultOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Myst 4143 (Dock near Marker Switch) uint16 soundId = argv[0]; uint16 delay = argv[1]; @@ -1002,7 +1002,7 @@ void MystScriptParser_Myst::o_dockVaultOpen(uint16 op, uint16 var, uint16 argc, } } -void MystScriptParser_Myst::o_dockVaultClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_dockVaultClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Myst 4143 (Dock near Marker Switch) uint16 soundId = argv[0]; uint16 delay = argv[1]; @@ -1029,7 +1029,7 @@ void MystScriptParser_Myst::o_dockVaultClose(uint16 op, uint16 var, uint16 argc, } } -void MystScriptParser_Myst::o_bookGivePage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_bookGivePage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { uint16 cardIdLose = argv[0]; uint16 cardIdBookCover = argv[1]; uint16 soundIdAddPage = argv[2]; @@ -1116,7 +1116,7 @@ void MystScriptParser_Myst::o_bookGivePage(uint16 op, uint16 var, uint16 argc, u } } -void MystScriptParser_Myst::o_clockWheelsExecute(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockWheelsExecute(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 4006 (Clock Tower Time Controls) uint16 soundId = argv[0]; @@ -1152,7 +1152,7 @@ void MystScriptParser_Myst::o_clockWheelsExecute(uint16 op, uint16 var, uint16 a } } -void MystScriptParser_Myst::o_imagerPlayButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_imagerPlayButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Imager play button", op); uint16 video = getVar(51); @@ -1231,7 +1231,7 @@ void MystScriptParser_Myst::o_imagerPlayButton(uint16 op, uint16 var, uint16 arg _vm->_cursor->showCursor(); } -void MystScriptParser_Myst::o_imagerEraseButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_imagerEraseButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Imager erase button", op); _imagerRedButton = static_cast(_invokingResource->_parent); @@ -1278,7 +1278,7 @@ void MystScriptParser_Myst::o_imagerEraseButton(uint16 op, uint16 var, uint16 ar } } -void MystScriptParser_Myst::imagerValidation_run() { +void Myst::imagerValidation_run() { uint32 time = _vm->_system->getMillis(); if (time > _startTime) { @@ -1306,7 +1306,7 @@ void MystScriptParser_Myst::imagerValidation_run() { } } -void MystScriptParser_Myst::o_towerElevatorAnimation(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_towerElevatorAnimation(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tower elevator animation", op); _treeStopped = true; @@ -1331,7 +1331,7 @@ void MystScriptParser_Myst::o_towerElevatorAnimation(uint16 op, uint16 var, uint _treeStopped = false; } -void MystScriptParser_Myst::o_generatorButtonPressed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_generatorButtonPressed(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator button pressed", op); MystResource *button = _invokingResource->_parent; @@ -1373,13 +1373,13 @@ void MystScriptParser_Myst::o_generatorButtonPressed(uint16 op, uint16 var, uint _state.generatorBreakers = _vm->_rnd->getRandomNumberRng(1, 2); } -void MystScriptParser_Myst::generatorRedrawRocket() { +void Myst::generatorRedrawRocket() { _vm->redrawArea(64); _vm->redrawArea(65); _vm->redrawArea(97); } -void MystScriptParser_Myst::generatorButtonValue(MystResource *button, uint16 &mask, uint16 &value) { +void Myst::generatorButtonValue(MystResource *button, uint16 &mask, uint16 &value) { switch (button->getType8Var()) { case 52: // Generator Switch #1 mask = 1; @@ -1424,7 +1424,7 @@ void MystScriptParser_Myst::generatorButtonValue(MystResource *button, uint16 &m } } -void MystScriptParser_Myst::o_cabinSafeChangeDigit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinSafeChangeDigit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cabin safe change digit", op); uint16 d1 = _state.cabinSafeCombination / 100; @@ -1443,7 +1443,7 @@ void MystScriptParser_Myst::o_cabinSafeChangeDigit(uint16 op, uint16 var, uint16 _vm->redrawArea(var); } -void MystScriptParser_Myst::o_cabinSafeHandleStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinSafeHandleStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cabin safe handle start move", op); // Used on Card 4100 @@ -1453,7 +1453,7 @@ void MystScriptParser_Myst::o_cabinSafeHandleStartMove(uint16 op, uint16 var, ui _tempVar = 0; } -void MystScriptParser_Myst::o_cabinSafeHandleMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinSafeHandleMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cabin safe handle move", op); // Used on Card 4100 @@ -1483,7 +1483,7 @@ void MystScriptParser_Myst::o_cabinSafeHandleMove(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Myst::o_cabinSafeHandleEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinSafeHandleEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cabin safe handle end move", op); // Used on Card 4100 @@ -1492,7 +1492,7 @@ void MystScriptParser_Myst::o_cabinSafeHandleEndMove(uint16 op, uint16 var, uint _vm->checkCursorHints(); } -void MystScriptParser_Myst::o_observatoryMonthChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryMonthChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory month change start", op); _vm->_sound->pauseBackgroundMyst(); @@ -1527,7 +1527,7 @@ void MystScriptParser_Myst::o_observatoryMonthChangeStart(uint16 op, uint16 var, _observatoryMonthChanging = true; } -void MystScriptParser_Myst::observatoryIncrementMonth(int16 increment) { +void Myst::observatoryIncrementMonth(int16 increment) { int16 newMonth = _state.observatoryMonthSetting + increment; if (newMonth >= 0 && newMonth <= 11) { @@ -1546,12 +1546,12 @@ void MystScriptParser_Myst::observatoryIncrementMonth(int16 increment) { _vm->_sound->replaceSoundMyst(8500); } -void MystScriptParser_Myst::observatoryMonthChange_run() { +void Myst::observatoryMonthChange_run() { if (_startTime + 500 < _vm->_system->getMillis()) observatoryIncrementMonth(_observatoryIncrement); } -void MystScriptParser_Myst::o_observatoryDayChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryDayChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory day change start", op); _vm->_sound->pauseBackgroundMyst(); @@ -1586,7 +1586,7 @@ void MystScriptParser_Myst::o_observatoryDayChangeStart(uint16 op, uint16 var, u _observatoryDayChanging = true; } -void MystScriptParser_Myst::observatoryIncrementDay(int16 increment) { +void Myst::observatoryIncrementDay(int16 increment) { int16 newDay = _state.observatoryDaySetting + increment; if (newDay >= 1 && newDay <= 31) { @@ -1606,12 +1606,12 @@ void MystScriptParser_Myst::observatoryIncrementDay(int16 increment) { _vm->_sound->replaceSoundMyst(8500); } -void MystScriptParser_Myst::observatoryDayChange_run() { +void Myst::observatoryDayChange_run() { if (_startTime + 500 < _vm->_system->getMillis()) observatoryIncrementDay(_observatoryIncrement); } -void MystScriptParser_Myst::o_observatoryYearChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryYearChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory year change start", op); _vm->_sound->pauseBackgroundMyst(); @@ -1638,7 +1638,7 @@ void MystScriptParser_Myst::o_observatoryYearChangeStart(uint16 op, uint16 var, _observatoryYearChanging = true; } -void MystScriptParser_Myst::observatoryIncrementYear(int16 increment) { +void Myst::observatoryIncrementYear(int16 increment) { int16 newYear = _state.observatoryYearSetting + increment; if (newYear >= 0 && newYear <= 9999) { @@ -1660,12 +1660,12 @@ void MystScriptParser_Myst::observatoryIncrementYear(int16 increment) { _vm->_sound->replaceSoundMyst(8500); } -void MystScriptParser_Myst::observatoryYearChange_run() { +void Myst::observatoryYearChange_run() { if (_startTime + 500 < _vm->_system->getMillis()) observatoryIncrementYear(_observatoryIncrement); } -void MystScriptParser_Myst::o_observatoryTimeChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryTimeChangeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory time change start", op); _vm->_sound->pauseBackgroundMyst(); @@ -1692,7 +1692,7 @@ void MystScriptParser_Myst::o_observatoryTimeChangeStart(uint16 op, uint16 var, _observatoryTimeChanging = true; } -void MystScriptParser_Myst::observatoryIncrementTime(int16 increment) { +void Myst::observatoryIncrementTime(int16 increment) { int16 newTime = _state.observatoryTimeSetting + increment; if (newTime >= 0 && newTime <= 1439) { @@ -1719,12 +1719,12 @@ void MystScriptParser_Myst::observatoryIncrementTime(int16 increment) { _vm->_sound->replaceSoundMyst(8500); } -void MystScriptParser_Myst::observatoryTimeChange_run() { +void Myst::observatoryTimeChange_run() { if (_startTime + 500 < _vm->_system->getMillis()) observatoryIncrementTime(_observatoryIncrement); } -void MystScriptParser_Myst::o_observatoryGoButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryGoButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory go button", op); // Setting not at target @@ -1758,31 +1758,31 @@ void MystScriptParser_Myst::o_observatoryGoButton(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Myst::o_observatoryMonthSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryMonthSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Month slider move", op); observatoryUpdateMonth(); } -void MystScriptParser_Myst::o_observatoryDaySliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryDaySliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Day slider move", op); observatoryUpdateDay(); } -void MystScriptParser_Myst::o_observatoryYearSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryYearSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Year slider move", op); observatoryUpdateYear(); } -void MystScriptParser_Myst::o_observatoryTimeSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryTimeSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Time slider move", op); observatoryUpdateTime(); } -void MystScriptParser_Myst::o_circuitBreakerStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_circuitBreakerStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Circuit breaker start move", op); MystResourceType12 *breaker = static_cast(_invokingResource); @@ -1791,7 +1791,7 @@ void MystScriptParser_Myst::o_circuitBreakerStartMove(uint16 op, uint16 var, uin _tempVar = 0; } -void MystScriptParser_Myst::o_circuitBreakerMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_circuitBreakerMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Circuit breaker move", op); MystResourceType12 *breaker = static_cast(_invokingResource); @@ -1842,7 +1842,7 @@ void MystScriptParser_Myst::o_circuitBreakerMove(uint16 op, uint16 var, uint16 a } } -void MystScriptParser_Myst::o_circuitBreakerEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_circuitBreakerEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Circuit breaker end move", op); MystResourceType12 *breaker = static_cast(_invokingResource); @@ -1850,7 +1850,7 @@ void MystScriptParser_Myst::o_circuitBreakerEndMove(uint16 op, uint16 var, uint1 _vm->checkCursorHints(); } -void MystScriptParser_Myst::o_boilerIncreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_boilerIncreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Boiler increase pressure start", op); _treeStopped = true; @@ -1860,7 +1860,7 @@ void MystScriptParser_Myst::o_boilerIncreasePressureStart(uint16 op, uint16 var, _boilerPressureIncreasing = true; } -void MystScriptParser_Myst::o_boilerLightPilot(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_boilerLightPilot(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Boiler light pilot", op); // Match is lit @@ -1881,7 +1881,7 @@ void MystScriptParser_Myst::o_boilerLightPilot(uint16 op, uint16 var, uint16 arg } } -void MystScriptParser_Myst::o_boilerIncreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_boilerIncreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Boiler increase pressure stop", op); _treeStopped = false; @@ -1897,7 +1897,7 @@ void MystScriptParser_Myst::o_boilerIncreasePressureStop(uint16 op, uint16 var, _vm->_sound->replaceBackgroundMyst(4098, _state.cabinValvePosition << 10); } -void MystScriptParser_Myst::boilerPressureIncrease_run() { +void Myst::boilerPressureIncrease_run() { // Allow increasing pressure if sound has stopped if (!_vm->_sound->isPlaying(5098) && _state.cabinValvePosition < 25) { _state.cabinValvePosition++; @@ -1921,7 +1921,7 @@ void MystScriptParser_Myst::boilerPressureIncrease_run() { } } -void MystScriptParser_Myst::boilerPressureDecrease_run() { +void Myst::boilerPressureDecrease_run() { // Allow decreasing pressure if sound has stopped if (!_vm->_sound->isPlaying(5098) && _state.cabinValvePosition > 0) { _state.cabinValvePosition--; @@ -1940,7 +1940,7 @@ void MystScriptParser_Myst::boilerPressureDecrease_run() { } } -void MystScriptParser_Myst::o_boilerDecreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_boilerDecreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Boiler decrease pressure start", op); _treeStopped = true; @@ -1949,7 +1949,7 @@ void MystScriptParser_Myst::o_boilerDecreasePressureStart(uint16 op, uint16 var, _boilerPressureDecreasing = true; } -void MystScriptParser_Myst::o_boilerDecreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_boilerDecreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Boiler decrease pressure stop", op); _treeStopped = false; @@ -1967,14 +1967,14 @@ void MystScriptParser_Myst::o_boilerDecreasePressureStop(uint16 op, uint16 var, } } -void MystScriptParser_Myst::o_basementIncreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_basementIncreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Basement increase pressure start", op); _treeStopped = true; _basementPressureIncreasing = true; } -void MystScriptParser_Myst::o_basementIncreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_basementIncreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Basement increase pressure stop", op); _treeStopped = false; @@ -1982,7 +1982,7 @@ void MystScriptParser_Myst::o_basementIncreasePressureStop(uint16 op, uint16 var _state.treeLastMoveTime = _vm->_system->getMillis(); } -void MystScriptParser_Myst::basementPressureIncrease_run() { +void Myst::basementPressureIncrease_run() { // Allow increasing pressure if sound has stopped if (!_vm->_sound->isPlaying(4642) && _state.cabinValvePosition < 25) { _state.cabinValvePosition++; @@ -1995,7 +1995,7 @@ void MystScriptParser_Myst::basementPressureIncrease_run() { } } -void MystScriptParser_Myst::basementPressureDecrease_run() { +void Myst::basementPressureDecrease_run() { // Allow decreasing pressure if sound has stopped if (!_vm->_sound->isPlaying(4642) && _state.cabinValvePosition > 0) { _state.cabinValvePosition--; @@ -2008,14 +2008,14 @@ void MystScriptParser_Myst::basementPressureDecrease_run() { } } -void MystScriptParser_Myst::o_basementDecreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_basementDecreasePressureStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Basement decrease pressure start", op); _treeStopped = true; _basementPressureDecreasing = true; } -void MystScriptParser_Myst::o_basementDecreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_basementDecreasePressureStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Basement decrease pressure stop", op); _treeStopped = false; @@ -2023,7 +2023,7 @@ void MystScriptParser_Myst::o_basementDecreasePressureStop(uint16 op, uint16 var _state.treeLastMoveTime = _vm->_system->getMillis(); } -void MystScriptParser_Myst::tree_run() { +void Myst::tree_run() { uint16 pressure; if (_state.cabinPilotLightLit) pressure = _state.cabinValvePosition; @@ -2072,7 +2072,7 @@ void MystScriptParser_Myst::tree_run() { } } -void MystScriptParser_Myst::treeSetAlcoveAccessible() { +void Myst::treeSetAlcoveAccessible() { if (_treeAlcove) { // Make alcove accessible if the tree is in the correct position _treeAlcove->setEnabled(_state.treePosition >= _treeMinAccessiblePosition @@ -2080,14 +2080,14 @@ void MystScriptParser_Myst::treeSetAlcoveAccessible() { } } -uint32 MystScriptParser_Myst::treeNextMoveDelay(uint16 pressure) { +uint32 Myst::treeNextMoveDelay(uint16 pressure) { if (pressure >= 12) return 25000 * (13 - (pressure - 12)) / 12 + 3000; else return 25000 * pressure / 13 + 3000; } -void MystScriptParser_Myst::o_rocketSoundSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketSoundSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket slider start move", op); _rocketSliderSound = 0; @@ -2096,13 +2096,13 @@ void MystScriptParser_Myst::o_rocketSoundSliderStartMove(uint16 op, uint16 var, rocketSliderMove(); } -void MystScriptParser_Myst::o_rocketSoundSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketSoundSliderMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket slider move", op); rocketSliderMove(); } -void MystScriptParser_Myst::o_rocketSoundSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketSoundSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket slider end move", op); _vm->checkCursorHints(); @@ -2124,7 +2124,7 @@ void MystScriptParser_Myst::o_rocketSoundSliderEndMove(uint16 op, uint16 var, ui _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Myst::rocketSliderMove() { +void Myst::rocketSliderMove() { MystResourceType10 *slider = static_cast(_invokingResource); if (_state.generatorVoltage == 59 && !_state.generatorBreakers) { @@ -2136,11 +2136,11 @@ void MystScriptParser_Myst::rocketSliderMove() { } } -uint16 MystScriptParser_Myst::rocketSliderGetSound(uint16 pos) { +uint16 Myst::rocketSliderGetSound(uint16 pos) { return (uint16)(9530 + (pos - 216) * 35.0 * 0.01639344262295082); } -void MystScriptParser_Myst::rocketCheckSolution() { +void Myst::rocketCheckSolution() { _vm->_cursor->hideCursor(); uint16 soundId; @@ -2210,7 +2210,7 @@ void MystScriptParser_Myst::rocketCheckSolution() { _vm->_cursor->showCursor(); } -void MystScriptParser_Myst::o_rocketPianoStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketPianoStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket piano start move", op); MystResourceType11 *key = static_cast(_invokingResource); @@ -2233,7 +2233,7 @@ void MystScriptParser_Myst::o_rocketPianoStart(uint16 op, uint16 var, uint16 arg } } -void MystScriptParser_Myst::o_rocketPianoMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketPianoMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket piano move", op); const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); @@ -2279,7 +2279,7 @@ void MystScriptParser_Myst::o_rocketPianoMove(uint16 op, uint16 var, uint16 argc _vm->_system->updateScreen(); } -void MystScriptParser_Myst::o_rocketPianoStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketPianoStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket piano end move", op); MystResourceType8 *key = static_cast(_invokingResource); @@ -2297,7 +2297,7 @@ void MystScriptParser_Myst::o_rocketPianoStop(uint16 op, uint16 var, uint16 argc _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Myst::o_rocketLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket lever start move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -2307,7 +2307,7 @@ void MystScriptParser_Myst::o_rocketLeverStartMove(uint16 op, uint16 var, uint16 lever->drawFrame(0); } -void MystScriptParser_Myst::o_rocketOpenBook(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketOpenBook(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket open link book", op); // Flyby movie @@ -2317,7 +2317,7 @@ void MystScriptParser_Myst::o_rocketOpenBook(uint16 op, uint16 var, uint16 argc, _tempVar = 2; } -void MystScriptParser_Myst::o_rocketLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket lever move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -2346,7 +2346,7 @@ void MystScriptParser_Myst::o_rocketLeverMove(uint16 op, uint16 var, uint16 argc _rocketLeverPosition = step; } -void MystScriptParser_Myst::o_rocketLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket lever end move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -2356,7 +2356,7 @@ void MystScriptParser_Myst::o_rocketLeverEndMove(uint16 op, uint16 var, uint16 a lever->drawFrame(0); } -void MystScriptParser_Myst::o_cabinLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Leave cabin", op); // If match is lit, put out @@ -2368,7 +2368,7 @@ void MystScriptParser_Myst::o_cabinLeave(uint16 op, uint16 var, uint16 argc, uin } } -void MystScriptParser_Myst::o_treePressureReleaseStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treePressureReleaseStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tree pressure release start", op); Common::Rect src = Common::Rect(0, 0, 49, 86); @@ -2385,7 +2385,7 @@ void MystScriptParser_Myst::o_treePressureReleaseStart(uint16 op, uint16 var, ui } } -void MystScriptParser_Myst::o_treePressureReleaseStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treePressureReleaseStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tree pressure release stop", op); Common::Rect rect = Common::Rect(78, 46, 127, 132); @@ -2396,7 +2396,7 @@ void MystScriptParser_Myst::o_treePressureReleaseStop(uint16 op, uint16 var, uin _treeMinPosition = 0; } -void MystScriptParser_Myst::o_observatoryMonthSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryMonthSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Month slider start move", op); _vm->_cursor->setCursor(700); @@ -2405,7 +2405,7 @@ void MystScriptParser_Myst::o_observatoryMonthSliderStartMove(uint16 op, uint16 observatoryUpdateMonth(); } -void MystScriptParser_Myst::o_observatoryMonthSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryMonthSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Month slider end move", op); _vm->checkCursorHints(); @@ -2414,7 +2414,7 @@ void MystScriptParser_Myst::o_observatoryMonthSliderEndMove(uint16 op, uint16 va observatoryUpdateMonth(); } -void MystScriptParser_Myst::observatoryUpdateMonth() { +void Myst::observatoryUpdateMonth() { int16 month = (_observatoryMonthSlider->_pos.y - 94) / 8; if (month != _state.observatoryMonthSetting) { @@ -2427,7 +2427,7 @@ void MystScriptParser_Myst::observatoryUpdateMonth() { } } -void MystScriptParser_Myst::o_observatoryDaySliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryDaySliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Day slider start move", op); _vm->_cursor->setCursor(700); @@ -2436,7 +2436,7 @@ void MystScriptParser_Myst::o_observatoryDaySliderStartMove(uint16 op, uint16 va observatoryUpdateDay(); } -void MystScriptParser_Myst::o_observatoryDaySliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryDaySliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Day slider end move", op); _vm->checkCursorHints(); @@ -2445,7 +2445,7 @@ void MystScriptParser_Myst::o_observatoryDaySliderEndMove(uint16 op, uint16 var, observatoryUpdateDay(); } -void MystScriptParser_Myst::observatoryUpdateDay() { +void Myst::observatoryUpdateDay() { int16 day = (_observatoryDaySlider->_pos.y - 94) * 30 / 94 + 1; if (day != _state.observatoryDaySetting) { @@ -2459,7 +2459,7 @@ void MystScriptParser_Myst::observatoryUpdateDay() { } } -void MystScriptParser_Myst::o_observatoryYearSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryYearSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Year slider start move", op); _vm->_cursor->setCursor(700); @@ -2468,7 +2468,7 @@ void MystScriptParser_Myst::o_observatoryYearSliderStartMove(uint16 op, uint16 v observatoryUpdateYear(); } -void MystScriptParser_Myst::o_observatoryYearSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryYearSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Year slider end move", op); _vm->checkCursorHints(); @@ -2477,7 +2477,7 @@ void MystScriptParser_Myst::o_observatoryYearSliderEndMove(uint16 op, uint16 var observatoryUpdateYear(); } -void MystScriptParser_Myst::observatoryUpdateYear() { +void Myst::observatoryUpdateYear() { int16 year = (_observatoryYearSlider->_pos.y - 94) * 9999 / 94; if (year != _state.observatoryYearSetting) { @@ -2493,7 +2493,7 @@ void MystScriptParser_Myst::observatoryUpdateYear() { } } -void MystScriptParser_Myst::o_observatoryTimeSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryTimeSliderStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Time slider start move", op); _vm->_cursor->setCursor(700); @@ -2502,7 +2502,7 @@ void MystScriptParser_Myst::o_observatoryTimeSliderStartMove(uint16 op, uint16 v observatoryUpdateTime(); } -void MystScriptParser_Myst::o_observatoryTimeSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryTimeSliderEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Time slider end move", op); _vm->checkCursorHints(); @@ -2511,7 +2511,7 @@ void MystScriptParser_Myst::o_observatoryTimeSliderEndMove(uint16 op, uint16 var observatoryUpdateTime(); } -void MystScriptParser_Myst::observatoryUpdateTime() { +void Myst::observatoryUpdateTime() { int16 time = (_observatoryTimeSlider->_pos.y - 94) * 1439 / 94; if (time != _state.observatoryTimeSetting) { @@ -2531,12 +2531,12 @@ void MystScriptParser_Myst::observatoryUpdateTime() { } } -void MystScriptParser_Myst::o_libraryCombinationBookStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryCombinationBookStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Combination book stop turning pages", op); _libraryCombinationBookPagesTurning = false; } -void MystScriptParser_Myst::o_cabinMatchLight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_cabinMatchLight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { if (!_cabinMatchState) { _vm->_sound->replaceSoundMyst(4103); @@ -2551,7 +2551,7 @@ void MystScriptParser_Myst::o_cabinMatchLight(uint16 op, uint16 var, uint16 argc } } -void MystScriptParser_Myst::matchBurn_run() { +void Myst::matchBurn_run() { uint32 time = _vm->_system->getMillis(); if (time > _matchGoOutTime) { @@ -2575,41 +2575,41 @@ void MystScriptParser_Myst::matchBurn_run() { } } -void MystScriptParser_Myst::o_courtyardBoxEnter(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_courtyardBoxEnter(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Mouse enters courtyard box", op); _tempVar = 1; _vm->_sound->playSound(_courtyardBoxSound); _vm->redrawArea(var); } -void MystScriptParser_Myst::o_courtyardBoxLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_courtyardBoxLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Mouse leaves courtyard box", op); _tempVar = 0; _vm->redrawArea(var); } -void MystScriptParser_Myst::o_clockMinuteWheelStartTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockMinuteWheelStartTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 4006 debugC(kDebugScript, "Opcode %d: Minute wheel start turn", op); clockWheelStartTurn(2); } -void MystScriptParser_Myst::o_clockWheelEndTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockWheelEndTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 4006 debugC(kDebugScript, "Opcode %d: Wheel end turn", op); _clockTurningWheel = 0; } -void MystScriptParser_Myst::o_clockHourWheelStartTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockHourWheelStartTurn(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Card 4006 debugC(kDebugScript, "Opcode %d: Hour wheel start turn", op); clockWheelStartTurn(1); } -void MystScriptParser_Myst::clockWheel_run() { +void Myst::clockWheel_run() { // Turn wheel one step each second uint32 time = _vm->_system->getMillis(); @@ -2625,7 +2625,7 @@ void MystScriptParser_Myst::clockWheel_run() { } } -void MystScriptParser_Myst::clockWheelStartTurn(uint16 wheel) { +void Myst::clockWheelStartTurn(uint16 wheel) { MystResourceType11 *resource = static_cast(_invokingResource); uint16 soundId = resource->getList1(0); @@ -2645,7 +2645,7 @@ void MystScriptParser_Myst::clockWheelStartTurn(uint16 wheel) { _startTime = _vm->_system->getMillis(); } -void MystScriptParser_Myst::clockWheelTurn(uint16 var) { +void Myst::clockWheelTurn(uint16 var) { if (var == 38) { // Hours _state.clockTowerHourPosition = (_state.clockTowerHourPosition + 1) % 12; @@ -2655,7 +2655,7 @@ void MystScriptParser_Myst::clockWheelTurn(uint16 var) { } } -void MystScriptParser_Myst::o_libraryCombinationBookStartRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryCombinationBookStartRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Combination book start turning pages right", op); _tempVar = 0; @@ -2664,7 +2664,7 @@ void MystScriptParser_Myst::o_libraryCombinationBookStartRight(uint16 op, uint16 _libraryCombinationBookPagesTurning = true; } -void MystScriptParser_Myst::o_libraryCombinationBookStartLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryCombinationBookStartLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Combination book start turning pages left", op); _tempVar = 0; @@ -2673,7 +2673,7 @@ void MystScriptParser_Myst::o_libraryCombinationBookStartLeft(uint16 op, uint16 _libraryCombinationBookPagesTurning = true; } -void MystScriptParser_Myst::libraryCombinationBookTurnLeft() { +void Myst::libraryCombinationBookTurnLeft() { // Turn page left if (_libraryBookPage - 1 >= 0) { _tempVar--; @@ -2699,7 +2699,7 @@ void MystScriptParser_Myst::libraryCombinationBookTurnLeft() { } } -void MystScriptParser_Myst::libraryCombinationBookTurnRight() { +void Myst::libraryCombinationBookTurnRight() { // Turn page right if (_libraryBookPage + 1 < _libraryBookNumPages) { _tempVar++; @@ -2725,7 +2725,7 @@ void MystScriptParser_Myst::libraryCombinationBookTurnRight() { } } -void MystScriptParser_Myst::libraryCombinationBook_run() { +void Myst::libraryCombinationBook_run() { uint32 time = _vm->_system->getMillis(); if (time >= _startTime + 500) { if (_tempVar > 0) { @@ -2738,7 +2738,7 @@ void MystScriptParser_Myst::libraryCombinationBook_run() { } } -void MystScriptParser_Myst::o_observatoryChangeSettingStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatoryChangeSettingStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Observatory change setting stop", op); // Stop persistent scripts @@ -2757,7 +2757,7 @@ void MystScriptParser_Myst::o_observatoryChangeSettingStop(uint16 op, uint16 var _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Myst::o_dockVaultForceClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_dockVaultForceClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Myst 4143 (Dock near Marker Switch) uint16 soundId = argv[0]; uint16 delay = argv[1]; @@ -2781,12 +2781,12 @@ void MystScriptParser_Myst::o_dockVaultForceClose(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Myst::o_imagerEraseStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_imagerEraseStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Imager stop erase", op); _imagerValidationRunning = false; } -void MystScriptParser_Myst::o_clockLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock lever start move", op); MystResourceType12 *lever = static_cast(_invokingResource); lever->drawFrame(0); @@ -2795,7 +2795,7 @@ void MystScriptParser_Myst::o_clockLeverStartMove(uint16 op, uint16 var, uint16 _clockLeverPulled = false; } -void MystScriptParser_Myst::o_clockLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock left lever move", op); if (!_clockLeverPulled) { @@ -2821,7 +2821,7 @@ void MystScriptParser_Myst::o_clockLeverMove(uint16 op, uint16 var, uint16 argc, } } -void MystScriptParser_Myst::clockGearForwardOneStep(uint16 gear) { +void Myst::clockGearForwardOneStep(uint16 gear) { static const uint16 startTime[] = { 0, 324, 618 }; static const uint16 endTime[] = { 324, 618, 950 }; static const char *videos[] = { "cl1wg1", "cl1wg2", "cl1wg3" }; @@ -2839,7 +2839,7 @@ void MystScriptParser_Myst::clockGearForwardOneStep(uint16 gear) { Audio::Timestamp(0, endTime[gearPosition], 600)); } -void MystScriptParser_Myst::clockWeightDownOneStep() { +void Myst::clockWeightDownOneStep() { // Set video bounds _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0); _vm->_video->setVideoBounds(_clockWeightVideo, @@ -2850,7 +2850,7 @@ void MystScriptParser_Myst::clockWeightDownOneStep() { _clockWeightPosition += 246; } -void MystScriptParser_Myst::clockGears_run() { +void Myst::clockGears_run() { if (!_vm->_video->isVideoPlaying() && _clockWeightPosition < 2214) { _clockMiddleGearMovedAlone = true; _vm->_sound->replaceSoundMyst(5113); @@ -2859,7 +2859,7 @@ void MystScriptParser_Myst::clockGears_run() { } } -void MystScriptParser_Myst::o_clockLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock lever end move", op); static const char *videos[] = { "cl1wg1", "cl1wg2", "cl1wg3", "cl1wlfch" }; @@ -2886,7 +2886,7 @@ void MystScriptParser_Myst::o_clockLeverEndMove(uint16 op, uint16 var, uint16 ar _vm->_cursor->showCursor(); } -void MystScriptParser_Myst::clockGearsCheckSolution() { +void Myst::clockGearsCheckSolution() { if (_clockGearsPositions[0] == 2 && _clockGearsPositions[1] == 2 && _clockGearsPositions[2] == 1 @@ -2914,7 +2914,7 @@ void MystScriptParser_Myst::clockGearsCheckSolution() { } } -void MystScriptParser_Myst::o_clockResetLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockResetLeverStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock reset lever start move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -2922,7 +2922,7 @@ void MystScriptParser_Myst::o_clockResetLeverStartMove(uint16 op, uint16 var, ui _vm->_cursor->setCursor(700); } -void MystScriptParser_Myst::o_clockResetLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockResetLeverMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock reset lever move", op); MystResourceType12 *lever = static_cast(_invokingResource); @@ -2932,7 +2932,7 @@ void MystScriptParser_Myst::o_clockResetLeverMove(uint16 op, uint16 var, uint16 clockReset(); } -void MystScriptParser_Myst::clockReset() { +void Myst::clockReset() { static const char *videos[] = { "cl1wg1", "cl1wg2", "cl1wg3", "cl1wlfch" }; _vm->_cursor->hideCursor(); @@ -2970,7 +2970,7 @@ void MystScriptParser_Myst::clockReset() { _vm->_cursor->showCursor(); } -void MystScriptParser_Myst::clockResetWeight() { +void Myst::clockResetWeight() { // Set video bounds, weight going up if (!(_vm->getFeatures() & GF_ME)) { _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0); @@ -2986,7 +2986,7 @@ void MystScriptParser_Myst::clockResetWeight() { _clockWeightPosition = 0; } -void MystScriptParser_Myst::clockResetGear(uint16 gear) { +void Myst::clockResetGear(uint16 gear) { static const uint16 time[] = { 324, 618, 950 }; static const char *videos[] = { "cl1wg1", "cl1wg2", "cl1wg3" }; static const uint16 x[] = { 224, 224, 224 }; @@ -3005,7 +3005,7 @@ void MystScriptParser_Myst::clockResetGear(uint16 gear) { _clockGearsPositions[gear] = 3; } -void MystScriptParser_Myst::o_clockResetLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockResetLeverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Clock reset lever end move", op); // Get current lever frame @@ -3016,7 +3016,7 @@ void MystScriptParser_Myst::o_clockResetLeverEndMove(uint16 op, uint16 var, uint _vm->checkCursorHints(); } -void MystScriptParser_Myst::o_libraryBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _libraryBookPage = 0; _libraryBookNumPages = argv[0]; _libraryBookBaseImage = argv[1]; @@ -3024,13 +3024,13 @@ void MystScriptParser_Myst::o_libraryBook_init(uint16 op, uint16 var, uint16 arg _libraryBookSound2 = argv[3]; } -void MystScriptParser_Myst::o_courtyardBox_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_courtyardBox_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Courtyard box init", op); _courtyardBoxSound = argv[0]; } -void MystScriptParser_Myst::towerRotationMap_run() { +void Myst::towerRotationMap_run() { if (!_towerRotationMapInitialized) { _towerRotationMapInitialized = true; _vm->_sound->replaceSoundMyst(4378); @@ -3071,7 +3071,7 @@ void MystScriptParser_Myst::towerRotationMap_run() { } } -void MystScriptParser_Myst::o_towerRotationMap_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_towerRotationMap_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _towerRotationMapRunning = true; _towerRotationMapTower = static_cast(_invokingResource); _towerRotationMapLabel = static_cast(_vm->_resources[argv[0]]); @@ -3080,7 +3080,7 @@ void MystScriptParser_Myst::o_towerRotationMap_init(uint16 op, uint16 var, uint1 _towerRotationMapClicked = false; } -void MystScriptParser_Myst::towerRotationDrawBuildings() { +void Myst::towerRotationDrawBuildings() { // Draw library _vm->redrawArea(304, false); @@ -3091,7 +3091,7 @@ void MystScriptParser_Myst::towerRotationDrawBuildings() { } } -uint16 MystScriptParser_Myst::towerRotationMapComputeAngle() { +uint16 Myst::towerRotationMapComputeAngle() { _towerRotationSpeed++; if (_towerRotationSpeed >= 7) _towerRotationSpeed = 7; @@ -3127,7 +3127,7 @@ uint16 MystScriptParser_Myst::towerRotationMapComputeAngle() { return angle; } -Common::Point MystScriptParser_Myst::towerRotationMapComputeCoords(const Common::Point ¢er, uint16 angle) { +Common::Point Myst::towerRotationMapComputeCoords(const Common::Point ¢er, uint16 angle) { Common::Point end; // Polar to rect coords @@ -3138,7 +3138,7 @@ Common::Point MystScriptParser_Myst::towerRotationMapComputeCoords(const Common: return end; } -void MystScriptParser_Myst::towerRotationMapDrawLine(const Common::Point ¢er, const Common::Point &end) { +void Myst::towerRotationMapDrawLine(const Common::Point ¢er, const Common::Point &end) { Graphics::PixelFormat pf = _vm->_system->getScreenFormat(); uint32 color = 0; @@ -3173,27 +3173,27 @@ void MystScriptParser_Myst::towerRotationMapDrawLine(const Common::Point ¢er _vm->_system->updateScreen(); } -void MystScriptParser_Myst::towerRotationMapRotate() { +void Myst::towerRotationMapRotate() { const Common::Point center = Common::Point(383, 124); uint16 angle = towerRotationMapComputeAngle(); Common::Point end = towerRotationMapComputeCoords(center, angle); towerRotationMapDrawLine(center, end); } -void MystScriptParser_Myst::o_forechamberDoor_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_forechamberDoor_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 4138 (Dock Forechamber Door) // Set forechamber door to closed _tempVar = 0; } -void MystScriptParser_Myst::o_shipAccess_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_shipAccess_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Enable acces to the ship if (_state.shipFloating) { _invokingResource->setEnabled(true); } } -void MystScriptParser_Myst::o_butterflies_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_butterflies_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Butterflies movie init", op); // Used for Card 4256 (Butterfly Movie Activation) @@ -3205,7 +3205,7 @@ void MystScriptParser_Myst::o_butterflies_init(uint16 op, uint16 var, uint16 arg } } -void MystScriptParser_Myst::o_imager_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_imager_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Imager init", op); debugC(kDebugScript, "Var: %d", var); @@ -3214,7 +3214,7 @@ void MystScriptParser_Myst::o_imager_init(uint16 op, uint16 var, uint16 argc, ui _imagerRunning = true; } -void MystScriptParser_Myst::imager_run() { +void Myst::imager_run() { _imagerRunning = false; if (_state.imagerActive && _state.imagerSelection == 67) { @@ -3224,7 +3224,7 @@ void MystScriptParser_Myst::imager_run() { } } -void MystScriptParser_Myst::libraryBookcaseTransform_run(void) { +void Myst::libraryBookcaseTransform_run(void) { if (_libraryBookcaseChanged) { _libraryBookcaseChanged = false; _libraryBookcaseMoving = false; @@ -3251,7 +3251,7 @@ void MystScriptParser_Myst::libraryBookcaseTransform_run(void) { } } -void MystScriptParser_Myst::o_libraryBookcaseTransform_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_libraryBookcaseTransform_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { if (_libraryBookcaseChanged) { MystResourceType7 *resource = static_cast(_invokingResource); _libraryBookcaseMovie = static_cast(resource->getSubResource(getVar(0))); @@ -3260,7 +3260,7 @@ void MystScriptParser_Myst::o_libraryBookcaseTransform_init(uint16 op, uint16 va } } -void MystScriptParser_Myst::generatorControlRoom_run(void) { +void Myst::generatorControlRoom_run(void) { if (_generatorVoltage == _state.generatorVoltage) { generatorRedrawRocket(); } else { @@ -3277,14 +3277,14 @@ void MystScriptParser_Myst::generatorControlRoom_run(void) { } } -void MystScriptParser_Myst::o_generatorControlRoom_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_generatorControlRoom_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator control room init", op); _generatorVoltage = _state.generatorVoltage; _generatorControlRoomRunning = true; } -void MystScriptParser_Myst::o_fireplace_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_fireplace_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Fireplace grid init", op); // Clear fireplace grid @@ -3292,7 +3292,7 @@ void MystScriptParser_Myst::o_fireplace_init(uint16 op, uint16 var, uint16 argc, _fireplaceLines[i] = 0; } -void MystScriptParser_Myst::o_clockGears_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_clockGears_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 4113 (Clock Tower Cog Puzzle) debugC(kDebugScript, "Opcode %d: Gears puzzle init", op); @@ -3310,7 +3310,7 @@ void MystScriptParser_Myst::o_clockGears_init(uint16 op, uint16 var, uint16 argc } } -void MystScriptParser_Myst::o_gulls1_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_gulls1_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Gulls init", op); if (!_state.shipFloating) { @@ -3319,7 +3319,7 @@ void MystScriptParser_Myst::o_gulls1_init(uint16 op, uint16 var, uint16 argc, ui } } -void MystScriptParser_Myst::gullsFly1_run() { +void Myst::gullsFly1_run() { static const char* gulls[] = { "birds1", "birds2", "birds3" }; uint32 time = _vm->_system->getMillis(); @@ -3339,7 +3339,7 @@ void MystScriptParser_Myst::gullsFly1_run() { } } -void MystScriptParser_Myst::o_observatory_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_observatory_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Stellar observatory init", op); _tempVar = 0; @@ -3369,13 +3369,13 @@ void MystScriptParser_Myst::o_observatory_init(uint16 op, uint16 var, uint16 arg _observatoryRunning = true; } -bool MystScriptParser_Myst::observatoryIsDDMMYYYY2400() { +bool Myst::observatoryIsDDMMYYYY2400() { // TODO: Auto-detect based on the month rect position return !(_vm->getFeatures() & GF_ME) && (_vm->getLanguage() == Common::FR_FRA || _vm->getLanguage() == Common::DE_DEU); } -void MystScriptParser_Myst::observatoryUpdateVisualizer(uint16 x, uint16 y) { +void Myst::observatoryUpdateVisualizer(uint16 x, uint16 y) { Common::Rect &visu0 = _observatoryVisualizer->_subImages[0].rect; Common::Rect &visu1 = _observatoryVisualizer->_subImages[1].rect; @@ -3390,7 +3390,7 @@ void MystScriptParser_Myst::observatoryUpdateVisualizer(uint16 x, uint16 y) { visu1.bottom = visu0.bottom; } -void MystScriptParser_Myst::observatorySetTargetToSetting() { +void Myst::observatorySetTargetToSetting() { uint32 visuX = _state.observatoryTimeSetting * 7 / 25; uint32 visuY = 250 * _state.observatoryYearSetting + 65 * (_state.observatoryMonthSetting + 1) @@ -3404,7 +3404,7 @@ void MystScriptParser_Myst::observatorySetTargetToSetting() { _state.observatoryTimeTarget = _state.observatoryTimeSetting; } -void MystScriptParser_Myst::observatory_run() { +void Myst::observatory_run() { if (_observatoryNotInitialized) { _observatoryNotInitialized = false; @@ -3462,7 +3462,7 @@ void MystScriptParser_Myst::observatory_run() { } } -void MystScriptParser_Myst::o_gulls2_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_gulls2_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Gulls init", op); if (!_state.shipFloating) { @@ -3471,7 +3471,7 @@ void MystScriptParser_Myst::o_gulls2_init(uint16 op, uint16 var, uint16 argc, ui } } -void MystScriptParser_Myst::gullsFly2_run() { +void Myst::gullsFly2_run() { static const char* gulls[] = { "birds1", "birds2", "birds3" }; uint32 time = _vm->_system->getMillis(); @@ -3485,13 +3485,13 @@ void MystScriptParser_Myst::gullsFly2_run() { } } -void MystScriptParser_Myst::o_treeCard_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treeCard_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Enter tree card", op); _tree = static_cast(_invokingResource); } -void MystScriptParser_Myst::o_treeEntry_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treeEntry_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Enter tree card with entry", op); _treeAlcove = static_cast(_invokingResource); @@ -3501,7 +3501,7 @@ void MystScriptParser_Myst::o_treeEntry_init(uint16 op, uint16 var, uint16 argc, treeSetAlcoveAccessible(); } -void MystScriptParser_Myst::opcode_218(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::opcode_218(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 4097 (Cabin Boiler) @@ -3519,7 +3519,7 @@ void MystScriptParser_Myst::opcode_218(uint16 op, uint16 var, uint16 argc, uint1 } } -void MystScriptParser_Myst::o_rocketSliders_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketSliders_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket sliders init", op); _rocketSlider1 = static_cast(_vm->_resources[argv[0]]); @@ -3540,12 +3540,12 @@ void MystScriptParser_Myst::o_rocketSliders_init(uint16 op, uint16 var, uint16 a _rocketSlider5->setPosition(_state.rocketSliderPosition[4]); } -void MystScriptParser_Myst::o_rocketLinkVideo_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_rocketLinkVideo_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Rocket link video init", op); _tempVar = 0; } -void MystScriptParser_Myst::o_greenBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_greenBook_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 4168 (Green Book Movies) debugC(kDebugScript, "Opcode %d: Green book init", op); @@ -3553,7 +3553,7 @@ void MystScriptParser_Myst::o_greenBook_init(uint16 op, uint16 var, uint16 argc, _tempVar = 1; } -void MystScriptParser_Myst::greenBook_run() { +void Myst::greenBook_run() { uint loopStart = 0; uint loopEnd = 0; Common::String file; @@ -3588,7 +3588,7 @@ void MystScriptParser_Myst::greenBook_run() { } } -void MystScriptParser_Myst::o_gulls3_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_gulls3_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Gulls init", op); if (!_state.shipFloating) { @@ -3597,7 +3597,7 @@ void MystScriptParser_Myst::o_gulls3_init(uint16 op, uint16 var, uint16 argc, ui } } -void MystScriptParser_Myst::gullsFly3_run() { +void Myst::gullsFly3_run() { static const char* gulls[] = { "birds1", "birds2", "birds3" }; uint32 time = _vm->_system->getMillis(); @@ -3613,7 +3613,7 @@ void MystScriptParser_Myst::gullsFly3_run() { } } -void MystScriptParser_Myst::o_bookAddSpecialPage_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_bookAddSpecialPage_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Book Exit Function", op); uint16 numPages = bookCountPages(var); @@ -3627,19 +3627,19 @@ void MystScriptParser_Myst::o_bookAddSpecialPage_exit(uint16 op, uint16 var, uin } } -void MystScriptParser_Myst::o_treeCard_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treeCard_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Exit tree card", op); _tree = 0; } -void MystScriptParser_Myst::o_treeEntry_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_treeEntry_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Exit tree card with entry", op); _treeAlcove = 0; } -void MystScriptParser_Myst::o_generatorControlRoom_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Myst::o_generatorControlRoom_exit(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator room exit", op); _generatorVoltage = _state.generatorVoltage; diff --git a/engines/mohawk/myst_stacks/myst.h b/engines/mohawk/myst_stacks/myst.h index 3b759160b1..51dffd0abe 100644 --- a/engines/mohawk/myst_stacks/myst.h +++ b/engines/mohawk/myst_stacks/myst.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Myst : public MystScriptParser { +class Myst : public MystScriptParser { public: - MystScriptParser_Myst(MohawkEngine_Myst *vm); - ~MystScriptParser_Myst(); + Myst(MohawkEngine_Myst *vm); + ~Myst(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/preview.cpp b/engines/mohawk/myst_stacks/preview.cpp index 354e353936..dc491c7573 100644 --- a/engines/mohawk/myst_stacks/preview.cpp +++ b/engines/mohawk/myst_stacks/preview.cpp @@ -35,24 +35,24 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Preview::MystScriptParser_Preview(MohawkEngine_Myst *vm) : MystScriptParser_Myst(vm) { +Preview::Preview(MohawkEngine_Myst *vm) : Myst(vm) { setupOpcodes(); } -MystScriptParser_Preview::~MystScriptParser_Preview() { +Preview::~Preview() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Preview::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Preview::x, #x)) #define OVERRIDE_OPCODE(opcode, x) \ for (uint32 i = 0; i < _opcodes.size(); i++) \ if (_opcodes[i]->op == opcode) { \ - _opcodes[i]->proc = (OpcodeProcMyst) &MystScriptParser_Preview::x; \ + _opcodes[i]->proc = (OpcodeProcMyst) &Preview::x; \ _opcodes[i]->desc = #x; \ break; \ } -void MystScriptParser_Preview::setupOpcodes() { +void Preview::setupOpcodes() { // "Stack-Specific" Opcodes OVERRIDE_OPCODE(196, opcode_196); OVERRIDE_OPCODE(197, opcode_197); @@ -67,7 +67,7 @@ void MystScriptParser_Preview::setupOpcodes() { #undef OPCODE #undef OVERRIDE_OPCODE -void MystScriptParser_Preview::opcode_196(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_196(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card ... @@ -75,7 +75,7 @@ void MystScriptParser_Preview::opcode_196(uint16 op, uint16 var, uint16 argc, ui // Voice Over and Card Advance? } -void MystScriptParser_Preview::opcode_197(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_197(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card ... @@ -84,7 +84,7 @@ void MystScriptParser_Preview::opcode_197(uint16 op, uint16 var, uint16 argc, ui } // TODO: Merge with Opcode 42? -void MystScriptParser_Preview::opcode_198(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_198(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); if (argc == 0) { @@ -95,7 +95,7 @@ void MystScriptParser_Preview::opcode_198(uint16 op, uint16 var, uint16 argc, ui unknown(op, var, argc, argv); } -void MystScriptParser_Preview::opcode_199(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_199(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used on Card ... @@ -103,7 +103,7 @@ void MystScriptParser_Preview::opcode_199(uint16 op, uint16 var, uint16 argc, ui // Voice Over and Card Advance? } -void MystScriptParser_Preview::opcode_298(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_298(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 3000 (Closed Myst Book) @@ -126,7 +126,7 @@ void MystScriptParser_Preview::opcode_298(uint16 op, uint16 var, uint16 argc, ui } } -void MystScriptParser_Preview::opcode_299(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Preview::opcode_299(uint16 op, uint16 var, uint16 argc, uint16 *argv) { varUnusedCheck(op, var); // Used for Card 3002 (Myst Island Overview) diff --git a/engines/mohawk/myst_stacks/preview.h b/engines/mohawk/myst_stacks/preview.h index bd0d2e7869..870e4b9272 100644 --- a/engines/mohawk/myst_stacks/preview.h +++ b/engines/mohawk/myst_stacks/preview.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Preview : public MystScriptParser_Myst { +class Preview : public Myst { public: - MystScriptParser_Preview(MohawkEngine_Myst *vm); - ~MystScriptParser_Preview(); + Preview(MohawkEngine_Myst *vm); + ~Preview(); private: void setupOpcodes(); diff --git a/engines/mohawk/myst_stacks/selenitic.cpp b/engines/mohawk/myst_stacks/selenitic.cpp index a9c77af7bd..f485bab2f9 100644 --- a/engines/mohawk/myst_stacks/selenitic.cpp +++ b/engines/mohawk/myst_stacks/selenitic.cpp @@ -37,7 +37,7 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Selenitic::MystScriptParser_Selenitic(MohawkEngine_Myst *vm) : +Selenitic::Selenitic(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_selenitic) { setupOpcodes(); _invokingResource = NULL; @@ -45,12 +45,12 @@ MystScriptParser_Selenitic::MystScriptParser_Selenitic(MohawkEngine_Myst *vm) : _mazeRunnerDirection = 8; } -MystScriptParser_Selenitic::~MystScriptParser_Selenitic() { +Selenitic::~Selenitic() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Selenitic::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Selenitic::x, #x)) -void MystScriptParser_Selenitic::setupOpcodes() { +void Selenitic::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_mazeRunnerMove); OPCODE(101, o_mazeRunnerSoundRepeat); @@ -83,16 +83,16 @@ void MystScriptParser_Selenitic::setupOpcodes() { #undef OPCODE -void MystScriptParser_Selenitic::disablePersistentScripts() { +void Selenitic::disablePersistentScripts() { _soundReceiverRunning = false; } -void MystScriptParser_Selenitic::runPersistentScripts() { +void Selenitic::runPersistentScripts() { if (_soundReceiverRunning) soundReceiver_run(); } -uint16 MystScriptParser_Selenitic::getVar(uint16 var) { +uint16 Selenitic::getVar(uint16 var) { switch(var) { case 0: // Sound receiver emitters enabled return _state.emitterEnabledWind; @@ -167,7 +167,7 @@ uint16 MystScriptParser_Selenitic::getVar(uint16 var) { } } -void MystScriptParser_Selenitic::toggleVar(uint16 var) { +void Selenitic::toggleVar(uint16 var) { switch(var) { case 0: // Sound receiver emitters enabled _state.emitterEnabledWind = (_state.emitterEnabledWind + 1) % 2; @@ -212,7 +212,7 @@ void MystScriptParser_Selenitic::toggleVar(uint16 var) { } } -bool MystScriptParser_Selenitic::setVarValue(uint16 var, uint16 value) { +bool Selenitic::setVarValue(uint16 var, uint16 value) { bool refresh = false; switch (var) { @@ -284,7 +284,7 @@ bool MystScriptParser_Selenitic::setVarValue(uint16 var, uint16 value) { return refresh; } -void MystScriptParser_Selenitic::o_mazeRunnerMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { uint16 oldPosition = _mazeRunnerPosition; uint16 move = var; @@ -305,7 +305,7 @@ void MystScriptParser_Selenitic::o_mazeRunnerMove(uint16 op, uint16 var, uint16 } } -void MystScriptParser_Selenitic::mazeRunnerBacktrack(uint16 &oldPosition) { +void Selenitic::mazeRunnerBacktrack(uint16 &oldPosition) { if (oldPosition == 289) _mazeRunnerDirection = 3; @@ -366,7 +366,7 @@ void MystScriptParser_Selenitic::mazeRunnerBacktrack(uint16 &oldPosition) { } } -void MystScriptParser_Selenitic::mazeRunnerPlayVideo(uint16 video, uint16 pos) { +void Selenitic::mazeRunnerPlayVideo(uint16 video, uint16 pos) { Common::String file; switch (video) { @@ -487,7 +487,7 @@ void MystScriptParser_Selenitic::mazeRunnerPlayVideo(uint16 video, uint16 pos) { } } -void MystScriptParser_Selenitic::mazeRunnerUpdateCompass() { +void Selenitic::mazeRunnerUpdateCompass() { if (_mazeRunnerPosition == 288 || _mazeRunnerPosition == 289) _mazeRunnerDirection = 8; else @@ -496,12 +496,12 @@ void MystScriptParser_Selenitic::mazeRunnerUpdateCompass() { _mazeRunnerCompass->drawConditionalDataToScreen(_mazeRunnerDirection); } -bool MystScriptParser_Selenitic::mazeRunnerForwardAllowed(uint16 position) { +bool Selenitic::mazeRunnerForwardAllowed(uint16 position) { uint16 move = _mazeRunnerVideos[position][1]; return move == 6 || move == 7; } -void MystScriptParser_Selenitic::mazeRunnerPlaySoundHelp() { +void Selenitic::mazeRunnerPlaySoundHelp() { uint16 soundId = 0; _mazeRunnerLight->drawConditionalDataToScreen(1); @@ -565,14 +565,14 @@ void MystScriptParser_Selenitic::mazeRunnerPlaySoundHelp() { _mazeRunnerLight->drawConditionalDataToScreen(0); } -void MystScriptParser_Selenitic::o_mazeRunnerSoundRepeat(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerSoundRepeat(uint16 op, uint16 var, uint16 argc, uint16 *argv) { mazeRunnerPlaySoundHelp(); } /** * Sound receiver sigma button */ -void MystScriptParser_Selenitic::o_soundReceiverSigma(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverSigma(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver sigma button", op); _vm->_cursor->hideCursor(); @@ -624,7 +624,7 @@ void MystScriptParser_Selenitic::o_soundReceiverSigma(uint16 op, uint16 var, uin /** * Sound receiver right button */ -void MystScriptParser_Selenitic::o_soundReceiverRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverRight(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver right", op); soundReceiverLeftRight(1); @@ -633,13 +633,13 @@ void MystScriptParser_Selenitic::o_soundReceiverRight(uint16 op, uint16 var, uin /** * Sound receiver left button */ -void MystScriptParser_Selenitic::o_soundReceiverLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverLeft(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver left", op); soundReceiverLeftRight(2); } -void MystScriptParser_Selenitic::soundReceiverLeftRight(uint direction) { +void Selenitic::soundReceiverLeftRight(uint direction) { if (_soundReceiverSigmaPressed) { _soundReceiverSigmaButton->drawConditionalDataToScreen(0); @@ -660,7 +660,7 @@ void MystScriptParser_Selenitic::soundReceiverLeftRight(uint direction) { soundReceiverUpdate(); } -void MystScriptParser_Selenitic::soundReceiverUpdate() { +void Selenitic::soundReceiverUpdate() { if (_soundReceiverDirection == 1) *_soundReceiverPosition = ((*_soundReceiverPosition) + _soundReceiverSpeed) % 3600; else if (_soundReceiverDirection == 2) @@ -669,7 +669,7 @@ void MystScriptParser_Selenitic::soundReceiverUpdate() { soundReceiverDrawView(); } -void MystScriptParser_Selenitic::soundReceiverDrawView() { +void Selenitic::soundReceiverDrawView() { uint32 left = ((*_soundReceiverPosition) * 1800) / 3600; _soundReceiverViewer->_subImages->rect.left = left; @@ -680,7 +680,7 @@ void MystScriptParser_Selenitic::soundReceiverDrawView() { soundReceiverDrawAngle(); } -void MystScriptParser_Selenitic::soundReceiverDrawAngle() { +void Selenitic::soundReceiverDrawAngle() { _vm->redrawResource(_soundReceiverAngle1); _vm->redrawResource(_soundReceiverAngle2); _vm->redrawResource(_soundReceiverAngle3); @@ -690,7 +690,7 @@ void MystScriptParser_Selenitic::soundReceiverDrawAngle() { /** * Sound receiver source selection buttons */ -void MystScriptParser_Selenitic::o_soundReceiverSource(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverSource(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver source", op); if (_soundReceiverSigmaPressed) { @@ -724,7 +724,7 @@ void MystScriptParser_Selenitic::o_soundReceiverSource(uint16 op, uint16 var, ui _vm->_cursor->showCursor(); } -void MystScriptParser_Selenitic::o_mazeRunnerDoorButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerDoorButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Selenitic Maze Runner Exit Logic uint16 cardIdExit = argv[0]; uint16 cardIdEntry = argv[1]; @@ -740,13 +740,13 @@ void MystScriptParser_Selenitic::o_mazeRunnerDoorButton(uint16 op, uint16 var, u } } -void MystScriptParser_Selenitic::o_soundReceiverUpdateSound(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverUpdateSound(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver update sound", op); soundReceiverUpdateSound(); } -uint16 MystScriptParser_Selenitic::soundLockCurrentSound(uint16 position, bool pixels) { +uint16 Selenitic::soundLockCurrentSound(uint16 position, bool pixels) { if ((pixels && position < 96) || (!pixels && position == 0)) return 289; else if ((pixels && position < 108) || (!pixels && position == 1)) @@ -771,7 +771,7 @@ uint16 MystScriptParser_Selenitic::soundLockCurrentSound(uint16 position, bool p return 0; } -MystResourceType10 *MystScriptParser_Selenitic::soundLockSliderFromVar(uint16 var) { +MystResourceType10 *Selenitic::soundLockSliderFromVar(uint16 var) { switch (var) { case 20: return _soundLockSlider1; @@ -788,7 +788,7 @@ MystResourceType10 *MystScriptParser_Selenitic::soundLockSliderFromVar(uint16 va return 0; } -void MystScriptParser_Selenitic::o_soundLockMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundLockMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound lock move", op); MystResourceType10 *slider = soundLockSliderFromVar(var); @@ -800,7 +800,7 @@ void MystScriptParser_Selenitic::o_soundLockMove(uint16 op, uint16 var, uint16 a } } -void MystScriptParser_Selenitic::o_soundLockStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundLockStartMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound lock start move", op); MystResourceType10 *slider = soundLockSliderFromVar(var); @@ -812,7 +812,7 @@ void MystScriptParser_Selenitic::o_soundLockStartMove(uint16 op, uint16 var, uin _vm->_sound->replaceSoundMyst(_soundLockSoundId, Audio::Mixer::kMaxChannelVolume, true); } -void MystScriptParser_Selenitic::o_soundLockEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundLockEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound lock end move", op); MystResourceType10 *slider = soundLockSliderFromVar(var); @@ -856,7 +856,7 @@ void MystScriptParser_Selenitic::o_soundLockEndMove(uint16 op, uint16 var, uint1 _vm->_sound->resumeBackgroundMyst(); } -void MystScriptParser_Selenitic::soundLockCheckSolution(MystResourceType10 *slider, uint16 value, uint16 solution, bool &solved) { +void Selenitic::soundLockCheckSolution(MystResourceType10 *slider, uint16 value, uint16 solution, bool &solved) { slider->drawConditionalDataToScreen(2); _vm->_sound->replaceSoundMyst(soundLockCurrentSound(value / 12, false)); _vm->_system->delayMillis(1500); @@ -868,7 +868,7 @@ void MystScriptParser_Selenitic::soundLockCheckSolution(MystResourceType10 *slid _vm->_sound->stopSound(); } -void MystScriptParser_Selenitic::o_soundLockButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundLockButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound lock button", op); bool solved = true; @@ -906,7 +906,7 @@ void MystScriptParser_Selenitic::o_soundLockButton(uint16 op, uint16 var, uint16 _vm->_cursor->showCursor(); } -void MystScriptParser_Selenitic::o_soundReceiverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver end move", op); uint16 oldDirection = _soundReceiverDirection; @@ -923,19 +923,19 @@ void MystScriptParser_Selenitic::o_soundReceiverEndMove(uint16 op, uint16 var, u } } -void MystScriptParser_Selenitic::o_mazeRunnerCompass_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerCompass_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _mazeRunnerCompass = static_cast(_invokingResource); } -void MystScriptParser_Selenitic::o_mazeRunnerWindow_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerWindow_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _mazeRunnerWindow = static_cast(_invokingResource); } -void MystScriptParser_Selenitic::o_mazeRunnerLight_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerLight_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _mazeRunnerLight = static_cast(_invokingResource); } -void MystScriptParser_Selenitic::soundReceiver_run() { +void Selenitic::soundReceiver_run() { if (_soundReceiverStartTime) { if (_soundReceiverDirection) { uint32 currentTime = _vm->_system->getMillis(); @@ -953,7 +953,7 @@ void MystScriptParser_Selenitic::soundReceiver_run() { } } -void MystScriptParser_Selenitic::soundReceiverIncreaseSpeed() { +void Selenitic::soundReceiverIncreaseSpeed() { switch (_soundReceiverSpeed) { case 1: _soundReceiverSpeed = 10; @@ -967,12 +967,12 @@ void MystScriptParser_Selenitic::soundReceiverIncreaseSpeed() { } } -void MystScriptParser_Selenitic::soundReceiverUpdateSound() { +void Selenitic::soundReceiverUpdateSound() { uint16 soundId = soundReceiverCurrentSound(_state.soundReceiverCurrentSource, *_soundReceiverPosition); _vm->_sound->replaceSoundMyst(soundId); } -uint16 MystScriptParser_Selenitic::soundReceiverCurrentSound(uint16 source, uint16 position) { +uint16 Selenitic::soundReceiverCurrentSound(uint16 source, uint16 position) { uint16 solution = 0; bool sourceEnabled = false; soundReceiverSolution(source, solution, sourceEnabled); @@ -1023,7 +1023,7 @@ uint16 MystScriptParser_Selenitic::soundReceiverCurrentSound(uint16 source, uint return soundId; } -void MystScriptParser_Selenitic::soundReceiverSolution(uint16 source, uint16 &solution, bool &enabled) { +void Selenitic::soundReceiverSolution(uint16 source, uint16 &solution, bool &enabled) { switch (source) { case 0: enabled = _state.emitterEnabledWater; @@ -1048,7 +1048,7 @@ void MystScriptParser_Selenitic::soundReceiverSolution(uint16 source, uint16 &so } } -void MystScriptParser_Selenitic::o_soundReceiver_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundReceiver_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound receiver init", op); // Used for Card 1245 (Sound Receiver) @@ -1075,7 +1075,7 @@ void MystScriptParser_Selenitic::o_soundReceiver_init(uint16 op, uint16 var, uin _soundReceiverSigmaPressed = false; } -void MystScriptParser_Selenitic::o_soundLock_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_soundLock_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Sound lock init", op); for (uint i = 0; i < _vm->_resources.size(); i++) { @@ -1110,15 +1110,15 @@ void MystScriptParser_Selenitic::o_soundLock_init(uint16 op, uint16 var, uint16 _soundLockSoundId = 0; } -void MystScriptParser_Selenitic::o_mazeRunnerRight_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerRight_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _mazeRunnerRightButton = static_cast(_invokingResource); } -void MystScriptParser_Selenitic::o_mazeRunnerLeft_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Selenitic::o_mazeRunnerLeft_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _mazeRunnerLeftButton = static_cast(_invokingResource); } -const uint16 MystScriptParser_Selenitic::_mazeRunnerMap[300][4] = { +const uint16 Selenitic::_mazeRunnerMap[300][4] = { {8, 7, 1, 288}, {1, 0, 2, 288}, {2, 1, 3, 288}, @@ -1421,7 +1421,7 @@ const uint16 MystScriptParser_Selenitic::_mazeRunnerMap[300][4] = { { 0, 0, 0, 0} }; -const uint8 MystScriptParser_Selenitic::_mazeRunnerVideos[300][4] = { +const uint8 Selenitic::_mazeRunnerVideos[300][4] = { {3, 6, 10, 17}, {0, 5, 8, 17}, {0, 4, 8, 17}, diff --git a/engines/mohawk/myst_stacks/selenitic.h b/engines/mohawk/myst_stacks/selenitic.h index d758a318ca..4ec92b9869 100644 --- a/engines/mohawk/myst_stacks/selenitic.h +++ b/engines/mohawk/myst_stacks/selenitic.h @@ -32,7 +32,6 @@ namespace Mohawk { -class MohawkEngine_Myst; class MystResourceType8; struct MystScriptEntry; @@ -40,10 +39,10 @@ namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Selenitic : public MystScriptParser { +class Selenitic : public MystScriptParser { public: - MystScriptParser_Selenitic(MohawkEngine_Myst *vm); - ~MystScriptParser_Selenitic(); + Selenitic(MohawkEngine_Myst *vm); + ~Selenitic(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/slides.cpp b/engines/mohawk/myst_stacks/slides.cpp index 0fb7eb2456..e664081c96 100644 --- a/engines/mohawk/myst_stacks/slides.cpp +++ b/engines/mohawk/myst_stacks/slides.cpp @@ -35,16 +35,16 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Slides::MystScriptParser_Slides(MohawkEngine_Myst *vm) : MystScriptParser(vm) { +Slides::Slides(MohawkEngine_Myst *vm) : MystScriptParser(vm) { setupOpcodes(); } -MystScriptParser_Slides::~MystScriptParser_Slides() { +Slides::~Slides() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Slides::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Slides::x, #x)) -void MystScriptParser_Slides::setupOpcodes() { +void Slides::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_returnToMenu); @@ -54,11 +54,11 @@ void MystScriptParser_Slides::setupOpcodes() { #undef OPCODE -void MystScriptParser_Slides::disablePersistentScripts() { +void Slides::disablePersistentScripts() { _cardSwapEnabled = false; } -void MystScriptParser_Slides::runPersistentScripts() { +void Slides::runPersistentScripts() { if (_cardSwapEnabled) { // Used on Cards... if (_vm->_system->getMillis() - _lastCardTime >= 2 * 1000) @@ -66,11 +66,11 @@ void MystScriptParser_Slides::runPersistentScripts() { } } -void MystScriptParser_Slides::o_returnToMenu(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Slides::o_returnToMenu(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _vm->changeToStack(kDemoStack, 2001, 0, 0); } -void MystScriptParser_Slides::o_setCardSwap(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Slides::o_setCardSwap(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used on Cards... if (argc == 1) { _nextCardID = argv[0]; diff --git a/engines/mohawk/myst_stacks/slides.h b/engines/mohawk/myst_stacks/slides.h index 6799556f31..1e0504a665 100644 --- a/engines/mohawk/myst_stacks/slides.h +++ b/engines/mohawk/myst_stacks/slides.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Slides : public MystScriptParser { +class Slides : public MystScriptParser { public: - MystScriptParser_Slides(MohawkEngine_Myst *vm); - ~MystScriptParser_Slides(); + Slides(MohawkEngine_Myst *vm); + ~Slides(); void disablePersistentScripts(); void runPersistentScripts(); diff --git a/engines/mohawk/myst_stacks/stoneship.cpp b/engines/mohawk/myst_stacks/stoneship.cpp index 1b6a18d701..b5b403dad8 100644 --- a/engines/mohawk/myst_stacks/stoneship.cpp +++ b/engines/mohawk/myst_stacks/stoneship.cpp @@ -37,7 +37,7 @@ namespace Mohawk { namespace MystStacks { -MystScriptParser_Stoneship::MystScriptParser_Stoneship(MohawkEngine_Myst *vm) : +Stoneship::Stoneship(MohawkEngine_Myst *vm) : MystScriptParser(vm), _state(vm->_gameState->_stoneship) { setupOpcodes(); @@ -61,12 +61,12 @@ MystScriptParser_Stoneship::MystScriptParser_Stoneship(MohawkEngine_Myst *vm) : _state.generatorPowerAvailable = 0; } -MystScriptParser_Stoneship::~MystScriptParser_Stoneship() { +Stoneship::~Stoneship() { } -#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &MystScriptParser_Stoneship::x, #x)) +#define OPCODE(op, x) _opcodes.push_back(new MystOpcode(op, (OpcodeProcMyst) &Stoneship::x, #x)) -void MystScriptParser_Stoneship::setupOpcodes() { +void Stoneship::setupOpcodes() { // "Stack-Specific" Opcodes OPCODE(100, o_pumpTurnOff); OPCODE(101, o_brotherDoorOpen); @@ -112,14 +112,14 @@ void MystScriptParser_Stoneship::setupOpcodes() { #undef OPCODE -void MystScriptParser_Stoneship::disablePersistentScripts() { +void Stoneship::disablePersistentScripts() { _batteryCharging = false; _batteryDepleting = false; _batteryGaugeRunning = false; _telescopeRunning = false; } -void MystScriptParser_Stoneship::runPersistentScripts() { +void Stoneship::runPersistentScripts() { if (_batteryCharging) chargeBattery_run(); @@ -136,7 +136,7 @@ void MystScriptParser_Stoneship::runPersistentScripts() { tunnel_run(); } -uint16 MystScriptParser_Stoneship::getVar(uint16 var) { +uint16 Stoneship::getVar(uint16 var) { switch(var) { case 0: // Water Drained From Lighthouse / Right Button Of Pump return _state.pumpState == 4; @@ -261,7 +261,7 @@ uint16 MystScriptParser_Stoneship::getVar(uint16 var) { } } -void MystScriptParser_Stoneship::toggleVar(uint16 var) { +void Stoneship::toggleVar(uint16 var) { switch(var) { case 0: // Water Drained From Lighthouse / Right Button Of Pump if (_state.pumpState == 4) @@ -327,7 +327,7 @@ void MystScriptParser_Stoneship::toggleVar(uint16 var) { } } -bool MystScriptParser_Stoneship::setVarValue(uint16 var, uint16 value) { +bool Stoneship::setVarValue(uint16 var, uint16 value) { bool refresh = false; switch (var) { @@ -381,7 +381,7 @@ bool MystScriptParser_Stoneship::setVarValue(uint16 var, uint16 value) { return refresh; } -void MystScriptParser_Stoneship::o_pumpTurnOff(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_pumpTurnOff(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Turn off previous pump selection", op); if (_state.pumpState) { @@ -411,7 +411,7 @@ void MystScriptParser_Stoneship::o_pumpTurnOff(uint16 op, uint16 var, uint16 arg } } -void MystScriptParser_Stoneship::o_brotherDoorOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_brotherDoorOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Open brother door", op); _brotherDoorOpen = 1; @@ -419,7 +419,7 @@ void MystScriptParser_Stoneship::o_brotherDoorOpen(uint16 op, uint16 var, uint16 animatedUpdate(argc, argv, 5); } -void MystScriptParser_Stoneship::o_cabinBookMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cabinBookMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Play Book Room Movie", op); uint16 startTime = argv[0]; @@ -430,7 +430,7 @@ void MystScriptParser_Stoneship::o_cabinBookMovie(uint16 op, uint16 var, uint16 _vm->_video->waitUntilMovieEnds(book); } -void MystScriptParser_Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Open drawer", op); MystResourceType8 *drawer = static_cast(_vm->_resources[argv[0]]); @@ -448,18 +448,18 @@ void MystScriptParser_Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, uint1 _vm->_gfx->runTransition(transition, drawer->getRect(), 25, 5); } -void MystScriptParser_Stoneship::o_drawerClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Close drawer", op); drawerClose(argv[0]); } -void MystScriptParser_Stoneship::o_telescopeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); _telescopeOldMouse = mouse.x; _vm->_cursor->setCursor(700); } -void MystScriptParser_Stoneship::o_telescopeMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Telescope move", op); MystResourceType11 *display = static_cast(_invokingResource); @@ -478,11 +478,11 @@ void MystScriptParser_Stoneship::o_telescopeMove(uint16 op, uint16 var, uint16 a _vm->_system->updateScreen(); } -void MystScriptParser_Stoneship::o_telescopeStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { _vm->checkCursorHints(); } -void MystScriptParser_Stoneship::o_generatorStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_generatorStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator start", op); MystResourceType11 *handle = static_cast(_invokingResource); @@ -508,7 +508,7 @@ void MystScriptParser_Stoneship::o_generatorStart(uint16 op, uint16 var, uint16 _vm->_sound->replaceSoundMyst(soundId, Audio::Mixer::kMaxChannelVolume, true); } -void MystScriptParser_Stoneship::o_generatorStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_generatorStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Generator stop", op); _batteryCharging = false; @@ -535,7 +535,7 @@ void MystScriptParser_Stoneship::o_generatorStop(uint16 op, uint16 var, uint16 a _vm->_sound->replaceSoundMyst(soundId); } -void MystScriptParser_Stoneship::chargeBattery_run() { +void Stoneship::chargeBattery_run() { uint32 time = _vm->_system->getMillis(); if (time > _batteryNextTime) { @@ -544,7 +544,7 @@ void MystScriptParser_Stoneship::chargeBattery_run() { } } -uint16 MystScriptParser_Stoneship::batteryRemainingCharge() { +uint16 Stoneship::batteryRemainingCharge() { uint32 time = _vm->_system->getMillis(); if (_state.generatorDepletionTime > time) { @@ -554,7 +554,7 @@ uint16 MystScriptParser_Stoneship::batteryRemainingCharge() { } } -void MystScriptParser_Stoneship::batteryDeplete_run() { +void Stoneship::batteryDeplete_run() { uint32 time = _vm->_system->getMillis(); if (time > _batteryNextTime) { @@ -575,7 +575,7 @@ void MystScriptParser_Stoneship::batteryDeplete_run() { } } -void MystScriptParser_Stoneship::o_drawerOpenAchenar(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerOpenAchenar(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Open drawer", op); MystResourceType8 *drawer = static_cast(_vm->_resources[argv[0]]); @@ -583,7 +583,7 @@ void MystScriptParser_Stoneship::o_drawerOpenAchenar(uint16 op, uint16 var, uint _vm->_gfx->runTransition(5, drawer->getRect(), 25, 5); } -void MystScriptParser_Stoneship::o_hologramPlayback(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramPlayback(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 2013 (Achenar's Rose-Skull Hologram) debugC(kDebugScript, "Opcode %d: Rose-Skull Hologram Playback", op); @@ -605,12 +605,12 @@ void MystScriptParser_Stoneship::o_hologramPlayback(uint16 op, uint16 var, uint1 _vm->_video->delayUntilMovieEnds(displayMovie); } -void MystScriptParser_Stoneship::o_hologramSelectionStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram start move", op); //_vm->_cursor->setCursor(0); } -void MystScriptParser_Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram move", op); MystResourceType11 *handle = static_cast(_invokingResource); @@ -637,12 +637,12 @@ void MystScriptParser_Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, } } -void MystScriptParser_Stoneship::o_hologramSelectionStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram stop move", op); _vm->checkCursorHints(); } -void MystScriptParser_Stoneship::o_compassButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_compassButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Compass rose button pressed", op); // Used on Card 2111 (Compass Rose) // Called when Button Clicked. @@ -664,7 +664,7 @@ void MystScriptParser_Stoneship::o_compassButton(uint16 op, uint16 var, uint16 a o_redrawCard(op, var, argc, argv); } -void MystScriptParser_Stoneship::o_chestValveVideos(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chestValveVideos(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Chest valve videos", op); Common::String movie = _vm->wrapMovieFilename("ligspig", kStoneshipStack); @@ -700,7 +700,7 @@ void MystScriptParser_Stoneship::o_chestValveVideos(uint16 op, uint16 var, uint1 } } -void MystScriptParser_Stoneship::o_chestDropKey(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chestDropKey(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: drop chest key", op); // If holding Key to Lamp Room Trapdoor, drop to bottom of @@ -711,7 +711,7 @@ void MystScriptParser_Stoneship::o_chestDropKey(uint16 op, uint16 var, uint16 ar } } -void MystScriptParser_Stoneship::o_trapLockOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_trapLockOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Trap lock open video", op); Common::String movie = _vm->wrapMovieFilename("openloc", kStoneshipStack); @@ -730,7 +730,7 @@ void MystScriptParser_Stoneship::o_trapLockOpen(uint16 op, uint16 var, uint16 ar _vm->_sound->playSound(4143); } -void MystScriptParser_Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Cards 2285, 2289, 2247, 2251 (Side Doors in Tunnels Down To Brothers Rooms) uint16 movieId = argv[0]; @@ -766,14 +766,14 @@ void MystScriptParser_Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, uint16 _vm->_cursor->showCursor(); } -void MystScriptParser_Stoneship::o_cloudOrbEnter(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrbEnter(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cloud orb enter", op); _vm->_sound->replaceSoundMyst(_cloudOrbSound, Audio::Mixer::kMaxChannelVolume, true); _cloudOrbMovie->playMovie(); } -void MystScriptParser_Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cloud orb leave", op); _cloudOrbMovie->pauseMovie(true); @@ -781,7 +781,7 @@ void MystScriptParser_Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, uint16 a _vm->_gfx->runTransition(5, _invokingResource->getRect(), 4, 0); } -void MystScriptParser_Stoneship::o_drawerCloseOpened(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerCloseOpened(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Close open drawer", op); uint16 drawerOpen = getVar(var); @@ -789,7 +789,7 @@ void MystScriptParser_Stoneship::o_drawerCloseOpened(uint16 op, uint16 var, uint drawerClose(argv[0] + drawerOpen - 1); } -void MystScriptParser_Stoneship::drawerClose(uint16 drawer) { +void Stoneship::drawerClose(uint16 drawer) { _chestDrawersOpen = 0; _vm->drawCardBackground(); _vm->drawResourceImages(); @@ -798,19 +798,19 @@ void MystScriptParser_Stoneship::drawerClose(uint16 drawer) { _vm->_gfx->runTransition(6, res->getRect(), 25, 5); } -void MystScriptParser_Stoneship::o_hologramDisplay_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramDisplay_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram display init", op); _hologramDisplay = static_cast(_invokingResource); _hologramDisplayPos = 0; } -void MystScriptParser_Stoneship::o_hologramSelection_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelection_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Hologram selection init", op); _hologramSelection = static_cast(_invokingResource); } -void MystScriptParser_Stoneship::batteryGaugeUpdate() { +void Stoneship::batteryGaugeUpdate() { uint16 charge = 0; if (_state.generatorDepletionTime) { @@ -824,7 +824,7 @@ void MystScriptParser_Stoneship::batteryGaugeUpdate() { _batteryGauge->setRect(rect); } -void MystScriptParser_Stoneship::o_battery_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_battery_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Used for Card 2160 (Lighthouse Battery Pack Closeup) debugC(kDebugScript, "Opcode %d: Battery init", op); @@ -833,7 +833,7 @@ void MystScriptParser_Stoneship::o_battery_init(uint16 op, uint16 var, uint16 ar batteryGaugeUpdate(); } -void MystScriptParser_Stoneship::o_tunnelEnter_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnelEnter_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tunnel enter", op); o_tunnel_init(op, var, argc, argv); @@ -842,13 +842,13 @@ void MystScriptParser_Stoneship::o_tunnelEnter_init(uint16 op, uint16 var, uint1 _tunnelNextTime = _vm->_system->getMillis() + 1500; } -void MystScriptParser_Stoneship::o_batteryGauge_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_batteryGauge_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Battery gauge init", op); _batteryLastCharge = batteryRemainingCharge(); _batteryGaugeRunning = true; } -void MystScriptParser_Stoneship::batteryGauge_run() { +void Stoneship::batteryGauge_run() { uint16 batteryCharge = batteryRemainingCharge(); if (batteryCharge != _batteryLastCharge) { @@ -864,7 +864,7 @@ void MystScriptParser_Stoneship::batteryGauge_run() { } } -void MystScriptParser_Stoneship::o_tunnel_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnel_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tunnel card init", op); _tunnelImagesCount = argv[0]; @@ -881,7 +881,7 @@ void MystScriptParser_Stoneship::o_tunnel_init(uint16 op, uint16 var, uint16 arg debugC(kDebugScript, "\tsoundIdAlarm: %d", _tunnelAlarmSound); } -void MystScriptParser_Stoneship::tunnel_run() { +void Stoneship::tunnel_run() { uint32 time = _vm->_system->getMillis(); if (time > _tunnelNextTime) { @@ -904,19 +904,19 @@ void MystScriptParser_Stoneship::tunnel_run() { } } -void MystScriptParser_Stoneship::o_tunnelLeave_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnelLeave_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Tunnel leave", op); _tunnelRunning = false; } -void MystScriptParser_Stoneship::o_chest_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chest_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Chest init", op); _state.chestOpenState = 0; } -void MystScriptParser_Stoneship::o_telescope_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescope_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Telescope init", op); // Used in Card 2218 (Telescope view) @@ -930,7 +930,7 @@ void MystScriptParser_Stoneship::o_telescope_init(uint16 op, uint16 var, uint16 _telescopeNexTime = _vm->_system->getMillis() + 1000; } -void MystScriptParser_Stoneship::telescope_run() { +void Stoneship::telescope_run() { uint32 time = _vm->_system->getMillis(); if (time > _telescopeNexTime) { @@ -943,7 +943,7 @@ void MystScriptParser_Stoneship::telescope_run() { } } -void MystScriptParser_Stoneship::telescopeLighthouseDraw() { +void Stoneship::telescopeLighthouseDraw() { if (_telescopePosition > 1137 && _telescopePosition < 1294) { uint16 imageId = _telescopeLighthouseOff; @@ -965,7 +965,7 @@ void MystScriptParser_Stoneship::telescopeLighthouseDraw() { } } -void MystScriptParser_Stoneship::o_achenarDrawers_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_achenarDrawers_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Achenar's Room Drawers Init", op); // Used for Card 2004 (Achenar's Room Drawers) @@ -983,7 +983,7 @@ void MystScriptParser_Stoneship::o_achenarDrawers_init(uint16 op, uint16 var, ui } } -void MystScriptParser_Stoneship::o_cloudOrb_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrb_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { debugC(kDebugScript, "Opcode %d: Cloud orb init", op); _cloudOrbMovie = static_cast(_invokingResource); diff --git a/engines/mohawk/myst_stacks/stoneship.h b/engines/mohawk/myst_stacks/stoneship.h index 3845121707..091fdcd169 100644 --- a/engines/mohawk/myst_stacks/stoneship.h +++ b/engines/mohawk/myst_stacks/stoneship.h @@ -32,17 +32,16 @@ namespace Mohawk { -class MohawkEngine_Myst; struct MystScriptEntry; namespace MystStacks { #define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv) -class MystScriptParser_Stoneship : public MystScriptParser { +class Stoneship : public MystScriptParser { public: - MystScriptParser_Stoneship(MohawkEngine_Myst *vm); - ~MystScriptParser_Stoneship(); + Stoneship(MohawkEngine_Myst *vm); + ~Stoneship(); void disablePersistentScripts(); void runPersistentScripts(); -- cgit v1.2.3