From dda4931ee9d78c704ebd768af243d7019e9d0913 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 4 May 2016 21:07:12 +0200 Subject: GNAP: Move _actionStatus to the Character class --- engines/gnap/scenes/group0.cpp | 442 ++++++++++++++++++------------------ engines/gnap/scenes/group1.cpp | 492 ++++++++++++++++++++--------------------- engines/gnap/scenes/group2.cpp | 390 ++++++++++++++++---------------- engines/gnap/scenes/group3.cpp | 264 +++++++++++----------- engines/gnap/scenes/group4.cpp | 240 ++++++++++---------- engines/gnap/scenes/group5.cpp | 42 ++-- 6 files changed, 935 insertions(+), 935 deletions(-) (limited to 'engines/gnap/scenes') diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp index 087fb53a5e..5348f18df8 100644 --- a/engines/gnap/scenes/group0.cpp +++ b/engines/gnap/scenes/group0.cpp @@ -115,14 +115,14 @@ void Scene01::run() { switch (_vm->_sceneClickedHotspot) { case kHS01Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS01Platypus: - if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) { + if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -151,7 +151,7 @@ void Scene01::run() { break; case kHS01Spaceship: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2); } else { @@ -159,7 +159,7 @@ void Scene01::run() { case LOOK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS01LookSpaceship; + _vm->_gnap->_actionStatus = kAS01LookSpaceship; break; case GRAB_CURSOR: case TALK_CURSOR: @@ -172,7 +172,7 @@ void Scene01::run() { break; case kHS01Mud: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3); } else { @@ -182,7 +182,7 @@ void Scene01::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1); - _vm->_gnapActionStatus = kAS01TakeMud; + _vm->_gnap->_actionStatus = kAS01TakeMud; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -194,7 +194,7 @@ void Scene01::run() { break; case kHS01Pigs: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2); } else { @@ -202,17 +202,17 @@ void Scene01::run() { case LOOK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1); - _vm->_gnapActionStatus = kAS01LookPigs; + _vm->_gnap->_actionStatus = kAS01LookPigs; break; case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1); - _vm->_gnapActionStatus = kAS01UsePigs; + _vm->_gnap->_actionStatus = kAS01UsePigs; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1); - _vm->_gnapActionStatus = kAS01LookPigs; + _vm->_gnap->_actionStatus = kAS01LookPigs; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -223,10 +223,10 @@ void Scene01::run() { break; case kHS01ExitTruck: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS01LeaveScene; + _vm->_gnap->_actionStatus = kAS01LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1); _vm->_newSceneNum = 2; @@ -241,12 +241,12 @@ void Scene01::run() { case kHS01WalkArea6: case kHS01WalkArea7: case kHS01WalkArea8: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -260,9 +260,9 @@ void Scene01::run() { _vm->playSound(0x1091C, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus)) + if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (_vm->_timers[4] == 0) { // Update bird animation @@ -291,20 +291,20 @@ void Scene01::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS01LookSpaceship: _spaceshipSurface = gameSys.createSurface(47); gameSys.insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255); gameSys.setAnimation(133, 256, 0); gameSys.insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = kAS01LookSpaceshipDone; + _vm->_gnap->_actionStatus = kAS01LookSpaceshipDone; break; case kAS01LookSpaceshipDone: gameSys.removeSequence(133, 256, true); gameSys.removeSpriteDrawItem(_spaceshipSurface, 255); _vm->deleteSurface(&_spaceshipSurface); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS01LeaveScene: @@ -316,21 +316,21 @@ void Scene01::updateAnimations() { _vm->playGnapUseDevice(0, 0); gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(128, 40, 3); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS01LookPigs: _vm->playSound(0x8A, false); _vm->playSound(0x8B, false); _vm->playSound(0x8C, false); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS01UsePigs: _vm->playGnapPullOutDevice(7, 2); _vm->playGnapUseDevice(0, 0); gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -465,14 +465,14 @@ void Scene02::run() { switch (_vm->_sceneClickedHotspot) { case kHS02Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS02Platypus: - if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) { + if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -501,12 +501,12 @@ void Scene02::run() { break; case kHS02Chicken: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemTwig) { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS02UseTwigWithChicken; + _vm->_gnap->_actionStatus = kAS02UseTwigWithChicken; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8); } else { @@ -517,14 +517,14 @@ void Scene02::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS02GrabChicken; + _vm->_gnap->_actionStatus = kAS02GrabChicken; else - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS02TalkChicken; + _vm->_gnap->_actionStatus = kAS02TalkChicken; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -536,20 +536,20 @@ void Scene02::run() { case kHS02Truck1: case kHS02Truck2: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemKeys) { if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) { _vm->setGrabCursorSprite(-1); _vm->invRemove(kItemKeys); if (_vm->isFlag(kGFTruckFilledWithGas)) - _vm->_gnapActionStatus = kAS02UseTruckGas; + _vm->_gnap->_actionStatus = kAS02UseTruckGas; else - _vm->_gnapActionStatus = kAS02UseTruckNoGas; + _vm->_gnap->_actionStatus = kAS02UseTruckNoGas; } } else if (_vm->_grabCursorSpriteIndex == kItemGas) { _vm->_hotspots[kHS02WalkArea4]._flags |= SF_WALKABLE; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS02UseGasWithTruck; + _vm->_gnap->_actionStatus = kAS02UseGasWithTruck; _vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2); @@ -562,14 +562,14 @@ void Scene02::run() { if (_vm->isFlag(kGFTruckKeysUsed)) { if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) { if (_vm->isFlag(kGFTruckFilledWithGas)) - _vm->_gnapActionStatus = kAS02UseTruckGas; + _vm->_gnap->_actionStatus = kAS02UseTruckGas; else - _vm->_gnapActionStatus = kAS02UseTruckNoGas; + _vm->_gnap->_actionStatus = kAS02UseTruckNoGas; } } else { _vm->_gnap->_idleFacing = kDirUnk4; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS02UseTruckNoKeys; + _vm->_gnap->_actionStatus = kAS02UseTruckNoKeys; } break; case TALK_CURSOR: @@ -582,7 +582,7 @@ void Scene02::run() { break; case kHS02TruckGrill: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4); } else { @@ -593,7 +593,7 @@ void Scene02::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS02GrabTruckGrill; + _vm->_gnap->_actionStatus = kAS02GrabTruckGrill; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -605,10 +605,10 @@ void Scene02::run() { break; case kHS02ExitHouse: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1); - _vm->_gnapActionStatus = kAS02LeaveScene; + _vm->_gnap->_actionStatus = kAS02LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1); updateHotspots(); @@ -617,10 +617,10 @@ void Scene02::run() { break; case kHS02ExitBarn: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1); - _vm->_gnapActionStatus = kAS02LeaveScene; + _vm->_gnap->_actionStatus = kAS02LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1); updateHotspots(); @@ -629,10 +629,10 @@ void Scene02::run() { break; case kHS02ExitCreek: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS02LeaveScene; + _vm->_gnap->_actionStatus = kAS02LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1); _vm->_newSceneNum = 3; @@ -640,10 +640,10 @@ void Scene02::run() { break; case kHS02ExitPigpen: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS02LeaveScene; + _vm->_gnap->_actionStatus = kAS02LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1); _vm->_newSceneNum = 1; @@ -654,12 +654,12 @@ void Scene02::run() { case kHS02WalkArea2: case kHS02WalkArea3: case kHS02WalkArea4: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -672,9 +672,9 @@ void Scene02::run() { _vm->playSound(0x1091C, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus)) + if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { // Update bird animation @@ -684,7 +684,7 @@ void Scene02::run() { else gameSys.insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0); } - if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) { + if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != 7 && _vm->_gnap->_actionStatus != 8) { if (_vm->getRandom(6) != 0) { _nextChickenSequenceId = 0x14B; _vm->_timers[5] = _vm->getRandom(20) + 30; @@ -712,13 +712,13 @@ void Scene02::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS02UseTruckNoKeys: gameSys.insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(0x14E, _vm->_gnapId, 0); _vm->_gnapSequenceId = 0x14E; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS02UseTruckNoKeysDone; + _vm->_gnap->_actionStatus = kAS02UseTruckNoKeysDone; break; case kAS02UseGasWithTruck: gameSys.insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -728,7 +728,7 @@ void Scene02::updateAnimations() { _vm->invRemove(kItemGas); _vm->setGrabCursorSprite(-1); _vm->setFlag(kGFTruckFilledWithGas); - _vm->_gnapActionStatus = kAS02UseGasWithTruckDone; + _vm->_gnap->_actionStatus = kAS02UseGasWithTruckDone; break; case kAS02UseTruckGas: _vm->_timers[5] = 9999; @@ -781,7 +781,7 @@ void Scene02::updateAnimations() { gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0); _vm->_gnapSequenceId = _gnapTruckSequenceId; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS02LeaveScene: _vm->_sceneDone = true; @@ -800,7 +800,7 @@ void Scene02::updateAnimations() { _currChickenSequenceId = 0x14B; gameSys.setAnimation(0x14B, 179, 2); gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->_timers[5] = 30; break; case kAS02UseTwigWithChicken: @@ -808,12 +808,12 @@ void Scene02::updateAnimations() { gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0); _currChickenSequenceId = 0x155; _nextChickenSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS02UseTruckNoKeysDone: case kAS02UseGasWithTruckDone: default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -825,14 +825,14 @@ void Scene02::updateAnimations() { gameSys.removeSequence(_currChickenSequenceId, 179, true); _nextChickenSequenceId = -1; _currChickenSequenceId = -1; - _vm->_gnapActionStatus = kAS02GrabChickenDone; + _vm->_gnap->_actionStatus = kAS02GrabChickenDone; _vm->_timers[5] = 500; } else if (_nextChickenSequenceId == 0x14C) { gameSys.setAnimation(_nextChickenSequenceId, 179, 2); gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0); _currChickenSequenceId = _nextChickenSequenceId; _nextChickenSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } else if (_nextChickenSequenceId != -1) { gameSys.setAnimation(_nextChickenSequenceId, 179, 2); gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0); @@ -937,7 +937,7 @@ void Scene03::run() { switch (_vm->_sceneClickedHotspot) { case kHS03Platypus: - if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) { + if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -966,7 +966,7 @@ void Scene03::run() { break; case kHS03Grass: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFGrassTaken)) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -993,11 +993,11 @@ void Scene03::run() { break; case kHS03ExitTruck: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1); - _vm->_gnapActionStatus = kAS03LeaveScene; + _vm->_gnap->_actionStatus = kAS03LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1); _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE; @@ -1009,7 +1009,7 @@ void Scene03::run() { break; case kHS03Creek: - if (_vm->_gnapActionStatus == -1) { + if (_vm->_gnap->_actionStatus == -1) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(0, 0); } else { @@ -1021,7 +1021,7 @@ void Scene03::run() { if (!_vm->isFlag(kGFPlatypus)) _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS03GrabCreek; + _vm->_gnap->_actionStatus = kAS03GrabCreek; if (!_vm->isFlag(kGFPlatypus)) _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE; break; @@ -1035,7 +1035,7 @@ void Scene03::run() { break; case kHS03TrappedPlatypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypus)) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1048,13 +1048,13 @@ void Scene03::run() { case GRAB_CURSOR: if (_platypusHypnotized) { _vm->gnapWalkTo(7, 6, 0, 0x107B5, 1); - _vm->_gnapActionStatus = kAS03FreePlatypus; + _vm->_gnap->_actionStatus = kAS03FreePlatypus; } else { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); if (_platypusScared) - _vm->_gnapActionStatus = kAS03GrabScaredPlatypus; + _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus; else - _vm->_gnapActionStatus = kAS03GrabPlatypus; + _vm->_gnap->_actionStatus = kAS03GrabPlatypus; } break; case TALK_CURSOR: @@ -1064,9 +1064,9 @@ void Scene03::run() { _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); if (_platypusScared) - _vm->_gnapActionStatus = kAS03HypnotizeScaredPlat; + _vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat; else - _vm->_gnapActionStatus = kAS03HypnotizePlat; + _vm->_gnap->_actionStatus = kAS03HypnotizePlat; } break; case PLAT_CURSOR: @@ -1078,7 +1078,7 @@ void Scene03::run() { break; case kHS03Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -1087,26 +1087,26 @@ void Scene03::run() { case kHS03WalkAreas1: case kHS03WalkAreas2: case kHS03WalkAreas3: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; case kHS03PlatypusWalkArea: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); } else { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1); if (_platypusScared) - _vm->_gnapActionStatus = kAS03GrabScaredPlatypus; + _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus; else - _vm->_gnapActionStatus = kAS03GrabPlatypus; + _vm->_gnap->_actionStatus = kAS03GrabPlatypus; } } break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -1120,18 +1120,18 @@ void Scene03::run() { _vm->playSound(0x10925, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus)) + if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[1] && !_platypusScared) { _vm->_timers[1] = _vm->getRandom(40) + 20; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized) + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized) _nextPlatSequenceId = 450; } if (!_vm->_timers[6]) { _vm->_timers[6] = _vm->getRandom(20) + 30; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextFrogSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) { if (_vm->getRandom(5) == 1) _nextFrogSequenceId = 0x1C6; else @@ -1141,12 +1141,12 @@ void Scene03::run() { if (!_vm->_timers[4]) { // Update bird animation _vm->_timers[4] = _vm->getRandom(100) + 300; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) gameSys.insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0); } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(100) + 200; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { gameSys.setAnimation(0x1C5, 253, 4); gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0); } @@ -1174,7 +1174,7 @@ void Scene03::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS03LeaveScene: _vm->_sceneDone = true; break; @@ -1182,7 +1182,7 @@ void Scene03::updateAnimations() { _nextPlatSequenceId = 0x1BC; break; case kAS03FreePlatypusDone: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->_plat->_pos = Common::Point(6, 6); _vm->_plat->_idleFacing = kDirUnk4; _vm->_platypusId = 120; @@ -1207,7 +1207,7 @@ void Scene03::updateAnimations() { gameSys.insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0); _vm->_platypusSequenceDatNum = 0; _vm->_platypusSequenceId = 0x1BA; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _platypusHypnotized = true; updateHotspots(); break; @@ -1227,7 +1227,7 @@ void Scene03::updateAnimations() { gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0); _vm->_platypusSequenceDatNum = 0; _vm->_platypusSequenceId = 0x1BA; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _platypusHypnotized = true; updateHotspots(); break; @@ -1244,10 +1244,10 @@ void Scene03::updateAnimations() { gameSys.setAnimation(0x1B4, _vm->_gnapId, 0); _vm->_gnapSequenceId = 0x1B4; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS03GrabCreekDone; + _vm->_gnap->_actionStatus = kAS03GrabCreekDone; break; default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -1265,7 +1265,7 @@ void Scene03::updateAnimations() { _vm->_platypusSequenceDatNum = 0; gameSys.setAnimation(_nextPlatSequenceId, 99, 1); _nextPlatSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } else if (_nextPlatSequenceId == 0x1BC) { _vm->_gnap->_pos = Common::Point(3, 6); gameSys.insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -1275,7 +1275,7 @@ void Scene03::updateAnimations() { _vm->_gnapSequenceId = 0x1B6; _vm->_gnapSequenceDatNum = 0; _vm->_gnap->_idleFacing = kDirNone; - _vm->_gnapActionStatus = kAS03FreePlatypusDone; + _vm->_gnap->_actionStatus = kAS03FreePlatypusDone; _nextPlatSequenceId = -1; } else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) { gameSys.setAnimation(0, 0, 1); @@ -1434,14 +1434,14 @@ void Scene04::run() { switch (_vm->_sceneClickedHotspot) { case kHS04Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS04Platypus: - if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) { + if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1473,7 +1473,7 @@ void Scene04::run() { break; case kHS04Twig: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6); } else { @@ -1497,7 +1497,7 @@ void Scene04::run() { break; case kHS04Axe: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5); } else { @@ -1508,7 +1508,7 @@ void Scene04::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS04GrabAxe; + _vm->_gnap->_actionStatus = kAS04GrabAxe; _vm->setFlag(kGFPlatypusTalkingToAssistant); updateHotspots(); break; @@ -1522,7 +1522,7 @@ void Scene04::run() { break; case kHS04Dog: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7); } else { @@ -1536,7 +1536,7 @@ void Scene04::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS04GrabDog; + _vm->_gnap->_actionStatus = kAS04GrabDog; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; @@ -1554,7 +1554,7 @@ void Scene04::run() { break; case kHS04Door: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3); } else { @@ -1566,13 +1566,13 @@ void Scene04::run() { case GRAB_CURSOR: if (_vm->_cursorValue == 1) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS04OpenDoor; + _vm->_gnap->_actionStatus = kAS04OpenDoor; _vm->_timers[5] = 300; _vm->_gnap->_idleFacing = kDirUpLeft; } else { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS04LeaveScene; + _vm->_gnap->_actionStatus = kAS04LeaveScene; _vm->_newSceneNum = 38; } break; @@ -1585,10 +1585,10 @@ void Scene04::run() { break; case kHS04ExitTruck: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS04LeaveScene; + _vm->_gnap->_actionStatus = kAS04LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1); if (_vm->_cursorValue == 1) @@ -1599,7 +1599,7 @@ void Scene04::run() { break; case kHS04Window: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3); } else if (_vm->isFlag(kGFKeysTaken)) { @@ -1609,9 +1609,9 @@ void Scene04::run() { case LOOK_CURSOR: if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, _vm->getGnapSequenceId(gskIdle, 10, 2) | 0x10000, 1)) { if (_triedWindow) { - _vm->_gnapActionStatus = kAS04GetKeyAnother; + _vm->_gnap->_actionStatus = kAS04GetKeyAnother; } else { - _vm->_gnapActionStatus = kAS04GetKeyFirst; + _vm->_gnap->_actionStatus = kAS04GetKeyFirst; _triedWindow = true; } } @@ -1629,10 +1629,10 @@ void Scene04::run() { break; case kHS04ExitBarn: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS04LeaveScene; + _vm->_gnap->_actionStatus = kAS04LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1); if (_vm->_cursorValue == 1) @@ -1644,12 +1644,12 @@ void Scene04::run() { case kHS04WalkArea1: case kHS04WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -1663,13 +1663,13 @@ void Scene04::run() { _vm->playSound(0x1091C, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus)) + if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) _vm->updatePlatypusIdleSequence2(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence2(); if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(150) + 300; - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) gameSys.insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0); } if (!_vm->_timers[7]) { @@ -1705,7 +1705,7 @@ void Scene04::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS04LeaveScene: _vm->_sceneDone = true; break; @@ -1719,18 +1719,18 @@ void Scene04::updateAnimations() { gameSys.setAnimation(0x107B5, _vm->_gnapId, 0); _vm->_gnapSequenceId = 0x7B5; _vm->_gnapSequenceDatNum = 1; - _vm->_gnapActionStatus = kAS04OpenDoorDone; + _vm->_gnap->_actionStatus = kAS04OpenDoorDone; break; case kAS04OpenDoorDone: gameSys.insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS04GetKeyFirst: gameSys.insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(0x204, _vm->_gnapId, 0); _vm->_gnapSequenceId = 0x204; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS04GetKeyFirst2; + _vm->_gnap->_actionStatus = kAS04GetKeyFirst2; break; case kAS04GetKeyFirst2: gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -1739,7 +1739,7 @@ void Scene04::updateAnimations() { gameSys.setAnimation(0x20B, 256, 0); _vm->_gnapSequenceId = 0x206; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS04GetKeyFirstDone; + _vm->_gnap->_actionStatus = kAS04GetKeyFirstDone; break; case kAS04GetKeyFirstDone: gameSys.requestRemoveSequence(0x1FF, 256); @@ -1750,14 +1750,14 @@ void Scene04::updateAnimations() { _vm->_gnap->_idleFacing = kDirBottomRight; _vm->_gnapSequenceId = 0x7B5; _vm->_gnapSequenceDatNum = 1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS04GetKeyAnother: gameSys.insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(0x202, _vm->_gnapId, 0); _vm->_gnapSequenceId = 0x202; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS04GetKeyAnother2; + _vm->_gnap->_actionStatus = kAS04GetKeyAnother2; break; case kAS04GetKeyAnother2: gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -1766,7 +1766,7 @@ void Scene04::updateAnimations() { gameSys.setAnimation(0x20A, 256, 0); _vm->_gnapSequenceId = 0x203; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS04GetKeyAnotherDone; + _vm->_gnap->_actionStatus = kAS04GetKeyAnotherDone; break; case kAS04GetKeyAnotherDone: gameSys.removeSequence(0x1FF, 256, true); @@ -1777,7 +1777,7 @@ void Scene04::updateAnimations() { _vm->_gnapSequenceId = 0x7B5; _vm->_gnapSequenceDatNum = 1; _vm->_gnap->_idleFacing = kDirBottomRight; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS04GrabDog: _nextDogSequenceId = 0x201; @@ -1787,10 +1787,10 @@ void Scene04::updateAnimations() { gameSys.requestRemoveSequence(0x212, 100); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x211; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -1814,7 +1814,7 @@ void Scene04::updateAnimations() { _currDogSequenceId = 0x201; _vm->_gnapSequenceId = 0x200; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->_timers[6] = _vm->getRandom(20) + 60; _nextDogSequenceId = -1; } else if (_nextDogSequenceId != -1) { @@ -1909,14 +1909,14 @@ void Scene05::run() { switch (_vm->_sceneClickedHotspot) { case kHS05Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS05Platypus: - if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) { + if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1945,7 +1945,7 @@ void Scene05::run() { break; case kHS05Haystack: - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5); } else if (_vm->isFlag(kGFNeedleTaken)) { @@ -1963,7 +1963,7 @@ void Scene05::run() { if (_vm->isFlag(kGFPlatypus)) { _vm->gnapUseDeviceOnPlatypus(); if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) { - _vm->_platypusActionStatus = kAS05PlatSearchHaystack; + _vm->_plat->_actionStatus = kAS05PlatSearchHaystack; _vm->_plat->_idleFacing = kDirUnk4; } if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7)) @@ -1977,12 +1977,12 @@ void Scene05::run() { break; case kHS05Chicken: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemTwig) { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS05UseTwigWithChicken; + _vm->_gnap->_actionStatus = kAS05UseTwigWithChicken; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7); } else { @@ -1993,12 +1993,12 @@ void Scene05::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS05GrabChicken; + _vm->_gnap->_actionStatus = kAS05GrabChicken; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS05TalkChicken; + _vm->_gnap->_actionStatus = kAS05TalkChicken; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -2009,7 +2009,7 @@ void Scene05::run() { break; case kHS05Ladder: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5); } else { @@ -2020,7 +2020,7 @@ void Scene05::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirBottomLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS05GrabLadder; + _vm->_gnap->_actionStatus = kAS05GrabLadder; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -2035,16 +2035,16 @@ void Scene05::run() { if (_vm->isFlag(kGFBarnPadlockOpen)) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1); - _vm->_gnapActionStatus = kAS05EnterBarn; + _vm->_gnap->_actionStatus = kAS05EnterBarn; if (_vm->_cursorValue == 1) _vm->_newSceneNum = 6; else _vm->_newSceneNum = 36; - } else if (_vm->_gnapActionStatus < 0) { + } else if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemNeedle) { if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS05PickPadlock; + _vm->_gnap->_actionStatus = kAS05PickPadlock; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4); } else { @@ -2056,7 +2056,7 @@ void Scene05::run() { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS05TryPickPadlock; + _vm->_gnap->_actionStatus = kAS05TryPickPadlock; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -2068,10 +2068,10 @@ void Scene05::run() { break; case kHS05ExitHouse: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS05LeaveScene; + _vm->_gnap->_actionStatus = kAS05LeaveScene; if (_vm->isFlag(kGFPlatypus)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1); if (_vm->_cursorValue == 1) @@ -2083,7 +2083,7 @@ void Scene05::run() { case kHS05WalkArea1: case kHS05WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -2092,7 +2092,7 @@ void Scene05::run() { break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -2111,7 +2111,7 @@ void Scene05::run() { _vm->updateGnapIdleSequence(); if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(20) + 30; - if (_vm->_gnapActionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) { + if (_vm->_gnap->_actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) { if (_vm->getRandom(4) != 0) _nextChickenSequenceId = 0x142; else @@ -2120,7 +2120,7 @@ void Scene05::run() { } if (!_vm->_timers[6]) { _vm->_timers[6] = _vm->getRandom(150) + 300; - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) gameSys.insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0); } _vm->playSoundC(); @@ -2144,16 +2144,16 @@ void Scene05::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS05LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS05TryPickPadlock: gameSys.insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x148; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS05PickPadlock: gameSys.setAnimation(0x147, _vm->_gnapId, 0); @@ -2166,11 +2166,11 @@ void Scene05::updateAnimations() { _vm->_newSceneNum = 6; _vm->_timers[2] = 100; _vm->invRemove(kItemNeedle); - _vm->_gnapActionStatus = kAS05LeaveScene; + _vm->_gnap->_actionStatus = kAS05LeaveScene; break; case kAS05TalkChicken: _nextChickenSequenceId = 0x144; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS05GrabChicken: _nextChickenSequenceId = 0x14B; @@ -2184,19 +2184,19 @@ void Scene05::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_timers[2] = 200; _vm->_timers[6] = 300; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS05EnterBarn: gameSys.insertSequence(0x107B1, 1, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY); gameSys.setAnimation(0x107B1, 1, 0); - _vm->_gnapActionStatus = kAS05LeaveScene; + _vm->_gnap->_actionStatus = kAS05LeaveScene; break; case kAS05UseTwigWithChicken: _vm->playGnapShowItem(5, 0, 0); _nextChickenSequenceId = 0x14F; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -2213,9 +2213,9 @@ void Scene05::updateAnimations() { _vm->setGrabCursorSprite(kItemNeedle); _vm->showCursor(); _vm->_timers[1] = 30; - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; } - if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) { + if (_vm->_plat->_actionStatus == kAS05PlatSearchHaystack) { gameSys.setAnimation(0, 0, 1); gameSys.insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); gameSys.insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0); @@ -2237,7 +2237,7 @@ void Scene05::updateAnimations() { _vm->_gnapSequenceId = 0x14C; _currChickenSequenceId = _nextChickenSequenceId; _nextChickenSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } else if (_nextChickenSequenceId != -1) { gameSys.setAnimation(_nextChickenSequenceId, 100, 3); gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0); @@ -2333,14 +2333,14 @@ void Scene06::run() { switch (_vm->_sceneClickedHotspot) { case kHS06Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS06Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemDisguise) { _vm->gnapUseDisguiseOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2369,7 +2369,7 @@ void Scene06::run() { break; case kHS06Gas: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0); } else { @@ -2384,7 +2384,7 @@ void Scene06::run() { _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1); _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS06TryToGetGas; + _vm->_gnap->_actionStatus = kAS06TryToGetGas; } else { triedDeviceOnGas = true; _vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y); @@ -2403,7 +2403,7 @@ void Scene06::run() { break; case kHS06Ladder: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4); } else { @@ -2416,7 +2416,7 @@ void Scene06::run() { _vm->playGnapImpossible(0, 0); else { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS06TryToClimbLadder; + _vm->_gnap->_actionStatus = kAS06TryToClimbLadder; _vm->setFlag(kGFGasTaken); } break; @@ -2430,7 +2430,7 @@ void Scene06::run() { break; case kHS06Horse: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) { _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1); @@ -2438,7 +2438,7 @@ void Scene06::run() { _vm->_gnap->_idleFacing = kDirUpLeft; _vm->platypusWalkTo(6, 8, 1, 0x107C2, 1); _vm->_plat->_idleFacing = kDirNone; - _vm->_gnapActionStatus = kAS06UseTwigOnHorse; + _vm->_gnap->_actionStatus = kAS06UseTwigOnHorse; _vm->setGrabCursorSprite(-1); } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2); @@ -2455,7 +2455,7 @@ void Scene06::run() { _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS06TalkToHorse; + _vm->_gnap->_actionStatus = kAS06TalkToHorse; } break; case GRAB_CURSOR: @@ -2468,10 +2468,10 @@ void Scene06::run() { break; case kHS06ExitOutsideBarn: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS06LeaveScene; + _vm->_gnap->_actionStatus = kAS06LeaveScene; if (_vm->_cursorValue == 1) _vm->_newSceneNum = 5; else @@ -2484,12 +2484,12 @@ void Scene06::run() { case kHS06WalkArea3: case kHS06WalkArea4: case kHS06WalkArea5: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -2500,13 +2500,13 @@ void Scene06::run() { updateAnimations(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(40) + 25; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHorseSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) { if (_horseTurnedBack) { _nextHorseSequenceId = 0xF5; } else { @@ -2546,16 +2546,16 @@ void Scene06::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS06LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS06TryToGetGas: gameSys.insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0xFC; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS06TryToClimbLadder: gameSys.insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0); @@ -2563,11 +2563,11 @@ void Scene06::updateAnimations() { gameSys.insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0xFD; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS06TryToClimbLadderDone; + _vm->_gnap->_actionStatus = kAS06TryToClimbLadderDone; break; case kAS06TryToClimbLadderDone: _vm->_gnap->_pos = Common::Point(6, 7); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS06TalkToHorse: _nextHorseSequenceId = 0xF6; @@ -2576,7 +2576,7 @@ void Scene06::updateAnimations() { _nextPlatSequenceId = 0xFB; break; default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -2589,19 +2589,19 @@ void Scene06::updateAnimations() { _vm->setFlag(kGFGasTaken); _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED; _vm->setGrabCursorSprite(kItemGas); - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; _vm->_plat->_pos = Common::Point(6, 8); gameSys.insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY); _vm->_platypusSequenceId = 0x7C1; _vm->_platypusSequenceDatNum = 1; _vm->setFlag(kGFUnk04); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->showCursor(); } if (_nextPlatSequenceId == 0xFB) { gameSys.setAnimation(0, 0, 1); _nextHorseSequenceId = 0xF2; - _vm->_platypusActionStatus = 6; + _vm->_plat->_actionStatus = 6; } } @@ -2633,7 +2633,7 @@ void Scene06::updateAnimations() { _horseTurnedBack = true; _currHorseSequenceId = _nextHorseSequenceId; _nextHorseSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; default: gameSys.setAnimation(_nextHorseSequenceId, 120, 2); @@ -2692,7 +2692,7 @@ void Scene07::run() { _vm->_gnap->_idleFacing = kDirBottomRight; gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS07Wait; + _vm->_gnap->_actionStatus = kAS07Wait; _vm->_plat->_pos = Common::Point(3, 8); _vm->_platypusId = 160; _vm->_platypusSequenceId = 0x91; @@ -2742,7 +2742,7 @@ void Scene07::run() { _vm->gnapWalkTo(_vm->_gnap->_pos.x, 7, 0, 0x107AD, 1); else _vm->gnapWalkTo(8, 7, 0, 0x107AD, 1); - _vm->_gnapActionStatus = kAS07LeaveScene; + _vm->_gnap->_actionStatus = kAS07LeaveScene; break; case kHS07Dice: @@ -2774,7 +2774,7 @@ void Scene07::run() { break; case kHS07Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); _vm->_timers[4] = _vm->getRandom(40) + 50; @@ -2802,7 +2802,7 @@ void Scene07::run() { if (!_vm->_isLeavingScene) { _vm->updateGnapIdleSequence(); - if (_vm->_platypusActionStatus < 0 && _vm->_gnapActionStatus < 0) { + if (_vm->_plat->_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) { if (_vm->_timers[0]) { if (!_vm->_timers[1]) { _vm->_timers[1] = _vm->getRandom(20) + 30; @@ -2859,13 +2859,13 @@ void Scene07::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS07LeaveScene: _vm->_newSceneNum = 8; _vm->_sceneDone = true; break; } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(2) == 2) { @@ -2975,7 +2975,7 @@ void Scene08::run() { switch (_vm->_sceneClickedHotspot) { case kHS08Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); _vm->_timers[4] = _vm->getRandom(50) + 75; @@ -3012,7 +3012,7 @@ void Scene08::run() { _vm->_isLeavingScene = true; _vm->gnapActionIdle(0x14D); _vm->gnapWalkTo(0, 6, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS08LeaveScene; + _vm->_gnap->_actionStatus = kAS08LeaveScene; _vm->platypusWalkTo(0, 7, 1, 0x107CF, 1); _vm->_newSceneNum = 9; break; @@ -3021,7 +3021,7 @@ void Scene08::run() { _vm->_isLeavingScene = true; _vm->gnapActionIdle(0x14D); _vm->gnapWalkTo(3, 9, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS08LeaveScene; + _vm->_gnap->_actionStatus = kAS08LeaveScene; _vm->platypusWalkTo(4, 9, 1, 0x107C1, 1); _vm->_newSceneNum = 7; break; @@ -3034,7 +3034,7 @@ void Scene08::run() { case LOOK_CURSOR: _vm->gnapActionIdle(0x14D); _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS08LookMan; + _vm->_gnap->_actionStatus = kAS08LookMan; _vm->_gnap->_idleFacing = kDirUpRight; break; case GRAB_CURSOR: @@ -3044,13 +3044,13 @@ void Scene08::run() { _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapActionIdle(0x14D); _vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS08TalkMan; + _vm->_gnap->_actionStatus = kAS08TalkMan; break; case PLAT_CURSOR: _vm->gnapActionIdle(0x14D); _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(6, 6, 1, 0x107C2, 1); - _vm->_platypusActionStatus = kAS08PlatWithMan; + _vm->_plat->_actionStatus = kAS08PlatWithMan; _vm->_plat->_idleFacing = kDirNone; _vm->playGnapIdle(6, 6); break; @@ -3062,31 +3062,31 @@ void Scene08::run() { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(4, 7, 5, 0); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS08GrabDog; + _vm->_gnap->_actionStatus = kAS08GrabDog; } else { switch (_vm->_verbCursor) { case LOOK_CURSOR: _vm->playGnapScratchingHead(6, 0); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS08LookDog; + _vm->_gnap->_actionStatus = kAS08LookDog; break; case GRAB_CURSOR: _vm->gnapWalkTo(4, 7, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS08GrabDog; + _vm->_gnap->_actionStatus = kAS08GrabDog; _vm->_gnap->_idleFacing = kDirUpRight; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapActionIdle(0x14D); _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS08TalkDog; + _vm->_gnap->_actionStatus = kAS08TalkDog; break; case PLAT_CURSOR: _vm->setFlag(kGFSceneFlag1); _vm->gnapActionIdle(0x14D); _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(3, 7, 1, 0x107C2, 1); - _vm->_platypusActionStatus = kAS08PlatWithDog; + _vm->_plat->_actionStatus = kAS08PlatWithDog; _vm->_plat->_idleFacing = kDirNone; _vm->playGnapIdle(3, 7); break; @@ -3194,7 +3194,7 @@ void Scene08::run() { _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(50) + 125; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextManSequenceId == -1 && + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 && (_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) { int _gnapRandomValue = _vm->getRandom(4); switch (_gnapRandomValue) { @@ -3235,49 +3235,49 @@ void Scene08::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS08LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS08TalkMan: _nextManSequenceId = 0x13F; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS08LookMan: _nextManSequenceId = 0x140; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS08LookDog: _nextManSequenceId = 0x137; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS08GrabDog: if (_currDogSequenceId == 0x135) _nextDogSequenceId = 0x133; else _nextDogSequenceId = 0x13C; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS08TalkDog: if (_currDogSequenceId == 0x135) _nextDogSequenceId = 0x133; else _nextDogSequenceId = 0x13C; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - switch (_vm->_platypusActionStatus) { + switch (_vm->_plat->_actionStatus) { case kAS08PlatWithDog: _nextDogSequenceId = 0x147; break; case kAS08PlatWithMan: _nextManSequenceId = 0x140; - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; break; } } @@ -3291,7 +3291,7 @@ void Scene08::updateAnimations() { if (gameSys.getAnimationStatus(3) == 2) { if (_currDogSequenceId == 0x147) - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) { if (_vm->getRandom(2) != 0) _nextManSequenceId = 0x13D; @@ -3347,7 +3347,7 @@ void Scene08::updateAnimations() { _vm->_gnapSequenceId = 0x14D; _vm->_gnap->_idleFacing = kDirUpRight; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } } @@ -3411,7 +3411,7 @@ void Scene09::run() { switch (_vm->_sceneClickedHotspot) { case kHS09Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); _vm->_timers[4] = _vm->getRandom(150) + 50; @@ -3440,7 +3440,7 @@ void Scene09::run() { _vm->_isLeavingScene = true; _vm->_newSceneNum = 10; _vm->gnapWalkTo(4, 7, 0, 0x107BF, 1); - _vm->_gnapActionStatus = kAS09LeaveScene; + _vm->_gnap->_actionStatus = kAS09LeaveScene; _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1); _vm->_plat->_idleFacing = kDirUnk4; break; @@ -3449,7 +3449,7 @@ void Scene09::run() { _vm->_isLeavingScene = true; _vm->_newSceneNum = 8; _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS09LeaveScene; + _vm->_gnap->_actionStatus = kAS09LeaveScene; _vm->platypusWalkTo(10, -1, -1, 0x107CD, 1); _vm->_plat->_idleFacing = kDirUnk4; break; @@ -3463,7 +3463,7 @@ void Scene09::run() { _vm->playGnapScratchingHead(8, 3); break; case GRAB_CURSOR: - _vm->_gnapActionStatus = kAS09SearchTrash; + _vm->_gnap->_actionStatus = kAS09SearchTrash; _vm->gnapWalkTo(9, 6, 0, 0x107BC, 1); break; case TALK_CURSOR: @@ -3490,7 +3490,7 @@ void Scene09::run() { updateAnimations(); - if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) { + if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus != 1 && _vm->_gnap->_actionStatus != 2) { _vm->updatePlatypusIdleSequence(); _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { @@ -3522,10 +3522,10 @@ void Scene09::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS09LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS09SearchTrash: gameSys.setAnimation(0x4C, 120, 0); @@ -3536,13 +3536,13 @@ void Scene09::updateAnimations() { _vm->_gnap->_idleFacing = kDirUpLeft; _vm->_gnapSequenceDatNum = 0; _vm->_gnap->_pos = Common::Point(9, 6); - _vm->_gnapActionStatus = kAS09SearchTrashDone; + _vm->_gnap->_actionStatus = kAS09SearchTrashDone; break; case kAS09SearchTrashDone: gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0); _vm->_timers[2] = 360; _vm->_timers[4] = _vm->getRandom(150) + 100; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp index e2d0e9685a..6aca6434ed 100644 --- a/engines/gnap/scenes/group1.cpp +++ b/engines/gnap/scenes/group1.cpp @@ -133,7 +133,7 @@ void Scene10::run() { _vm->_isLeavingScene = true; _vm->gnapActionIdle(0x10C); _vm->gnapWalkTo(0, 7, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS10LeaveScene; + _vm->_gnap->_actionStatus = kAS10LeaveScene; _vm->platypusWalkTo(0, 7, -1, 0x107CF, 1); _vm->_newSceneNum = 11; break; @@ -142,7 +142,7 @@ void Scene10::run() { _vm->_isLeavingScene = true; _vm->gnapActionIdle(0x10C); _vm->gnapWalkTo(2, 9, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS10LeaveScene; + _vm->_gnap->_actionStatus = kAS10LeaveScene; _vm->platypusWalkTo(3, 9, -1, 0x107C7, 1); _vm->_newSceneNum = 9; break; @@ -151,7 +151,7 @@ void Scene10::run() { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(4, 8, 6, 0); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; } else { switch (_vm->_verbCursor) { case LOOK_CURSOR: @@ -165,14 +165,14 @@ void Scene10::run() { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapActionIdle(0x10C); _vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; break; case PLAT_CURSOR: _vm->gnapActionIdle(0x10C); _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(4, 6, -1, -1, 1); _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; break; } } @@ -195,7 +195,7 @@ void Scene10::run() { else { _vm->gnapActionIdle(0x10C); _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; } break; case TALK_CURSOR: @@ -209,7 +209,7 @@ void Scene10::run() { _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(3, 7, -1, -1, 1); _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; } break; } @@ -227,7 +227,7 @@ void Scene10::run() { case GRAB_CURSOR: _vm->gnapActionIdle(0x10C); _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS10AnnoyCook; + _vm->_gnap->_actionStatus = kAS10AnnoyCook; break; case TALK_CURSOR: _vm->playGnapImpossible(0, 0); @@ -241,7 +241,7 @@ void Scene10::run() { _vm->gnapActionIdle(0x10C); _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(7, 6, 1, 0x107D2, 1); - _vm->_platypusActionStatus = kAS10PlatWithBox; + _vm->_plat->_actionStatus = kAS10PlatWithBox; _vm->_plat->_idleFacing = kDirUnk4; _vm->_largeSprite = gameSys.createSurface(0xC3); _vm->playGnapIdle(7, 6); @@ -287,7 +287,7 @@ void Scene10::run() { break; case kHS10Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -345,7 +345,7 @@ void Scene10::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS10LeaveScene: _vm->_sceneDone = true; break; @@ -357,7 +357,7 @@ void Scene10::updateAnimations() { if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - switch (_vm->_platypusActionStatus) { + switch (_vm->_plat->_actionStatus) { case kAS10PlatWithBox: _nextCookSequenceId = 0x109; break; @@ -398,8 +398,8 @@ void Scene10::updateAnimations() { _vm->delayTicksCursor(5); _vm->deleteSurface(&_vm->_largeSprite); _vm->setGrabCursorSprite(kItemTongs); - if (_vm->_platypusActionStatus == kAS10PlatWithBox) - _vm->_platypusActionStatus = -1; + if (_vm->_plat->_actionStatus == kAS10PlatWithBox) + _vm->_plat->_actionStatus = -1; if (_vm->_gnap->_pos == Common::Point(4, 8)) _vm->gnapWalkStep(); break; @@ -413,7 +413,7 @@ void Scene10::updateAnimations() { case 0x106: { // TODO: Refactor into a if + a switch int rnd = _vm->getRandom(7); - if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0) + if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0) _nextCookSequenceId = 0x106; else if (rnd == 0) _nextCookSequenceId = 0x104; @@ -427,7 +427,7 @@ void Scene10::updateAnimations() { } break; case 0x103: - if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0) + if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0) _nextCookSequenceId = 0x106; else if (_vm->getRandom(7) == 0) _nextCookSequenceId = 0x104; @@ -435,7 +435,7 @@ void Scene10::updateAnimations() { _nextCookSequenceId = 0x106; break; case 0x104: - if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0) + if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0) _nextCookSequenceId = 0x106; else if (_vm->getRandom(7) == 0) _nextCookSequenceId = 0x103; @@ -445,7 +445,7 @@ void Scene10::updateAnimations() { case 0x105: { // TODO: Refactor into a if + a switch int rnd = _vm->getRandom(7); - if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0) + if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0) _nextCookSequenceId = 0x106; else if (rnd == 0) _nextCookSequenceId = 0x104; @@ -459,8 +459,8 @@ void Scene10::updateAnimations() { _vm->_gnapSequenceId = 0x10C; _vm->_gnap->_idleFacing = kDirUpRight; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; - _vm->_platypusActionStatus = -1; + _vm->_gnap->_actionStatus = -1; + _vm->_plat->_actionStatus = -1; } break; } @@ -613,7 +613,7 @@ void Scene11::run() { case kHS11ExitKitchen: _vm->_isLeavingScene = true; _vm->gnapWalkTo(6, 5, 0, 0x107BF, 1); - _vm->_gnapActionStatus = kAS11LeaveScene; + _vm->_gnap->_actionStatus = kAS11LeaveScene; _vm->platypusWalkTo(6, 6, -1, -1, 1); _vm->_newSceneNum = 10; break; @@ -621,7 +621,7 @@ void Scene11::run() { case kHS11ExitToilet: _vm->_isLeavingScene = true; _vm->gnapWalkTo(8, 5, 0, 0x107BF, 1); - _vm->_gnapActionStatus = kAS11LeaveScene; + _vm->_gnap->_actionStatus = kAS11LeaveScene; _vm->platypusWalkTo(8, 6, -1, -1, 1); _vm->_newSceneNum = 13; break; @@ -629,16 +629,16 @@ void Scene11::run() { case kHS11ExitLeft: _vm->_isLeavingScene = true; _vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS11LeaveScene; + _vm->_gnap->_actionStatus = kAS11LeaveScene; _vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1); _vm->_newSceneNum = 12; break; case kHS11GoggleGuy: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemMagazine) { _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS11ShowMagazineToGoggleGuy; + _vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0); } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(3, 7, 2, 0); @@ -654,7 +654,7 @@ void Scene11::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS11TalkGoggleGuy; + _vm->_gnap->_actionStatus = kAS11TalkGoggleGuy; break; } } @@ -662,11 +662,11 @@ void Scene11::run() { break; case kHS11HookGuy: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_gnap->_idleFacing = kDirUpRight; if (_vm->_grabCursorSpriteIndex >= 0) { _vm->gnapWalkTo(5, 6, 0, 0x107BC, 9); - _vm->_gnapActionStatus = kAS11ShowItemToHookGuy; + _vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0); } else { switch (_vm->_verbCursor) { @@ -675,12 +675,12 @@ void Scene11::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS11GrabHookGuy; + _vm->_gnap->_actionStatus = kAS11GrabHookGuy; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirBottomLeft; _vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS11TalkHookGuy; + _vm->_gnap->_actionStatus = kAS11TalkHookGuy; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -691,7 +691,7 @@ void Scene11::run() { break; case kHS11Billard: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(9, 8); } else { @@ -701,7 +701,7 @@ void Scene11::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(9, 8, 0, 0x107BA, 1); - _vm->_gnapActionStatus = kAS11GrabBillardBall; + _vm->_gnap->_actionStatus = kAS11GrabBillardBall; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -717,19 +717,19 @@ void Scene11::run() { case kHS11WalkArea3: case kHS11WalkArea4: case kHS11WalkArea5: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; case kHS11Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -749,7 +749,7 @@ void Scene11::run() { _vm->updateGnapIdleSequence2(); if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(100) + 75; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextGoggleGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) { if (_vm->getRandom(2)) _nextGoggleGuySequenceId = 0x1F6; else @@ -758,7 +758,7 @@ void Scene11::run() { } if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(40) + 20; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHookGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHookGuySequenceId == -1) { if (_currHookGuySequenceId == 0x201) { switch (_vm->getRandom(7)) { case 0: @@ -814,9 +814,9 @@ void Scene11::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - if (_vm->_gnapActionStatus != kAS11GrabBillardBall) + if (_vm->_gnap->_actionStatus != kAS11GrabBillardBall) gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS11LeaveScene: _vm->_sceneDone = true; break; @@ -873,7 +873,7 @@ void Scene11::updateAnimations() { _vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED; gameSys.setAnimation(0x207, 257, 4); gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } break; } @@ -885,8 +885,8 @@ void Scene11::updateAnimations() { gameSys.setAnimation(_nextGoggleGuySequenceId, 121, 2); _currGoggleGuySequenceId = _nextGoggleGuySequenceId; _nextGoggleGuySequenceId = -1; - if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus >= 1 && _vm->_gnap->_actionStatus <= 4) + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(3) == 2) { @@ -901,16 +901,16 @@ void Scene11::updateAnimations() { _vm->_timers[4] = _vm->getRandom(40) + 20; _vm->_timers[2] = _vm->getRandom(20) + 70; _vm->_timers[3] = _vm->getRandom(50) + 200; - if (_vm->_gnapActionStatus == kAS11GrabHookGuy) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus == kAS11GrabHookGuy) + _vm->_gnap->_actionStatus = -1; } else if (_nextHookGuySequenceId != -1) { gameSys.insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextHookGuySequenceId, 120, 3); _currHookGuySequenceId = _nextHookGuySequenceId; _nextHookGuySequenceId = -1; _vm->_timers[4] = _vm->getRandom(40) + 20; - if (_vm->_gnapActionStatus >= 6 && _vm->_gnapActionStatus <= 9) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus >= 6 && _vm->_gnap->_actionStatus <= 9) + _vm->_gnap->_actionStatus = -1; } } @@ -1005,7 +1005,7 @@ void Scene12::run() { switch (_vm->_sceneClickedHotspot) { case kHS12Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -1031,7 +1031,7 @@ void Scene12::run() { case kHS12ExitRight: _vm->_isLeavingScene = true; _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS12LeaveScene; + _vm->_gnap->_actionStatus = kAS12LeaveScene; _vm->platypusWalkTo(10, -1, -1, -1, 1); _vm->_newSceneNum = 11; break; @@ -1041,18 +1041,18 @@ void Scene12::run() { _vm->_largeSprite = gameSys.createSurface(0x141); _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9); _vm->_gnap->_idleFacing = kDirUpLeft; - _vm->_gnapActionStatus = kAS12QuarterToToothGuy; + _vm->_gnap->_actionStatus = kAS12QuarterToToothGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0); _vm->setGrabCursorSprite(-1); } else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) { _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9); _vm->_gnap->_idleFacing = kDirUpLeft; - _vm->_gnapActionStatus = kAS12QuarterWithHoleToToothGuy; + _vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0); } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9); _vm->_gnap->_idleFacing = kDirUpLeft; - _vm->_gnapActionStatus = kAS12ShowItemToToothGuy; + _vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0); } else { switch (_vm->_verbCursor) { @@ -1061,17 +1061,17 @@ void Scene12::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS12GrabToothGuy; + _vm->_gnap->_actionStatus = kAS12GrabToothGuy; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS12TalkToothGuy; + _vm->_gnap->_actionStatus = kAS12TalkToothGuy; break; case PLAT_CURSOR: _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(3, 7, 1, 0x107D2, 1); - _vm->_platypusActionStatus = kAS12PlatWithToothGuy; + _vm->_plat->_actionStatus = kAS12PlatWithToothGuy; _vm->_plat->_idleFacing = kDirUnk4; _vm->playGnapIdle(2, 7); break; @@ -1083,19 +1083,19 @@ void Scene12::run() { if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) { _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12QuarterWithBarkeeper; + _vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0); } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12ShowItemToBarkeeper; + _vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0); } else { switch (_vm->_verbCursor) { case LOOK_CURSOR: _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12LookBarkeeper; + _vm->_gnap->_actionStatus = kAS12LookBarkeeper; break; case GRAB_CURSOR: _vm->playGnapImpossible(0, 0); @@ -1103,12 +1103,12 @@ void Scene12::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS12TalkBarkeeper; + _vm->_gnap->_actionStatus = kAS12TalkBarkeeper; break; case PLAT_CURSOR: _vm->playGnapPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS12PlatWithBarkeeper; + _vm->_gnap->_actionStatus = kAS12PlatWithBarkeeper; break; } } @@ -1118,30 +1118,30 @@ void Scene12::run() { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->gnapWalkTo(7, 6, 0, 0x107BB, 9); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12ShowItemToBeardGuy; + _vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy; _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0); } else { switch (_vm->_verbCursor) { case LOOK_CURSOR: _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12LookBeardGuy; + _vm->_gnap->_actionStatus = kAS12LookBeardGuy; break; case GRAB_CURSOR: // NOTE Bug in the original. It has 9 as flags which seems wrong here. _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS12GrabBeardGuy; + _vm->_gnap->_actionStatus = kAS12GrabBeardGuy; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS12TalkBeardGuy; + _vm->_gnap->_actionStatus = kAS12TalkBeardGuy; break; case PLAT_CURSOR: _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(7, 6, 1, 0x107C2, 1); - _vm->_platypusActionStatus = kAS12PlatWithBeardGuy; + _vm->_plat->_actionStatus = kAS12PlatWithBeardGuy; _vm->_plat->_idleFacing = kDirNone; _vm->playGnapIdle(7, 6); break; @@ -1153,19 +1153,19 @@ void Scene12::run() { _vm->_newSceneNum = 15; _vm->_isLeavingScene = true; _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS12LeaveScene; + _vm->_gnap->_actionStatus = kAS12LeaveScene; break; case kHS12WalkArea1: case kHS12WalkArea2: case kHS12WalkArea3: case kHS12WalkArea4: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -1181,7 +1181,7 @@ void Scene12::run() { if (!_vm->_timers[4]) { _vm->_timers[4] = 15; if (_nextToothGuySequenceId == -1) { - if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { if (_vm->getRandom(2) != 0) _nextToothGuySequenceId = 0x1EC; else @@ -1193,8 +1193,8 @@ void Scene12::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(30) + 20; - if (_nextBarkeeperSequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { - if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (_nextBarkeeperSequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { + if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { if (_vm->getRandom(2) != 0) _nextBarkeeperSequenceId = 0x208; else @@ -1206,8 +1206,8 @@ void Scene12::run() { } if (!_vm->_timers[6]) { _vm->_timers[6] = _vm->getRandom(30) + 15; - if (_nextBeardGuySequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { - if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) + if (_nextBeardGuySequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { + if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) _nextBeardGuySequenceId = 0x1F2; else _nextBeardGuySequenceId = 0x202; @@ -1251,7 +1251,7 @@ void Scene12::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS12LeaveScene: _vm->_sceneDone = true; break; @@ -1299,7 +1299,7 @@ void Scene12::updateAnimations() { } break; case kAS12QuarterToToothGuyDone: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->showCursor(); gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300); _vm->deleteSurface(&_vm->_largeSprite); @@ -1343,7 +1343,7 @@ void Scene12::updateAnimations() { if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - switch (_vm->_platypusActionStatus) { + switch (_vm->_plat->_actionStatus) { case kAS12PlatWithToothGuy: _nextToothGuySequenceId = 0x1EB; break; @@ -1358,7 +1358,7 @@ void Scene12::updateAnimations() { gameSys.setAnimation(0, 0, 2); _vm->hideCursor(); gameSys.setAnimation(0x10843, 301, 0); - _vm->_gnapActionStatus = kAS12QuarterToToothGuyDone; + _vm->_gnap->_actionStatus = kAS12QuarterToToothGuyDone; gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300); gameSys.insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); gameSys.insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301, @@ -1380,25 +1380,25 @@ void Scene12::updateAnimations() { _vm->_timers[4] = 40; _vm->_timers[2] = _vm->getRandom(20) + 70; _vm->_timers[3] = _vm->getRandom(50) + 200; - if (_vm->_gnapActionStatus == kAS12GrabToothGuy) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus == kAS12GrabToothGuy) + _vm->_gnap->_actionStatus = -1; } else if (_nextToothGuySequenceId != -1) { gameSys.insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextToothGuySequenceId, 50, 2); _currToothGuySequenceId = _nextToothGuySequenceId; _nextToothGuySequenceId = -1; _vm->_timers[4] = 50; - if (_vm->_gnapActionStatus >= kAS12TalkToothGuy && _vm->_gnapActionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 && + if (_vm->_gnap->_actionStatus >= kAS12TalkToothGuy && _vm->_gnap->_actionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 && _currToothGuySequenceId != 0x1EC && _currToothGuySequenceId != 0x200) - _vm->_gnapActionStatus = -1; - if (_vm->_platypusActionStatus == kAS12PlatWithToothGuy) - _vm->_platypusActionStatus = -1; + _vm->_gnap->_actionStatus = -1; + if (_vm->_plat->_actionStatus == kAS12PlatWithToothGuy) + _vm->_plat->_actionStatus = -1; } } if (gameSys.getAnimationStatus(3) == 2) { - if (_vm->_gnapActionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) { - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) { + _vm->_gnap->_actionStatus = -1; _vm->playGnapIdle(7, 6); _vm->_timers[5] = 0; } @@ -1408,9 +1408,9 @@ void Scene12::updateAnimations() { _currBarkeeperSequenceId = _nextBarkeeperSequenceId; _nextBarkeeperSequenceId = -1; _vm->_timers[5] = _vm->getRandom(30) + 20; - if (_vm->_gnapActionStatus >= kAS12TalkBarkeeper && _vm->_gnapActionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 && + if (_vm->_gnap->_actionStatus >= kAS12TalkBarkeeper && _vm->_gnap->_actionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 && _currBarkeeperSequenceId != 0x1FB && _currBarkeeperSequenceId != 0x208) - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } @@ -1420,10 +1420,10 @@ void Scene12::updateAnimations() { _currBeardGuySequenceId = _nextBeardGuySequenceId; _nextBeardGuySequenceId = -1; _vm->_timers[6] = _vm->getRandom(30) + 20; - if (_vm->_gnapActionStatus >= kAS12TalkBeardGuy && _vm->_gnapActionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2) - _vm->_gnapActionStatus = -1; - if (_vm->_platypusActionStatus == kAS12PlatWithBeardGuy) - _vm->_platypusActionStatus = -1; + if (_vm->_gnap->_actionStatus >= kAS12TalkBeardGuy && _vm->_gnap->_actionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2) + _vm->_gnap->_actionStatus = -1; + if (_vm->_plat->_actionStatus == kAS12PlatWithBeardGuy) + _vm->_plat->_actionStatus = -1; } } @@ -1512,7 +1512,7 @@ void Scene13::run() { switch (_vm->_sceneClickedHotspot) { case kHS13Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); _vm->_timers[4] = _vm->getRandom(20) + 20; @@ -1540,7 +1540,7 @@ void Scene13::run() { case kHS13ExitBar: _vm->_isLeavingScene = true; _vm->gnapWalkTo(2, 7, 0, 0x107C0, 1); - _vm->_gnapActionStatus = kAS13LeaveScene; + _vm->_gnap->_actionStatus = kAS13LeaveScene; _vm->platypusWalkTo(2, 8, -1, -1, 1); if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) { _vm->_newSceneNum = 11; @@ -1564,13 +1564,13 @@ void Scene13::run() { gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqScale | kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS13Wait; + _vm->_gnap->_actionStatus = kAS13Wait; _vm->_gnapSequenceId = _backToiletCtr + 0xA3; _vm->_gnap->_idleFacing = kDirUpRight; _vm->_gnapSequenceDatNum = 0; } else { _vm->gnapWalkTo(5, 5, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS13BackToilet; + _vm->_gnap->_actionStatus = kAS13BackToilet; _vm->_gnap->_idleFacing = kDirUpRight; } break; @@ -1591,7 +1591,7 @@ void Scene13::run() { case TALK_CURSOR: case PLAT_CURSOR: _vm->gnapWalkTo(6, 7, 0, 0xA9, 5); - _vm->_gnapActionStatus = kAS13FrontToilet; + _vm->_gnap->_actionStatus = kAS13FrontToilet; _vm->_gnap->_idleFacing = kDirBottomRight; break; } @@ -1605,7 +1605,7 @@ void Scene13::run() { switch (_vm->_verbCursor) { case LOOK_CURSOR: _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS13LookScribble; + _vm->_gnap->_actionStatus = kAS13LookScribble; _vm->_gnap->_idleFacing = kDirUpRight; break; case GRAB_CURSOR: @@ -1630,11 +1630,11 @@ void Scene13::run() { case LOOK_CURSOR: _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6)); _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1); - _vm->_gnapActionStatus = kAS13Wait; + _vm->_gnap->_actionStatus = kAS13Wait; break; case GRAB_CURSOR: _vm->gnapWalkTo(8, 7, 0, -1, 1); - _vm->_gnapActionStatus = kAS13GrabUrinal; + _vm->_gnap->_actionStatus = kAS13GrabUrinal; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -1652,11 +1652,11 @@ void Scene13::run() { case LOOK_CURSOR: _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9)); _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1); - _vm->_gnapActionStatus = kAS13Wait; + _vm->_gnap->_actionStatus = kAS13Wait; break; case GRAB_CURSOR: _vm->gnapWalkTo(4, 8, 0, 0x107B9, 1); - _vm->_gnapActionStatus = kAS13GrabSink; + _vm->_gnap->_actionStatus = kAS13GrabSink; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -1695,7 +1695,7 @@ void Scene13::run() { _vm->updatePlatypusIdleSequence(); if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6) _vm->platypusWalkTo(-1, 7, -1, -1, 1); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(20) + 20; @@ -1763,24 +1763,24 @@ void Scene13::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS13LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS13BackToilet: _backToiletCtr = MIN(5, _backToiletCtr + 1); gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0); _vm->_gnapSequenceId = _backToiletCtr + 0xA3; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS13FrontToilet: _vm->_sceneDone = true; _vm->_newSceneNum = 14; break; case kAS13LookScribble: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; showScribble(); break; case kAS13GrabSink: @@ -1793,14 +1793,14 @@ void Scene13::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnap->_pos = Common::Point(4, 8); _vm->_timers[2] = 360; - _vm->_gnapActionStatus = kAS13GrabSinkDone; + _vm->_gnap->_actionStatus = kAS13GrabSinkDone; break; case kAS13GrabSinkDone: gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS13Wait: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS13GrabUrinal: gameSys.setAnimation(0xA2, 120, 0); @@ -1811,14 +1811,14 @@ void Scene13::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnap->_pos = Common::Point(4, 6); _vm->_timers[2] = 360; - _vm->_gnapActionStatus = kAS13Wait; + _vm->_gnap->_actionStatus = kAS13Wait; break; } } if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; } } @@ -1875,7 +1875,7 @@ void Scene14::run() { switch (_vm->_sceneClickedHotspot) { case kHS14Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -2051,7 +2051,7 @@ void Scene15::run() { switch (_vm->_sceneClickedHotspot) { case kHS15Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -2329,13 +2329,13 @@ void Scene17::update() { void Scene17::platHangUpPhone() { GameSys& gameSys = *_vm->_gameSys; - int savedGnapActionStatus = _vm->_gnapActionStatus; + int savedGnapActionStatus = _vm->_gnap->_actionStatus; - if (_vm->_platypusActionStatus == kAS17PlatPhoningAssistant) { - _vm->_gnapActionStatus = kAS17PlatHangUpPhone; + if (_vm->_plat->_actionStatus == kAS17PlatPhoningAssistant) { + _vm->_gnap->_actionStatus = kAS17PlatHangUpPhone; _vm->updateMouseCursor(); _platPhoneCtr = 0; - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; gameSys.setAnimation(0x257, 254, 4); gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0); while (gameSys.getAnimationStatus(4) != 2) @@ -2349,7 +2349,7 @@ void Scene17::platHangUpPhone() { _vm->clearFlag(kGFPlatypusTalkingToAssistant); while (gameSys.getAnimationStatus(1) != 2) _vm->gameUpdateTick(); - _vm->_gnapActionStatus = savedGnapActionStatus; + _vm->_gnap->_actionStatus = savedGnapActionStatus; _vm->updateMouseCursor(); } updateHotspots(); @@ -2431,7 +2431,7 @@ void Scene17::run() { _vm->endSceneInit(); _vm->clearFlag(kGFSpringTaken); _vm->clearFlag(kGFUnk16); - _vm->_platypusActionStatus = kAS17PlatPhoningAssistant; + _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant; platHangUpPhone(); gameSys.setAnimation(0, 0, 4); _vm->clearFlag(kGFPlatypusTalkingToAssistant); @@ -2446,7 +2446,7 @@ void Scene17::run() { gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 601; - _vm->_gnapActionStatus = kAS17GnapHangUpPhone; + _vm->_gnap->_actionStatus = kAS17GnapHangUpPhone; _vm->clearFlag(kGFUnk25); gameSys.insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0); _vm->endSceneInit(); @@ -2466,7 +2466,7 @@ void Scene17::run() { _vm->_platypusSequenceDatNum = 0; _vm->endSceneInit(); gameSys.setAnimation(_currPhoneSequenceId, 254, 1); - _vm->_platypusActionStatus = kAS17PlatPhoningAssistant; + _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant; updateHotspots(); } else if (_vm->_prevSceneNum == 18) { _vm->initGnapPos(6, 6, kDirBottomRight); @@ -2518,14 +2518,14 @@ void Scene17::run() { switch (_vm->_sceneClickedHotspot) { case kHS17Device: - if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) { + if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == 3) { _vm->runMenu(); updateHotspots(); } break; case kHS17Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { if (_vm->isFlag(kGFGrassTaken)) { _vm->gnapUseJointOnPlatypus(); @@ -2533,8 +2533,8 @@ void Scene17::run() { _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1); _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 0, 0x107BA, 1); - _vm->_platypusActionStatus = kAS17GetWrench1; - _vm->_gnapActionStatus = kAS17GetWrench1; + _vm->_plat->_actionStatus = kAS17GetWrench1; + _vm->_gnap->_actionStatus = kAS17GetWrench1; _vm->_timers[5] = _vm->getRandom(30) + 80; _vm->setGrabCursorSprite(-1); _vm->invRemove(kItemJoint); @@ -2560,7 +2560,7 @@ void Scene17::run() { break; case kHS17Wrench: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFGrassTaken)) { _vm->playGnapImpossible(0, 0); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2579,8 +2579,8 @@ void Scene17::run() { platHangUpPhone(); _vm->gnapUseDeviceOnPlatypus(); _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1); - _vm->_platypusActionStatus = kAS17TryGetWrench; - _vm->_gnapActionStatus = kAS17TryGetWrench; + _vm->_plat->_actionStatus = kAS17TryGetWrench; + _vm->_gnap->_actionStatus = kAS17TryGetWrench; _vm->_timers[5] = _vm->getRandom(30) + 80; } else _vm->playGnapImpossible(0, 0); @@ -2591,10 +2591,10 @@ void Scene17::run() { break; case kHS17Phone1: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS17PutCoinIntoPhone; + _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3); } else { @@ -2606,7 +2606,7 @@ void Scene17::run() { if (_vm->isFlag(kGFUnk18)) { platHangUpPhone(); _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS17GetCoinFromPhone; + _vm->_gnap->_actionStatus = kAS17GetCoinFromPhone; } else _vm->playGnapImpossible(0, 0); break; @@ -2621,8 +2621,8 @@ void Scene17::run() { _vm->_plat->_idleFacing = kDirUpLeft; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1); _vm->setFlag(kGFUnk16); - _vm->_platypusActionStatus = kAS17PlatUsePhone; - _vm->_gnapActionStatus = kAS17PlatUsePhone; + _vm->_plat->_actionStatus = kAS17PlatUsePhone; + _vm->_gnap->_actionStatus = kAS17PlatUsePhone; } else _vm->playGnapImpossible(0, 0); break; @@ -2632,10 +2632,10 @@ void Scene17::run() { break; case kHS17Phone2: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS17PutCoinIntoPhone; + _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3); } else { @@ -2649,7 +2649,7 @@ void Scene17::run() { _vm->_isLeavingScene = true; _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS17GnapUsePhone; + _vm->_gnap->_actionStatus = kAS17GnapUsePhone; _vm->setFlag(kGFSpringTaken); } else _vm->playGnapImpossible(0, 0); @@ -2665,8 +2665,8 @@ void Scene17::run() { _vm->_plat->_idleFacing = kDirUpLeft; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1); _vm->setFlag(kGFUnk16); - _vm->_platypusActionStatus = kAS17PlatUsePhone; - _vm->_gnapActionStatus = kAS17PlatUsePhone; + _vm->_plat->_actionStatus = kAS17PlatUsePhone; + _vm->_gnap->_actionStatus = kAS17PlatUsePhone; } else _vm->playGnapImpossible(0, 0); break; @@ -2676,25 +2676,25 @@ void Scene17::run() { break; case kHS17ExitToyStore: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 18; _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS17LeaveScene; - if (_vm->_platypusActionStatus != kAS17PlatPhoningAssistant) + _vm->_gnap->_actionStatus = kAS17LeaveScene; + if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1); } break; case kHS17ExitGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { platHangUpPhone(); _vm->_isLeavingScene = true; _vm->_newSceneNum = 20; _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS17LeaveScene; + _vm->_gnap->_actionStatus = kAS17LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1); } break; @@ -2702,12 +2702,12 @@ void Scene17::run() { case kHS17WalkArea1: case kHS17WalkArea2: case kHS17WalkArea3: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = 0; } @@ -2720,17 +2720,17 @@ void Scene17::run() { _vm->playSound(0x10940, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence2(); _vm->updateGnapIdleSequence2(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(100) + 200; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) gameSys.insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0); } if (!_vm->_timers[7]) { _vm->_timers[7] = _vm->getRandom(100) + 100; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { switch (_vm->getRandom(3)) { case 0: gameSys.insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0); @@ -2744,7 +2744,7 @@ void Scene17::run() { } } } - if (_vm->_platypusActionStatus < 0 && !_vm->_timers[5]) { + if (_vm->_plat->_actionStatus < 0 && !_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(30) + 80; if (_vm->isFlag(kGFGrassTaken) && _nextWrenchSequenceId == -1) { _nextWrenchSequenceId = 0x236; @@ -2823,9 +2823,9 @@ void Scene17::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS17GetWrench1: - _vm->_gnapActionStatus = kAS17GetWrenchGnapReady; + _vm->_gnap->_actionStatus = kAS17GetWrenchGnapReady; break; case kAS17GetCoinFromPhone: _vm->playGnapPullOutDevice(1, 3); @@ -2834,11 +2834,11 @@ void Scene17::updateAnimations() { gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0); _vm->invAdd(kItemDiceQuarterHole); _vm->clearFlag(kGFUnk18); - _vm->_gnapActionStatus = kAS17GetCoinFromPhoneDone; + _vm->_gnap->_actionStatus = kAS17GetCoinFromPhoneDone; break; case kAS17GetCoinFromPhoneDone: _vm->setGrabCursorSprite(kItemDiceQuarterHole); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS17PutCoinIntoPhone: gameSys.setAnimation(0x24C, _vm->_gnapId, 0); @@ -2848,23 +2848,23 @@ void Scene17::updateAnimations() { _vm->invRemove(kItemDiceQuarterHole); _vm->setGrabCursorSprite(-1); _vm->setFlag(kGFUnk18); - _vm->_gnapActionStatus = kAS17PutCoinIntoPhoneDone; + _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhoneDone; break; case kAS17PutCoinIntoPhoneDone: gameSys.insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS17GnapUsePhone: gameSys.setAnimation(0x24D, _vm->_gnapId, 0); gameSys.insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS17LeaveScene; + _vm->_gnap->_actionStatus = kAS17LeaveScene; _vm->_newSceneNum = 53; break; case kAS17GnapHangUpPhone: gameSys.insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x258; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS17LeaveScene: _vm->_sceneDone = true; @@ -2874,9 +2874,9 @@ void Scene17::updateAnimations() { if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - switch (_vm->_platypusActionStatus) { + switch (_vm->_plat->_actionStatus) { case kAS17TryGetWrench: - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; ++_platTryGetWrenchCtr; if (_platTryGetWrenchCtr % 2 != 0) _nextWrenchSequenceId = 0x233; @@ -2891,7 +2891,7 @@ void Scene17::updateAnimations() { _nextCarWindowSequenceId = 0x249; break; case kAS17GetWrenchDone: - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; _vm->invAdd(kItemWrench); _vm->setGrabCursorSprite(kItemWrench); break; @@ -2900,7 +2900,7 @@ void Scene17::updateAnimations() { gameSys.insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); _vm->_platypusSequenceDatNum = 0; _vm->_platypusSequenceId = 0x24E; - _vm->_platypusActionStatus = kAS17LeaveScene; + _vm->_plat->_actionStatus = kAS17LeaveScene; _vm->_newSceneNum = 53; break; case kAS17PlatPhoningAssistant: @@ -2912,7 +2912,7 @@ void Scene17::updateAnimations() { gameSys.insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0); _vm->_platypusSequenceDatNum = 0; _vm->_platypusSequenceId = 0x25B; - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; _vm->clearFlag(kGFPlatypusTalkingToAssistant); _vm->_sceneWaiting = false; updateHotspots(); @@ -2935,7 +2935,7 @@ void Scene17::updateAnimations() { if (gameSys.getAnimationStatus(2) == 2) { switch (_nextWrenchSequenceId) { case 0x233: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; gameSys.insertSequence(0x243, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); @@ -2947,7 +2947,7 @@ void Scene17::updateAnimations() { gameSys.setAnimation(0x243, _vm->_platypusId, 1); break; case 0x234: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; gameSys.insertSequence(0x242, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); @@ -2982,7 +2982,7 @@ void Scene17::updateAnimations() { _nextWrenchSequenceId = -1; break; case 0x230: - if (_vm->_gnapActionStatus == kAS17GetWrenchGnapReady) { + if (_vm->_gnap->_actionStatus == kAS17GetWrenchGnapReady) { gameSys.setAnimation(0, 0, 2); if (_canTryGetWrench) { gameSys.insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0); @@ -2999,7 +2999,7 @@ void Scene17::updateAnimations() { _vm->_gnapSequenceId = 0x875; _vm->_platypusSequenceId = 0x23F; _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1); - _vm->_platypusActionStatus = kAS17GetWrench2; + _vm->_plat->_actionStatus = kAS17GetWrench2; } break; default: @@ -3063,8 +3063,8 @@ void Scene17::updateAnimations() { _currWrenchSequenceId = 0x22D; _nextWrenchSequenceId = -1; _vm->setFlag(kGFGrassTaken); - _vm->_gnapActionStatus = -1; - _vm->_platypusActionStatus = 2; + _vm->_gnap->_actionStatus = -1; + _vm->_plat->_actionStatus = 2; updateHotspots(); _vm->_timers[5] = _vm->getRandom(30) + 80; break; @@ -3277,7 +3277,7 @@ void Scene18::platEndPhoning(bool platFl) { if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) { _platPhoneIter = 0; _platPhoneCtr = 0; - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; if (_currPhoneSequenceId != -1) { gameSys.setAnimation(0x21E, 254, 3); gameSys.insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0); @@ -3288,7 +3288,7 @@ void Scene18::platEndPhoning(bool platFl) { gameSys.setAnimation(0, 0, 3); _vm->clearFlag(kGFPlatypusTalkingToAssistant); if (platFl) { - _vm->_platypusActionStatus = kAS18PlatComesHere; + _vm->_plat->_actionStatus = kAS18PlatComesHere; _vm->_timers[6] = 50; _vm->_sceneWaiting = true; } @@ -3299,26 +3299,26 @@ void Scene18::platEndPhoning(bool platFl) { } void Scene18::closeHydrantValve() { - _vm->_gnapActionStatus = kAS18LeaveScene; + _vm->_gnap->_actionStatus = kAS18LeaveScene; _vm->updateMouseCursor(); if (_vm->isFlag(kGFTruckFilledWithGas)) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1); if (_vm->isFlag(kGFTruckKeysUsed)) { - _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan; + _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan; waitForGnapAction(); } else { - _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan; + _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan; waitForGnapAction(); } } else if (_vm->isFlag(kGFBarnPadlockOpen)) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1); - _vm->_gnapActionStatus = kAS18CloseTopValve; + _vm->_gnap->_actionStatus = kAS18CloseTopValve; waitForGnapAction(); } } void Scene18::waitForGnapAction() { - while (_vm->_gnapActionStatus >= 0) { + while (_vm->_gnap->_actionStatus >= 0) { updateAnimations(); _vm->gameUpdateTick(); } @@ -3423,14 +3423,14 @@ void Scene18::run() { switch (_vm->_sceneClickedHotspot) { case kHS18Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS18Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3460,10 +3460,10 @@ void Scene18::run() { break; case kHS18CowboyHat: - if (_vm->_gnapActionStatus == kAS18StandingOnHydrant) { - _vm->_gnapActionStatus = kAS18GrabCowboyHat; + if (_vm->_gnap->_actionStatus == kAS18StandingOnHydrant) { + _vm->_gnap->_actionStatus = kAS18GrabCowboyHat; _vm->_sceneWaiting = false; - } else if (_vm->_gnapActionStatus < 0) { + } else if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3488,7 +3488,7 @@ void Scene18::run() { break; case kHS18GarbageCan: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFUnk14)) { if (_vm->_grabCursorSpriteIndex >= 0) _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5); @@ -3516,10 +3516,10 @@ void Scene18::run() { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y, -1, -1, 1); _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS18GrabGarbageCanFromStreet; + _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromStreet; } else if (!_vm->isFlag(kGFTruckFilledWithGas)) { if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 0, -1, 1)) - _vm->_gnapActionStatus = kAS18GrabGarbageCanFromHydrant; + _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromHydrant; } break; case TALK_CURSOR: @@ -3533,7 +3533,7 @@ void Scene18::run() { break; case kHS18HydrantTopValve: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { // While carrying garbage can if (_vm->_grabCursorSpriteIndex >= 0) { @@ -3550,10 +3550,10 @@ void Scene18::run() { case GRAB_CURSOR: if (_vm->isFlag(kGFTruckFilledWithGas)) { gnapCarryGarbageCanTo(2); - _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant; + _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant; } else if (!_vm->isFlag(kGFBarnPadlockOpen)) { gnapCarryGarbageCanTo(2); - _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrant; + _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrant; } else { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3571,7 +3571,7 @@ void Scene18::run() { } else { if (_vm->_grabCursorSpriteIndex == kItemWrench) { _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1); - _vm->_gnapActionStatus = kAS18OpenTopValve; + _vm->_gnap->_actionStatus = kAS18OpenTopValve; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5); } else { @@ -3584,7 +3584,7 @@ void Scene18::run() { _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1); _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS18CloseTopValve; + _vm->_gnap->_actionStatus = kAS18CloseTopValve; } else _vm->playGnapImpossible(0, 0); break; @@ -3599,7 +3599,7 @@ void Scene18::run() { break; case kHS18HydrantRightValve: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFUnk14)) { if (_vm->_grabCursorSpriteIndex == -1) { _vm->playGnapImpossible(0, 0); @@ -3614,9 +3614,9 @@ void Scene18::run() { if (_vm->_grabCursorSpriteIndex == kItemWrench) { _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1); if (_vm->isFlag(kGFTruckKeysUsed)) - _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCan; + _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan; else - _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCan; + _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCan; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5); } else { @@ -3628,9 +3628,9 @@ void Scene18::run() { if (_vm->isFlag(kGFTruckFilledWithGas)) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1); if (_vm->isFlag(kGFTruckKeysUsed)) - _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan; + _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan; else - _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan; + _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan; } break; case TALK_CURSOR: @@ -3644,7 +3644,7 @@ void Scene18::run() { break; case kHS18ExitToyStore: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3655,7 +3655,7 @@ void Scene18::run() { _vm->_isLeavingScene = true; _vm->_newSceneNum = 19; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, 0, 0x107C0, 1); - _vm->_gnapActionStatus = kAS18LeaveScene; + _vm->_gnap->_actionStatus = kAS18LeaveScene; if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, -1, 0x107C2, 1); } @@ -3663,7 +3663,7 @@ void Scene18::run() { break; case kHS18ExitPhoneBooth: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3672,7 +3672,7 @@ void Scene18::run() { _vm->_isLeavingScene = true; _vm->_newSceneNum = 17; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS18LeaveScene; + _vm->_gnap->_actionStatus = kAS18LeaveScene; if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) _vm->setFlag(kGFUnk27); else @@ -3681,7 +3681,7 @@ void Scene18::run() { break; case kHS18ExitGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3691,7 +3691,7 @@ void Scene18::run() { _vm->_newSceneNum = 20; _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y, 0, 0x107B2, 1); - _vm->_gnapActionStatus = kAS18LeaveScene; + _vm->_gnap->_actionStatus = kAS18LeaveScene; if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) platEndPhoning(false); else @@ -3702,7 +3702,7 @@ void Scene18::run() { case kHS18WalkArea1: case kHS18WalkArea2: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3714,7 +3714,7 @@ void Scene18::run() { break; default: - if (_vm->_gnapActionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) { + if (_vm->_gnap->_actionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) { if (_vm->isFlag(kGFPlatypusDisguised)) { gnapCarryGarbageCanTo(-1); putDownGarbageCan(0); @@ -3732,16 +3732,16 @@ void Scene18::run() { _vm->playSound(0x10940, true); if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) && - _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCan && - _vm->_gnapActionStatus != kAS18OpenTopValve && _vm->_gnapActionStatus != kAS18OpenTopValveDone && - _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCanDone) + _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCan && + _vm->_gnap->_actionStatus != kAS18OpenTopValve && _vm->_gnap->_actionStatus != kAS18OpenTopValveDone && + _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCanDone) _vm->playSound(0x22B, true); if (!_vm->_isLeavingScene) { if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) { - if (_vm->_platypusActionStatus == kAS18PlatComesHere) { + if (_vm->_plat->_actionStatus == kAS18PlatComesHere) { if (!_vm->_timers[6]) { - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; _vm->_sceneWaiting = false; _vm->initPlatypusPos(-1, 10, kDirNone); _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1); @@ -3756,7 +3756,7 @@ void Scene18::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(100) + 100; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->getRandom(2) == 1) gameSys.insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0); else @@ -3789,7 +3789,7 @@ void Scene18::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS18GrabGarbageCanFromStreet: if (_vm->_gnap->_idleFacing != kDirUpRight && _vm->_gnap->_idleFacing != kDirBottomRight) { gameSys.insertSequence(0x1FC, _vm->_gnapId, @@ -3807,7 +3807,7 @@ void Scene18::updateAnimations() { gameSys.removeSequence(0x1FA, 19, true); _vm->setFlag(kGFPlatypusDisguised); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18GrabGarbageCanFromHydrant: gameSys.insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -3817,7 +3817,7 @@ void Scene18::updateAnimations() { _vm->clearFlag(kGFTruckKeysUsed); _vm->setFlag(kGFPlatypusDisguised); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18CloseRightValveNoGarbageCan: gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -3831,7 +3831,7 @@ void Scene18::updateAnimations() { _vm->invAdd(kItemWrench); _vm->setGrabCursorSprite(kItemWrench); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18OpenTopValve: _vm->setFlag(kGFBarnPadlockOpen); @@ -3842,7 +3842,7 @@ void Scene18::updateAnimations() { _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BB, 1); _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS18OpenTopValveDone; + _vm->_gnap->_actionStatus = kAS18OpenTopValveDone; break; case kAS18OpenTopValveDone: _vm->setGrabCursorSprite(-1); @@ -3859,7 +3859,7 @@ void Scene18::updateAnimations() { _vm->_gnapSequenceId = 0x208; _vm->invRemove(kItemWrench); _vm->setGrabCursorSprite(-1); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18CloseTopValve: gameSys.insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -3873,14 +3873,14 @@ void Scene18::updateAnimations() { _vm->invAdd(kItemWrench); _vm->setGrabCursorSprite(kItemWrench); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18GrabCowboyHat: gameSys.setAnimation(0x200, _vm->_gnapId, 0); gameSys.insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x200; - _vm->_gnapActionStatus = kAS18GrabCowboyHatDone; + _vm->_gnap->_actionStatus = kAS18GrabCowboyHatDone; break; case kAS18GrabCowboyHatDone: _vm->hideCursor(); @@ -3899,11 +3899,11 @@ void Scene18::updateAnimations() { _vm->setFlag(kGFTruckKeysUsed); _vm->setFlag(kGFUnk14); // Useless, already set updateHotspots(); - _vm->_gnapActionStatus = kAS18LeaveScene; + _vm->_gnap->_actionStatus = kAS18LeaveScene; break; case kAS18LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18PutGarbageCanOnRunningHydrant: _vm->setFlag(kGFTruckKeysUsed); @@ -3915,7 +3915,7 @@ void Scene18::updateAnimations() { gameSys.setAnimation(0x210, _vm->_gnapId, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x210; - _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant2; + _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant2; break; case kAS18PutGarbageCanOnRunningHydrant2: _vm->playSound(0x22B, true); @@ -3924,7 +3924,7 @@ void Scene18::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x1FF; _vm->_sceneWaiting = true; - _vm->_gnapActionStatus = kAS18StandingOnHydrant; + _vm->_gnap->_actionStatus = kAS18StandingOnHydrant; break; case kAS18StandingOnHydrant: gameSys.setAnimation(0x1FF, _vm->_gnapId, 0); @@ -3940,10 +3940,10 @@ void Scene18::updateAnimations() { _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1); _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE; - if (_vm->_gnapActionStatus == kAS18OpenRightValveNoGarbageCan) - _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCanDone; + if (_vm->_gnap->_actionStatus == kAS18OpenRightValveNoGarbageCan) + _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCanDone; else - _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCanDone; + _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCanDone; break; case kAS18OpenRightValveWithGarbageCanDone: _vm->setGrabCursorSprite(-1); @@ -3960,7 +3960,7 @@ void Scene18::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x207; _vm->invRemove(kItemWrench); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18OpenRightValveNoGarbageCanDone: _vm->setGrabCursorSprite(-1); @@ -3976,7 +3976,7 @@ void Scene18::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x207; _vm->invRemove(kItemWrench); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18CloseRightValveWithGarbageCan: gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -3992,10 +3992,10 @@ void Scene18::updateAnimations() { updateHotspots(); _vm->_gnapSequenceDatNum = 1; _vm->_gnapSequenceId = 0x7B5; - _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCanDone; + _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCanDone; break; case kAS18CloseRightValveWithGarbageCanDone: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS18PutGarbageCanOnHydrant: _vm->setFlag(kGFTruckKeysUsed); @@ -4004,12 +4004,12 @@ void Scene18::updateAnimations() { gameSys.setAnimation(0x20F, _vm->_gnapId, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x20F; - _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrantDone; + _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrantDone; break; case kAS18PutGarbageCanOnHydrantDone: gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -4133,14 +4133,14 @@ void Scene19::run() { switch (_vm->_sceneClickedHotspot) { case kHS19Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS19Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -4166,12 +4166,12 @@ void Scene19::run() { break; case kHS19ExitOutsideToyStore: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 18; _vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107B2, 1); - _vm->_gnapActionStatus = kAS19LeaveScene; + _vm->_gnap->_actionStatus = kAS19LeaveScene; if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) _vm->setFlag(kGFUnk27); else @@ -4181,7 +4181,7 @@ void Scene19::run() { break; case kHS19Picture: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2); } else { @@ -4192,7 +4192,7 @@ void Scene19::run() { case GRAB_CURSOR: if (!_vm->isFlag(kGFPictureTaken)) { _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS19GrabPicture; + _vm->_gnap->_actionStatus = kAS19GrabPicture; } break; case TALK_CURSOR: @@ -4205,7 +4205,7 @@ void Scene19::run() { break; case kHS19ShopAssistant: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2); } else { @@ -4216,7 +4216,7 @@ void Scene19::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS19TalkShopAssistant; + _vm->_gnap->_actionStatus = kAS19TalkShopAssistant; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -4234,7 +4234,7 @@ void Scene19::run() { case kHS19Toy5: case kHS19Toy6: case kHS19Toy7: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y); } else { @@ -4245,7 +4245,7 @@ void Scene19::run() { case GRAB_CURSOR: _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1); _vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y); - _vm->_gnapActionStatus = kAS19GrabToy; + _vm->_gnap->_actionStatus = kAS19GrabToy; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -4257,7 +4257,7 @@ void Scene19::run() { break; case kHS19Phone: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1); } else { @@ -4268,7 +4268,7 @@ void Scene19::run() { case GRAB_CURSOR: _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1); _vm->playGnapIdle(8, 2); - _vm->_gnapActionStatus = kAS19UsePhone; + _vm->_gnap->_actionStatus = kAS19UsePhone; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -4282,7 +4282,7 @@ void Scene19::run() { case kHS19WalkArea1: case kHS19WalkArea2: case kHS19WalkArea3: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -4332,7 +4332,7 @@ void Scene19::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS19UsePhone: _nextShopAssistantSequenceId = 0x67; break; @@ -4361,7 +4361,7 @@ void Scene19::updateAnimations() { _vm->invAdd(kItemPicture); _vm->setFlag(kGFPictureTaken); updateHotspots(); - _vm->_gnapActionStatus = kAS19GrabPictureDone; + _vm->_gnap->_actionStatus = kAS19GrabPictureDone; break; case kAS19GrabPictureDone: _vm->setGrabCursorSprite(-1); @@ -4382,7 +4382,7 @@ void Scene19::updateAnimations() { break; case kAS19TalkShopAssistant: _nextShopAssistantSequenceId = 0x6D; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS19LeaveScene: _vm->_sceneDone = true; @@ -4416,14 +4416,14 @@ void Scene19::updateAnimations() { _vm->gameUpdateTick(); } _vm->playGnapIdle(6, 2); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case 0x67: gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4); gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0); _currShopAssistantSequenceId = _nextShopAssistantSequenceId; _nextShopAssistantSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case 0x65: _vm->playGnapIdle(6, 2); @@ -4432,7 +4432,7 @@ void Scene19::updateAnimations() { _currShopAssistantSequenceId = _nextShopAssistantSequenceId; _nextShopAssistantSequenceId = -1; _vm->_newSceneNum = 18; - _vm->_gnapActionStatus = kAS19LeaveScene; + _vm->_gnap->_actionStatus = kAS19LeaveScene; break; case 0x6D: gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4); diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp index 23afc55907..229aad4eb6 100644 --- a/engines/gnap/scenes/group2.cpp +++ b/engines/gnap/scenes/group2.cpp @@ -77,7 +77,7 @@ void Scene20::updateAnimationsCb() { _vm->invAdd(kItemJoint); _vm->setFlag(kGFJointTaken); _stonerGuyShowingJoint = false; - _vm->_gnapActionStatus = kAS20GrabJointDone; + _vm->_gnap->_actionStatus = kAS20GrabJointDone; break; case 0x16E: gameSys.setAnimation(0x16E, 21, 2); @@ -92,7 +92,7 @@ void Scene20::updateAnimationsCb() { gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0); _currStonerGuySequenceId = _nextStonerGuySequenceId; _nextStonerGuySequenceId = -1; - _vm->_gnapActionStatus = kAS20ActionDone; + _vm->_gnap->_actionStatus = kAS20ActionDone; break; case 0x16F: gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2); @@ -264,14 +264,14 @@ void Scene20::run() { switch (_vm->_sceneClickedHotspot) { case kHS20Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS20Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -297,71 +297,71 @@ void Scene20::run() { break; case kHS20ExitParkingLot: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_stonerGuyShowingJoint) _vm->_timers[4] = 0; _vm->_isLeavingScene = true; _vm->_newSceneNum = 21; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS20LeaveScene; + _vm->_gnap->_actionStatus = kAS20LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1); _vm->_plat->_idleFacing = kDirUnk4; } break; case kHS20ExitPhone: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_stonerGuyShowingJoint) _vm->_timers[4] = 0; _vm->_isLeavingScene = true; _vm->_newSceneNum = 17; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS20LeaveScene; + _vm->_gnap->_actionStatus = kAS20LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1); } break; case kHS20ExitOutsideToyStore: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_stonerGuyShowingJoint) _vm->_timers[4] = 0; _vm->_isLeavingScene = true; _vm->_newSceneNum = 18; _vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS20LeaveScene; + _vm->_gnap->_actionStatus = kAS20LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y + 1, -1, 0x107CD, 1); _vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE; } break; case kHS20ExitInsideGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_stonerGuyShowingJoint) _vm->_timers[4] = 0; _vm->_isLeavingScene = true; _vm->_newSceneNum = 22; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y - 1, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS20LeaveScene; + _vm->_gnap->_actionStatus = kAS20LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1); _vm->_plat->_idleFacing = kDirUnk4; } break; case kHS20ExitOutsideCircusWorld: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_stonerGuyShowingJoint) _vm->_timers[4] = 0; _vm->_isLeavingScene = true; _vm->_newSceneNum = 24; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS20LeaveScene; + _vm->_gnap->_actionStatus = kAS20LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1); } break; case kHS20StonerGuy: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4); } else { @@ -373,7 +373,7 @@ void Scene20::run() { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); if (_stonerGuyShowingJoint) - _vm->_gnapActionStatus = kAS20GrabJoint; + _vm->_gnap->_actionStatus = kAS20GrabJoint; else _vm->playGnapImpossible(0, 0); break; @@ -381,9 +381,9 @@ void Scene20::run() { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); if (_vm->isFlag(kGFJointTaken)) - _vm->_gnapActionStatus = kAS20TalkStonerGuyNoJoint; + _vm->_gnap->_actionStatus = kAS20TalkStonerGuyNoJoint; else - _vm->_gnapActionStatus = kAS20TalkStonerGuyHasJoint; + _vm->_gnap->_actionStatus = kAS20TalkStonerGuyHasJoint; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -394,7 +394,7 @@ void Scene20::run() { break; case kHS20GroceryStoreGuy: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4); } else { @@ -406,12 +406,12 @@ void Scene20::run() { _stonerGuyShowingJoint = false; _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS20GrabGroceryStoreGuy; + _vm->_gnap->_actionStatus = kAS20GrabGroceryStoreGuy; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS20TalkGroceryStoreGuy; + _vm->_gnap->_actionStatus = kAS20TalkGroceryStoreGuy; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -422,11 +422,11 @@ void Scene20::run() { break; case kHS20GroceryStoreHat: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS20SwitchGroceryStoreHat; + _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHat; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6); } else { @@ -438,7 +438,7 @@ void Scene20::run() { _stonerGuyShowingJoint = false; _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS20GrabGroceryStoreHat; + _vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -469,14 +469,14 @@ void Scene20::run() { _vm->playSound(0x10940, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) { + if (_vm->_plat->_actionStatus < 0) { _vm->_hotspots[kHS20WalkArea1]._y2 += 48; _vm->updatePlatypusIdleSequence(); _vm->_hotspots[kHS20WalkArea1]._y2 -= 48; } - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) { _vm->_timers[5] = _vm->getRandom(50) + 130; if (_vm->getRandom(4) != 0) _nextGroceryStoreGuySequenceId = 0x17C; @@ -485,7 +485,7 @@ void Scene20::run() { } if (!_vm->_timers[7]) { _vm->_timers[7] = _vm->getRandom(100) + 100; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) { switch (_vm->getRandom(3)) { case 0: gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0); @@ -518,7 +518,7 @@ void Scene20::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS20LeaveScene: _vm->_sceneDone = true; break; @@ -552,13 +552,13 @@ void Scene20::updateAnimations() { _vm->_timers[6] = 200; _vm->_timers[4] = 100; _stonerGuyShowingJoint = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS20GrabJoint: _nextStonerGuySequenceId = 0x16A; break; case kAS20ActionDone: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS20TalkGroceryStoreGuy: gameSys.setAnimation(0x170, 21, 2); @@ -609,7 +609,7 @@ void Scene20::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->invRemove(kItemCowboyHat); _vm->invAdd(kItemGroceryStoreHat); - _vm->_gnapActionStatus = kAS20SwitchGroceryStoreHatDone; + _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHatDone; break; case kAS20SwitchGroceryStoreHatDone: gameSys.insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0); @@ -626,11 +626,11 @@ void Scene20::updateAnimations() { _vm->setGrabCursorSprite(kItemGroceryStoreHat); _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS20GrabJointDone: _vm->setGrabCursorSprite(kItemJoint); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -652,7 +652,7 @@ void Scene20::updateAnimations() { gameSys.insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x17D; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS20ActionDone; + _vm->_gnap->_actionStatus = kAS20ActionDone; gameSys.setAnimation(0x16D, 21, 2); gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0); _currStonerGuySequenceId = 0x16D; @@ -667,7 +667,7 @@ void Scene20::updateAnimations() { gameSys.insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x17E; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS20ActionDone; + _vm->_gnap->_actionStatus = kAS20ActionDone; gameSys.setAnimation(0x16D, 21, 2); gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0); _currStonerGuySequenceId = 0x16D; @@ -690,7 +690,7 @@ void Scene20::updateAnimations() { gameSys.insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0); _currGroceryStoreGuySequenceId = 0x175; _nextGroceryStoreGuySequenceId = -1; - _vm->_gnapActionStatus = kAS20ActionDone; + _vm->_gnap->_actionStatus = kAS20ActionDone; break; default: if (_nextGroceryStoreGuySequenceId != -1) { @@ -782,14 +782,14 @@ void Scene21::run() { switch (_vm->_sceneClickedHotspot) { case kHS21Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS21Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -815,7 +815,7 @@ void Scene21::run() { break; case kHS21Banana: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5); } else { @@ -827,7 +827,7 @@ void Scene21::run() { _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1); _vm->playGnapPullOutDevice(2, 5); _vm->playGnapUseDevice(0, 0); - _vm->_gnapActionStatus = kAS21GrabBanana; + _vm->_gnap->_actionStatus = kAS21GrabBanana; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -838,11 +838,11 @@ void Scene21::run() { break; case kHS21OldLady: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) { _vm->_newSceneNum = 47; _vm->gnapWalkTo(4, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS21UseHatWithOldLady; + _vm->_gnap->_actionStatus = kAS21UseHatWithOldLady; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(4, 6, 7, 4); } else { @@ -854,13 +854,13 @@ void Scene21::run() { _vm->_gnap->_idleFacing = kDirUpLeft; _vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS21GrabOldLady; + _vm->_gnap->_actionStatus = kAS21GrabOldLady; _vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady].x, _vm->_hotspotsWalkPos[kHS21OldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS21TalkOldLady; + _vm->_gnap->_actionStatus = kAS21TalkOldLady; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -871,11 +871,11 @@ void Scene21::run() { break; case kHS21ExitOutsideGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 20; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, 0, 0x107B3, 1); - _vm->_gnapActionStatus = kAS21LeaveScene; + _vm->_gnap->_actionStatus = kAS21LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1); } break; @@ -902,7 +902,7 @@ void Scene21::run() { if (!_vm->_isLeavingScene) { _vm->updatePlatypusIdleSequence(); _vm->updateGnapIdleSequence(); - if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnapActionStatus == -1) { + if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnap->_actionStatus == -1) { _vm->_timers[4] = _vm->getRandom(30) + 50; switch (_vm->getRandom(5)) { case 0: @@ -940,10 +940,10 @@ void Scene21::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS21TalkOldLady: _nextOldLadySequenceId = 0x8B; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS21GrabBanana: gameSys.setAnimation(0x8C, 59, 0); @@ -951,11 +951,11 @@ void Scene21::updateAnimations() { _vm->setFlag(kGFUnk04); _vm->invAdd(kItemBanana); updateHotspots(); - _vm->_gnapActionStatus = kAS21GrabBananaDone; + _vm->_gnap->_actionStatus = kAS21GrabBananaDone; break; case kAS21GrabBananaDone: _vm->setGrabCursorSprite(kItemBanana); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS21GrabOldLady: _vm->_timers[4] = _vm->getRandom(30) + 50; @@ -966,7 +966,7 @@ void Scene21::updateAnimations() { gameSys.insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x8F; - _vm->_gnapActionStatus = kAS21UseHatWithOldLadyDone; + _vm->_gnap->_actionStatus = kAS21UseHatWithOldLadyDone; _vm->invAdd(kItemTickets); _vm->invRemove(kItemGroceryStoreHat); _vm->setGrabCursorSprite(-1); @@ -987,13 +987,13 @@ void Scene21::updateAnimations() { gameSys.insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x86; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _currOldLadySequenceId = _nextOldLadySequenceId; _nextOldLadySequenceId = -1; } else if (_nextOldLadySequenceId == 0x91) { gameSys.setAnimation(0x91, 79, 0); gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS21LeaveScene; + _vm->_gnap->_actionStatus = kAS21LeaveScene; _currOldLadySequenceId = _nextOldLadySequenceId; _nextOldLadySequenceId = -1; } else { @@ -1098,14 +1098,14 @@ void Scene22::run() { switch (_vm->_sceneClickedHotspot) { case kHS22Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS22Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1131,27 +1131,27 @@ void Scene22::run() { break; case kHS22ExitOutsideGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 20; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS22LeaveScene; + _vm->_gnap->_actionStatus = kAS22LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y + 1, -1, 0x107C2, 1); } break; case kHS22ExitBackGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 23; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS22LeaveScene; + _vm->_gnap->_actionStatus = kAS22LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1); } break; case kHS22Cashier: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4); } else { @@ -1166,7 +1166,7 @@ void Scene22::run() { _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS22TalkCashier; + _vm->_gnap->_actionStatus = kAS22TalkCashier; break; case PLAT_CURSOR: _vm->gnapUseDeviceOnPlatypus(); @@ -1239,7 +1239,7 @@ void Scene22::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS22LeaveScene: _vm->_sceneDone = true; break; @@ -1247,7 +1247,7 @@ void Scene22::updateAnimations() { _nextCashierSequenceId = 0x5C; break; } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) { @@ -1322,14 +1322,14 @@ void Scene23::run() { switch (_vm->_sceneClickedHotspot) { case kHS23Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS23Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1355,7 +1355,7 @@ void Scene23::run() { break; case kHS23Cereals: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4); } else { @@ -1366,7 +1366,7 @@ void Scene23::run() { else { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS23LookCereals; + _vm->_gnap->_actionStatus = kAS23LookCereals; } break; case GRAB_CURSOR: @@ -1377,7 +1377,7 @@ void Scene23::run() { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); _vm->setFlag(kGFSceneFlag1); - _vm->_gnapActionStatus = kAS23GrabCereals; + _vm->_gnap->_actionStatus = kAS23GrabCereals; _vm->invAdd(kItemCereals); } break; @@ -1391,18 +1391,18 @@ void Scene23::run() { break; case kHS23ExitFrontGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 22; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS23LeaveScene; + _vm->_gnap->_actionStatus = kAS23LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1); } break; case kHS23WalkArea1: case kHS23WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -1419,7 +1419,7 @@ void Scene23::run() { if (!_vm->_isLeavingScene) { _vm->updatePlatypusIdleSequence(); _vm->updateGnapIdleSequence(); - if (!_vm->_timers[4] && _vm->_gnapActionStatus == -1) { + if (!_vm->_timers[4] && _vm->_gnap->_actionStatus == -1) { _vm->_timers[4] = _vm->getRandom(100) + 200; switch (_vm->getRandom(4)) { case 0: @@ -1467,10 +1467,10 @@ void Scene23::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS23LookCereals: _vm->showFullScreenSprite(0x48); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS23GrabCereals: gameSys.setAnimation(0xBE, _vm->_gnapId, 0); @@ -1478,11 +1478,11 @@ void Scene23::updateAnimations() { gameSys.requestRemoveSequence(0xBF, 2); _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0xBE; - _vm->_gnapActionStatus = kAS23GrabCerealsDone; + _vm->_gnap->_actionStatus = kAS23GrabCerealsDone; break; case kAS23GrabCerealsDone: _vm->setGrabCursorSprite(kItemCereals); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS23LeaveScene: _vm->_sceneDone = true; @@ -1591,14 +1591,14 @@ void Scene24::run() { switch (_vm->_sceneClickedHotspot) { case kHS24Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS24Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1624,22 +1624,22 @@ void Scene24::run() { break; case kHS24ExitCircusWorld: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 25; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS24LeaveScene; + _vm->_gnap->_actionStatus = kAS24LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1); } break; case kHS24ExitOutsideGrubCity: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 20; _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS24LeaveScene; + _vm->_gnap->_actionStatus = kAS24LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1); } break; @@ -1647,7 +1647,7 @@ void Scene24::run() { case kHS24WalkArea1: case kHS24WalkArea2: case kHS24WalkArea3: - if (_vm->_gnapActionStatus == -1) + if (_vm->_gnap->_actionStatus == -1) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -1729,9 +1729,9 @@ void Scene24::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - if (_vm->_gnapActionStatus == kAS24LeaveScene) + if (_vm->_gnap->_actionStatus == kAS24LeaveScene) _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } @@ -1837,14 +1837,14 @@ void Scene25::run() { switch (_vm->_sceneClickedHotspot) { case kHS25Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS25Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -1870,9 +1870,9 @@ void Scene25::run() { break; case kHS25TicketVendor: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemTickets) { - _vm->_gnapActionStatus = kAS25ShowTicketToVendor; + _vm->_gnap->_actionStatus = kAS25ShowTicketToVendor; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1); _vm->playGnapPullOutDevice(0, 0); @@ -1889,7 +1889,7 @@ void Scene25::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS25TalkTicketVendor; + _vm->_gnap->_actionStatus = kAS25TalkTicketVendor; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -1901,29 +1901,29 @@ void Scene25::run() { break; case kHS25ExitOutsideCircusWorld: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 24; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, 0, 0x107B4, 1); - _vm->_gnapActionStatus = kAS25LeaveScene; + _vm->_gnap->_actionStatus = kAS25LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1); } break; case kHS25ExitInsideCircusWorld: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFNeedleTaken)) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 26; _vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, 0, 0x107B1, 1); - _vm->_gnapActionStatus = kAS25LeaveScene; + _vm->_gnap->_actionStatus = kAS25LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, -1, 0x107C2, 1); _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE; } else { _vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(4, 5, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicket; + _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicket; _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE; } } @@ -1933,7 +1933,7 @@ void Scene25::run() { case kHS25Posters2: case kHS25Posters3: case kHS25Posters4: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(0, 0); } else { @@ -1961,7 +1961,7 @@ void Scene25::run() { case kHS25WalkArea1: case kHS25WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -1978,7 +1978,7 @@ void Scene25::run() { if (!_vm->_isLeavingScene) { _vm->updatePlatypusIdleSequence(); _vm->updateGnapIdleSequence(); - if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnapActionStatus == -1) { + if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnap->_actionStatus == -1) { _vm->_timers[4] = _vm->getRandom(20) + 20; switch (_vm->getRandom(13)) { case 0: @@ -2033,10 +2033,10 @@ void Scene25::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS25TalkTicketVendor: _nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS25EnterCircusWihoutTicket: _nextTicketVendorSequenceId = 0x5E; @@ -2050,10 +2050,10 @@ void Scene25::updateAnimations() { _vm->playGnapIdle(0, 0); _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1); _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicketDone; + _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone; break; case kAS25EnterCircusWihoutTicketDone: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS25ShowTicketToVendor: _vm->setGrabCursorSprite(-1); @@ -2061,7 +2061,7 @@ void Scene25::updateAnimations() { _vm->setFlag(kGFNeedleTaken); gameSys.setAnimation(0x61, 40, 0); gameSys.insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = kAS25ShowTicketToVendorDone; + _vm->_gnap->_actionStatus = kAS25ShowTicketToVendorDone; break; case kAS25ShowTicketToVendorDone: _nextTicketVendorSequenceId = 0x53; @@ -2077,7 +2077,7 @@ void Scene25::updateAnimations() { gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0); _currTicketVendorSequenceId = _nextTicketVendorSequenceId; _nextTicketVendorSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } else if (_nextTicketVendorSequenceId != -1) { gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3); gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0); @@ -2154,14 +2154,14 @@ void Scene26::run() { switch (_vm->_sceneClickedHotspot) { case kHS26Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS26Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2187,53 +2187,53 @@ void Scene26::run() { break; case kHS26ExitOutsideCircusWorld: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 25; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS26LeaveScene; + _vm->_gnap->_actionStatus = kAS26LeaveScene; } break; case kHS26ExitOutsideClown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 27; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS26LeaveScene; + _vm->_gnap->_actionStatus = kAS26LeaveScene; } break; case kHS26ExitArcade: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 29; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS26LeaveScene; + _vm->_gnap->_actionStatus = kAS26LeaveScene; } break; case kHS26ExitElephant: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 30; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS26LeaveScene; + _vm->_gnap->_actionStatus = kAS26LeaveScene; } break; case kHS26ExitBeerStand: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 31; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS26LeaveScene; + _vm->_gnap->_actionStatus = kAS26LeaveScene; } break; case kHS26WalkArea1: case kHS26WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -2288,9 +2288,9 @@ void Scene26::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - if (_vm->_gnapActionStatus == kAS26LeaveScene) + if (_vm->_gnap->_actionStatus == kAS26LeaveScene) _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) { @@ -2382,20 +2382,20 @@ void Scene27::run() { _vm->updateMouseCursor(); _vm->updateCursorByHotspot(); _vm->_sceneClickedHotspot = -1; - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->_sceneClickedHotspot = _vm->getClickedHotspotId(); _vm->updateGrabCursorSprite(0, 0); switch (_vm->_sceneClickedHotspot) { case kHS27Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS27Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2421,11 +2421,11 @@ void Scene27::run() { break; case kHS27Janitor: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemPicture) { _vm->_gnap->_idleFacing = kDirUpLeft; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, 0x107BC, 1)) - _vm->_gnapActionStatus = kAS27ShowPictureToJanitor; + _vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3); } else { @@ -2436,7 +2436,7 @@ void Scene27::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS27TalkJanitor; + _vm->_gnap->_actionStatus = kAS27TalkJanitor; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -2448,7 +2448,7 @@ void Scene27::run() { break; case kHS27Bucket: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3); } else { @@ -2459,7 +2459,7 @@ void Scene27::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS27GrabBucket; + _vm->_gnap->_actionStatus = kAS27GrabBucket; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -2471,59 +2471,59 @@ void Scene27::run() { break; case kHS27ExitCircus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 26; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS27LeaveScene; + _vm->_gnap->_actionStatus = kAS27LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, -1, 0x107C7, 1); } break; case kHS27ExitArcade: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 29; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS27LeaveScene; + _vm->_gnap->_actionStatus = kAS27LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade].x, _vm->_hotspotsWalkPos[kHS27ExitArcade].y + 1, -1, 0x107CF, 1); } break; case kHS27ExitBeerStand: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 31; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS27LeaveScene; + _vm->_gnap->_actionStatus = kAS27LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand].x, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y + 1, -1, 0x107CD, 1); } break; case kHS27ExitClown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFPlatypus)) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 28; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, _vm->_hotspotsWalkPos[kHS27ExitClown].y, 0, 0x107AD, 1); - _vm->_gnapActionStatus = kAS27LeaveScene; + _vm->_gnap->_actionStatus = kAS27LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x + 1, _vm->_hotspotsWalkPos[kHS27ExitClown].y, -1, 0x107C4, 1); } else { _vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7, 0, 0x107BC, 1); _vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE; - _vm->_gnapActionStatus = kAS27TryEnterClownTent; + _vm->_gnap->_actionStatus = kAS27TryEnterClownTent; } } break; case kHS27WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -2538,13 +2538,13 @@ void Scene27::run() { if (!_vm->_isLeavingScene) { _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (_vm->_debugLevel == 4) _vm->updateIdleTimer(); if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(20) + 60; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->getRandom(3) != 0) _nextJanitorSequenceId = 0xCB; else @@ -2553,7 +2553,7 @@ void Scene27::run() { } if (!_vm->_timers[7]) { _vm->_timers[7] = _vm->getRandom(100) + 300; - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) gameSys.insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0); } _vm->playSoundB(); @@ -2576,7 +2576,7 @@ void Scene27::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS27TalkJanitor: switch (_vm->getRandom(3)) { case 0: @@ -2598,11 +2598,11 @@ void Scene27::updateAnimations() { _vm->setFlag(kGFUnk13); gameSys.setAnimation(0xD2, 39, 0); gameSys.insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS27GrabBucketDone; + _vm->_gnap->_actionStatus = kAS27GrabBucketDone; break; case kAS27GrabBucketDone: _vm->setGrabCursorSprite(kItemEmptyBucket); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS27ShowPictureToJanitor: _nextJanitorSequenceId = 0xD0; @@ -2614,17 +2614,17 @@ void Scene27::updateAnimations() { gameSys.setAnimation(_nextJanitorSequenceId, 39, 0); _currJanitorSequenceId = _nextJanitorSequenceId; _nextJanitorSequenceId = -1; - _vm->_gnapActionStatus = kAS27TryEnterClownTentDone; + _vm->_gnap->_actionStatus = kAS27TryEnterClownTentDone; break; case kAS27TryEnterClownTentDone: _vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1); _vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS27EnterClownTent: _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107B2, 1); - _vm->_gnapActionStatus = kAS27LeaveScene; + _vm->_gnap->_actionStatus = kAS27LeaveScene; break; case kAS27LeaveScene: _vm->_sceneDone = true; @@ -2644,7 +2644,7 @@ void Scene27::updateAnimations() { case 0xCC: case 0xCD: case 0xCE: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextJanitorSequenceId, 39, 3); gameSys.setAnimation(_nextJanitorSequenceId, 39, 0); @@ -2657,7 +2657,7 @@ void Scene27::updateAnimations() { _vm->playGnapUseDevice(0, 0); gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextJanitorSequenceId, 39, 0); - _vm->_gnapActionStatus = kAS27EnterClownTent; + _vm->_gnap->_actionStatus = kAS27EnterClownTent; _currJanitorSequenceId = _nextJanitorSequenceId; _nextJanitorSequenceId = -1; _vm->setFlag(kGFPlatypus); @@ -2742,12 +2742,12 @@ void Scene28::run() { gameSys.insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0); _nextClownSequenceId = -1; _vm->_timers[4] = _vm->getRandom(20) + 80; - _vm->_gnapActionStatus = kAS28GnapWaiting; + _vm->_gnap->_actionStatus = kAS28GnapWaiting; while (gameSys.getAnimationStatus(3) != 2) { _vm->gameUpdateTick(); _vm->updateMouseCursor(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } while (!_vm->_sceneDone) { @@ -2759,14 +2759,14 @@ void Scene28::run() { switch (_vm->_sceneClickedHotspot) { case kHS28Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS28Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2792,7 +2792,7 @@ void Scene28::run() { break; case kHS28Horn: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(2, 8, 3, 4); } else { @@ -2804,7 +2804,7 @@ void Scene28::run() { if (_vm->isFlag(kGFUnk21)) { if (!_vm->invHas(kItemHorn)) { _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS28GrabHornSuccess; + _vm->_gnap->_actionStatus = kAS28GrabHornSuccess; } } else { _vm->_gnap->_idleFacing = kDirUpLeft; @@ -2812,7 +2812,7 @@ void Scene28::run() { _vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y, 0, 0x107BB, 1); _vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS28GrabHornFails; + _vm->_gnap->_actionStatus = kAS28GrabHornFails; } break; case TALK_CURSOR: @@ -2825,7 +2825,7 @@ void Scene28::run() { break; case kHS28Clown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->isFlag(kGFUnk21)) { if (_vm->_verbCursor == LOOK_CURSOR) _vm->playGnapScratchingHead(5, 2); @@ -2836,13 +2836,13 @@ void Scene28::run() { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1); _vm->playGnapPullOutDevice(0, 0); _vm->playGnapUseDevice(0, 0); - _vm->_gnapActionStatus = kAS28UseBeerBucketWithClown; + _vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown; } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) { _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1); _vm->playGnapPullOutDevice(0, 0); _vm->playGnapUseDevice(0, 0); - _vm->_gnapActionStatus = kAS28UsePillBucketWithClown; + _vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4); } else { @@ -2853,7 +2853,7 @@ void Scene28::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS28TalkClown; + _vm->_gnap->_actionStatus = kAS28TalkClown; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -2865,19 +2865,19 @@ void Scene28::run() { break; case kHS28ExitOutsideClown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 27; _vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, 0, 0x107BF, 1); - _vm->_gnapActionStatus = kAS28LeaveScene; + _vm->_gnap->_actionStatus = kAS28LeaveScene; _vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, -1, 0x107C2, 1); } break; case kHS28EmptyBucket: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6); } else if (_vm->isFlag(kGFUnk21)) { @@ -2889,7 +2889,7 @@ void Scene28::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1); - _vm->_gnapActionStatus = kAS28GrabEmptyBucket; + _vm->_gnap->_actionStatus = kAS28GrabEmptyBucket; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -2902,12 +2902,12 @@ void Scene28::run() { case kHS28WalkArea1: case kHS28WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -2924,7 +2924,7 @@ void Scene28::run() { _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(20) + 80; - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFUnk21)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFUnk21)) _nextClownSequenceId = 0x114; } } @@ -2946,7 +2946,7 @@ void Scene28::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS28UseBeerBucketWithClown: _vm->setFlag(kGFUnk22); _nextClownSequenceId = 0x113; @@ -2968,7 +2968,7 @@ void Scene28::updateAnimations() { _vm->playGnapUseDevice(0, 0); gameSys.setAnimation(0x117, 59, 0); gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS28GrabHornSuccessDone; + _vm->_gnap->_actionStatus = kAS28GrabHornSuccessDone; break; case kAS28GrabHornSuccessDone: _vm->hideCursor(); @@ -2983,21 +2983,21 @@ void Scene28::updateAnimations() { _vm->setGrabCursorSprite(kItemHorn); _vm->invAdd(kItemHorn); updateHotspots(); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS28GrabEmptyBucket: _vm->playGnapPullOutDevice(0, 0); _vm->playGnapUseDevice(0, 0); gameSys.setAnimation(0x111, 99, 0); gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS28GrabEmptyBucketDone; + _vm->_gnap->_actionStatus = kAS28GrabEmptyBucketDone; break; case kAS28GrabEmptyBucketDone: _vm->setGrabCursorSprite(kItemEmptyBucket); _vm->clearFlag(kGFUnk22);; updateHotspots(); _vm->invAdd(kItemEmptyBucket); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS28GrabHornFailsDone: gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY); @@ -3006,7 +3006,7 @@ void Scene28::updateAnimations() { gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0); _currClownSequenceId = 0x11B; _nextClownSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->gnapWalkTo(2, 8, -1, 0x107BB, 1); break; case kAS28TalkClown: @@ -3019,7 +3019,7 @@ void Scene28::updateAnimations() { _nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original? break; case kAS28GnapWaiting: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS28LeaveScene: _vm->_sceneDone = true; @@ -3037,7 +3037,7 @@ void Scene28::updateAnimations() { gameSys.insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0); _currClownSequenceId = 0x11B; _nextClownSequenceId = -1; - _vm->_gnapActionStatus = kAS28GnapWaiting; + _vm->_gnap->_actionStatus = kAS28GnapWaiting; break; case 0x116: _vm->setGrabCursorSprite(-1); @@ -3048,18 +3048,18 @@ void Scene28::updateAnimations() { gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0); _currClownSequenceId = _nextClownSequenceId; _nextClownSequenceId = -1; - _vm->_gnapActionStatus = kAS28GnapWaiting; + _vm->_gnap->_actionStatus = kAS28GnapWaiting; break; case 0x11D: case 0x11E: case 0x11F: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case 0x119: gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextClownSequenceId, 39, 0); gameSys.removeSequence(_currClownSequenceId, 39, true); - _vm->_gnapActionStatus = kAS28GrabHornFailsDone; + _vm->_gnap->_actionStatus = kAS28GrabHornFailsDone; _vm->_gnapSequenceId = _nextClownSequenceId; _vm->_gnapSequenceDatNum = 0; _nextClownSequenceId = -1; @@ -3150,14 +3150,14 @@ void Scene29::run() { switch (_vm->_sceneClickedHotspot) { case kHS29Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS29Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -3183,11 +3183,11 @@ void Scene29::run() { break; case kHS29Monkey: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemBanana) { _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS29UseBananaWithMonkey; + _vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey; _vm->_newSceneNum = 51; _vm->_isLeavingScene = true; _vm->setGrabCursorSprite(-1); @@ -3211,34 +3211,34 @@ void Scene29::run() { break; case kHS29ExitCircus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 26; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS29LeaveScene; + _vm->_gnap->_actionStatus = kAS29LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, -1, -1, 1); } break; case kHS29ExitOutsideClown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 27; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS29LeaveScene; + _vm->_gnap->_actionStatus = kAS29LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y - 1, -1, 0x107CD, 1); } break; case kHS29Aracde: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) { _vm->setGrabCursorSprite(-1); _vm->_isLeavingScene = true; _vm->_newSceneNum = 52; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 0, -1, 1); _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y); - _vm->_gnapActionStatus = kAS29LeaveScene; + _vm->_gnap->_actionStatus = kAS29LeaveScene; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3); } else { @@ -3257,7 +3257,7 @@ void Scene29::run() { break; case kHS29WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -3275,14 +3275,14 @@ void Scene29::run() { _vm->playSound(0x1093B, true); if (!_vm->_isLeavingScene) { - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->updateGnapIdleSequence(); _vm->updatePlatypusIdleSequence(); } if (!_vm->_timers[4]) { if (_vm->invHas(kItemHorn)) { _vm->_timers[4] = _vm->getRandom(20) + 60; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { switch (_vm->getRandom(5)) { case 0: _nextManSequenceId = 0xED; @@ -3323,7 +3323,7 @@ void Scene29::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS29UseBananaWithMonkey: _nextMonkeySequenceId = 0xE5; break; @@ -3349,7 +3349,7 @@ void Scene29::updateAnimations() { gameSys.setAnimation(0, 159, 4); gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0); gameSys.insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = kAS29LeaveScene; + _vm->_gnap->_actionStatus = kAS29LeaveScene; _currMonkeySequenceId = 0xE6; _nextMonkeySequenceId = -1; _vm->_timers[5] = 30; diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp index 0e14ea9e3e..0698abb060 100644 --- a/engines/gnap/scenes/group3.cpp +++ b/engines/gnap/scenes/group3.cpp @@ -79,14 +79,14 @@ void Scene30::run() { switch (_vm->_sceneClickedHotspot) { case kHS30Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS30Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -112,12 +112,12 @@ void Scene30::run() { break; case kHS30PillMachine: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) { _vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 0, 0x107BC, 1); _vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS30UsePillMachine; + _vm->_gnap->_actionStatus = kAS30UsePillMachine; hasTakenPill = true; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5); @@ -125,7 +125,7 @@ void Scene30::run() { switch (_vm->_verbCursor) { case LOOK_CURSOR: _vm->gnapWalkTo(9, 8, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS30LookPillMachine; + _vm->_gnap->_actionStatus = kAS30LookPillMachine; break; case GRAB_CURSOR: _vm->playGnapScratchingHead(8, 5); @@ -140,20 +140,20 @@ void Scene30::run() { break; case kHS30ExitCircus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; if (hasTakenPill) _vm->_newSceneNum = 47; else _vm->_newSceneNum = 26; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS30LeaveScene; + _vm->_gnap->_actionStatus = kAS30LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, -1, 0x107C2, 1); } break; case kHS30WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -172,11 +172,11 @@ void Scene30::run() { if (!_vm->_isLeavingScene) { _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(100) + 300; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->getRandom(5) == 1) { gameSys.insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0); gameSys.insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0); @@ -188,7 +188,7 @@ void Scene30::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(50) + 180; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (!_vm->isFlag(kGFUnk23) || hasTakenPill) gameSys.insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0); else @@ -215,7 +215,7 @@ void Scene30::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS30LeaveScene: _vm->_sceneDone = true; break; @@ -225,7 +225,7 @@ void Scene30::updateAnimations() { gameSys.insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x105; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS30UsePillMachine2; + _vm->_gnap->_actionStatus = kAS30UsePillMachine2; break; case kAS30UsePillMachine2: _vm->hideCursor(); @@ -240,7 +240,7 @@ void Scene30::updateAnimations() { gameSys.insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0); _vm->removeFullScreenSprite(); _vm->showCursor(); - _vm->_gnapActionStatus = kAS30UsePillMachine3; + _vm->_gnap->_actionStatus = kAS30UsePillMachine3; _vm->invAdd(kItemPill); _vm->setFlag(kGFUnk23); break; @@ -249,20 +249,20 @@ void Scene30::updateAnimations() { gameSys.insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x104; _vm->_gnapSequenceDatNum = 0; - _vm->_gnapActionStatus = kAS30UsePillMachine4; + _vm->_gnap->_actionStatus = kAS30UsePillMachine4; _vm->setGrabCursorSprite(kItemDiceQuarterHole); break; case kAS30UsePillMachine4: gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0); _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS30LookPillMachine: if (_vm->isFlag(kGFUnk23)) _vm->showFullScreenSprite(0xE3); else _vm->showFullScreenSprite(0xE2); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -334,14 +334,14 @@ void Scene31::run() { switch (_vm->_sceneClickedHotspot) { case kHS31Device: - if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) { + if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) { _vm->runMenu(); updateHotspots(); } break; case kHS31Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemJoint) { _vm->gnapUseJointOnPlatypus(); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -367,8 +367,8 @@ void Scene31::run() { break; case kHS31MeasuringClown: - if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) { - if (_vm->_gnapActionStatus == kAS31PlatMeasuringClown) { + if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) { + if (_vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) { if (_vm->_verbCursor == LOOK_CURSOR) _vm->playGnapScratchingHead(2, 2); else @@ -385,7 +385,7 @@ void Scene31::run() { _vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 0, 0x107B9, 1); _vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_gnapActionStatus = kAS31UseMeasuringClown; + _vm->_gnap->_actionStatus = kAS31UseMeasuringClown; _vm->_timers[4] = 300; break; case TALK_CURSOR: @@ -398,8 +398,8 @@ void Scene31::run() { _vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 1, 0x107C2, 1); _vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE; - _vm->_platypusActionStatus = kAS31PlatMeasuringClown; - _vm->_gnapActionStatus = kAS31PlatMeasuringClown; + _vm->_plat->_actionStatus = kAS31PlatMeasuringClown; + _vm->_gnap->_actionStatus = kAS31PlatMeasuringClown; _vm->_timers[4] = 300; } else _vm->playGnapImpossible(0, 0); @@ -410,7 +410,7 @@ void Scene31::run() { break; case kHS31BeerBarrel: - if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) { + if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) { if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) { _vm->setGrabCursorSprite(-1); _vm->gnapWalkTo(_vm->_gnap->_pos, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1); @@ -419,7 +419,7 @@ void Scene31::run() { _vm->playGnapPullOutDevice(6, 8); _vm->playGnapUseDevice(0, 0); _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeer; + _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer; _vm->_timers[4] = 300; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2); @@ -433,7 +433,7 @@ void Scene31::run() { _vm->playGnapScratchingHead(6, 2); } else { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS31UseBeerBarrel; + _vm->_gnap->_actionStatus = kAS31UseBeerBarrel; _vm->_gnap->_idleFacing = kDirUpLeft; } break; @@ -447,27 +447,27 @@ void Scene31::run() { break; case kHS31ExitCircus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 26; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS31LeaveScene; + _vm->_gnap->_actionStatus = kAS31LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, -1, -1, 1); } break; case kHS31ExitOutsideClown: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_newSceneNum = 27; _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS31LeaveScene; + _vm->_gnap->_actionStatus = kAS31LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y + 1, -1, 0x107CF, 1); } break; case kHS31WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; @@ -485,13 +485,13 @@ void Scene31::run() { _vm->playSound(0x1093B, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(20) + 60; - if (_vm->_gnapActionStatus < 0 && _nextClerkSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _nextClerkSequenceId == -1) { switch (_vm->getRandom(6)){ case 0: _nextClerkSequenceId = 0xFF; @@ -510,7 +510,7 @@ void Scene31::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(50) + 180; - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->getRandom(2) != 0) gameSys.insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0); else @@ -537,7 +537,7 @@ void Scene31::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS31UseBeerBarrel: _nextClerkSequenceId = 0xFE; break; @@ -548,14 +548,14 @@ void Scene31::updateAnimations() { _vm->_gnapSequenceDatNum = 0; _vm->_gnapSequenceId = 0x102; _vm->_gnapId = 59; - _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeerDone; + _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeerDone; break; case kAS31FillEmptyBucketWithBeerDone: _vm->_gnap->_idleFacing = kDirBottomLeft; _vm->playGnapPullOutDevice(0, 0); _vm->playGnapUseDevice(0, 0); gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->invAdd(kItemBucketWithBeer); _vm->invRemove(kItemEmptyBucket); _vm->setGrabCursorSprite(kItemBucketWithBeer); @@ -566,14 +566,14 @@ void Scene31::updateAnimations() { break; case kAS31LeaveScene: _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - if (_vm->_platypusActionStatus == kAS31PlatMeasuringClown) { + if (_vm->_plat->_actionStatus == kAS31PlatMeasuringClown) { _vm->_sceneWaiting = true; _beerGuyDistracted = true; _nextClerkSequenceId = 0xFA; @@ -593,14 +593,14 @@ void Scene31::updateAnimations() { case 0xFC: ++_clerkMeasureCtr; if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) { - if (_vm->_gnapActionStatus != 5) - _vm->_platypusActionStatus = -1; + if (_vm->_gnap->_actionStatus != 5) + _vm->_plat->_actionStatus = -1; _vm->_timers[0] = 40; gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0); _currClerkSequenceId = 0xFD; _nextClerkSequenceId = -1; - if (_vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeer) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeer) + _vm->_gnap->_actionStatus = -1; _beerGuyDistracted = false; _clerkMeasureMaxCtr = 3; gameSys.setAnimation(0xFD, 39, 3); @@ -617,7 +617,7 @@ void Scene31::updateAnimations() { gameSys.setAnimation(_nextClerkSequenceId, 39, 3); _currClerkSequenceId = _nextClerkSequenceId; _nextClerkSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; default: if (_nextClerkSequenceId != -1) { @@ -685,14 +685,14 @@ void Scene32::run() { switch (_vm->_sceneClickedHotspot) { case kHS32Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS32Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -716,11 +716,11 @@ void Scene32::run() { break; case kHS32ExitTruck: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->setGrabCursorSprite(-1); _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS32LeaveScene; + _vm->_gnap->_actionStatus = kAS32LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y + 1, -1, 0x107CD, 1); _vm->_newSceneNum = 33; } @@ -734,13 +734,13 @@ void Scene32::run() { case kHS32WalkArea6: case kHS32WalkArea7: case kHS32WalkArea8: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = 0; } @@ -751,9 +751,9 @@ void Scene32::run() { _vm->playSound(0x1091C, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(100) + 300; @@ -781,7 +781,7 @@ void Scene32::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - if (_vm->_gnapActionStatus == kAS32LeaveScene) + if (_vm->_gnap->_actionStatus == kAS32LeaveScene) _vm->_sceneDone = true; } } @@ -861,14 +861,14 @@ void Scene33::run() { switch (_vm->_sceneClickedHotspot) { case kHS33Device: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } break; case kHS33Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -892,7 +892,7 @@ void Scene33::run() { break; case kHS33Chicken: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(7, 9, 9, 8); } else { @@ -900,14 +900,14 @@ void Scene33::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1)) - _vm->_gnapActionStatus = kAS33UseChicken; + _vm->_gnap->_actionStatus = kAS33UseChicken; else - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirBottomRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS33TalkChicken; + _vm->_gnap->_actionStatus = kAS33TalkChicken; break; case LOOK_CURSOR: case PLAT_CURSOR: @@ -919,9 +919,9 @@ void Scene33::run() { break; case kHS33ExitHouse: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; - _vm->_gnapActionStatus = kAS33LeaveScene; + _vm->_gnap->_actionStatus = kAS33LeaveScene; _vm->_newSceneNum = 37; if (_vm->_gnap->_pos.x > 6) _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1); @@ -931,9 +931,9 @@ void Scene33::run() { break; case kHS33ExitBarn: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; - _vm->_gnapActionStatus = kAS33LeaveScene; + _vm->_gnap->_actionStatus = kAS33LeaveScene; _vm->_newSceneNum = 35; if (_vm->_gnap->_pos.x > 7) _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1); @@ -943,20 +943,20 @@ void Scene33::run() { break; case kHS33ExitCreek: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS33LeaveScene; + _vm->_gnap->_actionStatus = kAS33LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, -1, 0x107CD, 1); _vm->_newSceneNum = 34; } break; case kHS33ExitPigpen: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS33LeaveScene; + _vm->_gnap->_actionStatus = kAS33LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, -1, 0x107CF, 1); _vm->_newSceneNum = 32; } @@ -964,12 +964,12 @@ void Scene33::run() { case kHS33WalkArea1: case kHS33WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -982,9 +982,9 @@ void Scene33::run() { _vm->playSound(0x1091C, true); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(100) + 300; @@ -993,7 +993,7 @@ void Scene33::run() { else gameSys.insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0); } - if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kAS33TalkChicken && _vm->_gnapActionStatus != kAS33UseChicken) { + if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != kAS33TalkChicken && _vm->_gnap->_actionStatus != kAS33UseChicken) { if (_vm->getRandom(6) != 0) { _nextChickenSequenceId = 0x7E; _vm->_timers[5] = _vm->getRandom(20) + 30; @@ -1020,7 +1020,7 @@ void Scene33::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS33LeaveScene: _vm->_sceneDone = true; break; @@ -1038,11 +1038,11 @@ void Scene33::updateAnimations() { _currChickenSequenceId = 0x7E; gameSys.setAnimation(0x7E, 179, 2); gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->_timers[5] = 30; break; default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -1054,14 +1054,14 @@ void Scene33::updateAnimations() { gameSys.removeSequence(_currChickenSequenceId, 179, true); _nextChickenSequenceId = -1; _currChickenSequenceId = -1; - _vm->_gnapActionStatus = kAS33UseChickenDone; + _vm->_gnap->_actionStatus = kAS33UseChickenDone; _vm->_timers[5] = 500; } else if (_nextChickenSequenceId == 0x7F) { gameSys.setAnimation(_nextChickenSequenceId, 179, 2); gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0); _currChickenSequenceId = _nextChickenSequenceId; _nextChickenSequenceId = -1; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } else if (_nextChickenSequenceId != -1) { gameSys.setAnimation(_nextChickenSequenceId, 179, 2); gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0); @@ -1098,21 +1098,21 @@ void Scene38::updateHotspots() { _vm->setHotspot(kHS38WalkArea5, 770, 0, 799, 445); _vm->setHotspot(kHS38WalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED); _vm->setDeviceHotspot(kHS38Device, -1, -1, -1, -1); - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_hotspots[kHS38Platypus]._flags = SF_WALKABLE | SF_DISABLED; - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR; - else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) + else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) _vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR; - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_DISABLED; - else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) + else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) _vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR; - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_DISABLED; - else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) + else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) _vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR; - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_hotspots[kHS38WalkArea6]._flags = SF_NONE; _vm->_hotspotsCount = 13; } @@ -1144,8 +1144,8 @@ void Scene38::run() { break; case kHS38Platypus: - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) { - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) { + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -1168,42 +1168,42 @@ void Scene38::run() { break; case kHS38ExitHouse: - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) { - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) { + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; } else { _vm->_isLeavingScene = true; _vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS38LeaveScene; + _vm->_gnap->_actionStatus = kAS38LeaveScene; _vm->_newSceneNum = 37; } break; case kHS38ExitCave: - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) { - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) { + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->_isLeavingScene = true; - } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) { + } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) { _vm->_sceneWaiting = false; _vm->_isLeavingScene = true; _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1); _vm->_newSceneNum = 39; - _vm->_gnapActionStatus = kAS38ExitCave; + _vm->_gnap->_actionStatus = kAS38ExitCave; } break; case kHS38TrapDoorLid1: case kHS38TrapDoorLid2: - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) { - if (_vm->_verbCursor == PLAT_CURSOR && _vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor) - _vm->_gnapActionStatus = kAS38UsePlatypusWithTrapDoor; + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) { + if (_vm->_verbCursor == PLAT_CURSOR && _vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor) + _vm->_gnap->_actionStatus = kAS38UsePlatypusWithTrapDoor; else - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; } break; case kHS38HuntingTrophy: - if (_vm->_gnapActionStatus != kAS38HoldingHuntingTrophy) { + if (_vm->_gnap->_actionStatus != kAS38HoldingHuntingTrophy) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(3, 6, 2, 0); } else { @@ -1212,12 +1212,12 @@ void Scene38::run() { _vm->playGnapScratchingHead(0, 0); break; case GRAB_CURSOR: - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) _vm->playGnapImpossible(0, 0); else { _vm->gnapWalkTo(3, 6, 0, 0x107BB, 1); _vm->platypusWalkTo(4, 8, -1, -1, 1); - _vm->_gnapActionStatus = kAS38UseHuntingTrophy; + _vm->_gnap->_actionStatus = kAS38UseHuntingTrophy; } break; case TALK_CURSOR: @@ -1240,17 +1240,17 @@ void Scene38::run() { case kHS38WalkArea4: case kHS38WalkArea5: case kHS38WalkArea6: - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; - else if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; + else if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: if (_vm->_mouseClickState._left) { - if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) - _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy; - else if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) + _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy; + else if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -1281,7 +1281,7 @@ void Scene38::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS38LeaveScene: _vm->_sceneDone = true; break; @@ -1291,7 +1291,7 @@ void Scene38::updateAnimations() { _vm->_gnapSequenceId = 0xA3; _vm->_gnapSequenceDatNum = 0; gameSys.setAnimation(0xA3, _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS38LeaveScene; + _vm->_gnap->_actionStatus = kAS38LeaveScene; break; case kAS38UseHuntingTrophy: gameSys.removeSequence(0x9B, 0, true); @@ -1299,11 +1299,11 @@ void Scene38::updateAnimations() { _vm->_gnapSequenceId = 0x9C; _vm->_gnapSequenceDatNum = 0; gameSys.setAnimation(0x9C, _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy; + _vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy; updateHotspots(); break; case kAS38HoldingHuntingTrophy: - if (_vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor) + if (_vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor) _vm->_sceneWaiting = true; if (_vm->_gnapSequenceId == 0xA4) { gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -1318,8 +1318,8 @@ void Scene38::updateAnimations() { case kAS38ReleaseHuntingTrophy: if (_vm->_gnapSequenceId == 0x9E) { gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0); - _vm->_gnapActionStatus = -1; - } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) { + _vm->_gnap->_actionStatus = -1; + } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) { gameSys.insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0xA0; _vm->_gnapSequenceDatNum = 0; @@ -1329,9 +1329,9 @@ void Scene38::updateAnimations() { _vm->_sceneWaiting = false; _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1); _vm->_newSceneNum = 39; - _vm->_gnapActionStatus = kAS38ExitCave; + _vm->_gnap->_actionStatus = kAS38ExitCave; } else { - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } else { gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); @@ -1350,7 +1350,7 @@ void Scene38::updateAnimations() { _vm->_gnapSequenceId = 0x9F; _vm->_gnapSequenceDatNum = 0; gameSys.setAnimation(0x9F, _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy; + _vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy; if (_vm->_plat->_idleFacing != kDirNone) _vm->playPlatypusSequence(0x107D5); else @@ -1361,7 +1361,7 @@ void Scene38::updateAnimations() { _vm->_platypusSequenceDatNum = 0; _vm->_platypusId = _vm->_gnapId + 1; gameSys.setAnimation(0xA1, _vm->_gnapId + 1, 1); - _vm->_platypusActionStatus = kAS38PlatypusHoldingTrapDoor; + _vm->_plat->_actionStatus = kAS38PlatypusHoldingTrapDoor; updateHotspots(); break; } @@ -1369,7 +1369,7 @@ void Scene38::updateAnimations() { if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) { + if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) { gameSys.insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); _vm->_platypusSequenceId = 0xA2; _vm->_platypusSequenceDatNum = 0; @@ -1451,7 +1451,7 @@ void Scene39::run() { break; case kHS39Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -1475,17 +1475,17 @@ void Scene39::run() { break; case kHS39ExitUfoParty: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->_sceneDone = true; _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS39LeaveScene; + _vm->_gnap->_actionStatus = kAS39LeaveScene; _vm->_newSceneNum = 40; } break; case kHS39Sign: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(0, 0); } else { @@ -1506,7 +1506,7 @@ void Scene39::run() { break; case kHS39ExitInsideHouse: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_sceneDone = true; _vm->_isLeavingScene = true; _vm->_newSceneNum = 38; @@ -1515,12 +1515,12 @@ void Scene39::run() { case kHS39WalkArea1: case kHS39WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->gnapWalkTo(-1, -1, -1, -1, 1); _vm->_mouseClickState._left = false; } @@ -1530,9 +1530,9 @@ void Scene39::run() { updateAnimations(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->updateGnapIdleSequence(); if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(20) + 50; @@ -1571,10 +1571,10 @@ void Scene39::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - if (_vm->_gnapActionStatus == kAS39LeaveScene) + if (_vm->_gnap->_actionStatus == kAS39LeaveScene) _vm->_sceneDone = true; else - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) { diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp index 861283af34..7ecaf23dd2 100644 --- a/engines/gnap/scenes/group4.cpp +++ b/engines/gnap/scenes/group4.cpp @@ -74,7 +74,7 @@ void Scene40::run() { break; case kHS40Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -98,56 +98,56 @@ void Scene40::run() { break; case kHS40ExitCave: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 39; _vm->_sceneDone = true; } break; case kHS40ExitToyStand: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 41; _vm->_sceneDone = true; } break; case kHS40ExitBBQ: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 42; _vm->_sceneDone = true; } break; case kHS40ExitUfo: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 43; _vm->_sceneDone = true; } break; case kHS40ExitKissinBooth: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 44; _vm->_sceneDone = true; } break; case kHS40ExitDancefloor: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 45; _vm->_sceneDone = true; } break; case kHS40ExitShoe: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_newSceneNum = 46; _vm->_sceneDone = true; } break; default: - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) _vm->_mouseClickState._left = false; break; @@ -171,8 +171,8 @@ void Scene40::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - if (_vm->_gnapActionStatus) - _vm->_gnapActionStatus = -1; + if (_vm->_gnap->_actionStatus) + _vm->_gnap->_actionStatus = -1; else _vm->_sceneDone = true; } @@ -228,7 +228,7 @@ void Scene41::run() { if (_vm->_toyUfoY < 0 || _vm->_toyUfoY > 300) _vm->_toyUfoY = 150; if (!_vm->_timers[9]) - _vm->_gnapActionStatus = kAS41GiveBackToyUfo; + _vm->_gnap->_actionStatus = kAS41GiveBackToyUfo; } else { if (!_vm->isFlag(kGFUnk16) && !_vm->isFlag(kGFJointTaken) && !_vm->isFlag(kGFUnk18) && !_vm->isFlag(kGFGroceryStoreHatTaken)) _vm->toyUfoSetStatus(kGFUnk16); @@ -349,7 +349,7 @@ void Scene41::run() { break; case kHS41Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -375,14 +375,14 @@ void Scene41::run() { case kHS41ExitCave: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave].x, _vm->_hotspotsWalkPos[kHS41ExitCave].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS41LeaveScene; + _vm->_gnap->_actionStatus = kAS41LeaveScene; _vm->_newSceneNum = 40; break; case kHS41Exit: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS41LeaveScene; + _vm->_gnap->_actionStatus = kAS41LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1); _vm->_newSceneNum = 45; break; @@ -390,14 +390,14 @@ void Scene41::run() { case kHS41ExitBBQ: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS41LeaveScene; + _vm->_gnap->_actionStatus = kAS41LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1); _vm->_newSceneNum = 42; break; case kHS41ToyVendor: if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) { - _vm->_gnapActionStatus = kAS41UseQuarterWithToyVendor; + _vm->_gnap->_actionStatus = kAS41UseQuarterWithToyVendor; _vm->gnapWalkTo(4, 7, 0, 0x107BB, 9); _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -413,7 +413,7 @@ void Scene41::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS41TalkToyVendor; + _vm->_gnap->_actionStatus = kAS41TalkToyVendor; break; case PLAT_CURSOR: _vm->playGnapImpossible(0, 0); @@ -426,7 +426,7 @@ void Scene41::run() { if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) { _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS41UseChickenBucketWithKid; + _vm->_gnap->_actionStatus = kAS41UseChickenBucketWithKid; } else if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapShowCurrItem(7, 7, 8, 0); } else { @@ -437,7 +437,7 @@ void Scene41::run() { case GRAB_CURSOR: _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1); _vm->_gnap->_idleFacing = kDirUpRight; - _vm->_gnapActionStatus = kAS41GrabKid; + _vm->_gnap->_actionStatus = kAS41GrabKid; break; case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; @@ -454,20 +454,20 @@ void Scene41::run() { if (_vm->_grabCursorSpriteIndex == kItemGum) { _vm->playGnapPullOutDevice(9, 0); gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0); - _vm->_gnapActionStatus = kAS41UseGumWithToyUfo; + _vm->_gnap->_actionStatus = kAS41UseGumWithToyUfo; } break; case kHS41WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } if (_vm->isFlag(kGFGnapControlsToyUFO)) { - if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) { - _vm->_gnapActionStatus = kAS41GiveBackToyUfo; + if (!_vm->_timers[9] && _vm->_gnap->_actionStatus < 0) { + _vm->_gnap->_actionStatus = kAS41GiveBackToyUfo; if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x122) { gameSys.insertSequence(0x123, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0); _vm->_gnapSequenceId = 0x123; @@ -477,7 +477,7 @@ void Scene41::run() { } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO)) { int sequenceId; @@ -510,13 +510,13 @@ void Scene41::run() { updateAnimations(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0) + if (_vm->_plat->_actionStatus < 0) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(100) + 100; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) { switch (_vm->getRandom(3)) { case 0: _nextToyVendorSequenceId = 0x113; @@ -534,7 +534,7 @@ void Scene41::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(30) + 20; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) { if (_vm->isFlag(kGFGnapControlsToyUFO)) _nextKidSequenceId = 0x11B; else if (_vm->getRandom(3) != 0) @@ -562,26 +562,26 @@ void Scene41::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS41LeaveScene: gameSys.setAnimation(0, 0, 0); _vm->_sceneDone = true; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS41UseQuarterWithToyVendor: gameSys.setAnimation(0, 0, 0); _nextToyVendorSequenceId = 0x114; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS41TalkToyVendor: gameSys.setAnimation(0, 0, 0); _nextToyVendorSequenceId = 0x116; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; case kAS41UseGumWithToyUfo: gameSys.setAnimation(0, 0, 0); _vm->playGnapUseDevice(9, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->setGrabCursorSprite(-1); _vm->invRemove(kItemGum); _vm->_toyUfoActionStatus = kAS41UfoGumAttached; @@ -601,7 +601,7 @@ void Scene41::updateAnimations() { _currKidSequenceId = _nextKidSequenceId; _nextKidSequenceId = 0x11B; _vm->_timers[5] = _vm->getRandom(30) + 20; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->setFlag(kGFGnapControlsToyUFO); updateHotspots(); _vm->_timers[9] = 600; @@ -627,7 +627,7 @@ void Scene41::updateAnimations() { _currKidSequenceId = _nextKidSequenceId; _nextKidSequenceId = -1; _vm->_timers[5] = _vm->getRandom(30) + 20; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } break; case kAS41GiveBackToyUfo: @@ -652,7 +652,7 @@ void Scene41::updateAnimations() { _currKidSequenceId = _nextKidSequenceId; _nextKidSequenceId = -1; _vm->_timers[5] = _vm->getRandom(30) + 20; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->clearFlag(kGFGnapControlsToyUFO); updateHotspots(); } @@ -861,7 +861,7 @@ void Scene42::run() { break; case kHS42Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -887,7 +887,7 @@ void Scene42::run() { case kHS42ExitUfoParty: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = kAS42LeaveScene; + _vm->_gnap->_actionStatus = kAS42LeaveScene; _vm->platypusWalkTo(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1); _vm->_newSceneNum = 40; break; @@ -895,7 +895,7 @@ void Scene42::run() { case kHS42ExitToyStand: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = kAS42LeaveScene; + _vm->_gnap->_actionStatus = kAS42LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1); _vm->_newSceneNum = 41; break; @@ -903,7 +903,7 @@ void Scene42::run() { case kHS42ExitUfo: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = kAS42LeaveScene; + _vm->_gnap->_actionStatus = kAS42LeaveScene; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1); _vm->_newSceneNum = 43; break; @@ -911,7 +911,7 @@ void Scene42::run() { case kHS42BBQVendor: if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, 0x107BB, 1); - _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendor; + _vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendor; if (_vm->_plat->_pos.y < 9) _vm->platypusWalkTo(_vm->_plat->_pos.x, 9, -1, -1, 1); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -924,7 +924,7 @@ void Scene42::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = kAS42TalkBBQVendor; + _vm->_gnap->_actionStatus = kAS42TalkBBQVendor; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -944,7 +944,7 @@ void Scene42::run() { break; case GRAB_CURSOR: _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, 0, 0x107BC, 1); - _vm->_gnapActionStatus = kAS42GrabChickenLeg; + _vm->_gnap->_actionStatus = kAS42GrabChickenLeg; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -956,14 +956,14 @@ void Scene42::run() { case kHS42WalkArea1: case kHS42WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO)) { _vm->_toyUfoActionStatus = kAS42ToyUfoRefresh; @@ -978,13 +978,13 @@ void Scene42::run() { _vm->toyUfoCheckTimer(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(20) + 30; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextBBQVendorSequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextBBQVendorSequenceId == -1) { switch (_vm->getRandom(8)) { case 0: _nextBBQVendorSequenceId = 0x14C; @@ -1026,22 +1026,22 @@ void Scene42::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case kAS42LeaveScene: gameSys.setAnimation(0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _vm->_sceneDone = true; break; case kAS42TalkBBQVendor: gameSys.setAnimation(0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; _nextBBQVendorSequenceId = 0x14B; break; case kAS42UseQuarterWithBBQVendor: case kAS42GrabChickenLeg: if (gameSys.getAnimationStatus(2) == 2) { int sequenceId; - if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor) { + if (_vm->_gnap->_actionStatus == kAS42UseQuarterWithBBQVendor) { _vm->invRemove(kItemDiceQuarterHole); _vm->invAdd(kItemChickenBucket); _vm->setGrabCursorSprite(-1); @@ -1075,10 +1075,10 @@ void Scene42::updateAnimations() { } _vm->_gnapSequenceId = sequenceId; gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0); - if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor) - _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendorDone; + if (_vm->_gnap->_actionStatus == kAS42UseQuarterWithBBQVendor) + _vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendorDone; else - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0); gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2); _currBBQVendorSequenceId = _nextBBQVendorSequenceId; @@ -1094,11 +1094,11 @@ void Scene42::updateAnimations() { case kAS42UseQuarterWithBBQVendorDone: gameSys.setAnimation(0, 0, 0); _vm->setGrabCursorSprite(kItemChickenBucket); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; default: gameSys.setAnimation(0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -1319,7 +1319,7 @@ void Scene43::run() { break; case kHS43Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -1345,7 +1345,7 @@ void Scene43::run() { case kHS43ExitUfoParty: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, -1, 0x107C7, 1); _vm->_newSceneNum = 40; break; @@ -1353,7 +1353,7 @@ void Scene43::run() { case kHS43ExitBBQ: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1); _vm->_newSceneNum = 42; break; @@ -1361,7 +1361,7 @@ void Scene43::run() { case kHS43ExitKissinBooth: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1); _vm->_newSceneNum = 44; break; @@ -1377,7 +1377,7 @@ void Scene43::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = 2; + _vm->_gnap->_actionStatus = 2; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -1399,7 +1399,7 @@ void Scene43::run() { case GRAB_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(3, 7, 0, 67515, 1); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; break; case TALK_CURSOR: case PLAT_CURSOR: @@ -1411,13 +1411,13 @@ void Scene43::run() { case kHS43WalkArea1: case kHS43WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) { _vm->_toyUfoActionStatus = 5; @@ -1432,13 +1432,13 @@ void Scene43::run() { _vm->toyUfoCheckTimer(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) { _vm->_timers[4] = _vm->getRandom(100) + 100; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) { switch (_vm->getRandom(5)) { case 0: _nextTwoHeadedGuySequenceId = 0x13C; @@ -1482,7 +1482,7 @@ void Scene43::updateAnimations() { GameSys& gameSys = *_vm->_gameSys; if (gameSys.getAnimationStatus(0) == 2) { - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case 0: gameSys.setAnimation(0, 0, 0); _vm->_sceneDone = true; @@ -1502,13 +1502,13 @@ void Scene43::updateAnimations() { _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId; _nextTwoHeadedGuySequenceId = -1; _vm->_timers[4] = _vm->getRandom(100) + 100; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } break; default: gameSys.setAnimation(0, 0, 0); - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -1560,7 +1560,7 @@ void Scene43::updateAnimations() { gameSys.setAnimation(0x10874, _vm->_toyUfoId, 3); _vm->_toyUfoActionStatus = 8; _vm->setFlag(kGFJointTaken); - _vm->_gnapActionStatus = 3; + _vm->_gnap->_actionStatus = 3; break; case 8: _nextTwoHeadedGuySequenceId = 0x13A; @@ -1767,7 +1767,7 @@ void Scene44::run() { break; case kHS44Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -1793,14 +1793,14 @@ void Scene44::run() { case kHS44ExitUfoParty: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS44ExitUfoParty].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 40; break; case kHS44ExitUfo: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y, -1, 0x107CF, 1); _vm->_newSceneNum = 43; break; @@ -1808,13 +1808,13 @@ void Scene44::run() { case kHS44ExitShow: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow].x, _vm->_hotspotsWalkPos[kHS44ExitShow].y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 46; break; case kHS44KissingLady: if (_vm->_grabCursorSpriteIndex >= 0) { - _vm->_gnapActionStatus = 2; + _vm->_gnap->_actionStatus = 2; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, -1, 9); _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y); } else { @@ -1828,7 +1828,7 @@ void Scene44::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; break; case PLAT_CURSOR: _vm->gnapUseDeviceOnPlatypus(); @@ -1836,7 +1836,7 @@ void Scene44::run() { if (_vm->_gnap->_pos == Common::Point(7, 7)) _vm->gnapWalkStep(); _vm->playGnapIdle(5, 7); - _vm->_platypusActionStatus = 4; + _vm->_plat->_actionStatus = 4; break; } } @@ -1893,14 +1893,14 @@ void Scene44::run() { case kHS44WalkArea1: case kHS44WalkArea2: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO)) { _vm->_toyUfoActionStatus = 7; @@ -1914,13 +1914,13 @@ void Scene44::run() { _vm->toyUfoCheckTimer(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5) + if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(20) + 20; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextKissingLadySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextKissingLadySequenceId == -1) { switch (_vm->getRandom(20)) { case 0: _nextKissingLadySequenceId = 0xED; @@ -1947,7 +1947,7 @@ void Scene44::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(20) + 20; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSpringGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSpringGuySequenceId == -1) { if (_vm->getRandom(5) != 0) { if (!_vm->isFlag(kGFSpringTaken)) _nextSpringGuySequenceId = 0xF9; @@ -1979,7 +1979,7 @@ void Scene44::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case 0: _vm->_sceneDone = true; break; @@ -1990,12 +1990,12 @@ void Scene44::updateAnimations() { _nextKissingLadySequenceId = 0xF2; break; } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(1) == 2) { gameSys.setAnimation(0, 0, 1); - switch (_vm->_platypusActionStatus) { + switch (_vm->_plat->_actionStatus) { case 4: if (gameSys.getAnimationStatus(2) == 2) { gameSys.insertSequence(0xFE, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0); @@ -2003,7 +2003,7 @@ void Scene44::updateAnimations() { _vm->_platypusSequenceDatNum = 0; gameSys.setAnimation(0xFE, _vm->_platypusId, 1); gameSys.removeSequence(_currKissingLadySequenceId, 1, true); - _vm->_platypusActionStatus = 5; + _vm->_plat->_actionStatus = 5; } break; case 5: @@ -2011,7 +2011,7 @@ void Scene44::updateAnimations() { _vm->_newSceneNum = 50; break; default: - _vm->_platypusActionStatus = -1; + _vm->_plat->_actionStatus = -1; break; } } @@ -2145,7 +2145,7 @@ void Scene45::run() { _vm->_gnapSequenceDatNum = 0; _vm->_gnapId = 1; gameSys.setAnimation(0x9E, 1, 0); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0); _vm->initPlatypusPos(4, 8, kDirNone); _vm->endSceneInit(); @@ -2256,7 +2256,7 @@ void Scene45::run() { break; case kHS45Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -2282,29 +2282,29 @@ void Scene45::run() { break; case kHS45ExitUfoParty: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 40; } break; case kHS45ExitShoe: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y, -1, 0x107CF, 1); _vm->_newSceneNum = 46; } break; case kHS45ExitRight: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y, -1, 0x107CD, 1); _vm->_newSceneNum = 41; } @@ -2318,10 +2318,10 @@ void Scene45::run() { break; case kHS45DiscoBall: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex == kItemSpring) { _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall].x, _vm->_hotspotsWalkPos[kHS45DiscoBall].y, 0, 0x9F, 5); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; _vm->setGrabCursorSprite(-1); _vm->invRemove(kItemSpring); } else if (_vm->_grabCursorSpriteIndex >= 0) { @@ -2342,13 +2342,13 @@ void Scene45::run() { break; case kHS45WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO)) { _vm->_toyUfoActionStatus = 3; @@ -2361,7 +2361,7 @@ void Scene45::run() { updateAnimations(); _vm->toyUfoCheckTimer(); - if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); _vm->checkGameKeys(); @@ -2383,7 +2383,7 @@ void Scene45::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case 0: _vm->_sceneDone = true; break; @@ -2397,7 +2397,7 @@ void Scene45::updateAnimations() { gameSys.setAnimation(0x9E, _vm->_gnapId, 0); break; default: - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; break; } } @@ -2581,7 +2581,7 @@ void Scene46::run() { break; case kHS46Platypus: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { if (_vm->_grabCursorSpriteIndex >= 0) { _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y); } else { @@ -2615,7 +2615,7 @@ void Scene46::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpLeft; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = 2; + _vm->_gnap->_actionStatus = 2; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -2636,7 +2636,7 @@ void Scene46::run() { case TALK_CURSOR: _vm->_gnap->_idleFacing = kDirUpRight; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; break; case GRAB_CURSOR: case PLAT_CURSOR: @@ -2649,14 +2649,14 @@ void Scene46::run() { case kHS46ExitUfoParty: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 40; break; case kHS46ExitKissinBooth: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y, -1, 0x107CF, 1); _vm->_newSceneNum = 44; break; @@ -2664,19 +2664,19 @@ void Scene46::run() { case kHS46ExitDisco: _vm->_isLeavingScene = true; _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1); - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y, -1, 0x107CD, 1); _vm->_newSceneNum = 45; break; case kHS46WalkArea1: - if (_vm->_gnapActionStatus < 0) + if (_vm->_gnap->_actionStatus < 0) _vm->gnapWalkTo(-1, -1, -1, -1, 1); break; } } - if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) { + if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) { _vm->_mouseClickState._left = false; if (_vm->isFlag(kGFGnapControlsToyUFO)) { _vm->_toyUfoActionStatus = 4; @@ -2690,13 +2690,13 @@ void Scene46::run() { _vm->toyUfoCheckTimer(); if (!_vm->_isLeavingScene) { - if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updatePlatypusIdleSequence(); - if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) + if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO)) _vm->updateGnapIdleSequence(); if (!_vm->_timers[4]) { _vm->_timers[4] = _vm->getRandom(50) + 80; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextItchyGuySequenceId == -1) { + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextItchyGuySequenceId == -1) { if (_vm->getRandom(2) != 0) _nextItchyGuySequenceId = 0x49; else @@ -2705,7 +2705,7 @@ void Scene46::run() { } if (!_vm->_timers[5]) { _vm->_timers[5] = _vm->getRandom(50) + 80; - if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSackGuySequenceId == -1) + if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSackGuySequenceId == -1) _nextSackGuySequenceId = 0x4C; } } @@ -2727,7 +2727,7 @@ void Scene46::updateAnimations() { if (gameSys.getAnimationStatus(0) == 2) { gameSys.setAnimation(0, 0, 0); - switch (_vm->_gnapActionStatus) { + switch (_vm->_gnap->_actionStatus) { case 0: _vm->_sceneDone = true; break; @@ -2738,7 +2738,7 @@ void Scene46::updateAnimations() { _nextSackGuySequenceId = 0x4A; break; } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) { diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp index 3ae20034fd..8cf5087ff6 100644 --- a/engines/gnap/scenes/group5.cpp +++ b/engines/gnap/scenes/group5.cpp @@ -86,13 +86,13 @@ int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) { _currHandSequenceId = kPlatypusHandSequenceIds[buttonNum]; } - _vm->_gnapActionStatus = 6; + _vm->_gnap->_actionStatus = 6; while (gameSys.getAnimationStatus(6) != 2) { // checkGameAppStatus(); _vm->updateMouseCursor(); _vm->gameUpdateTick(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; if (buttonNum < 11) phoneNumber = buttonNum % 10 + 10 * phoneNumber; @@ -137,13 +137,13 @@ void Scene53::runRandomCall() { _callsMadeCtr = 0; } - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; while (gameSys.getAnimationStatus(6) != 2) { _vm->updateMouseCursor(); // checkGameAppStatus(); _vm->gameUpdateTick(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } void Scene53::runChitChatLine() { @@ -154,13 +154,13 @@ void Scene53::runChitChatLine() { gameSys.setAnimation(0x6E, 1, 6); gameSys.insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; while (gameSys.getAnimationStatus(6) != 2) { _vm->updateMouseCursor(); // checkGameAppStatus(); _vm->gameUpdateTick(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; if (_vm->isFlag(kGFSpringTaken)) { gameSys.insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0); @@ -198,7 +198,7 @@ void Scene53::runChitChatLine() { flag = 1; _vm->_isLeavingScene = true; _vm->_sceneDone = true; - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 17; break; case 5: @@ -217,31 +217,31 @@ void Scene53::runChitChatLine() { if (flag && sequenceId != -1) { _vm->stopSound(0xA0); pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; gameSys.setAnimation(sequenceId, 1, 6); gameSys.insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; while (gameSys.getAnimationStatus(6) != 2) { _vm->updateMouseCursor(); // checkGameAppStatus(); _vm->gameUpdateTick(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; gameSys.setAnimation(0x72, 1, 6); gameSys.insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; while (gameSys.getAnimationStatus(6) != 2) { _vm->updateMouseCursor(); // checkGameAppStatus(); _vm->gameUpdateTick(); } - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } updateHotspots(); - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; if (_vm->isFlag(kGFSpringTaken)) { gameSys.setAnimation(0x73, 40, 6); @@ -252,7 +252,7 @@ void Scene53::runChitChatLine() { _vm->gameUpdateTick(); } _currHandSequenceId = 0x73; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } } @@ -287,7 +287,7 @@ void Scene53::run() { switch (_vm->_sceneClickedHotspot) { case 1: - if (_vm->_gnapActionStatus < 0) { + if (_vm->_gnap->_actionStatus < 0) { _vm->runMenu(); updateHotspots(); } @@ -307,7 +307,7 @@ void Scene53::run() { phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1); debugC(kDebugBasic, "phoneNumber: %d", phoneNumber); if (phoneNumberLen == 7) { - _vm->_gnapActionStatus = 1; + _vm->_gnap->_actionStatus = 1; if (_vm->isFlag(kGFSpringTaken)) { gameSys.setAnimation(0x73, 40, 6); gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0); @@ -317,7 +317,7 @@ void Scene53::run() { _vm->gameUpdateTick(); } _currHandSequenceId = 0x73; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } if (phoneNumber == 7284141) { runChitChatLine(); @@ -348,8 +348,8 @@ void Scene53::run() { pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1); break; case 14: - if (_vm->_gnapActionStatus < 0) { - _vm->_gnapActionStatus = 1; + if (_vm->_gnap->_actionStatus < 0) { + _vm->_gnap->_actionStatus = 1; if (_vm->isFlag(kGFSpringTaken)) { gameSys.setAnimation(0x73, 40, 6); gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0); @@ -359,11 +359,11 @@ void Scene53::run() { _vm->gameUpdateTick(); } _currHandSequenceId = 0x73; - _vm->_gnapActionStatus = -1; + _vm->_gnap->_actionStatus = -1; } _vm->_isLeavingScene = true; _vm->_sceneDone = true; - _vm->_gnapActionStatus = 0; + _vm->_gnap->_actionStatus = 0; _vm->_newSceneNum = 17; } break; -- cgit v1.2.3