aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/scenes/group3.cpp
diff options
context:
space:
mode:
authorStrangerke2016-05-08 11:01:21 +0200
committerEugene Sandulenko2016-05-10 12:14:55 +0200
commit6e9243d125153cac1a342d716b0c18f06c88323e (patch)
tree9207292daf1e63f08935ff425b0deec383046f58 /engines/gnap/scenes/group3.cpp
parentfdabbcc16ab90b47a14eda8c168ab206a92780f1 (diff)
downloadscummvm-rg350-6e9243d125153cac1a342d716b0c18f06c88323e.tar.gz
scummvm-rg350-6e9243d125153cac1a342d716b0c18f06c88323e.tar.bz2
scummvm-rg350-6e9243d125153cac1a342d716b0c18f06c88323e.zip
GNAP: Reduce dereferencing of _plat
Diffstat (limited to 'engines/gnap/scenes/group3.cpp')
-rw-r--r--engines/gnap/scenes/group3.cpp193
1 files changed, 101 insertions, 92 deletions
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index c0050c1567..a740d21a7e 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -47,6 +47,7 @@ void Scene30::updateHotspots() {
void Scene30::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
bool hasTakenPill = false;
@@ -67,10 +68,10 @@ void Scene30::run() {
_kidSequenceId = 0x101;
gnap.initPos(7, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -96,14 +97,14 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -150,7 +151,7 @@ void Scene30::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS30LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -173,7 +174,7 @@ void Scene30::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -299,6 +300,7 @@ void Scene31::updateHotspots() {
void Scene31::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
@@ -317,16 +319,16 @@ void Scene31::run() {
if (_vm->_prevSceneNum == 27) {
gnap.initPos(-1, 8, kDirBottomLeft);
- _vm->_plat->initPos(-1, 9, kDirUnk4);
+ plat.initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
gnap.initPos(7, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -353,14 +355,14 @@ void Scene31::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -398,11 +400,11 @@ void Scene31::run() {
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
+ plat._actionStatus = kAS31PlatMeasuringClown;
gnap._actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
@@ -456,7 +458,7 @@ void Scene31::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS31LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -466,7 +468,7 @@ void Scene31::run() {
_vm->_newSceneNum = 27;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
gnap._actionStatus = kAS31LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -489,8 +491,8 @@ void Scene31::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -539,6 +541,7 @@ void Scene31::run() {
void Scene31::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -578,7 +581,7 @@ void Scene31::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_plat->_actionStatus == kAS31PlatMeasuringClown) {
+ if (plat._actionStatus == kAS31PlatMeasuringClown) {
_vm->_sceneWaiting = true;
_beerGuyDistracted = true;
_nextClerkSequenceId = 0xFA;
@@ -599,7 +602,7 @@ void Scene31::updateAnimations() {
++_clerkMeasureCtr;
if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) {
if (gnap._actionStatus != 5)
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
_vm->_timers[0] = 40;
gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
@@ -663,6 +666,7 @@ void Scene32::updateHotspots() {
void Scene32::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -671,13 +675,13 @@ void Scene32::run() {
if (_vm->_prevSceneNum == 33) {
gnap.initPos(11, 6, kDirBottomLeft);
- _vm->_plat->initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
gnap.initPos(1, 6, kDirBottomRight);
- _vm->_plat->initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -700,21 +704,21 @@ void Scene32::run() {
case kHS32Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -727,7 +731,7 @@ void Scene32::run() {
_vm->setGrabCursorSprite(-1);
gnap.walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
gnap._actionStatus = kAS32LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
break;
@@ -757,8 +761,8 @@ void Scene32::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -819,6 +823,7 @@ void Scene33::updateHotspots() {
void Scene33::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -834,26 +839,26 @@ void Scene33::run() {
switch (_vm->_prevSceneNum) {
case 34:
gnap.initPos(11, 7, kDirBottomLeft);
- _vm->_plat->initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
gnap.initPos(7, 7, kDirBottomRight);
- _vm->_plat->initPos(8, 7, kDirNone);
+ plat.initPos(8, 7, kDirNone);
_vm->endSceneInit();
break;
case 32:
gnap.initPos(-1, 6, kDirBottomRight);
- _vm->_plat->initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
gnap.initPos(3, 7, kDirBottomRight);
- _vm->_plat->initPos(2, 7, kDirNone);
+ plat.initPos(2, 7, kDirNone);
_vm->endSceneInit();
break;
}
@@ -877,21 +882,21 @@ void Scene33::run() {
case kHS33Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -954,7 +959,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
gnap._actionStatus = kAS33LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
}
break;
@@ -964,7 +969,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
gnap._actionStatus = kAS33LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
}
break;
@@ -989,8 +994,8 @@ void Scene33::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -1094,6 +1099,7 @@ int Scene38::init() {
void Scene38::updateHotspots() {
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->setHotspot(kHS38Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
_vm->setHotspot(kHS38ExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
@@ -1108,37 +1114,38 @@ void Scene38::updateHotspots() {
_vm->setHotspot(kHS38WalkArea5, 770, 0, 799, 445);
_vm->setHotspot(kHS38WalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
_vm->setDeviceHotspot(kHS38Device, -1, -1, -1, -1);
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38Platypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_DISABLED;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_DISABLED;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38WalkArea6]._flags = SF_NONE;
_vm->_hotspotsCount = 13;
}
void Scene38::run() {
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
_vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 39) {
gnap.initPos(3, 7, kDirBottomLeft);
- _vm->_plat->initPos(4, 7, kDirUnk4);
+ plat.initPos(4, 7, kDirUnk4);
} else {
gnap.initPos(3, 8, kDirBottomRight);
- _vm->_plat->initPos(4, 8, kDirNone);
+ plat.initPos(4, 8, kDirNone);
}
_vm->endSceneInit();
@@ -1159,21 +1166,21 @@ void Scene38::run() {
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1193,9 +1200,9 @@ void Scene38::run() {
case kHS38ExitCave:
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_isLeavingScene = true;
- } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ } else if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
_vm->_sceneWaiting = false;
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(5, 7), 0, 0x107BB, 1);
@@ -1207,7 +1214,7 @@ void Scene38::run() {
case kHS38TrapDoorLid1:
case kHS38TrapDoorLid2:
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
- if (_vm->_verbCursor == PLAT_CURSOR && _vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_verbCursor == PLAT_CURSOR && plat._actionStatus != kAS38PlatypusHoldingTrapDoor)
gnap._actionStatus = kAS38UsePlatypusWithTrapDoor;
else
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
@@ -1224,11 +1231,11 @@ void Scene38::run() {
gnap.playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
gnap.playImpossible(0, 0);
else {
gnap.walkTo(Common::Point(3, 6), 0, 0x107BB, 1);
- _vm->_plat->walkTo(Common::Point(4, 8), -1, -1, 1);
+ plat.walkTo(Common::Point(4, 8), -1, -1, 1);
gnap._actionStatus = kAS38UseHuntingTrophy;
}
break;
@@ -1272,7 +1279,7 @@ void Scene38::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
}
@@ -1291,6 +1298,7 @@ void Scene38::run() {
void Scene38::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -1299,7 +1307,7 @@ void Scene38::updateAnimations() {
_vm->_sceneDone = true;
break;
case kAS38ExitCave:
- gameSys.removeSequence(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, true);
+ gameSys.removeSequence(plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, true);
gameSys.insertSequence(0xA3, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0xA3;
gnap._sequenceDatNum = 0;
@@ -1316,7 +1324,7 @@ void Scene38::updateAnimations() {
updateHotspots();
break;
case kAS38HoldingHuntingTrophy:
- if (_vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus != kAS38PlatypusHoldingTrapDoor)
_vm->_sceneWaiting = true;
if (gnap._sequenceId == 0xA4) {
gameSys.insertSequence(0x9D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
@@ -1332,7 +1340,7 @@ void Scene38::updateAnimations() {
if (gnap._sequenceId == 0x9E) {
gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
gnap._actionStatus = -1;
- } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ } else if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
gameSys.insertSequence(0xA0, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0xA0;
gnap._sequenceDatNum = 0;
@@ -1364,17 +1372,17 @@ void Scene38::updateAnimations() {
gnap._sequenceDatNum = 0;
gameSys.setAnimation(0x9F, gnap._id, 0);
gnap._actionStatus = kAS38HoldingHuntingTrophy;
- if (_vm->_plat->_idleFacing != kDirNone)
- _vm->_plat->playSequence(0x107D5);
+ if (plat._idleFacing != kDirNone)
+ plat.playSequence(0x107D5);
else
- _vm->_plat->playSequence(0x107D4);
- _vm->_plat->walkTo(Common::Point(8, 7), -1, 0x107D2, 1);
- gameSys.insertSequence(0xA1, gnap._id + 1, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0xA1;
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_id = gnap._id + 1;
+ plat.playSequence(0x107D4);
+ plat.walkTo(Common::Point(8, 7), -1, 0x107D2, 1);
+ gameSys.insertSequence(0xA1, gnap._id + 1, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xA1;
+ plat._sequenceDatNum = 0;
+ plat._id = gnap._id + 1;
gameSys.setAnimation(0xA1, gnap._id + 1, 1);
- _vm->_plat->_actionStatus = kAS38PlatypusHoldingTrapDoor;
+ plat._actionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
}
@@ -1382,10 +1390,10 @@ void Scene38::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
- gameSys.insertSequence(0xA2, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0xA2;
- _vm->_plat->_sequenceDatNum = 0;
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ gameSys.insertSequence(0xA2, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xA2;
+ plat._sequenceDatNum = 0;
updateHotspots();
_vm->_sceneWaiting = true;
}
@@ -1421,6 +1429,7 @@ void Scene39::updateHotspots() {
void Scene39::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
// Bug in the original? Timer was never initialized.
_vm->_timers[5] = 0;
@@ -1435,11 +1444,11 @@ void Scene39::run() {
_nextGuySequenceId = -1;
if (_vm->_prevSceneNum == 38) {
gnap.initPos(3, 7, kDirUpRight);
- _vm->_plat->initPos(2, 7, kDirUpLeft);
+ plat.initPos(2, 7, kDirUpLeft);
_vm->endSceneInit();
} else {
gnap.initPos(4, 7, kDirBottomRight);
- _vm->_plat->initPos(5, 7, kDirNone);
+ plat.initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
@@ -1467,21 +1476,21 @@ void Scene39::run() {
case kHS39Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1544,8 +1553,8 @@ void Scene39::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[5]) {