aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/scenes/group0.cpp
diff options
context:
space:
mode:
authorStrangerke2016-05-08 10:14:46 +0200
committerEugene Sandulenko2016-05-10 12:14:55 +0200
commitfdabbcc16ab90b47a14eda8c168ab206a92780f1 (patch)
tree051e34a6a2f04ee009d932a033cadeb181aa2c80 /engines/gnap/scenes/group0.cpp
parent1f7eeb24a0622a44a4b4582b51950fae4a80fcb7 (diff)
downloadscummvm-rg350-fdabbcc16ab90b47a14eda8c168ab206a92780f1.tar.gz
scummvm-rg350-fdabbcc16ab90b47a14eda8c168ab206a92780f1.tar.bz2
scummvm-rg350-fdabbcc16ab90b47a14eda8c168ab206a92780f1.zip
GNAP: Reduce dereferencing of _gnap
Diffstat (limited to 'engines/gnap/scenes/group0.cpp')
-rw-r--r--engines/gnap/scenes/group0.cpp1356
1 files changed, 687 insertions, 669 deletions
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 982cfcaff0..f5e8307def 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -72,6 +72,7 @@ void Scene01::run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -90,15 +91,15 @@ void Scene01::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 2) {
- _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
- _vm->_gnap->initPos(1, 6, kDirBottomRight);
+ gnap.initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
@@ -115,35 +116,35 @@ void Scene01::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS01Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS01Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -151,20 +152,20 @@ void Scene01::run() {
break;
case kHS01Spaceship:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS01LookSpaceship;
+ gnap._idleFacing = kDirUpLeft;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -172,21 +173,21 @@ void Scene01::run() {
break;
case kHS01Mud:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 3);
+ gnap.playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01TakeMud;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
+ gnap._actionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -194,28 +195,28 @@ void Scene01::run() {
break;
case kHS01Pigs:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01LookPigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01UsePigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01LookPigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -223,10 +224,10 @@ void Scene01::run() {
break;
case kHS01ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS01LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
@@ -241,13 +242,13 @@ void Scene01::run() {
case kHS01WalkArea6:
case kHS01WalkArea7:
case kHS01WalkArea8:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -262,8 +263,8 @@ void Scene01::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (_vm->_timers[4] == 0) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -288,23 +289,24 @@ void Scene01::run() {
void Scene01::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (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->_gnap->_actionStatus = kAS01LookSpaceshipDone;
+ gnap._actionStatus = kAS01LookSpaceshipDone;
break;
case kAS01LookSpaceshipDone:
gameSys.removeSequence(133, 256, true);
gameSys.removeSpriteDrawItem(_spaceshipSurface, 255);
_vm->deleteSurface(&_spaceshipSurface);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01LeaveScene:
@@ -312,25 +314,25 @@ void Scene01::updateAnimations() {
break;
case kAS01TakeMud:
- _vm->_gnap->playPullOutDevice(2, 3);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(2, 3);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01LookPigs:
_vm->playSound(0x8A, false);
_vm->playSound(0x8B, false);
_vm->playSound(0x8C, false);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01UsePigs:
- _vm->_gnap->playPullOutDevice(7, 2);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(7, 2);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -396,6 +398,7 @@ void Scene02::updateHotspots() {
void Scene02::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -412,20 +415,20 @@ void Scene02::run() {
switch (_vm->_prevSceneNum) {
case 3:
- _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
- _vm->_gnap->initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
+ gnap.initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(8, 6), 1, 0x107C2, 1);
updateHotspots();
@@ -433,24 +436,24 @@ void Scene02::run() {
break;
case 47:
_vm->clearFlag(kGFUnk25);
- _vm->_gnap->initPos(5, 6, kDirBottomLeft);
+ gnap.initPos(5, 6, kDirBottomLeft);
_vm->_plat->initPos(6, 7, kDirUnk4);
_vm->endSceneInit();
break;
case 49:
- _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ gnap.initPos(5, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(6, 7, kDirNone);
_vm->endSceneInit();
break;
default:
- _vm->_gnap->initPos(-1, 6, kDirBottomRight);
+ gnap.initPos(-1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -465,35 +468,35 @@ void Scene02::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS02Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS02Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -501,33 +504,33 @@ void Scene02::run() {
break;
case kHS02Chicken:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap._idleFacing = kDirUpRight;
Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
- _vm->_gnap->walkTo(destPos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02UseTwigWithChicken;
+ gnap.walkTo(destPos, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(9, 8);
+ gnap.playMoan2(9, 8);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02GrabChicken;
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS02GrabChicken;
else
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02TalkChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -536,45 +539,45 @@ void Scene02::run() {
case kHS02Truck1:
case kHS02Truck2:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemKeys) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnap->_actionStatus = kAS02UseTruckGas;
+ gnap._actionStatus = kAS02UseTruckGas;
else
- _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
+ gnap._actionStatus = kAS02UseTruckNoGas;
}
} else if (_vm->_grabCursorSpriteIndex == kItemGas) {
_vm->_hotspots[kHS02WalkArea4]._flags |= SF_WALKABLE;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02UseGasWithTruck;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ gnap._actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 2);
+ gnap.playScratchingHead(2, 2);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnap->_actionStatus = kAS02UseTruckGas;
+ gnap._actionStatus = kAS02UseTruckGas;
else
- _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
+ gnap._actionStatus = kAS02UseTruckNoGas;
}
} else {
- _vm->_gnap->_idleFacing = kDirUnk4;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02UseTruckNoKeys;
+ gnap._idleFacing = kDirUnk4;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ gnap._actionStatus = kAS02UseTruckNoKeys;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -582,22 +585,22 @@ void Scene02::run() {
break;
case kHS02TruckGrill:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 4);
+ gnap.playMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -605,10 +608,10 @@ void Scene02::run() {
break;
case kHS02ExitHouse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
@@ -617,10 +620,10 @@ void Scene02::run() {
break;
case kHS02ExitBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
@@ -629,10 +632,10 @@ void Scene02::run() {
break;
case kHS02ExitCreek:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
@@ -640,10 +643,10 @@ void Scene02::run() {
break;
case kHS02ExitPigpen:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
@@ -654,13 +657,13 @@ void Scene02::run() {
case kHS02WalkArea2:
case kHS02WalkArea3:
case kHS02WalkArea4:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -674,8 +677,8 @@ void Scene02::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -684,7 +687,7 @@ void Scene02::run() {
else
gameSys.insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != 7 && _vm->_gnap->_actionStatus != 8) {
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && gnap._actionStatus != 7 && gnap._actionStatus != 8) {
if (_vm->getRandom(6) != 0) {
_nextChickenSequenceId = 0x14B;
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -710,25 +713,26 @@ void Scene02::run() {
void Scene02::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS02UseTruckNoKeys:
- gameSys.insertSequence(0x14E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x14E, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x14E;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS02UseTruckNoKeysDone;
+ gameSys.insertSequence(0x14E, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x14E, gnap._id, 0);
+ gnap._sequenceId = 0x14E;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS02UseTruckNoKeysDone;
break;
case kAS02UseGasWithTruck:
- gameSys.insertSequence(0x151, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x151, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x151;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x151, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x151, gnap._id, 0);
+ gnap._sequenceId = 0x151;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemGas);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFTruckFilledWithGas);
- _vm->_gnap->_actionStatus = kAS02UseGasWithTruckDone;
+ gnap._actionStatus = kAS02UseGasWithTruckDone;
break;
case kAS02UseTruckGas:
_vm->_timers[5] = 9999;
@@ -736,11 +740,11 @@ void Scene02::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnap->_sequenceId = 0x14F;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x14F;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -752,11 +756,11 @@ void Scene02::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->_timers[4] = 250;
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnap->_sequenceId = 0x14F;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x14F;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -777,11 +781,11 @@ void Scene02::updateAnimations() {
break;
}
_truckGrillCtr = (_truckGrillCtr + 1) % 3;
- gameSys.insertSequence(_gnapTruckSequenceId, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = _gnapTruckSequenceId;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(_gnapTruckSequenceId, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_gnapTruckSequenceId, gnap._id, 0);
+ gnap._sequenceId = _gnapTruckSequenceId;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS02LeaveScene:
_vm->_sceneDone = true;
@@ -794,26 +798,26 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, gnap._id, 0x150, 179, kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
_currChickenSequenceId = 0x14B;
gameSys.setAnimation(0x14B, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->_timers[5] = 30;
break;
case kAS02UseTwigWithChicken:
- _vm->_gnap->playShowItem(5, 0, 0);
+ gnap.playShowItem(5, 0, 0);
gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_currChickenSequenceId = 0x155;
_nextChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS02UseTruckNoKeysDone:
case kAS02UseGasWithTruckDone:
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -821,18 +825,18 @@ void Scene02::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x150) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
- gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = kAS02GrabChickenDone;
+ 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->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
@@ -885,6 +889,7 @@ void Scene03::updateHotspots() {
void Scene03::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10925, true);
_vm->startSoundTimerC(7);
@@ -893,7 +898,7 @@ void Scene03::run() {
gameSys.insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
_platypusHypnotized = false;
- _vm->_gnap->initPos(3, 4, kDirBottomRight);
+ gnap.initPos(3, 4, kDirBottomRight);
gameSys.insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -926,7 +931,7 @@ void Scene03::run() {
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(4, 7), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -937,28 +942,28 @@ void Scene03::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS03Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -966,26 +971,26 @@ void Scene03::run() {
break;
case kHS03Grass:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(9, 6);
+ gnap.playScratchingHead(9, 6);
break;
case GRAB_CURSOR:
- _vm->_gnap->playPullOutDevice(9, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(9, 6);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1B3, 253, 5);
_vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -993,11 +998,11 @@ void Scene03::run() {
break;
case kHS03ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS03LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1009,25 +1014,25 @@ void Scene03::run() {
break;
case kHS03Creek:
- if (_vm->_gnap->_actionStatus == -1) {
+ if (gnap._actionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 8);
+ gnap.playMoan2(2, 8);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS03GrabCreek;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
+ gnap._actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1035,42 +1040,42 @@ void Scene03::run() {
break;
case kHS03TrappedPlatypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 4);
+ gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
- _vm->_gnap->_actionStatus = kAS03FreePlatypus;
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
+ gnap._actionStatus = kAS03FreePlatypus;
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
+ gnap._actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
+ gnap._actionStatus = kAS03GrabPlatypus;
}
break;
case TALK_CURSOR:
if (_platypusHypnotized) {
- _vm->_gnap->playBrainPulsating(8, 4);
+ gnap.playBrainPulsating(8, 4);
} else {
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
+ gnap._actionStatus = kAS03HypnotizeScaredPlat;
else
- _vm->_gnap->_actionStatus = kAS03HypnotizePlat;
+ gnap._actionStatus = kAS03HypnotizePlat;
}
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1078,7 +1083,7 @@ void Scene03::run() {
break;
case kHS03Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1087,27 +1092,27 @@ void Scene03::run() {
case kHS03WalkAreas1:
case kHS03WalkAreas2:
case kHS03WalkAreas3:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS03PlatypusWalkArea:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
+ gnap._actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
+ gnap._actionStatus = kAS03GrabPlatypus;
}
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1122,16 +1127,16 @@ void Scene03::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ if (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->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
if (_vm->getRandom(5) == 1)
_nextFrogSequenceId = 0x1C6;
else
@@ -1141,12 +1146,12 @@ void Scene03::run() {
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (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->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
gameSys.setAnimation(0x1C5, 253, 4);
gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -1171,10 +1176,11 @@ void Scene03::run() {
void Scene03::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS03LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1182,7 +1188,7 @@ void Scene03::updateAnimations() {
_nextPlatSequenceId = 0x1BC;
break;
case kAS03FreePlatypusDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 6);
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_plat->_id = 120;
@@ -1196,7 +1202,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizePlat:
- _vm->_gnap->playBrainPulsating(0, 0);
+ gnap.playBrainPulsating(0, 0);
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
@@ -1207,12 +1213,12 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_sequenceId = 0x1BA;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
- _vm->_gnap->playBrainPulsating(0, 0);
+ gnap.playBrainPulsating(0, 0);
gameSys.insertSequence(0x1BF, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
@@ -1227,7 +1233,7 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_sequenceId = 0x1BA;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
@@ -1240,14 +1246,14 @@ void Scene03::updateAnimations() {
_platypusHypnotized = false;
break;
case kAS03GrabCreek:
- gameSys.insertSequence(0x1B4, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x1B4, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x1B4;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS03GrabCreekDone;
+ gameSys.insertSequence(0x1B4, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1B4, gnap._id, 0);
+ gnap._sequenceId = 0x1B4;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS03GrabCreekDone;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -1256,26 +1262,26 @@ void Scene03::updateAnimations() {
if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
gameSys.setAnimation(0, 0, 1);
_platypusScared = true;
- gameSys.insertSequence(0x1B5, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1B5, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x1B5;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirNone;
+ gnap._sequenceId = 0x1B5;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirNone;
_vm->_plat->_sequenceId = _nextPlatSequenceId;
_vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
- _vm->_gnap->_pos = Common::Point(3, 6);
- gameSys.insertSequence(0x1B6, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gnap._pos = Common::Point(3, 6);
+ gameSys.insertSequence(0x1B6, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1BC, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1BC, 99, 0);
- _vm->_gnap->_id = 20 * _vm->_gnap->_pos.y;
- _vm->_gnap->_sequenceId = 0x1B6;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirNone;
- _vm->_gnap->_actionStatus = kAS03FreePlatypusDone;
+ gnap._id = 20 * gnap._pos.y;
+ gnap._sequenceId = 0x1B6;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirNone;
+ gnap._actionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
gameSys.setAnimation(0, 0, 1);
@@ -1351,6 +1357,7 @@ void Scene04::updateHotspots() {
void Scene04::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(4);
@@ -1379,11 +1386,11 @@ void Scene04::run() {
_vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
- _vm->_gnap->_pos = Common::Point(4, 7);
- _vm->_gnap->_id = 140;
+ gnap._pos = Common::Point(4, 7);
+ gnap._id = 140;
_vm->_plat->_pos = Common::Point(6, 7);
_vm->_plat->_id = 141;
- gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - gnap._gridX, 336 - gnap._gridY);
gameSys.insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
@@ -1395,31 +1402,31 @@ void Scene04::run() {
_vm->_plat->_sequenceId = 0x20C;
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_idleFacing = kDirBottomRight;
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
gameSys.waitForUpdate();
} else {
gameSys.insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 2) {
- _vm->_gnap->initPos(5, 11, kDirUpRight);
+ gnap.initPos(5, 11, kDirUpRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
- _vm->_gnap->initPos(5, 7, kDirBottomRight);
+ gnap.initPos(5, 7, kDirBottomRight);
_vm->_plat->initPos(4, 7, kDirNone);
_vm->endSceneInit();
} else {
- _vm->_gnap->initPos(12, 9, kDirBottomRight);
+ gnap.initPos(12, 9, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -1434,38 +1441,38 @@ void Scene04::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS04Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS04Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
else
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1473,23 +1480,23 @@ void Scene04::run() {
break;
case kHS04Twig:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
break;
case GRAB_CURSOR:
- _vm->_gnap->playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->_gnap->playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1FD, 100, 2);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1497,24 +1504,24 @@ void Scene04::run() {
break;
case kHS04Axe:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS04GrabAxe;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1522,31 +1529,31 @@ void Scene04::run() {
break;
case kHS04Dog:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
+ gnap.playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS04GrabDog;
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->_gnap->playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
+ gnap.playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1554,30 +1561,30 @@ void Scene04::run() {
break;
case kHS04Door:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playScratchingHead(4, 3);
+ gnap.playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS04OpenDoor;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1585,10 +1592,10 @@ void Scene04::run() {
break;
case kHS04ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -1599,29 +1606,29 @@ void Scene04::run() {
break;
case kHS04Window:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, gnap.getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
if (_triedWindow) {
- _vm->_gnap->_actionStatus = kAS04GetKeyAnother;
+ gnap._actionStatus = kAS04GetKeyAnother;
} else {
- _vm->_gnap->_actionStatus = kAS04GetKeyFirst;
+ gnap._actionStatus = kAS04GetKeyFirst;
_triedWindow = true;
}
}
break;
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1629,10 +1636,10 @@ void Scene04::run() {
break;
case kHS04ExitBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
@@ -1644,13 +1651,13 @@ void Scene04::run() {
case kHS04WalkArea1:
case kHS04WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1665,11 +1672,11 @@ void Scene04::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence2();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence2();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(150) + 300;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
gameSys.insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
@@ -1702,95 +1709,96 @@ void Scene04::run() {
void Scene04::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS04LeaveScene:
_vm->_sceneDone = true;
break;
case kAS04OpenDoor:
- gameSys.insertSequence(0x205, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x205, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_pos = Common::Point(6, 7);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
- gameSys.setAnimation(0x107B5, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_actionStatus = kAS04OpenDoorDone;
+ gnap._pos = Common::Point(6, 7);
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - gnap._gridX, 336 - gnap._gridY);
+ gameSys.setAnimation(0x107B5, gnap._id, 0);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._actionStatus = kAS04OpenDoorDone;
break;
case kAS04OpenDoorDone:
gameSys.insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS04GetKeyFirst:
- gameSys.insertSequence(0x204, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x204, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x204;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyFirst2;
+ gameSys.insertSequence(0x204, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x204, gnap._id, 0);
+ gnap._sequenceId = 0x204;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyFirst2;
break;
case kAS04GetKeyFirst2:
- gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x206, 255, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20B, 256, 0);
- _vm->_gnap->_sequenceId = 0x206;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyFirstDone;
+ gnap._sequenceId = 0x206;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyFirstDone;
break;
case kAS04GetKeyFirstDone:
gameSys.requestRemoveSequence(0x1FF, 256);
gameSys.requestRemoveSequence(0x20B, 256);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), 255,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._idleFacing = kDirBottomRight;
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._actionStatus = -1;
break;
case kAS04GetKeyAnother:
- gameSys.insertSequence(0x202, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x202, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x202;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyAnother2;
+ gameSys.insertSequence(0x202, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x202, gnap._id, 0);
+ gnap._sequenceId = 0x202;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyAnother2;
break;
case kAS04GetKeyAnother2:
- gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x203, 255, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20A, 256, 0);
- _vm->_gnap->_sequenceId = 0x203;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyAnotherDone;
+ gnap._sequenceId = 0x203;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyAnotherDone;
break;
case kAS04GetKeyAnotherDone:
gameSys.removeSequence(0x1FF, 256, true);
gameSys.removeSequence(0x20A, 256, true);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), 255,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._idleFacing = kDirBottomRight;
+ gnap._actionStatus = -1;
break;
case kAS04GrabDog:
_nextDogSequenceId = 0x201;
break;
case kAS04GrabAxe:
- gameSys.insertSequence(0x211, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x211, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.requestRemoveSequence(0x212, 100);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x211;
- _vm->_gnap->_actionStatus = -1;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x211;
+ gnap._actionStatus = -1;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -1808,13 +1816,13 @@ void Scene04::updateAnimations() {
gameSys.insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
_currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x200, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x200, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_currDogSequenceId = 0x201;
- _vm->_gnap->_sequenceId = 0x200;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gnap._sequenceId = 0x200;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_nextDogSequenceId = -1;
} else if (_nextDogSequenceId != -1) {
@@ -1865,6 +1873,7 @@ void Scene05::updateHotspots() {
void Scene05::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
@@ -1884,15 +1893,15 @@ void Scene05::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
- _vm->_gnap->initPos(6, 8, kDirBottomRight);
+ gnap.initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(7, 9, kDirNone);
_vm->endSceneInit();
@@ -1909,35 +1918,35 @@ void Scene05::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS05Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS05Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1945,30 +1954,30 @@ void Scene05::run() {
break;
case kHS05Haystack:
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
if (_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
_vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
}
- if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
- _vm->_gnap->walkStep();
- _vm->_gnap->playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ if (gnap._pos.x == 4 && (gnap._pos.y == 8 || gnap._pos.y == 7))
+ gnap.walkStep();
+ gnap.playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
}
break;
}
@@ -1977,31 +1986,31 @@ void Scene05::run() {
break;
case kHS05Chicken:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap._idleFacing = kDirUpRight;
Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
- _vm->_gnap->walkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
+ gnap.walkTo(checkPt, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0)
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(9, 7);
+ gnap.playMoan2(9, 7);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05GrabChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05TalkChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2009,22 +2018,22 @@ void Scene05::run() {
break;
case kHS05Ladder:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 4);
+ gnap.playMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05GrabLadder;
+ gnap._idleFacing = kDirBottomLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2035,32 +2044,32 @@ void Scene05::run() {
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
Common::Point destPt = _vm->_hotspotsWalkPos[2] + Common::Point(- 1, 1);
- _vm->_gnap->walkTo(destPt, 0, -1, 1);
- _vm->_gnap->_actionStatus = kAS05EnterBarn;
+ gnap.walkTo(destPt, 0, -1, 1);
+ gnap._actionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
else
_vm->_newSceneNum = 36;
- } else if (_vm->_gnap->_actionStatus < 0) {
+ } else if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0,
- _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS05PickPadlock;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0,
+ gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
+ gnap._actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 4);
+ gnap.playScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05TryPickPadlock;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2068,10 +2077,10 @@ void Scene05::run() {
break;
case kHS05ExitHouse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -2083,8 +2092,8 @@ void Scene05::run() {
case kHS05WalkArea1:
case kHS05WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS05WalkArea3:
@@ -2092,8 +2101,8 @@ void Scene05::run() {
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2108,10 +2117,10 @@ void Scene05::run() {
if (!_vm->_isLeavingScene) {
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
- if (_vm->_gnap->_actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
+ if (gnap._actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
if (_vm->getRandom(4) != 0)
_nextChickenSequenceId = 0x142;
else
@@ -2120,7 +2129,7 @@ void Scene05::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(150) + 300;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
gameSys.insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
@@ -2141,36 +2150,37 @@ void Scene05::run() {
void Scene05::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS05LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05TryPickPadlock:
- gameSys.insertSequence(0x148, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x148;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x148, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x148;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS05PickPadlock:
- gameSys.setAnimation(0x147, _vm->_gnap->_id, 0);
- gameSys.insertSequence(0x147, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x147;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x147, gnap._id, 0);
+ gameSys.insertSequence(0x147, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x147;
+ gnap._sequenceDatNum = 0;
_vm->setFlag(kGFBarnPadlockOpen);
_vm->setFlag(kGFSceneFlag1);
_vm->setGrabCursorSprite(-1);
_vm->_newSceneNum = 6;
_vm->_timers[2] = 100;
_vm->invRemove(kItemNeedle);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap._actionStatus = kAS05LeaveScene;
break;
case kAS05TalkChicken:
_nextChickenSequenceId = 0x144;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05GrabChicken:
_nextChickenSequenceId = 0x14B;
@@ -2178,25 +2188,25 @@ void Scene05::updateAnimations() {
case kAS05GrabLadder:
while (gameSys.isSequenceActive(0x149, 39))
_vm->gameUpdateTick();
- gameSys.insertSequence(0x14E, _vm->_gnap->_id + 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x14D;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x14E, gnap._id + 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x14D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x14D;
+ gnap._sequenceDatNum = 0;
_vm->_timers[2] = 200;
_vm->_timers[6] = 300;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
gameSys.setAnimation(0x107B1, 1, 0);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap._actionStatus = kAS05LeaveScene;
break;
case kAS05UseTwigWithChicken:
- _vm->_gnap->playShowItem(5, 0, 0);
+ gnap.playShowItem(5, 0, 0);
_nextChickenSequenceId = 0x14F;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -2232,12 +2242,12 @@ void Scene05::updateAnimations() {
if (_nextChickenSequenceId == 0x14B) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x14C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x14C;
+ gameSys.insertSequence(0x14C, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x14C;
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -2292,6 +2302,7 @@ void Scene06::updateHotspots() {
void Scene06::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
bool triedDeviceOnGas = false;
_vm->startSoundTimerC(7);
@@ -2315,12 +2326,12 @@ void Scene06::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gnap->initPos(5, 12, kDirBottomRight);
+ gnap.initPos(5, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -2333,35 +2344,35 @@ void Scene06::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS06Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS06Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2369,33 +2380,33 @@ void Scene06::run() {
break;
case kHS06Gas:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(5, 0);
+ gnap.playScratchingHead(5, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk04)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS06TryToGetGas;
+ gnap._actionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
- _vm->_gnap->playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk04))
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
else
- _vm->_gnap->playScratchingHead(5, 0);
+ gnap.playScratchingHead(5, 0);
break;
}
}
@@ -2403,26 +2414,26 @@ void Scene06::run() {
break;
case kHS06Ladder:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 4);
+ gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFGasTaken))
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
+ gnap._actionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2430,37 +2441,37 @@ void Scene06::run() {
break;
case kHS06Horse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
_vm->_plat->walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
+ gnap._actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 2);
+ gnap.playScratchingHead(3, 2);
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
} else {
- _vm->_gnap->_idleFacing = kDirBottomLeft;
+ gnap._idleFacing = kDirBottomLeft;
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS06TalkToHorse;
+ gnap._actionStatus = kAS06TalkToHorse;
}
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2468,10 +2479,10 @@ void Scene06::run() {
break;
case kHS06ExitOutsideBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS06LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -2484,13 +2495,13 @@ void Scene06::run() {
case kHS06WalkArea3:
case kHS06WalkArea4:
case kHS06WalkArea5:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2502,11 +2513,11 @@ void Scene06::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
if (_horseTurnedBack) {
_nextHorseSequenceId = 0xF5;
} else {
@@ -2543,31 +2554,32 @@ void Scene06::run() {
void Scene06::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS06LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS06TryToGetGas:
- gameSys.insertSequence(0xFC, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0xFC;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0xFC, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0xFC;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS06TryToClimbLadder:
gameSys.insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0xFD, _vm->_gnap->_id, 0);
- gameSys.insertSequence(0xFD, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0xFD;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS06TryToClimbLadderDone;
+ gameSys.setAnimation(0xFD, gnap._id, 0);
+ gameSys.insertSequence(0xFD, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0xFD;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS06TryToClimbLadderDone;
break;
case kAS06TryToClimbLadderDone:
- _vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnap->_actionStatus = -1;
+ gnap._pos = Common::Point(6, 7);
+ gnap._actionStatus = -1;
break;
case kAS06TalkToHorse:
_nextHorseSequenceId = 0xF6;
@@ -2576,7 +2588,7 @@ void Scene06::updateAnimations() {
_nextPlatSequenceId = 0xFB;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -2595,7 +2607,7 @@ void Scene06::updateAnimations() {
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->showCursor();
}
if (_nextPlatSequenceId == 0xFB) {
@@ -2612,16 +2624,16 @@ void Scene06::updateAnimations() {
_vm->hideCursor();
gameSys.setAnimation(0xFA, 256, 1);
gameSys.insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x100, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x100, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xFB, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xFA, 256, 0xFB, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
_vm->_plat->_sequenceId = 0xFA;
_vm->_plat->_sequenceDatNum = 0;
- gameSys.insertSequence(0x107B7, _vm->_gnap->_id, 0x100, _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B7;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x107B7, gnap._id, 0x100, gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B7;
+ gnap._sequenceDatNum = 1;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
_nextPlatSequenceId = -1;
@@ -2633,7 +2645,7 @@ void Scene06::updateAnimations() {
_horseTurnedBack = true;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
default:
gameSys.setAnimation(_nextHorseSequenceId, 120, 2);
@@ -2669,6 +2681,7 @@ void Scene07::updateHotspots() {
void Scene07::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
@@ -2681,18 +2694,18 @@ void Scene07::run() {
gameSys.insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->_gnap->initPos(7, 7, kDirBottomLeft);
+ gnap.initPos(7, 7, kDirBottomLeft);
_vm->_plat->initPos(9, 7, kDirUnk4);
_vm->endSceneInit();
} else {
- _vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnap->_id = 140;
- _vm->_gnap->_sequenceId = 0x8F;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap._pos = Common::Point(6, 7);
+ gnap._id = 140;
+ gnap._sequenceId = 0x8F;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirBottomRight;
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS07Wait;
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS07Wait;
_vm->_plat->_pos = Common::Point(3, 8);
_vm->_plat->_id = 160;
_vm->_plat->_sequenceId = 0x91;
@@ -2722,13 +2735,13 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -2738,16 +2751,16 @@ void Scene07::run() {
case kHS07ExitHouse:
_vm->_isLeavingScene = true;
- if (_vm->_gnap->_pos.x > 8)
- _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, 7), 0, 0x107AD, 1);
+ if (gnap._pos.x > 8)
+ gnap.walkTo(Common::Point(gnap._pos.x, 7), 0, 0x107AD, 1);
else
- _vm->_gnap->walkTo(Common::Point(8, 7), 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS07LeaveScene;
+ gnap.walkTo(Common::Point(8, 7), 0, 0x107AD, 1);
+ gnap._actionStatus = kAS07LeaveScene;
break;
case kHS07Dice:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 8, 3, 3);
+ gnap.playShowCurrItem(4, 8, 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2756,25 +2769,25 @@ void Scene07::run() {
_vm->setFlag(kGFPlatypus);
_vm->invAdd(kItemDice);
updateHotspots();
- _vm->_gnap->playPullOutDevice(3, 3);
+ gnap.playPullOutDevice(3, 3);
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0));
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(gnap.getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = gnap.getSequenceId(gskUseDevice, Common::Point(0, 0));
+ gnap._sequenceDatNum = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
break;
case kHS07Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(40) + 50;
@@ -2783,7 +2796,7 @@ void Scene07::run() {
case kHS07WalkArea1:
case kHS07WalkArea2:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS07WalkArea3:
@@ -2792,7 +2805,7 @@ void Scene07::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2801,8 +2814,8 @@ void Scene07::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_gnap->updateIdleSequence();
- if (_vm->_plat->_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
+ gnap.updateIdleSequence();
+ if (_vm->_plat->_actionStatus < 0 && gnap._actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
@@ -2856,16 +2869,17 @@ void Scene07::run() {
void Scene07::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS07LeaveScene:
_vm->_newSceneNum = 8;
_vm->_sceneDone = true;
break;
}
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2922,6 +2936,7 @@ void Scene08::updateAnimationsCb() {
void Scene08::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
@@ -2951,12 +2966,12 @@ void Scene08::run() {
if (!_vm->isFlag(kGFTruckKeysUsed))
gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -2975,7 +2990,7 @@ void Scene08::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS08Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(50) + 75;
@@ -2985,21 +3000,21 @@ void Scene08::run() {
case kH08SPlatypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->kissPlatypus(8);
+ gnap.actionIdle(0x14D);
+ gnap.kissPlatypus(8);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3010,49 +3025,49 @@ void Scene08::run() {
case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS08LeaveScene;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
case kHS08ExitCrash:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS08LeaveScene;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
case kHS08Man:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(6, 6, 7, 0);
+ gnap.playShowCurrItem(6, 6, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS08LookMan;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS08LookMan;
+ gnap._idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS08TalkMan;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(8, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x14D);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playIdle(6, 6);
+ gnap.playIdle(6, 6);
break;
}
}
@@ -3060,35 +3075,35 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 7, 5, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS08GrabDog;
+ gnap.playShowCurrItem(4, 7, 5, 0);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS08LookDog;
+ gnap.playScratchingHead(6, 0);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS08GrabDog;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(4, 7), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS08GrabDog;
+ gnap._idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS08TalkDog;
+ gnap._idleFacing = kDirUpRight;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x14D);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playIdle(3, 7);
+ gnap.playIdle(3, 7);
break;
}
}
@@ -3096,25 +3111,25 @@ void Scene08::run() {
case kHS08Meat:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(6, 8, 5, 6);
+ gnap.playShowCurrItem(6, 8, 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 7);
+ gnap.playScratchingHead(6, 7);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(6, 7);
+ gnap.playScratchingHead(6, 7);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(6, 7);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(6, 7);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x149;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3122,25 +3137,25 @@ void Scene08::run() {
case kHS08Bone:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(2, 7, 3, 6);
+ gnap.playShowCurrItem(2, 7, 3, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 6);
+ gnap.playScratchingHead(3, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(3, 6);
+ gnap.playScratchingHead(3, 6);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(3, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(3, 6);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14A;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3148,25 +3163,25 @@ void Scene08::run() {
case kHS08Toy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(8, 7, 7, 6);
+ gnap.playShowCurrItem(8, 7, 7, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 6);
+ gnap.playScratchingHead(7, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(7, 6);
+ gnap.playScratchingHead(7, 6);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(7, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(7, 6);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14B;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3174,14 +3189,14 @@ void Scene08::run() {
case kHS08WalkArea1:
case kHS08WalkArea2:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(-1, 6), -1, -1, 1);
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(-1, 6), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3191,10 +3206,10 @@ void Scene08::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
(_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
@@ -3232,39 +3247,40 @@ void Scene08::run() {
void Scene08::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS08LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08TalkMan:
_nextManSequenceId = 0x13F;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08LookMan:
_nextManSequenceId = 0x140;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08LookDog:
_nextManSequenceId = 0x137;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08GrabDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08TalkDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -3332,8 +3348,8 @@ void Scene08::updateAnimations() {
_vm->_plat->_sequenceId = 0x148;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_plat->_sequenceDatNum = 0;
- if (_vm->_gnap->_pos == Common::Point(1, 8))
- _vm->_gnap->walkStep();
+ if (gnap._pos == Common::Point(1, 8))
+ gnap.walkStep();
} else if (_nextDogSequenceId != -1) {
gameSys.setAnimation(_nextDogSequenceId, 100, 3);
gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -3343,11 +3359,11 @@ void Scene08::updateAnimations() {
if (_currDogSequenceId == 0x133) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x14D;
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x14D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x14D;
+ gnap._idleFacing = kDirUpRight;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
}
}
}
@@ -3376,6 +3392,7 @@ void Scene09::updateHotspots() {
void Scene09::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
@@ -3383,13 +3400,13 @@ void Scene09::run() {
gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
- _vm->_gnap->initPos(4, 7, kDirBottomRight);
+ gnap.initPos(4, 7, kDirBottomRight);
_vm->_plat->initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
@@ -3411,7 +3428,7 @@ void Scene09::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS09Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(150) + 50;
@@ -3422,13 +3439,13 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3439,8 +3456,8 @@ void Scene09::run() {
case kHS09ExitKitchen:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
- _vm->_gnap->_actionStatus = kAS09LeaveScene;
+ gnap.walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
+ gnap._actionStatus = kAS09LeaveScene;
_vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3448,27 +3465,27 @@ void Scene09::run() {
case kHS09ExitHouse:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
- _vm->_gnap->walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS09LeaveScene;
+ gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
+ gnap._actionStatus = kAS09LeaveScene;
_vm->_plat->walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
case kHS09Trash:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(9, 6, 8, 0);
+ gnap.playShowCurrItem(9, 6, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 3);
+ gnap.playScratchingHead(8, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->_actionStatus = kAS09SearchTrash;
- _vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS09SearchTrash;
+ gnap.walkTo(Common::Point(9, 6), 0, 0x107BC, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3477,12 +3494,12 @@ void Scene09::run() {
case kHS09WalkArea1:
case kHS09WalkArea2:
case kHS09WalkArea3:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3490,9 +3507,9 @@ void Scene09::run() {
updateAnimations();
- if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus != 1 && _vm->_gnap->_actionStatus != 2) {
+ if (!_vm->_isLeavingScene && gnap._actionStatus != 1 && gnap._actionStatus != 2) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(150) + 100;
if (_vm->_timers[4] & 1)
@@ -3519,30 +3536,31 @@ void Scene09::run() {
void Scene09::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS09LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS09SearchTrash:
gameSys.setAnimation(0x4C, 120, 0);
- gameSys.insertSequence(0x4C, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x4C, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x4B, 2, true);
- _vm->_gnap->_sequenceId = 0x4C;
- _vm->_gnap->_id = 120;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_pos = Common::Point(9, 6);
- _vm->_gnap->_actionStatus = kAS09SearchTrashDone;
+ gnap._sequenceId = 0x4C;
+ gnap._id = 120;
+ gnap._idleFacing = kDirUpLeft;
+ gnap._sequenceDatNum = 0;
+ gnap._pos = Common::Point(9, 6);
+ 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->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}