aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/scenes/group3.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/group3.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/group3.cpp')
-rw-r--r--engines/gnap/scenes/group3.cpp224
1 files changed, 124 insertions, 100 deletions
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 6d31df8b8a..7526a9d71c 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -45,6 +45,7 @@ void Scene30::updateHotspots() {
}
void Scene30::run() {
+ GameSys& gameSys = *_vm->_gameSys;
bool hasTakenPill = false;
_vm->playSound(0x1093B, true);
@@ -53,13 +54,13 @@ void Scene30::run() {
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFUnk23))
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(50) + 180;
- _vm->_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(100) + 300;
_kidSequenceId = 0x101;
@@ -177,11 +178,11 @@ void Scene30::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_gnapActionStatus < 0) {
if (_vm->getRandom(5) == 1) {
- _vm->_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_kidSequenceId = 0x100;
} else {
- _vm->_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
}
}
}
@@ -189,9 +190,9 @@ void Scene30::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_gnapActionStatus < 0) {
if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
- _vm->_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundB();
@@ -210,16 +211,18 @@ void Scene30::run() {
}
void Scene30::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 kAS30LeaveScene:
_vm->_sceneDone = true;
break;
case kAS30UsePillMachine:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x105, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x105, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x105;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS30UsePillMachine2;
@@ -228,13 +231,13 @@ void Scene30::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x3F, 255);
- _vm->_gameSys->removeSequence(0x105, _vm->_gnapId, true);
- _vm->_gameSys->setAnimation(0x102, 256, 0);
- _vm->_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.removeSequence(0x105, _vm->_gnapId, true);
+ gameSys.setAnimation(0x102, 256, 0);
+ gameSys.insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x103, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x103, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->_gnapActionStatus = kAS30UsePillMachine3;
@@ -242,15 +245,15 @@ void Scene30::updateAnimations() {
_vm->setFlag(kGFUnk23);
break;
case kAS30UsePillMachine3:
- _vm->_gameSys->setAnimation(0x104, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x104, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x104;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS30UsePillMachine4;
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
case kAS30UsePillMachine4:
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1);
_vm->_gnapActionStatus = -1;
break;
@@ -291,18 +294,19 @@ void Scene31::updateHotspots() {
}
void Scene31::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
-
_vm->queueInsertDeviceIcon();
_beerGuyDistracted = false;
- _vm->_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClerkSequenceId = 0xFB;
_nextClerkSequenceId = -1;
- _vm->_gameSys->setAnimation(0xFB, 39, 3);
+ gameSys.setAnimation(0xFB, 39, 3);
_vm->_timers[4] = _vm->getRandom(20) + 60;
_vm->_timers[5] = _vm->getRandom(50) + 180;
@@ -411,7 +415,7 @@ void Scene31::run() {
_vm->setGrabCursorSprite(-1);
_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
- _vm->_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->playGnapPullOutDevice(6, 8);
_vm->playGnapUseDevice(0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
@@ -508,9 +512,9 @@ void Scene31::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_gnapActionStatus < 0) {
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundB();
@@ -529,15 +533,17 @@ void Scene31::run() {
}
void Scene31::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 kAS31UseBeerBarrel:
_nextClerkSequenceId = 0xFE;
break;
case kAS31FillEmptyBucketWithBeer:
- _vm->_gameSys->setAnimation(0x102, 59, 0);
- _vm->_gameSys->insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x102, 59, 0);
+ gameSys.insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapX = 5;
_vm->_gnapY = 7;
_vm->_gnapSequenceDatNum = 0;
@@ -549,7 +555,7 @@ void Scene31::updateAnimations() {
_vm->_gnapIdleFacing = kDirBottomLeft;
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
_vm->invRemove(kItemEmptyBucket);
@@ -566,8 +572,8 @@ void Scene31::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->_platypusActionStatus == kAS31PlatMeasuringClown) {
_vm->_sceneWaiting = true;
_beerGuyDistracted = true;
@@ -575,12 +581,12 @@ void Scene31::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextClerkSequenceId) {
case 0xFA:
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFC, 39, _nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFC, 39, _nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xFC, 39, 3);
_currClerkSequenceId = 0xFC;
_nextClerkSequenceId = 0xFC;
_clerkMeasureCtr = 0;
@@ -591,33 +597,33 @@ void Scene31::updateAnimations() {
if (_vm->_gnapActionStatus != 5)
_vm->_platypusActionStatus = -1;
_vm->_timers[0] = 40;
- _vm->_gameSys->insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
_nextClerkSequenceId = -1;
if (_vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeer)
_vm->_gnapActionStatus = -1;
_beerGuyDistracted = false;
_clerkMeasureMaxCtr = 3;
- _vm->_gameSys->setAnimation(0xFD, 39, 3);
+ gameSys.setAnimation(0xFD, 39, 3);
_vm->_sceneWaiting = false;
} else {
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = 0xFC;
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ gameSys.setAnimation(0xFC, 39, 3);
}
break;
case 0xFE:
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
default:
if (_nextClerkSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
}
@@ -651,6 +657,8 @@ void Scene32::updateHotspots() {
}
void Scene32::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
_vm->queueInsertDeviceIcon();
@@ -751,9 +759,9 @@ void Scene32::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
}
@@ -770,8 +778,10 @@ void Scene32::run() {
}
void Scene32::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 == kAS32LeaveScene)
_vm->_sceneDone = true;
}
@@ -802,13 +812,15 @@ void Scene33::updateHotspots() {
}
void Scene33::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
_vm->queueInsertDeviceIcon();
_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x7E, 179, 2);
+ gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -978,9 +990,9 @@ void Scene33::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kAS33TalkChicken && _vm->_gnapActionStatus != kAS33UseChicken) {
if (_vm->getRandom(6) != 0) {
@@ -1006,7 +1018,9 @@ void Scene33::run() {
}
void Scene33::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case kAS33LeaveScene:
_vm->_sceneDone = true;
@@ -1019,12 +1033,12 @@ void Scene33::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS33UseChickenDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x7E, 179, 2);
+ gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->_timers[5] = 30;
break;
@@ -1034,24 +1048,24 @@ void Scene33::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x81) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
_vm->_gnapActionStatus = kAS33UseChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x7F) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
}
@@ -1064,8 +1078,10 @@ Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
}
int Scene38::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0xA5;
}
@@ -1262,26 +1278,28 @@ void Scene38::run() {
}
void Scene38::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 kAS38LeaveScene:
_vm->_sceneDone = true;
break;
case kAS38ExitCave:
- _vm->_gameSys->removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
- _vm->_gameSys->insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
+ gameSys.insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA3;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0xA3, _vm->_gnapId, 0);
+ gameSys.setAnimation(0xA3, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38LeaveScene;
break;
case kAS38UseHuntingTrophy:
- _vm->_gameSys->removeSequence(0x9B, 0, true);
- _vm->_gameSys->insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x9B, 0, true);
+ gameSys.insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9C;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9C, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9C, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
updateHotspots();
break;
@@ -1289,21 +1307,21 @@ void Scene38::updateAnimations() {
if (_vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
_vm->_sceneWaiting = true;
if (_vm->_gnapSequenceId == 0xA4) {
- _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9D;
} else {
- _vm->_gameSys->insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA4;
}
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
+ gameSys.setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
break;
case kAS38ReleaseHuntingTrophy:
if (_vm->_gnapSequenceId == 0x9E) {
- _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
} else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA0;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapX = 3;
@@ -1318,44 +1336,44 @@ void Scene38::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
} else {
- _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9E;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapX = 3;
_vm->_gnapY = 6;
_vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
_vm->_sceneWaiting = false;
updateHotspots();
}
break;
case kAS38UsePlatypusWithTrapDoor:
_vm->_sceneWaiting = false;
- _vm->_gameSys->insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9F;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9F, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9F, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
if (_vm->_platypusFacing != kDirNone)
_vm->playPlatypusSequence(0x107D5);
else
_vm->playPlatypusSequence(0x107D4);
_vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
- _vm->_gameSys->insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0xA1;
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusId = _vm->_gnapId + 1;
- _vm->_gameSys->setAnimation(0xA1, _vm->_gnapId + 1, 1);
+ gameSys.setAnimation(0xA1, _vm->_gnapId + 1, 1);
_vm->_platypusActionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0xA2;
_vm->_platypusSequenceDatNum = 0;
updateHotspots();
@@ -1372,8 +1390,10 @@ Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
}
int Scene39::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0x35;
}
@@ -1389,15 +1409,17 @@ void Scene39::updateHotspots() {
}
void Scene39::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
// Bug in the original? Timer was never initialized.
_vm->_timers[5] = 0;
_vm->queueInsertDeviceIcon();
_currGuySequenceId = 0x33;
- _vm->_gameSys->setAnimation(0x33, 21, 3);
- _vm->_gameSys->insertSequence(_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.setAnimation(0x33, 21, 3);
+ gameSys.insertSequence(_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
_nextGuySequenceId = -1;
if (_vm->_prevSceneNum == 38) {
@@ -1548,17 +1570,19 @@ void Scene39::run() {
}
void Scene39::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 == kAS39LeaveScene)
_vm->_sceneDone = true;
else
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextGuySequenceId, 21, 3);
- _vm->_gameSys->insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
+ gameSys.setAnimation(_nextGuySequenceId, 21, 3);
+ gameSys.insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currGuySequenceId = _nextGuySequenceId;
_nextGuySequenceId = -1;
}