diff options
author | Bastien Bouclet | 2017-04-08 07:38:49 +0200 |
---|---|---|
committer | Bastien Bouclet | 2017-07-22 20:38:56 +0200 |
commit | 3e99dd8ccc0cda437ed19dcd3048f1e8eaa6c532 (patch) | |
tree | 314c125a6ff6b161d2bc5c8b21158c2537d61c1e /engines/mohawk/myst_stacks/stoneship.cpp | |
parent | 75040819c6642c304962d02ba646e04242cd4755 (diff) | |
download | scummvm-rg350-3e99dd8ccc0cda437ed19dcd3048f1e8eaa6c532.tar.gz scummvm-rg350-3e99dd8ccc0cda437ed19dcd3048f1e8eaa6c532.tar.bz2 scummvm-rg350-3e99dd8ccc0cda437ed19dcd3048f1e8eaa6c532.zip |
MOHAWK: Myst: Switch to bounds checked opcode arguments
Diffstat (limited to 'engines/mohawk/myst_stacks/stoneship.cpp')
-rw-r--r-- | engines/mohawk/myst_stacks/stoneship.cpp | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/engines/mohawk/myst_stacks/stoneship.cpp b/engines/mohawk/myst_stacks/stoneship.cpp index 706bd72163..6196618d90 100644 --- a/engines/mohawk/myst_stacks/stoneship.cpp +++ b/engines/mohawk/myst_stacks/stoneship.cpp @@ -383,7 +383,7 @@ bool Stoneship::setVarValue(uint16 var, uint16 value) { return refresh; } -void Stoneship::o_pumpTurnOff(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_pumpTurnOff(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Turn off previous pump selection", op); if (_state.pumpState) { @@ -413,19 +413,19 @@ void Stoneship::o_pumpTurnOff(uint16 op, uint16 var, uint16 argc, uint16 *argv) } } -void Stoneship::o_brotherDoorOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_brotherDoorOpen(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Open brother door", op); _brotherDoorOpen = 1; _vm->redrawArea(19, 0); - animatedUpdate(argc, argv, 5); + animatedUpdate(args, 5); } -void Stoneship::o_cabinBookMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cabinBookMovie(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Play Book Room Movie", op); - uint16 startTime = argv[0]; - uint16 endTime = argv[1]; + uint16 startTime = args[0]; + uint16 endTime = args[1]; VideoEntryPtr book = _vm->_video->playMovie(_vm->wrapMovieFilename("bkroom", kStoneshipStack)); if (!book) @@ -436,10 +436,10 @@ void Stoneship::o_cabinBookMovie(uint16 op, uint16 var, uint16 argc, uint16 *arg _vm->waitUntilMovieEnds(book); } -void Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Open drawer", op); - MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(argv[0]); + MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(args[0]); if (drawer->getImageSwitchVar() == 35) { drawer->drawConditionalDataToScreen(getVar(102), 0); @@ -448,24 +448,24 @@ void Stoneship::o_drawerOpenSirius(uint16 op, uint16 var, uint16 argc, uint16 *a } TransitionType transition = kTransitionTopToBottom; - if (argc == 2 && argv[1]) + if (args.size() == 2 && args[1]) transition = kTransitionCopy; _vm->_gfx->runTransition(transition, drawer->getRect(), 25, 5); } -void Stoneship::o_drawerClose(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerClose(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Close drawer", op); - drawerClose(argv[0]); + drawerClose(args[0]); } -void Stoneship::o_telescopeStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeStart(uint16 op, uint16 var, const ArgumentsArray &args) { const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); _telescopeOldMouse = mouse.x; _vm->_cursor->setCursor(700); } -void Stoneship::o_telescopeMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeMove(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Telescope move", op); MystAreaDrag *display = getInvokingResource<MystAreaDrag>(); @@ -483,11 +483,11 @@ void Stoneship::o_telescopeMove(uint16 op, uint16 var, uint16 argc, uint16 *argv telescopeLighthouseDraw(); } -void Stoneship::o_telescopeStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescopeStop(uint16 op, uint16 var, const ArgumentsArray &args) { _vm->checkCursorHints(); } -void Stoneship::o_generatorStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_generatorStart(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Generator start", op); MystAreaDrag *handle = getInvokingResource<MystAreaDrag>(); @@ -513,7 +513,7 @@ void Stoneship::o_generatorStart(uint16 op, uint16 var, uint16 argc, uint16 *arg _vm->_sound->playEffect(soundId, true); } -void Stoneship::o_generatorStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_generatorStop(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Generator stop", op); _batteryCharging = false; @@ -580,21 +580,21 @@ void Stoneship::batteryDeplete_run() { } } -void Stoneship::o_drawerOpenAchenar(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerOpenAchenar(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Open drawer", op); - MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(argv[0]); + MystAreaImageSwitch *drawer = _vm->getViewResource<MystAreaImageSwitch>(args[0]); drawer->drawConditionalDataToScreen(0, 0); _vm->_gfx->runTransition(kTransitionTopToBottom, drawer->getRect(), 25, 5); } -void Stoneship::o_hologramPlayback(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramPlayback(uint16 op, uint16 var, const ArgumentsArray &args) { // Used for Card 2013 (Achenar's Rose-Skull Hologram) debugC(kDebugScript, "Opcode %d: Rose-Skull Hologram Playback", op); - uint16 startPoint = argv[0]; - uint16 endPoint = argv[1]; - // uint16 direction = argv[2]; + uint16 startPoint = args[0]; + uint16 endPoint = args[1]; + // uint16 direction = args[2]; _hologramDisplay->setBlocking(false); VideoEntryPtr displayMovie = _hologramDisplay->playMovie(); @@ -610,12 +610,12 @@ void Stoneship::o_hologramPlayback(uint16 op, uint16 var, uint16 argc, uint16 *a _vm->waitUntilMovieEnds(displayMovie); } -void Stoneship::o_hologramSelectionStart(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionStart(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Hologram start move", op); //_vm->_cursor->setCursor(0); } -void Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Hologram move", op); MystAreaDrag *handle = getInvokingResource<MystAreaDrag>(); @@ -642,16 +642,16 @@ void Stoneship::o_hologramSelectionMove(uint16 op, uint16 var, uint16 argc, uint } } -void Stoneship::o_hologramSelectionStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelectionStop(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Hologram stop move", op); _vm->checkCursorHints(); } -void Stoneship::o_compassButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_compassButton(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Compass rose button pressed", op); // Used on Card 2111 (Compass Rose) // Called when Button Clicked. - uint16 correctButton = argv[0]; + uint16 correctButton = args[0]; if (correctButton) { // Correct Button -> Light On Logic @@ -666,10 +666,10 @@ void Stoneship::o_compassButton(uint16 op, uint16 var, uint16 argc, uint16 *argv _batteryDepleting = false; } - o_redrawCard(op, var, argc, argv); + o_redrawCard(op, var, args); } -void Stoneship::o_chestValveVideos(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chestValveVideos(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Chest valve videos", op); Common::String movie = _vm->wrapMovieFilename("ligspig", kStoneshipStack); @@ -721,7 +721,7 @@ void Stoneship::o_chestValveVideos(uint16 op, uint16 var, uint16 argc, uint16 *a } } -void Stoneship::o_chestDropKey(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chestDropKey(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: drop chest key", op); // If holding Key to Lamp Room Trapdoor, drop to bottom of @@ -732,7 +732,7 @@ void Stoneship::o_chestDropKey(uint16 op, uint16 var, uint16 argc, uint16 *argv) } } -void Stoneship::o_trapLockOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_trapLockOpen(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Trap lock open video", op); Common::String movie = _vm->wrapMovieFilename("openloc", kStoneshipStack); @@ -759,9 +759,9 @@ void Stoneship::o_trapLockOpen(uint16 op, uint16 var, uint16 argc, uint16 *argv) _vm->_sound->playEffect(4143); } -void Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, const ArgumentsArray &args) { // Used for Cards 2285, 2289, 2247, 2251 (Side Doors in Tunnels Down To Brothers Rooms) - uint16 movieId = argv[0]; + uint16 movieId = args[0]; debugC(kDebugScript, "Opcode %d: Play Side Door Movies", op); debugC(kDebugScript, "\tmovieId: %d", movieId); @@ -795,14 +795,14 @@ void Stoneship::o_sideDoorsMovies(uint16 op, uint16 var, uint16 argc, uint16 *ar _vm->_cursor->showCursor(); } -void Stoneship::o_cloudOrbEnter(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrbEnter(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Cloud orb enter", op); _vm->_sound->playEffect(_cloudOrbSound, true); _cloudOrbMovie->playMovie(); } -void Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Cloud orb leave", op); _cloudOrbMovie->pauseMovie(true); @@ -810,12 +810,12 @@ void Stoneship::o_cloudOrbLeave(uint16 op, uint16 var, uint16 argc, uint16 *argv _vm->_gfx->runTransition(kTransitionTopToBottom, getInvokingResource<MystArea>()->getRect(), 4, 0); } -void Stoneship::o_drawerCloseOpened(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_drawerCloseOpened(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Close open drawer", op); uint16 drawerOpen = getVar(var); if (drawerOpen) - drawerClose(argv[0] + drawerOpen - 1); + drawerClose(args[0] + drawerOpen - 1); } void Stoneship::drawerClose(uint16 drawer) { @@ -827,14 +827,14 @@ void Stoneship::drawerClose(uint16 drawer) { _vm->_gfx->runTransition(kTransitionBottomToTop, res->getRect(), 25, 5); } -void Stoneship::o_hologramDisplay_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramDisplay_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Hologram display init", op); _hologramDisplay = getInvokingResource<MystAreaVideo>(); _hologramDisplayPos = 0; } -void Stoneship::o_hologramSelection_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_hologramSelection_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Hologram selection init", op); _hologramSelection = getInvokingResource<MystAreaVideo>(); } @@ -853,7 +853,7 @@ void Stoneship::batteryGaugeUpdate() { _batteryGauge->setRect(rect); } -void Stoneship::o_battery_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_battery_init(uint16 op, uint16 var, const ArgumentsArray &args) { // Used for Card 2160 (Lighthouse Battery Pack Closeup) debugC(kDebugScript, "Opcode %d: Battery init", op); @@ -862,16 +862,16 @@ void Stoneship::o_battery_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) batteryGaugeUpdate(); } -void Stoneship::o_tunnelEnter_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnelEnter_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Tunnel enter", op); - o_tunnel_init(op, var, argc, argv); + o_tunnel_init(op, var, args); _tunnelRunning = true; _tunnelNextTime = _vm->_system->getMillis() + 1500; } -void Stoneship::o_batteryGauge_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_batteryGauge_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Battery gauge init", op); _batteryLastCharge = batteryRemainingCharge(); _batteryGaugeRunning = true; @@ -892,18 +892,18 @@ void Stoneship::batteryGauge_run() { } } -void Stoneship::o_tunnel_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnel_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Tunnel card init", op); - _tunnelImagesCount = argv[0]; + _tunnelImagesCount = args[0]; assert(_tunnelImagesCount <= 2 && "Too many images"); for (uint i = 0; i < _tunnelImagesCount; i++) { - _tunnelImages[i] = argv[i + 1]; + _tunnelImages[i] = args[i + 1]; } - _tunnelAlarmSound = argv[argc - 1]; + _tunnelAlarmSound = args[args.size() - 1]; debugC(kDebugScript, "\timage count: %d", _tunnelImagesCount); debugC(kDebugScript, "\tsoundIdAlarm: %d", _tunnelAlarmSound); @@ -930,25 +930,25 @@ void Stoneship::tunnel_run() { } } -void Stoneship::o_tunnelLeave_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_tunnelLeave_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Tunnel leave", op); _tunnelRunning = false; } -void Stoneship::o_chest_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_chest_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Chest init", op); _state.chestOpenState = 0; } -void Stoneship::o_telescope_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_telescope_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Telescope init", op); // Used in Card 2218 (Telescope view) - _telescopePanorama = argv[0]; - _telescopeLighthouseOff = argv[1]; - _telescopeLighthouseOn = argv[2]; + _telescopePanorama = args[0]; + _telescopeLighthouseOff = args[1]; + _telescopeLighthouseOn = args[2]; _telescopePosition = 0; _telescopeRunning = true; @@ -990,30 +990,30 @@ void Stoneship::telescopeLighthouseDraw() { } } -void Stoneship::o_achenarDrawers_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_achenarDrawers_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Achenar's Room Drawers Init", op); // Used for Card 2004 (Achenar's Room Drawers) if (!_chestAchenarBottomDrawerClosed) { - uint16 count1 = argv[0]; + uint16 count1 = args[0]; for (uint16 i = 0; i < count1; i++) { - debugC(kDebugScript, "Disable hotspot index %d", argv[i + 1]); - _vm->setResourceEnabled(argv[i + 1], false); + debugC(kDebugScript, "Disable hotspot index %d", args[i + 1]); + _vm->setResourceEnabled(args[i + 1], false); } - uint16 count2 = argv[count1 + 1]; + uint16 count2 = args[count1 + 1]; for (uint16 i = 0; i < count2; i++) { - debugC(kDebugScript, "Enable hotspot index %d", argv[i + count1 + 2]); - _vm->setResourceEnabled(argv[i + count1 + 2], true); + debugC(kDebugScript, "Enable hotspot index %d", args[i + count1 + 2]); + _vm->setResourceEnabled(args[i + count1 + 2], true); } } } -void Stoneship::o_cloudOrb_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) { +void Stoneship::o_cloudOrb_init(uint16 op, uint16 var, const ArgumentsArray &args) { debugC(kDebugScript, "Opcode %d: Cloud orb init", op); _cloudOrbMovie = getInvokingResource<MystAreaVideo>(); - _cloudOrbSound = argv[0]; - _cloudOrbStopSound = argv[1]; + _cloudOrbSound = args[0]; + _cloudOrbStopSound = args[1]; } } // End of namespace MystStacks |