aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/scenes/group2.cpp
diff options
context:
space:
mode:
authorStrangerke2016-04-30 13:37:57 +0200
committerEugene Sandulenko2016-05-10 12:14:48 +0200
commitce8e3281d4578d3f0833e8ce449fe6a9e6b4791e (patch)
treefa3f5a04982dc40d21d3668489c510b434647af6 /engines/gnap/scenes/group2.cpp
parent33b27b8db3b86fac77ef12a6cbda92050c5d3bd3 (diff)
downloadscummvm-rg350-ce8e3281d4578d3f0833e8ce449fe6a9e6b4791e.tar.gz
scummvm-rg350-ce8e3281d4578d3f0833e8ce449fe6a9e6b4791e.tar.bz2
scummvm-rg350-ce8e3281d4578d3f0833e8ce449fe6a9e6b4791e.zip
GNAP: Reduce dereferencing of _gameSys
Diffstat (limited to 'engines/gnap/scenes/group2.cpp')
-rw-r--r--engines/gnap/scenes/group2.cpp568
1 files changed, 305 insertions, 263 deletions
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 98b6752afe..df3fbf4a83 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -54,12 +54,14 @@ void Scene20::updateHotspots() {
}
void Scene20::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextStonerGuySequenceId) {
case 0x16B:
if (!_vm->_timers[4]) {
_stonerGuyShowingJoint = false;
- _vm->_gameSys->insertSequence(0x16B, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x16B, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16B;
_nextStonerGuySequenceId = -1;
}
@@ -68,8 +70,8 @@ void Scene20::updateAnimationsCb() {
// Grab joint
_vm->playGnapPullOutDevice(4, 4);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x16A, 21, 0);
- _vm->_gameSys->insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16A, 21, 0);
+ gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16A;
_nextStonerGuySequenceId = -1;
_vm->invAdd(kItemJoint);
@@ -78,25 +80,25 @@ void Scene20::updateAnimationsCb() {
_vm->_gnapActionStatus = kAS20GrabJointDone;
break;
case 0x16E:
- _vm->_gameSys->setAnimation(0x16E, 21, 2);
- _vm->_gameSys->insertSequence(0x16E, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16E, 21, 2);
+ gameSys.insertSequence(0x16E, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16E;
_nextStonerGuySequenceId = -1;
_nextGroceryStoreGuySequenceId = 0x175;
break;
case 0x16D:
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 0);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 0);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
_vm->_gnapActionStatus = kAS20ActionDone;
break;
case 0x16F:
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(0x17A, 20, 3);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17A, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.setAnimation(0x17A, 20, 3);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17A, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x17A;
_nextGroceryStoreGuySequenceId = -1;
_currStonerGuySequenceId = _nextStonerGuySequenceId;
@@ -118,10 +120,10 @@ void Scene20::updateAnimationsCb() {
_nextStonerGuySequenceId = 0x171;
break;
}
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17C, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17C, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x17C, 20, 3);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
_currGroceryStoreGuySequenceId = 0x17C;
_nextGroceryStoreGuySequenceId = -1;
_currStonerGuySequenceId = _nextStonerGuySequenceId;
@@ -129,8 +131,8 @@ void Scene20::updateAnimationsCb() {
break;
default:
_nextStonerGuySequenceId = 0x16C;
- _vm->_gameSys->setAnimation(0x16C, 21, 2);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16C, 21, 2);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
break;
@@ -155,6 +157,8 @@ void Scene20::stopSounds() {
}
void Scene20::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -175,30 +179,30 @@ void Scene20::run() {
}
_nextStonerGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_currStonerGuySequenceId, 21, 2);
- _vm->_gameSys->insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currStonerGuySequenceId, 21, 2);
+ gameSys.insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(20) + 30;
_currGroceryStoreGuySequenceId = 0x17C;
_nextGroceryStoreGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x17C, 20, 3);
+ gameSys.insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFSceneFlag1)) {
_vm->clearFlag(kGFSceneFlag1);
_vm->endSceneInit();
- _vm->_gameSys->setAnimation(0x182, 140, 0);
- _vm->_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ gameSys.setAnimation(0x182, 140, 0);
+ gameSys.insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2) {
// checkGameAppStatus();
_vm->gameUpdateTick();
}
@@ -484,13 +488,13 @@ void Scene20::run() {
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
- _vm->_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -510,17 +514,19 @@ void Scene20::run() {
}
void Scene20::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS20LeaveScene:
_vm->_sceneDone = true;
break;
case kAS20TalkStonerGuyNoJoint:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -531,11 +537,11 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 100;
break;
case kAS20TalkStonerGuyHasJoint:
- _vm->_gameSys->setAnimation(0x168, 21, 2);
- _vm->_gameSys->setAnimation(379, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x168, 21, 2);
+ gameSys.setAnimation(379, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -555,10 +561,10 @@ void Scene20::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS20TalkGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -572,10 +578,10 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 100;
break;
case kAS20GrabGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -585,10 +591,10 @@ void Scene20::updateAnimations() {
_nextGroceryStoreGuySequenceId = 0x178;
break;
case kAS20GrabGroceryStoreHat:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -597,8 +603,8 @@ void Scene20::updateAnimations() {
break;
case kAS20SwitchGroceryStoreHat:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x180, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x180, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x180;
_vm->_gnapSequenceDatNum = 0;
_vm->invRemove(kItemCowboyHat);
@@ -606,14 +612,14 @@ void Scene20::updateAnimations() {
_vm->_gnapActionStatus = kAS20SwitchGroceryStoreHatDone;
break;
case kAS20SwitchGroceryStoreHatDone:
- _vm->_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
_vm->setFlag(kGFGroceryStoreHatTaken);
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x12C, 255);
- _vm->_gameSys->setAnimation(0x181, 256, 0);
- _vm->_gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x181, 256, 0);
+ gameSys.insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -629,41 +635,41 @@ void Scene20::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextGroceryStoreGuySequenceId) {
case 0x176:
case 0x177:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = 0x16D;
break;
case 0x178:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x17D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.setAnimation(0x17D, _vm->_gnapId, 0);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17D;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS20ActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16D, 21, 2);
+ gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
_currGroceryStoreGuySequenceId = 0x178;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = -1;
break;
case 0x179:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x16D, 21, 0);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.setAnimation(0x16D, 21, 0);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17E;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS20ActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16D, 21, 2);
+ gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
_currGroceryStoreGuySequenceId = 377;
_nextGroceryStoreGuySequenceId = -1;
@@ -671,25 +677,25 @@ void Scene20::updateAnimations() {
_vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
break;
case 0x17C:
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 3);
_nextStonerGuySequenceId = 0x171;
break;
case 0x17A:
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 3);
_nextStonerGuySequenceId = 0x16F;
break;
case 0x175:
- _vm->_gameSys->setAnimation(0x175, 20, 0);
- _vm->_gameSys->setAnimation(0x175, 20, 3);
- _vm->_gameSys->insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x175, 20, 0);
+ gameSys.setAnimation(0x175, 20, 3);
+ gameSys.insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x175;
_nextGroceryStoreGuySequenceId = -1;
_vm->_gnapActionStatus = kAS20ActionDone;
break;
default:
if (_nextGroceryStoreGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
_nextGroceryStoreGuySequenceId = -1;
}
@@ -709,6 +715,7 @@ Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
int Scene21::init() {
_vm->_gameSys->setAnimation(0, 0, 3);
+
return _vm->isFlag(kGFTwigTaken) ? 0x94 : 0x93;
}
@@ -728,27 +735,27 @@ void Scene21::updateHotspots() {
}
void Scene21::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(6);
-
_vm->_timers[5] = _vm->getRandom(100) + 100;
-
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
_vm->initGnapPos(5, 8, kDirBottomRight);
_vm->initPlatypusPos(6, 8, kDirNone);
- _vm->_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->clearFlag(kGFKeysTaken);
} else {
_vm->initGnapPos(5, 11, kDirBottomRight);
_vm->initPlatypusPos(6, 11, kDirNone);
if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -757,8 +764,8 @@ void Scene21::run() {
_vm->initGnapPos(5, 11, kDirBottomRight);
_vm->initPlatypusPos(6, 11, kDirNone);
_currOldLadySequenceId = 0x89;
- _vm->_gameSys->setAnimation(0x89, 79, 3);
- _vm->_gameSys->insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x89, 79, 3);
+ gameSys.insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
_nextOldLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
@@ -911,7 +918,7 @@ void Scene21::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 100;
- _vm->_gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundA();
}
@@ -929,16 +936,18 @@ void Scene21::run() {
}
void Scene21::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS21TalkOldLady:
_nextOldLadySequenceId = 0x8B;
_vm->_gnapActionStatus = -1;
break;
case kAS21GrabBanana:
- _vm->_gameSys->setAnimation(0x8C, 59, 0);
- _vm->_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x8C, 59, 0);
+ gameSys.insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
_vm->setFlag(kGFUnk04);
_vm->invAdd(kItemBanana);
updateHotspots();
@@ -953,8 +962,8 @@ void Scene21::updateAnimations() {
_nextOldLadySequenceId = 0x87;
break;
case kAS21UseHatWithOldLady:
- _vm->_gameSys->setAnimation(0x8F, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x8F, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x8F;
_vm->_gnapActionStatus = kAS21UseHatWithOldLadyDone;
@@ -971,25 +980,25 @@ void Scene21::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
+ if (gameSys.getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
if (_nextOldLadySequenceId == 0x87) {
- _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextOldLadySequenceId, 79, 3);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x86;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else if (_nextOldLadySequenceId == 0x91) {
- _vm->_gameSys->setAnimation(0x91, 79, 0);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x91, 79, 0);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS21LeaveScene;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else {
- _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextOldLadySequenceId, 79, 3);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
}
@@ -1019,13 +1028,15 @@ void Scene22::updateHotspots() {
}
void Scene22::run() {
- _vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
_currCashierSequenceId = 0x59;
_nextCashierSequenceId = -1;
- _vm->_gameSys->setAnimation(0x59, 1, 3);
- _vm->_gameSys->insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x59, 1, 3);
+ gameSys.insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(30) + 20;
@@ -1063,12 +1074,12 @@ void Scene22::run() {
_caughtBefore = true;
storeDetectiveSeqId = 0x54;
}
- _vm->_gameSys->waitForUpdate();
- _vm->_gameSys->requestClear1();
- _vm->_gameSys->drawSpriteToBackground(0, 0, 0x44);
- _vm->_gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
- _vm->_gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2) {
+ gameSys.waitForUpdate();
+ gameSys.requestClear1();
+ gameSys.drawSpriteToBackground(0, 0, 0x44);
+ gameSys.setAnimation(storeDetectiveSeqId, 256, 4);
+ gameSys.insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(4) != 2) {
_vm->gameUpdateTick();
}
_vm->_sceneDone = true;
@@ -1224,8 +1235,10 @@ void Scene22::run() {
}
void Scene22::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS22LeaveScene:
_vm->_sceneDone = true;
@@ -1237,9 +1250,9 @@ void Scene22::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextCashierSequenceId, 1, 3);
- _vm->_gameSys->insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
+ gameSys.setAnimation(_nextCashierSequenceId, 1, 3);
+ gameSys.insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currCashierSequenceId = _nextCashierSequenceId;
_nextCashierSequenceId = -1;
}
@@ -1267,21 +1280,23 @@ void Scene23::updateHotspots() {
}
void Scene23::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->_timers[4] = _vm->getRandom(100) + 200;
_vm->_timers[5] = _vm->getRandom(100) + 200;
_currStoreClerkSequenceId = 0xB4;
_nextStoreClerkSequenceId = -1;
- _vm->_gameSys->setAnimation(0xB4, 1, 4);
- _vm->_gameSys->insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0xB4, 1, 4);
+ gameSys.insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
_vm->initGnapPos(-1, 7, kDirBottomRight);
_vm->initPlatypusPos(-2, 7, kDirNone);
- _vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
@@ -1290,7 +1305,7 @@ void Scene23::run() {
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else {
_vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
_vm->setFlag(kGFUnk24);
@@ -1408,14 +1423,14 @@ void Scene23::run() {
_vm->_timers[4] = _vm->getRandom(100) + 200;
switch (_vm->getRandom(4)) {
case 0:
- _vm->_gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
case 3:
- _vm->_gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -1448,17 +1463,19 @@ void Scene23::run() {
}
void Scene23::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS23LookCereals:
_vm->showFullScreenSprite(0x48);
_vm->_gnapActionStatus = -1;
break;
case kAS23GrabCereals:
- _vm->_gameSys->setAnimation(0xBE, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0xBF, 2);
+ gameSys.setAnimation(0xBE, _vm->_gnapId, 0);
+ gameSys.insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.requestRemoveSequence(0xBF, 2);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xBE;
_vm->_gnapActionStatus = kAS23GrabCerealsDone;
@@ -1473,7 +1490,7 @@ void Scene23::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
+ if (gameSys.getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
case 1:
@@ -1489,8 +1506,8 @@ void Scene23::updateAnimations() {
_nextStoreClerkSequenceId = 0xB6;
break;
}
- _vm->_gameSys->setAnimation(_nextStoreClerkSequenceId, 1, 4);
- _vm->_gameSys->insertSequence(_nextStoreClerkSequenceId, 1, _currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStoreClerkSequenceId, 1, 4);
+ gameSys.insertSequence(_nextStoreClerkSequenceId, 1, _currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currStoreClerkSequenceId = _nextStoreClerkSequenceId;
_nextStoreClerkSequenceId = -1;
}
@@ -1521,6 +1538,7 @@ void Scene24::updateHotspots() {
}
void Scene24::run() {
+ GameSys& gameSys = *_vm->_gameSys;
int counter = 0;
_vm->playSound(0x10940, true);
@@ -1528,15 +1546,15 @@ void Scene24::run() {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- _vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 50;
_vm->_timers[5] = _vm->getRandom(20) + 40;
_vm->_timers[6] = _vm->getRandom(50) + 30;
- _vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
_currWomanSequenceId = 0x35;
_girlSequenceId = 0x36;
@@ -1651,12 +1669,12 @@ void Scene24::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 50;
- _vm->_gameSys->insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_girlSequenceId = 0x37;
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 40;
- _vm->_gameSys->insertSequence(0x31, 20, _boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x31, 20, _boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_boySequenceId = 0x31;
}
if (!_vm->_timers[6]) {
@@ -1673,20 +1691,20 @@ void Scene24::run() {
_nextWomanSequenceId = 0x34;
break;
}
- _vm->_gameSys->insertSequence(_nextWomanSequenceId, 20, _currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextWomanSequenceId, 20, _currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currWomanSequenceId = _nextWomanSequenceId;
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
switch (_vm->getRandom(3)) {
case 0:
- _vm->_gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -1707,8 +1725,10 @@ void Scene24::run() {
}
void Scene24::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS24LeaveScene)
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
@@ -1745,23 +1765,25 @@ void Scene25::playAnims(int index) {
if (index > 4)
return;
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
switch (index) {
case 1:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x25);
+ _vm->_largeSprite = gameSys.createSurface(0x25);
break;
case 2:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x26);
+ _vm->_largeSprite = gameSys.createSurface(0x26);
break;
case 3:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x27);
+ _vm->_largeSprite = gameSys.createSurface(0x27);
break;
case 4:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x28);
+ _vm->_largeSprite = gameSys.createSurface(0x28);
break;
}
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
_vm->delayTicksCursor(5);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
!_vm->isKeyStatus1(29)) {
@@ -1771,19 +1793,21 @@ void Scene25::playAnims(int index) {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(29);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->delayTicksCursor(5);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->showCursor();
}
void Scene25::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(5);
_currTicketVendorSequenceId = 0x52;
- _vm->_gameSys->setAnimation(0x52, 39, 3);
- _vm->_gameSys->insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x52, 39, 3);
+ gameSys.insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_nextTicketVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -2005,8 +2029,10 @@ void Scene25::run() {
}
void Scene25::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS25TalkTicketVendor:
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
@@ -2014,10 +2040,10 @@ void Scene25::updateAnimations() {
break;
case kAS25EnterCircusWihoutTicket:
_nextTicketVendorSequenceId = 0x5E;
- _vm->_gameSys->setAnimation(0x5E, 39, 0);
- _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x5E, 39, 0);
+ gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
@@ -2033,8 +2059,8 @@ void Scene25::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemTickets);
_vm->setFlag(kGFNeedleTaken);
- _vm->_gameSys->setAnimation(0x61, 40, 0);
- _vm->_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x61, 40, 0);
+ gameSys.insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = kAS25ShowTicketToVendorDone;
break;
case kAS25ShowTicketToVendorDone:
@@ -2046,15 +2072,15 @@ void Scene25::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_nextTicketVendorSequenceId == 0x53) {
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextTicketVendorSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
}
@@ -2086,13 +2112,15 @@ void Scene26::updateHotspots() {
}
void Scene26::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->startSoundTimerB(7);
_vm->playSound(0x1093B, true);
_currKidSequenceId = 0x5B;
_nextKidSequenceId = -1;
- _vm->_gameSys->setAnimation(0x5B, 160, 3);
- _vm->_gameSys->insertSequence(_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x5B, 160, 3);
+ gameSys.insertSequence(_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(20) + 50;
_vm->_timers[4] = _vm->getRandom(20) + 50;
@@ -2100,10 +2128,10 @@ void Scene26::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 25) {
_vm->initGnapPos(-1, 8, kDirBottomRight);
@@ -2234,11 +2262,11 @@ void Scene26::run() {
}
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 130;
- _vm->_gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(50) + 100;
- _vm->_gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
}
@@ -2256,16 +2284,18 @@ void Scene26::run() {
}
void Scene26::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS26LeaveScene)
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextKidSequenceId, 160, _currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextKidSequenceId, 160, 3);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
+ gameSys.insertSequence(_nextKidSequenceId, 160, _currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 160, 3);
_currKidSequenceId = _nextKidSequenceId;
_nextKidSequenceId = -1;
}
@@ -2298,23 +2328,25 @@ void Scene27::updateHotspots() {
}
void Scene27::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(4);
_vm->_timers[7] = _vm->getRandom(100) + 300;
_vm->queueInsertDeviceIcon();
if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_debugLevel == 4)
_vm->startIdleTimer(6);
- _vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
_currJanitorSequenceId = 0xCB;
_nextJanitorSequenceId = -1;
- _vm->_gameSys->setAnimation(0xCB, 39, 3);
+ gameSys.setAnimation(0xCB, 39, 3);
_vm->_timers[5] = _vm->getRandom(20) + 60;
switch (_vm->_prevSceneNum) {
@@ -2522,7 +2554,7 @@ void Scene27::run() {
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 300;
if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
}
@@ -2540,8 +2572,10 @@ void Scene27::run() {
}
void Scene27::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS27TalkJanitor:
switch (_vm->getRandom(3)) {
@@ -2562,8 +2596,8 @@ void Scene27::updateAnimations() {
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
_vm->setFlag(kGFUnk13);
- _vm->_gameSys->setAnimation(0xD2, 39, 0);
- _vm->_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xD2, 39, 0);
+ gameSys.insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS27GrabBucketDone;
break;
case kAS27GrabBucketDone:
@@ -2575,9 +2609,9 @@ void Scene27::updateAnimations() {
break;
case kAS27TryEnterClownTent:
_nextJanitorSequenceId = 0xD1;
- _vm->_gameSys->insertSequence(0xD1, 39, _currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(0xD1, 39, _currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
_vm->_gnapActionStatus = kAS27TryEnterClownTentDone;
@@ -2598,12 +2632,12 @@ void Scene27::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextJanitorSequenceId) {
case -1:
_nextJanitorSequenceId = 0xCB;
- _vm->_gameSys->insertSequence(0xCB, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.insertSequence(0xCB, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2611,9 +2645,9 @@ void Scene27::updateAnimations() {
case 0xCD:
case 0xCE:
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2621,8 +2655,8 @@ void Scene27::updateAnimations() {
// Show picture to janitor
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_vm->_gnapActionStatus = kAS27EnterClownTent;
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
@@ -2632,8 +2666,8 @@ void Scene27::updateAnimations() {
_vm->_newSceneNum = 28;
break;
default:
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2670,44 +2704,46 @@ void Scene28::updateHotspots() {
}
void Scene28::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093C, true);
_nextClownSequenceId = -1;
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFUnk22))
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFMudTaken)) {
if (_vm->isFlag(kGFUnk21)) {
- _vm->_gameSys->setAnimation(0x11C, 39, 3);
- _vm->_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x11C, 39, 3);
+ gameSys.insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->invHas(kItemHorn))
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11C;
} else {
_currClownSequenceId = 0x11B;
- _vm->_gameSys->setAnimation(0x11B, 39, 3);
- _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x11B, 39, 3);
+ gameSys.insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
_vm->initGnapPos(8, 8, kDirBottomLeft);
_vm->initPlatypusPos(9, 8, kDirUnk4);
_vm->endSceneInit();
} else {
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->initGnapPos(8, 8, kDirBottomLeft);
_vm->initPlatypusPos(9, 8, kDirUnk4);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_currClownSequenceId = 0x115;
_vm->setFlag(kGFMudTaken);
- _vm->_gameSys->setAnimation(0x115, 39, 3);
- _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x115, 39, 3);
+ gameSys.insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_nextClownSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 80;
_vm->_gnapActionStatus = kAS28GnapWaiting;
- while (_vm->_gameSys->getAnimationStatus(3) != 2) {
+ while (gameSys.getAnimationStatus(3) != 2) {
_vm->gameUpdateTick();
_vm->updateMouseCursor();
}
@@ -2906,8 +2942,10 @@ void Scene28::run() {
}
void Scene28::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS28UseBeerBucketWithClown:
_vm->setFlag(kGFUnk22);
@@ -2928,17 +2966,17 @@ void Scene28::updateAnimations() {
case kAS28GrabHornSuccess:
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x117, 59, 0);
- _vm->_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x117, 59, 0);
+ gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS28GrabHornSuccessDone;
break;
case kAS28GrabHornSuccessDone:
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0xF6, 255);
- _vm->_gameSys->setAnimation(0x120, 256, 0);
- _vm->_gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x120, 256, 0);
+ gameSys.insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -2950,8 +2988,8 @@ void Scene28::updateAnimations() {
case kAS28GrabEmptyBucket:
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x111, 99, 0);
- _vm->_gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x111, 99, 0);
+ gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS28GrabEmptyBucketDone;
break;
case kAS28GrabEmptyBucketDone:
@@ -2962,10 +3000,10 @@ void Scene28::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = -1;
@@ -2989,25 +3027,25 @@ void Scene28::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextClownSequenceId) {
case 0x113:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = kAS28GnapWaiting;
break;
case 0x116:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11C, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x11C, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = kAS28GnapWaiting;
@@ -3018,9 +3056,9 @@ void Scene28::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case 0x119:
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->removeSequence(_currClownSequenceId, 39, true);
+ gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.removeSequence(_currClownSequenceId, 39, true);
_vm->_gnapActionStatus = kAS28GrabHornFailsDone;
_vm->_gnapSequenceId = _nextClownSequenceId;
_vm->_gnapSequenceDatNum = 0;
@@ -3028,8 +3066,8 @@ void Scene28::updateAnimations() {
break;
}
if (_nextClownSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 3);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
}
@@ -3063,6 +3101,8 @@ void Scene29::updateHotspots() {
}
void Scene29::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
_vm->queueInsertDeviceIcon();
@@ -3070,22 +3110,22 @@ void Scene29::run() {
if (_vm->invHas(kItemHorn)) {
_currMonkeySequenceId = 0xE8;
_nextMonkeySequenceId = -1;
- _vm->_gameSys->setAnimation(0xE8, 159, 4);
- _vm->_gameSys->insertSequence(_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0xE8, 159, 4);
+ gameSys.insertSequence(_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
_currManSequenceId = 0xED;
_nextManSequenceId = -1;
- _vm->_gameSys->setAnimation(0xED, 39, 3);
+ gameSys.setAnimation(0xED, 39, 3);
_vm->_timers[4] = _vm->getRandom(20) + 60;
} else {
- _vm->_gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0, 0, 4);
+ gameSys.insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0, 0, 3);
}
- _vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 27) {
_vm->initGnapPos(12, 7, kDirBottomRight);
@@ -3279,8 +3319,10 @@ void Scene29::run() {
}
void Scene29::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS29UseBananaWithMonkey:
_nextMonkeySequenceId = 0xE5;
@@ -3291,22 +3333,22 @@ void Scene29::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextManSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextManSequenceId, 39, _currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextManSequenceId, 39, 3);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextManSequenceId != -1) {
+ gameSys.insertSequence(_nextManSequenceId, 39, _currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextManSequenceId, 39, 3);
_currManSequenceId = _nextManSequenceId;
_nextManSequenceId = -1;
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(4) == 2) {
if (_nextMonkeySequenceId == 0xE5) {
- _vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xF2;
- _vm->_gameSys->setAnimation(0xE6, 159, 0);
- _vm->_gameSys->setAnimation(0, 159, 4);
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xE6, 159, 0);
+ gameSys.setAnimation(0, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS29LeaveScene;
_currMonkeySequenceId = 0xE6;
_nextMonkeySequenceId = -1;
@@ -3314,7 +3356,7 @@ void Scene29::updateAnimations() {
while (_vm->_timers[5])
_vm->gameUpdateTick();
_vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
} else if (_nextMonkeySequenceId == -1) {
switch (_vm->getRandom(6)) {
@@ -3337,13 +3379,13 @@ void Scene29::updateAnimations() {
_nextMonkeySequenceId = 0xE7;
break;
}
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextMonkeySequenceId, 159, 4);
_currMonkeySequenceId = _nextMonkeySequenceId;
_nextMonkeySequenceId = -1;
} else {
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextMonkeySequenceId, 159, 4);
_currMonkeySequenceId = _nextMonkeySequenceId;
_nextMonkeySequenceId = -1;
}