aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2016-05-05 10:12:15 +0200
committerEugene Sandulenko2016-05-10 12:14:50 +0200
commit579ecdabd19f0a5f6837224eafebf6a8ac74c0ad (patch)
tree9704cec8a5164c2ec0515d5322477facdc4a739f
parentdda4931ee9d78c704ebd768af243d7019e9d0913 (diff)
downloadscummvm-rg350-579ecdabd19f0a5f6837224eafebf6a8ac74c0ad.tar.gz
scummvm-rg350-579ecdabd19f0a5f6837224eafebf6a8ac74c0ad.tar.bz2
scummvm-rg350-579ecdabd19f0a5f6837224eafebf6a8ac74c0ad.zip
GNAP: More refactoring related to characters (WIP)
-rw-r--r--engines/gnap/character.cpp460
-rw-r--r--engines/gnap/character.h14
-rw-r--r--engines/gnap/gnap.cpp610
-rw-r--r--engines/gnap/gnap.h10
-rw-r--r--engines/gnap/grid.cpp94
-rw-r--r--engines/gnap/scenes/arcade.cpp9
-rw-r--r--engines/gnap/scenes/group0.cpp432
-rw-r--r--engines/gnap/scenes/group1.cpp456
-rw-r--r--engines/gnap/scenes/group2.cpp170
-rw-r--r--engines/gnap/scenes/group3.cpp146
-rw-r--r--engines/gnap/scenes/group4.cpp182
11 files changed, 1297 insertions, 1286 deletions
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 84274877d9..8b6ea803c0 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -22,6 +22,7 @@
#include "gnap/gnap.h"
#include "gnap/character.h"
+#include "gnap/gamesys.h"
namespace Gnap {
@@ -29,12 +30,469 @@ Character::Character(GnapEngine *vm) : _vm(vm) {
_pos = Common::Point(0, 0);
_idleFacing = kDirNone;
_actionStatus = 0;
+ _sequenceId = 0;
+ _sequenceDatNum = 0;
+ _id = 0;
}
Character::~Character() {}
-PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {}
+PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {
+ _gnapBrainPulseNum = 0;
+ _gnapBrainPulseRndValue = 0;
+}
+
+int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
+ int sequenceId = 0;
+
+ switch (kind) {
+ case gskPullOutDevice:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x83F;
+ _idleFacing = kDirUpLeft;
+ } else {
+ sequenceId = 0x83D;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x83B;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x839;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x839;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x83B;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x83D;
+ break;
+ default:
+ sequenceId = 0x83F;
+ break;
+ }
+ }
+ break;
+
+ case gskPullOutDeviceNonWorking:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x829;
+ _idleFacing = kDirUpLeft;
+ } else {
+ sequenceId = 0x828;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x827;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x826;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x826;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x827;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x828;
+ break;
+ default:
+ sequenceId = 0x829;
+ break;
+ }
+ }
+ break;
+
+ case gskScratchingHead:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x834;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x885;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x834;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x833;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x833;
+ _idleFacing = kDirBottomRight;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x834;
+ _idleFacing = kDirBottomLeft;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x885;
+ _idleFacing = kDirUpRight;
+ break;
+ default:
+ sequenceId = 0x834;
+ _idleFacing = kDirBottomLeft;
+ break;
+ }
+ }
+ break;
+
+ case gskIdle:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x7BC;
+ _idleFacing = kDirUpLeft;
+ } else {
+ sequenceId = 0x7BB;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x7BA;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7B9;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x7B9;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x7BA;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x7BB;
+ break;
+ default:
+ sequenceId = 0x7BC;
+ break;
+ }
+ }
+ break;
+
+ case gskBrainPulsating:
+ _gnapBrainPulseNum = (_gnapBrainPulseNum + 1) & 1;
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
+ _idleFacing = kDirUpLeft;
+ } else {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
+ break;
+ case kDirBottomLeft:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
+ break;
+ case kDirUpRight:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
+ break;
+ default:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
+ break;
+ }
+ }
+ break;
+
+ case gskImpossible:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x831;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7A8;
+ _idleFacing = kDirBottomRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x831;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ if (_pos.x % 2)
+ sequenceId = 0x7A8;
+ else
+ sequenceId = 0x89A;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else if (_idleFacing != kDirBottomRight && _idleFacing != kDirUpRight) {
+ sequenceId = 0x831;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ if (_vm->_currentSceneNum % 2)
+ sequenceId = 0x7A8;
+ else
+ sequenceId = 0x89A;
+ _idleFacing = kDirBottomRight;
+ }
+ break;
+
+ case gskDeflect:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x830;
+ _idleFacing = kDirUpLeft;
+ } else {
+ sequenceId = 0x82F;
+ _idleFacing = kDirUpRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x82E;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7A7;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x7A7;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x82E;
+ break;
+ case kDirUpLeft:
+ sequenceId = 0x830;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x82F;
+ break;
+ case kDirNone:
+ case kDirUnk4:
+ break;
+ }
+ }
+ break;
+
+ case gskUseDevice:
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ sequenceId = 0x83A;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x83C;
+ break;
+ case kDirUpLeft:
+ sequenceId = 0x840;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x83E;
+ break;
+ case kDirNone:
+ case kDirUnk4:
+ break;
+ }
+ break;
+
+ case gskMoan1:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else if (_idleFacing != kDirBottomRight && _idleFacing != kDirUpRight) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ break;
+
+ case gskMoan2:
+ if (gridX > 0 && gridY > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ } else {
+ if (_pos.x > gridX) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ }
+ } else if (_idleFacing != kDirBottomRight && _idleFacing != kDirUpRight) {
+ sequenceId = 0x832;
+ _idleFacing = kDirBottomLeft;
+ } else {
+ sequenceId = 0x7AA;
+ _idleFacing = kDirBottomRight;
+ }
+ break;
+ }
+
+ return sequenceId | 0x10000;
+}
+
+void PlayerGnap::useJointOnPlatypus() {
+ _vm->setGrabCursorSprite(-1);
+ if (_vm->gnapPlatypusAction(1, 0, 0x107C1, 0)) {
+ _actionStatus = 100;
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0x10876, _vm->_plat->_id, 0);
+ _vm->_gameSys->insertSequence(0x10875, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 15 * (5 * _pos.x - 30), 48 * (_pos.y - 7));
+ _sequenceDatNum = 1;
+ _sequenceId = 0x875;
+ _vm->_gameSys->insertSequence(0x10876, _vm->_plat->_id,
+ _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
+ kSeqSyncWait, 0, 15 * (5 * _vm->_plat->_pos.x - 25), 48 * (_vm->_plat->_pos.y - 7));
+ _vm->_plat->_sequenceDatNum = 1;
+ _vm->_plat->_sequenceId = 0x876;
+ _vm->_plat->_idleFacing = kDirNone;
+ _vm->playGnapSequence(0x107B5);
+ _vm->gnapWalkStep();
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->updateMouseCursor();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _actionStatus = -1;
+ } else {
+ _vm->playGnapSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ }
+}
+
+void PlayerGnap::kissPlatypus(int callback) {
+ if (_vm->gnapPlatypusAction(-1, 0, 0x107D1, callback)) {
+ _actionStatus = 100;
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0x10847, _id, 0);
+ _vm->_gameSys->insertSequence(0x10847, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 15 * (5 * _pos.x - 20) - (21 - _vm->_gridMinX), 48 * (_pos.y - 6) - (146 - _vm->_gridMinY));
+ _sequenceDatNum = 1;
+ _sequenceId = 0x847;
+ _vm->_gameSys->insertSequence(0x107CB, _vm->_plat->_id,
+ makeRid(_vm->_plat->_sequenceDatNum, _vm->_plat->_sequenceId), _vm->_plat->_id,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x10847), 75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
+ _vm->_plat->_sequenceDatNum = 1;
+ _vm->_plat->_sequenceId = 0x7CB;
+ _vm->_plat->_idleFacing = kDirNone;
+ _vm->playGnapSequence(0x107B5);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->updateMouseCursor();
+ _vm->doCallback(callback);
+ _vm->gameUpdateTick();
+ }
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _actionStatus = -1;
+ } else {
+ _vm->playGnapSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ }
+}
+
+void PlayerGnap::useDeviceOnPlatypus() {
+ _vm->playGnapSequence(makeRid(1, getSequenceId(gskPullOutDevice, _vm->_plat->_pos.x, _vm->_plat->_pos.y)));
+
+ if (_vm->_plat->_idleFacing != kDirNone) {
+ _vm->_gameSys->insertSequence(makeRid(1, 0x7D5), _vm->_plat->_id,
+ makeRid(_vm->_plat->_sequenceDatNum, _vm->_plat->_sequenceId), _vm->_plat->_id,
+ kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
+ _vm->_plat->_sequenceId = 0x7D5;
+ _vm->_plat->_sequenceDatNum = 1;
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(1, 0x7D4), _vm->_plat->_id,
+ makeRid(_vm->_plat->_sequenceDatNum, _vm->_plat->_sequenceId), _vm->_plat->_id,
+ kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
+ _vm->_plat->_sequenceId = 0x7D4;
+ _vm->_plat->_sequenceDatNum = 1;
+ }
+
+ int newSequenceId = getSequenceId(gskUseDevice, 0, 0);
+ _vm->_gameSys->insertSequence(makeRid(1, newSequenceId), _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = newSequenceId;
+ _sequenceDatNum = 1;
+}
+
+void PlayerGnap::initBrainPulseRndValue() {
+ _gnapBrainPulseRndValue = 2 * _vm->getRandom(10);
+}
+
+/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
+int PlayerPlat::getSequenceId(int kind, int gridX, int gridY) {
+ // The original had 3 parameters, all always set to 0.
+ // The code to handle the other values has been removed.
+
+ int sequenceId = 0x7CB;
+
+ if (_idleFacing != kDirNone) {
+ sequenceId = 0x7CC;
+ _idleFacing = kDirUnk4;
+ }
+
+ return sequenceId | 0x10000;
+}
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 4f5282435f..1a05548bae 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -41,9 +41,14 @@ public:
Character(GnapEngine *vm);
~Character();
+ virtual int getSequenceId(int kind, int gridX, int gridY) = 0;
+
Common::Point _pos;
Facing _idleFacing;
int _actionStatus;
+ int _sequenceId;
+ int _sequenceDatNum;
+ int _id;
protected:
GnapEngine *_vm;
@@ -52,11 +57,20 @@ protected:
class PlayerGnap : public Character {
public:
PlayerGnap(GnapEngine *vm);
+ virtual int getSequenceId(int kind, int gridX, int gridY);
+
+ void initBrainPulseRndValue();
+ void kissPlatypus(int callback);
+ void useDeviceOnPlatypus();
+ void useJointOnPlatypus();
+
+ int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
};
class PlayerPlat : public Character {
public:
PlayerPlat(GnapEngine *vm);
+ virtual int getSequenceId(int kind = 0, int gridX = 0, int gridY = 0);
};
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d02321a8f5..c020d752b6 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -735,7 +735,7 @@ void GnapEngine::initScene() {
_newSceneNum = 55;
_gnap->_actionStatus = -1;
_plat->_actionStatus = -1;
- gnapInitBrainPulseRndValue();
+ _gnap->initBrainPulseRndValue();
hideCursor();
clearAllKeyStatus1();
_mouseClickState._left = false;
@@ -941,354 +941,6 @@ void GnapEngine::deleteSurface(Graphics::Surface **surface) {
}
}
-int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
- int sequenceId = 0;
-
- switch (kind) {
- case gskPullOutDevice:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x83F;
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- sequenceId = 0x83D;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x83B;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x839;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x839;
- break;
- case kDirBottomLeft:
- sequenceId = 0x83B;
- break;
- case kDirUpRight:
- sequenceId = 0x83D;
- break;
- default:
- sequenceId = 0x83F;
- break;
- }
- }
- break;
-
- case gskPullOutDeviceNonWorking:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x829;
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- sequenceId = 0x828;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x827;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x826;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x826;
- break;
- case kDirBottomLeft:
- sequenceId = 0x827;
- break;
- case kDirUpRight:
- sequenceId = 0x828;
- break;
- default:
- sequenceId = 0x829;
- break;
- }
- }
- break;
-
- case gskScratchingHead:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x834;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x885;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x834;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x833;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x833;
- _gnap->_idleFacing = kDirBottomRight;
- break;
- case kDirBottomLeft:
- sequenceId = 0x834;
- _gnap->_idleFacing = kDirBottomLeft;
- break;
- case kDirUpRight:
- sequenceId = 0x885;
- _gnap->_idleFacing = kDirUpRight;
- break;
- default:
- sequenceId = 0x834;
- _gnap->_idleFacing = kDirBottomLeft;
- break;
- }
- }
- break;
-
- case gskIdle:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x7BC;
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- sequenceId = 0x7BB;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x7BA;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7B9;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x7B9;
- break;
- case kDirBottomLeft:
- sequenceId = 0x7BA;
- break;
- case kDirUpRight:
- sequenceId = 0x7BB;
- break;
- default:
- sequenceId = 0x7BC;
- break;
- }
- }
- break;
-
- case gskBrainPulsating:
- _gnapBrainPulseNum = (_gnapBrainPulseNum + 1) & 1;
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
- break;
- case kDirBottomLeft:
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
- break;
- case kDirUpRight:
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
- break;
- default:
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
- break;
- }
- }
- break;
-
- case gskImpossible:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x831;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7A8;
- _gnap->_idleFacing = kDirBottomRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x831;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- if (_gnap->_pos.x % 2)
- sequenceId = 0x7A8;
- else
- sequenceId = 0x89A;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
- sequenceId = 0x831;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- if (_currentSceneNum % 2)
- sequenceId = 0x7A8;
- else
- sequenceId = 0x89A;
- _gnap->_idleFacing = kDirBottomRight;
- }
- break;
-
- case gskDeflect:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x830;
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- sequenceId = 0x82F;
- _gnap->_idleFacing = kDirUpRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x82E;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7A7;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else {
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x7A7;
- break;
- case kDirBottomLeft:
- sequenceId = 0x82E;
- break;
- case kDirUpLeft:
- sequenceId = 0x830;
- break;
- case kDirUpRight:
- sequenceId = 0x82F;
- break;
- case kDirNone:
- case kDirUnk4:
- break;
- }
- }
- break;
-
- case gskUseDevice:
- switch (_gnap->_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x83A;
- break;
- case kDirBottomLeft:
- sequenceId = 0x83C;
- break;
- case kDirUpLeft:
- sequenceId = 0x840;
- break;
- case kDirUpRight:
- sequenceId = 0x83E;
- break;
- case kDirNone:
- case kDirUnk4:
- break;
- }
- break;
-
- case gskMoan1:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- break;
-
- case gskMoan2:
- if (gridX > 0 && gridY > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- } else {
- if (_gnap->_pos.x > gridX) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- }
- } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
- sequenceId = 0x832;
- _gnap->_idleFacing = kDirBottomLeft;
- } else {
- sequenceId = 0x7AA;
- _gnap->_idleFacing = kDirBottomRight;
- }
- break;
- }
-
- return sequenceId | 0x10000;
-}
-
int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
int sequenceId;
Facing facing = _gnap->_idleFacing;
@@ -1461,36 +1113,36 @@ int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
//Skip 29
default:
_gnap->_idleFacing = facing;
- sequenceId = getGnapSequenceId(gskImpossible, 0, 0);
+ sequenceId = _gnap->getSequenceId(gskImpossible, 0, 0);
break;
}
return sequenceId;
}
void GnapEngine::gnapIdle() {
- if (_gnapSequenceId != -1 && _gnapSequenceDatNum == 1 &&
- (_gnapSequenceId == 0x7A6 || _gnapSequenceId == 0x7AA ||
- _gnapSequenceId == 0x832 || _gnapSequenceId == 0x841 ||
- _gnapSequenceId == 0x842 || _gnapSequenceId == 0x8A2 ||
- _gnapSequenceId == 0x833 || _gnapSequenceId == 0x834 ||
- _gnapSequenceId == 0x885 || _gnapSequenceId == 0x7A8 ||
- _gnapSequenceId == 0x831 || _gnapSequenceId == 0x89A)) {
- _gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ if (_gnap->_sequenceId != -1 && _gnap->_sequenceDatNum == 1 &&
+ (_gnap->_sequenceId == 0x7A6 || _gnap->_sequenceId == 0x7AA ||
+ _gnap->_sequenceId == 0x832 || _gnap->_sequenceId == 0x841 ||
+ _gnap->_sequenceId == 0x842 || _gnap->_sequenceId == 0x8A2 ||
+ _gnap->_sequenceId == 0x833 || _gnap->_sequenceId == 0x834 ||
+ _gnap->_sequenceId == 0x885 || _gnap->_sequenceId == 0x7A8 ||
+ _gnap->_sequenceId == 0x831 || _gnap->_sequenceId == 0x89A)) {
+ _gameSys->insertSequence(_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
+ _gnap->_sequenceDatNum = 1;
}
}
void GnapEngine::gnapActionIdle(int sequenceId) {
- if (_gnapSequenceId != -1 && ridToDatIndex(sequenceId) == _gnapSequenceDatNum &&
- ridToEntryIndex(sequenceId) == _gnapSequenceId) {
- _gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ if (_gnap->_sequenceId != -1 && ridToDatIndex(sequenceId) == _gnap->_sequenceDatNum &&
+ ridToEntryIndex(sequenceId) == _gnap->_sequenceId) {
+ _gameSys->insertSequence(_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
+ _gnap->_sequenceDatNum = 1;
}
}
@@ -1498,47 +1150,47 @@ void GnapEngine::playGnapSequence(int sequenceId) {
_timers[2] = getRandom(30) + 20;
_timers[3] = 300;
gnapIdle();
- _gameSys->insertSequence(sequenceId, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(sequenceId, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqScale | kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = ridToEntryIndex(sequenceId);
- _gnapSequenceDatNum = ridToDatIndex(sequenceId);
+ _gnap->_sequenceId = ridToEntryIndex(sequenceId);
+ _gnap->_sequenceDatNum = ridToDatIndex(sequenceId);
}
void GnapEngine::playGnapImpossible(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskImpossible, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapScratchingHead(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapMoan1(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskMoan1, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapMoan2(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskMoan2, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapBrainPulsating(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapPullOutDevice(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapPullOutDeviceNonWorking(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapUseDevice(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapIdle(int gridX, int gridY) {
- playGnapSequence(getGnapSequenceId(gskIdle, gridX, gridY) | 0x10000);
+ playGnapSequence(_gnap->getSequenceId(gskIdle, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
@@ -1583,17 +1235,17 @@ void GnapEngine::updateGnapIdleSequence() {
} else {
_timers[2] = getRandom(30) + 20;
if (_gnap->_idleFacing == kDirBottomRight) {
- _gameSys->insertSequence(0x107BD, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(0x107BD, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = 0x7BD;
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = 0x7BD;
+ _gnap->_sequenceDatNum = 1;
} else if (_gnap->_idleFacing == kDirBottomLeft) {
- _gameSys->insertSequence(0x107BE, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(0x107BE, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = 0x7BE;
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = 0x7BE;
+ _gnap->_sequenceDatNum = 1;
}
}
} else {
@@ -1617,17 +1269,17 @@ void GnapEngine::updateGnapIdleSequence2() {
} else {
_timers[2] = getRandom(30) + 20;
if (_gnap->_idleFacing == kDirBottomRight) {
- _gameSys->insertSequence(0x107BD, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(0x107BD, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = 0x7BD;
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = 0x7BD;
+ _gnap->_sequenceDatNum = 1;
} else if (_gnap->_idleFacing == kDirBottomLeft) {
- _gameSys->insertSequence(0x107BE, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(0x107BE, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = 0x7BE;
- _gnapSequenceDatNum = 1;
+ _gnap->_sequenceId = 0x7BE;
+ _gnap->_sequenceDatNum = 1;
}
}
} else {
@@ -1659,47 +1311,18 @@ void GnapEngine::initGnapPos(int gridX, int gridY, Facing facing) {
else
_gnap->_idleFacing = facing;
if (_gnap->_idleFacing == kDirBottomLeft) {
- _gnapSequenceId = 0x7B8;
+ _gnap->_sequenceId = 0x7B8;
} else {
- _gnapSequenceId = 0x7B5;
+ _gnap->_sequenceId = 0x7B5;
_gnap->_idleFacing = kDirBottomRight;
}
- _gnapId = 20 * _gnap->_pos.y;
- _gnapSequenceDatNum = 1;
- _gameSys->insertSequence(makeRid(1, _gnapSequenceId), 20 * _gnap->_pos.y,
+ _gnap->_id = 20 * _gnap->_pos.y;
+ _gnap->_sequenceDatNum = 1;
+ _gameSys->insertSequence(makeRid(1, _gnap->_sequenceId), 20 * _gnap->_pos.y,
0, 0,
kSeqScale, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
}
-void GnapEngine::gnapInitBrainPulseRndValue() {
- _gnapBrainPulseRndValue = 2 * getRandom(10);
-}
-
-void GnapEngine::gnapUseDeviceOnPlatypus() {
- playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _plat->_pos.x, _plat->_pos.y)));
-
- if (_plat->_idleFacing != kDirNone) {
- _gameSys->insertSequence(makeRid(1, 0x7D5), _platypusId,
- makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqSyncWait, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
- _platypusSequenceId = 0x7D5;
- _platypusSequenceDatNum = 1;
- } else {
- _gameSys->insertSequence(makeRid(1, 0x7D4), _platypusId,
- makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqSyncWait, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
- _platypusSequenceId = 0x7D4;
- _platypusSequenceDatNum = 1;
- }
-
- int newSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
- _gameSys->insertSequence(makeRid(1, newSequenceId), _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnapSequenceId = newSequenceId;
- _gnapSequenceDatNum = 1;
-}
-
void GnapEngine::doCallback(int callback) {
switch (callback) {
case 8:
@@ -1726,7 +1349,7 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
}
_gameSys->setAnimation(0, 0, 0);
if (_gnap->_pos == Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)) {
- _gameSys->setAnimation(platSequenceId, _platypusId, 1);
+ _gameSys->setAnimation(platSequenceId, _plat->_id, 1);
playPlatypusSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
updateMouseCursor();
@@ -1741,67 +1364,8 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
return result;
}
-void GnapEngine::gnapKissPlatypus(int callback) {
- if (gnapPlatypusAction(-1, 0, 0x107D1, callback)) {
- _gnap->_actionStatus = 100;
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0x10847, _gnapId, 0);
- _gameSys->insertSequence(0x10847, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 20) - (21 - _gridMinX), 48 * (_gnap->_pos.y - 6) - (146 - _gridMinY));
- _gnapSequenceDatNum = 1;
- _gnapSequenceId = 0x847;
- _gameSys->insertSequence(0x107CB, _platypusId,
- makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
- _platypusSequenceDatNum = 1;
- _platypusSequenceId = 0x7CB;
- _plat->_idleFacing = kDirNone;
- playGnapSequence(0x107B5);
- while (_gameSys->getAnimationStatus(0) != 2) {
- updateMouseCursor();
- doCallback(callback);
- gameUpdateTick();
- }
- _gameSys->setAnimation(0, 0, 0);
- _gnap->_actionStatus = -1;
- } else {
- playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
- }
-}
-
-void GnapEngine::gnapUseJointOnPlatypus() {
- setGrabCursorSprite(-1);
- if (gnapPlatypusAction(1, 0, 0x107C1, 0)) {
- _gnap->_actionStatus = 100;
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0x10876, _platypusId, 0);
- _gameSys->insertSequence(0x10875, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 30), 48 * (_gnap->_pos.y - 7));
- _gnapSequenceDatNum = 1;
- _gnapSequenceId = 0x875;
- _gameSys->insertSequence(0x10876, _platypusId,
- _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
- kSeqSyncWait, 0, 15 * (5 * _plat->_pos.x - 25), 48 * (_plat->_pos.y - 7));
- _platypusSequenceDatNum = 1;
- _platypusSequenceId = 0x876;
- _plat->_idleFacing = kDirNone;
- playGnapSequence(0x107B5);
- gnapWalkStep();
- while (_gameSys->getAnimationStatus(0) != 2) {
- updateMouseCursor();
- gameUpdateTick();
- }
- _gameSys->setAnimation(0, 0, 0);
- _gnap->_actionStatus = -1;
- } else {
- playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
- }
-}
-
void GnapEngine::gnapUseDisguiseOnPlatypus() {
- _gameSys->setAnimation(0x10846, _gnapId, 0);
+ _gameSys->setAnimation(0x10846, _gnap->_id, 0);
playGnapSequence(0x10846);
while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
@@ -1811,26 +1375,12 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatypusDisguised);
}
-int GnapEngine::getPlatypusSequenceId() {
- // The original had 3 parameters, all always set to 0.
- // The code to handle the other values has been removed.
-
- int sequenceId = 0x7CB;
-
- if (_plat->_idleFacing != kDirNone) {
- sequenceId = 0x7CC;
- _plat->_idleFacing = kDirUnk4;
- }
-
- return sequenceId | 0x10000;
-}
-
void GnapEngine::playPlatypusSequence(int sequenceId) {
- _gameSys->insertSequence(sequenceId, _platypusId,
- makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
+ _gameSys->insertSequence(sequenceId, _plat->_id,
+ makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
kSeqScale | kSeqSyncWait, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
- _platypusSequenceId = ridToEntryIndex(sequenceId);
- _platypusSequenceDatNum = ridToDatIndex(sequenceId);
+ _plat->_sequenceId = ridToEntryIndex(sequenceId);
+ _plat->_sequenceDatNum = ridToDatIndex(sequenceId);
}
void GnapEngine::updatePlatypusIdleSequence() {
@@ -1840,17 +1390,17 @@ void GnapEngine::updatePlatypusIdleSequence() {
_timers[1] = getRandom(20) + 30;
int rnd = getRandom(10);
if (_plat->_idleFacing != kDirNone) {
- if (rnd != 0 || _platypusSequenceId != 0x7CA) {
- if (rnd != 1 || _platypusSequenceId != 0x7CA)
+ if (rnd != 0 || _plat->_sequenceId != 0x7CA) {
+ if (rnd != 1 || _plat->_sequenceId != 0x7CA)
playPlatypusSequence(0x107CA);
else
playPlatypusSequence(0x10845);
} else {
playPlatypusSequence(0x107CC);
}
- } else if (rnd != 0 || _platypusSequenceId != 0x7C9) {
- if (rnd != 1 || _platypusSequenceId != 0x7C9) {
- if (rnd != 2 || _platypusSequenceId != 0x7C9)
+ } else if (rnd != 0 || _plat->_sequenceId != 0x7C9) {
+ if (rnd != 1 || _plat->_sequenceId != 0x7C9) {
+ if (rnd != 2 || _plat->_sequenceId != 0x7C9)
playPlatypusSequence(0x107C9);
else
playPlatypusSequence(0x108A4);
@@ -1877,12 +1427,12 @@ void GnapEngine::updatePlatypusIdleSequence2() {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
if (_plat->_idleFacing != kDirNone) {
- if (getRandom(10) >= 2 || _platypusSequenceId != 0x7CA)
+ if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7CA)
playPlatypusSequence(0x107CA);
else
playPlatypusSequence(0x107CC);
} else {
- if (getRandom(10) >= 2 || _platypusSequenceId != 0x7C9) {
+ if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7C9) {
playPlatypusSequence(0x107C9);
} else {
playPlatypusSequence(0x107CB);
@@ -1908,14 +1458,14 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
else
_plat->_idleFacing = facing;
if (_plat->_idleFacing == kDirUnk4) {
- _platypusSequenceId = 0x7D1;
+ _plat->_sequenceId = 0x7D1;
} else {
- _platypusSequenceId = 0x7C1;
+ _plat->_sequenceId = 0x7C1;
_plat->_idleFacing = kDirNone;
}
- _platypusId = 20 * _plat->_pos.y;
- _platypusSequenceDatNum = 1;
- _gameSys->insertSequence(makeRid(1, _platypusSequenceId), 20 * _plat->_pos.y,
+ _plat->_id = 20 * _plat->_pos.y;
+ _plat->_sequenceDatNum = 1;
+ _gameSys->insertSequence(makeRid(1, _plat->_sequenceId), 20 * _plat->_pos.y,
0, 0,
kSeqScale, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
}
@@ -1935,12 +1485,12 @@ void GnapEngine::initGlobalSceneVars() {
void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3) {
setGrabCursorSprite(-1);
- _gameSys->setAnimation(sequenceId2, _gnapId, 0);
- _gameSys->insertSequence(sequenceId2, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->setAnimation(sequenceId2, _gnap->_id, 0);
+ _gameSys->insertSequence(sequenceId2, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 25), 48 * (_gnap->_pos.y - 8));
- _gnapSequenceId = sequenceId2;
- _gnapSequenceDatNum = 0;
+ _gnap->_sequenceId = sequenceId2;
+ _gnap->_sequenceDatNum = 0;
while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
hideCursor();
@@ -1949,13 +1499,13 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gameSys->insertSequence(sequenceId1, 256, 0, 0, kSeqNone, 0, 0, 0);
while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
- _gameSys->setAnimation(sequenceId3, _gnapId, 0);
- _gameSys->insertSequence(sequenceId3, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->setAnimation(sequenceId3, _gnap->_id, 0);
+ _gameSys->insertSequence(sequenceId3, _gnap->_id,
+ makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 25), 48 * (_gnap->_pos.y - 8));
removeFullScreenSprite();
showCursor();
- _gnapSequenceId = sequenceId3;
+ _gnap->_sequenceId = sequenceId3;
}
void GnapEngine::toyUfoSetStatus(int flagNum) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ccaf11f961..4474a2d564 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -516,10 +516,6 @@ public:
void platypusMakeRoom();
// Gnap
- int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
- int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
-
- int getGnapSequenceId(int kind, int gridX, int gridY);
int getGnapShowSequenceId(int index, int gridX, int gridY);
void gnapIdle();
void gnapActionIdle(int sequenceId);
@@ -538,17 +534,11 @@ public:
void updateGnapIdleSequence();
void updateGnapIdleSequence2();
void initGnapPos(int gridX, int gridY, Facing facing);
- void gnapInitBrainPulseRndValue();
- void gnapUseDeviceOnPlatypus();
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
- void gnapKissPlatypus(int callback);
- void gnapUseJointOnPlatypus();
void gnapUseDisguiseOnPlatypus();
// Platypus
- int _platypusSequenceId, _platypusSequenceDatNum, _platypusId;
- int getPlatypusSequenceId();
void playPlatypusSequence(int sequenceId);
void updatePlatypusIdleSequence();
void updatePlatypusIdleSequence2();
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 31b7934f42..ec0595f0a6 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -575,9 +575,9 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
gnapIdle();
- int gnapSequenceId = _gnapSequenceId;
- int gnapId = _gnapId;
- int gnapSequenceDatNum = _gnapSequenceDatNum;
+ int gnapSequenceId = _gnap->_sequenceId;
+ int gnapId = _gnap->_id;
+ int gnapSequenceDatNum = _gnap->_sequenceDatNum;
debugC(kDebugBasic, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
@@ -629,24 +629,24 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (flags & 8) {
if (_gnapWalkNodesCount > 0) {
- _gnapSequenceId = gnapSequenceId;
- _gnapId = gnapId;
+ _gnap->_sequenceId = gnapSequenceId;
+ _gnap->_id = gnapId;
_gnap->_idleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
- _gnapSequenceDatNum = datNum;
+ _gnap->_sequenceDatNum = datNum;
if (animationIndex >= 0)
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
+ _gameSys->setAnimation(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id, animationIndex);
} else if (animationIndex >= 0) {
_gameSys->setAnimation(0x107D3, 1, animationIndex);
_gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
if (sequenceId >= 0 && sequenceId != -1) {
- _gnapSequenceId = ridToEntryIndex(sequenceId);
- _gnapSequenceDatNum = ridToDatIndex(sequenceId);
- if (_gnapSequenceId == 0x7B9) {
+ _gnap->_sequenceId = ridToEntryIndex(sequenceId);
+ _gnap->_sequenceDatNum = ridToDatIndex(sequenceId);
+ if (_gnap->_sequenceId == 0x7B9) {
_gnap->_idleFacing = kDirBottomRight;
} else {
- switch (_gnapSequenceId) {
+ switch (_gnap->_sequenceId) {
case 0x7BA:
_gnap->_idleFacing = kDirBottomLeft;
break;
@@ -660,21 +660,21 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
} else {
if (_gnapWalkNodesCount > 0) {
- _gnapSequenceId = getGnapWalkStopSequenceId(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
+ _gnap->_sequenceId = getGnapWalkStopSequenceId(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
_gnap->_idleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
} else if (gridX >= 0 || gridY >= 0) {
switch (_gnap->_idleFacing) {
case kDirBottomRight:
- _gnapSequenceId = 0x7B9;
+ _gnap->_sequenceId = 0x7B9;
break;
case kDirBottomLeft:
- _gnapSequenceId = 0x7BA;
+ _gnap->_sequenceId = 0x7BA;
break;
case kDirUpRight:
- _gnapSequenceId = 0x7BB;
+ _gnap->_sequenceId = 0x7BB;
break;
default:
- _gnapSequenceId = 0x7BC;
+ _gnap->_sequenceId = 0x7BC;
break;
}
} else {
@@ -685,25 +685,25 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
++v10;
if (_leftClickMouseY == _gridMinY + 48 * _gnap->_pos.y)
v11 = 1;
- _gnapSequenceId = getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
+ _gnap->_sequenceId = getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
_gnap->_idleFacing = getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
}
- _gnapSequenceDatNum = datNum;
+ _gnap->_sequenceDatNum = datNum;
}
if (animationIndex < 0) {
- _gnapId = 20 * _gnapWalkDestY + 1;
+ _gnap->_id = 20 * _gnapWalkDestY + 1;
} else {
- _gnapId = _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY;
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY, animationIndex);
+ _gnap->_id = _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY;
+ _gameSys->setAnimation(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY, animationIndex);
}
if (flags & 4) {
- _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
kSeqScale | kSeqSyncWait, 0, 0, 0);
} else {
- _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _gameSys->insertSequence(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
}
@@ -1229,9 +1229,9 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (!done)
gridSub423750(_plat->_pos.x, _plat->_pos.y);
- int platSequenceId = _platypusSequenceId;
- int platId = _platypusId;
- int platSequenceDatNum = _platypusSequenceDatNum;
+ int platSequenceId = _plat->_sequenceId;
+ int platId = _plat->_id;
+ int platSequenceDatNum = _plat->_sequenceDatNum;
for (int index = 0; index < _platWalkNodesCount; ++index) {
_platWalkNodes[index]._id = index + 20 * _platWalkNodes[index]._gridY1;
@@ -1281,9 +1281,9 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (flags & 8) {
if (_platWalkNodesCount > 0) {
- _platypusSequenceId = platSequenceId;
- _platypusId = platId;
- _platypusSequenceDatNum = datNum;
+ _plat->_sequenceId = platSequenceId;
+ _plat->_id = platId;
+ _plat->_sequenceDatNum = datNum;
// CHECKME Not sure if this is correct...
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0)
_plat->_idleFacing = kDirNone;
@@ -1294,59 +1294,59 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
else
_plat->_idleFacing = kDirNone;
if (animationIndex >= 0)
- _gameSys->setAnimation(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId, animationIndex);
+ _gameSys->setAnimation(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id, animationIndex);
} else if (animationIndex >= 0) {
_gameSys->setAnimation(0x107D3, 1, animationIndex);
_gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
if (sequenceId >= 0 && sequenceId != -1) {
- _platypusSequenceId = ridToEntryIndex(sequenceId);
- _platypusSequenceDatNum = ridToDatIndex(sequenceId);
- if (_platypusSequenceId == 0x7C2) {
+ _plat->_sequenceId = ridToEntryIndex(sequenceId);
+ _plat->_sequenceDatNum = ridToDatIndex(sequenceId);
+ if (_plat->_sequenceId == 0x7C2) {
_plat->_idleFacing = kDirNone;
- } else if (_platypusSequenceId == 0x7D2) {
+ } else if (_plat->_sequenceId == 0x7D2) {
_plat->_idleFacing = kDirUnk4;
}
} else {
if (_platWalkNodesCount > 0) {
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0) {
- _platypusSequenceId = 0x7C2;
+ _plat->_sequenceId = 0x7C2;
_plat->_idleFacing = kDirNone;
} else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0) {
- _platypusSequenceId = 0x7D2;
+ _plat->_sequenceId = 0x7D2;
_plat->_idleFacing = kDirUnk4;
} else if (_platWalkNodes[0]._deltaX > 0) {
- _platypusSequenceId = 0x7C2;
+ _plat->_sequenceId = 0x7C2;
_plat->_idleFacing = kDirNone;
} else if (_platWalkNodes[0]._deltaX < 0) {
- _platypusSequenceId = 0x7D2;
+ _plat->_sequenceId = 0x7D2;
_plat->_idleFacing = kDirUnk4;
} else {
- _platypusSequenceId = 0x7D2;
+ _plat->_sequenceId = 0x7D2;
_plat->_idleFacing = kDirUnk4;
}
} else if (_plat->_idleFacing != kDirNone) {
- _platypusSequenceId = 0x7D2;
+ _plat->_sequenceId = 0x7D2;
} else {
- _platypusSequenceId = 0x7C2;
+ _plat->_sequenceId = 0x7C2;
}
- _platypusSequenceDatNum = datNum;
+ _plat->_sequenceDatNum = datNum;
}
if (animationIndex < 0) {
- _platypusId = 20 * _platWalkDestY;
+ _plat->_id = 20 * _platWalkDestY;
} else {
- _platypusId = animationIndex + 20 * _platWalkDestY;
- _gameSys->setAnimation(makeRid(_platypusSequenceDatNum, _platypusSequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
+ _plat->_id = animationIndex + 20 * _platWalkDestY;
+ _gameSys->setAnimation(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
}
if (flags & 4)
- _gameSys->insertSequence(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
+ _gameSys->insertSequence(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 0, 0);
else
- _gameSys->insertSequence(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
+ _gameSys->insertSequence(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkDestX - _platGridX, 48 * _platWalkDestY - _platGridY);
}
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 196d99a7f8..a4bde9f1fe 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -1025,7 +1025,6 @@ Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
_nextDropItemKind = -1;
_itemInsertX = -1;
_itemInsertDirection = -1;
- _platypusSequenceId = -1;
_platypusNextSequenceId = -1;
_platypusJumpSequenceId = -1;
_itemsCtr = -1;
@@ -1233,13 +1232,13 @@ void Scene51::updateItemAnimations() {
}
int Scene51::checkCollision(int sequenceId) {
- bool jumpingLeft = false, jumpingRight = false;
- int v8, v4;
- int result = 0;
-
if (!isJumping(sequenceId))
return false;
+ bool jumpingLeft = false, jumpingRight = false;
+ int v8 = 0, v4 = 0;
+ int result = 0;
+
bool checkFl = false;
for (int i = 0; i < 6; i++)
checkFl |= _items[i]._isCollision;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 5348f18df8..419139fc9e 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -136,11 +136,11 @@ void Scene01::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -158,7 +158,7 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
@@ -181,7 +181,7 @@ void Scene01::run() {
_vm->playGnapScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 3) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
@@ -201,17 +201,17 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
@@ -486,11 +486,11 @@ void Scene02::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -505,7 +505,7 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
@@ -516,14 +516,14 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS02GrabChicken;
else
_vm->_gnap->_actionStatus = -1;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
@@ -538,7 +538,7 @@ void Scene02::run() {
case kHS02Truck2:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemKeys) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
@@ -548,7 +548,7 @@ void Scene02::run() {
}
} else if (_vm->_grabCursorSpriteIndex == kItemGas) {
_vm->_hotspots[kHS02WalkArea4]._flags |= SF_WALKABLE;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -560,7 +560,7 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
if (_vm->isFlag(kGFTruckFilledWithGas))
_vm->_gnap->_actionStatus = kAS02UseTruckGas;
else
@@ -568,7 +568,7 @@ void Scene02::run() {
}
} else {
_vm->_gnap->_idleFacing = kDirUnk4;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS02UseTruckNoKeys;
}
break;
@@ -592,7 +592,7 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
@@ -714,17 +714,17 @@ void Scene02::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnap->_actionStatus) {
case kAS02UseTruckNoKeys:
- gameSys.insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x14E, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x14E;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x14E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x14E, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x14E;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS02UseTruckNoKeysDone;
break;
case kAS02UseGasWithTruck:
- gameSys.insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x151, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x151;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x151, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x151, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x151;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->invRemove(kItemGas);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFTruckFilledWithGas);
@@ -736,11 +736,11 @@ void Scene02::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnapSequenceId = 0x14F;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x14F;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -752,11 +752,11 @@ void Scene02::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->_timers[4] = 250;
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnapSequenceId = 0x14F;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x14F;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -777,10 +777,10 @@ void Scene02::updateAnimations() {
break;
}
_truckGrillCtr = (_truckGrillCtr + 1) % 3;
- gameSys.insertSequence(_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = _gnapTruckSequenceId;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(_gnapTruckSequenceId, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = _gnapTruckSequenceId;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
break;
case kAS02LeaveScene:
@@ -794,9 +794,9 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
_currChickenSequenceId = 0x14B;
gameSys.setAnimation(0x14B, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
@@ -821,7 +821,7 @@ void Scene02::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x150) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
- gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
@@ -911,8 +911,8 @@ void Scene03::run() {
_vm->_timers[1] = _vm->getRandom(40) + 20;
gameSys.setAnimation(0x1C2, 99, 1);
gameSys.insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1C2;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x1C2;
+ _vm->_plat->_sequenceDatNum = 0;
}
gameSys.insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -951,11 +951,11 @@ void Scene03::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1020,7 +1020,7 @@ void Scene03::run() {
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1050,7 +1050,7 @@ void Scene03::run() {
_vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
_vm->_gnap->_actionStatus = kAS03FreePlatypus;
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
@@ -1062,7 +1062,7 @@ void Scene03::run() {
_vm->playGnapBrainPulsating(8, 4);
} else {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
else
@@ -1185,12 +1185,12 @@ void Scene03::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 6);
_vm->_plat->_idleFacing = kDirUnk4;
- _vm->_platypusId = 120;
- gameSys.insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
+ _vm->_plat->_id = 120;
+ gameSys.insertSequence(0x107CA, _vm->_plat->_id, 0x1BC, 99,
kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
gameSys.insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 1;
- _vm->_platypusSequenceId = 0x7CA;
+ _vm->_plat->_sequenceDatNum = 1;
+ _vm->_plat->_sequenceId = 0x7CA;
_vm->setFlag(kGFPlatypus);
_nextPlatSequenceId = -1;
updateHotspots();
@@ -1204,16 +1204,16 @@ void Scene03::updateAnimations() {
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
- gameSys.insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x1BA;
+ gameSys.insertSequence(0x1BA, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x1BA;
_vm->_gnap->_actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
_vm->playGnapBrainPulsating(0, 0);
- gameSys.insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x1BF, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
@@ -1225,8 +1225,8 @@ void Scene03::updateAnimations() {
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x1BA;
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x1BA;
_vm->_gnap->_actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
@@ -1240,10 +1240,10 @@ void Scene03::updateAnimations() {
_platypusHypnotized = false;
break;
case kAS03GrabCreek:
- gameSys.insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x1B4, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x1B4;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x1B4, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1B4, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x1B4;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS03GrabCreekDone;
break;
default:
@@ -1256,40 +1256,40 @@ void Scene03::updateAnimations() {
if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
gameSys.setAnimation(0, 0, 1);
_platypusScared = true;
- gameSys.insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x1B5;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x1B5, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x1B5;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirNone;
- _vm->_platypusSequenceId = _nextPlatSequenceId;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = _nextPlatSequenceId;
+ _vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
_vm->_gnap->_actionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
_vm->_gnap->_pos = Common::Point(3, 6);
- gameSys.insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x1BC, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1B6, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1BC, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1BC, 99, 0);
- _vm->_gnapId = 20 * _vm->_gnap->_pos.y;
- _vm->_gnapSequenceId = 0x1B6;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_id = 20 * _vm->_gnap->_pos.y;
+ _vm->_gnap->_sequenceId = 0x1B6;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirNone;
_vm->_gnap->_actionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
gameSys.setAnimation(0, 0, 1);
- gameSys.insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1C2;
- _vm->_platypusSequenceDatNum = 0;
+ gameSys.insertSequence(0x1C2, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceId = 0x1C2;
+ _vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(0x1C2, 99, 1);
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == -1 && _platypusScared && !_platypusHypnotized) {
gameSys.setAnimation(0, 0, 1);
gameSys.setAnimation(0x1BE, 99, 1);
- gameSys.insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1BE;
- _vm->_platypusSequenceDatNum = 0;
+ gameSys.insertSequence(0x1BE, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceId = 0x1BE;
+ _vm->_plat->_sequenceDatNum = 0;
_nextPlatSequenceId = -1;
}
}
@@ -1380,9 +1380,9 @@ void Scene04::run() {
// TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
_vm->_gnap->_pos = Common::Point(4, 7);
- _vm->_gnapId = 140;
+ _vm->_gnap->_id = 140;
_vm->_plat->_pos = Common::Point(6, 7);
- _vm->_platypusId = 141;
+ _vm->_plat->_id = 141;
gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
gameSys.insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
@@ -1392,11 +1392,11 @@ void Scene04::run() {
_vm->invAdd(kItemKeys);
_vm->setFlag(kGFKeysTaken);
_vm->clearFlag(kGFPlatypusDisguised);
- _vm->_platypusSequenceId = 0x20C;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x20C;
+ _vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_idleFacing = kDirBottomRight;
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
gameSys.waitForUpdate();
} else {
gameSys.insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
@@ -1456,13 +1456,13 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
else
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1507,7 +1507,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
@@ -1535,7 +1535,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
@@ -1607,7 +1607,7 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, _vm->getGnapSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, _vm->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
if (_triedWindow) {
_vm->_gnap->_actionStatus = kAS04GetKeyAnother;
} else {
@@ -1710,15 +1710,15 @@ void Scene04::updateAnimations() {
_vm->_sceneDone = true;
break;
case kAS04OpenDoor:
- gameSys.insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_pos = Common::Point(6, 7);
- gameSys.insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
- gameSys.setAnimation(0x107B5, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ gameSys.setAnimation(0x107B5, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
_vm->_gnap->_actionStatus = kAS04OpenDoorDone;
break;
case kAS04OpenDoorDone:
@@ -1726,56 +1726,56 @@ void Scene04::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS04GetKeyFirst:
- gameSys.insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x204, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x204;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x204, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x204, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x204;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS04GetKeyFirst2;
break;
case kAS04GetKeyFirst2:
- gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20B, 256, 0);
- _vm->_gnapSequenceId = 0x206;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x206;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS04GetKeyFirstDone;
break;
case kAS04GetKeyFirstDone:
gameSys.requestRemoveSequence(0x1FF, 256);
gameSys.requestRemoveSequence(0x20B, 256);
- gameSys.insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
_vm->_gnap->_actionStatus = -1;
break;
case kAS04GetKeyAnother:
- gameSys.insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x202, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x202;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x202, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x202, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceId = 0x202;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS04GetKeyAnother2;
break;
case kAS04GetKeyAnother2:
- gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20A, 256, 0);
- _vm->_gnapSequenceId = 0x203;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x203;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS04GetKeyAnotherDone;
break;
case kAS04GetKeyAnotherDone:
gameSys.removeSequence(0x1FF, 256, true);
gameSys.removeSequence(0x20A, 256, true);
- gameSys.insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnap->_actionStatus = -1;
break;
@@ -1783,10 +1783,10 @@ void Scene04::updateAnimations() {
_nextDogSequenceId = 0x201;
break;
case kAS04GrabAxe:
- gameSys.insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x211, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.requestRemoveSequence(0x212, 100);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x211;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x211;
_vm->_gnap->_actionStatus = -1;
break;
default:
@@ -1808,12 +1808,12 @@ void Scene04::updateAnimations() {
gameSys.insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
_currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x200, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_currDogSequenceId = 0x201;
- _vm->_gnapSequenceId = 0x200;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x200;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_nextDogSequenceId = -1;
@@ -1930,11 +1930,11 @@ void Scene05::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1961,7 +1961,7 @@ void Scene05::run() {
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
_vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
@@ -1981,7 +1981,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
@@ -1992,12 +1992,12 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
@@ -2019,7 +2019,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
@@ -2043,7 +2043,7 @@ void Scene05::run() {
} else if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0,
- _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1))
+ _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
@@ -2055,7 +2055,7 @@ void Scene05::run() {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
@@ -2150,16 +2150,16 @@ void Scene05::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS05TryPickPadlock:
- gameSys.insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x148;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x148, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x148;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
break;
case kAS05PickPadlock:
- gameSys.setAnimation(0x147, _vm->_gnapId, 0);
- gameSys.insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x147;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.setAnimation(0x147, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x147, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x147;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->setFlag(kGFBarnPadlockOpen);
_vm->setFlag(kGFSceneFlag1);
_vm->setGrabCursorSprite(-1);
@@ -2178,17 +2178,17 @@ void Scene05::updateAnimations() {
case kAS05GrabLadder:
while (gameSys.isSequenceActive(0x149, 39))
_vm->gameUpdateTick();
- gameSys.insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x14D;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x14E, _vm->_gnap->_id + 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x14D;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_timers[2] = 200;
_vm->_timers[6] = 300;
_vm->_gnap->_actionStatus = -1;
break;
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
gameSys.setAnimation(0x107B1, 1, 0);
_vm->_gnap->_actionStatus = kAS05LeaveScene;
@@ -2202,12 +2202,12 @@ void Scene05::updateAnimations() {
}
if (gameSys.getAnimationStatus(1) == 2) {
- if (_vm->_platypusSequenceId == 0x146) {
+ if (_vm->_plat->_sequenceId == 0x146) {
_vm->_plat->_pos = Common::Point(4, 8);
gameSys.insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
- _vm->_platypusId = 20 * _vm->_plat->_pos.y;
+ _vm->_plat->_sequenceId = 0x7C1;
+ _vm->_plat->_sequenceDatNum = 1;
+ _vm->_plat->_id = 20 * _vm->_plat->_pos.y;
_vm->invAdd(kItemNeedle);
_vm->setFlag(kGFNeedleTaken);
_vm->setGrabCursorSprite(kItemNeedle);
@@ -2217,12 +2217,12 @@ void Scene05::updateAnimations() {
}
if (_vm->_plat->_actionStatus == kAS05PlatSearchHaystack) {
gameSys.setAnimation(0, 0, 1);
- gameSys.insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x145, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x146, 256, 0x145, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
- _vm->_platypusSequenceId = 0x146;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x146;
+ _vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(0x146, 256, 1);
_vm->_timers[1] = 300;
}
@@ -2232,9 +2232,9 @@ void Scene05::updateAnimations() {
if (_nextChickenSequenceId == 0x14B) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x14C;
+ gameSys.insertSequence(0x14C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x14C;
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
_vm->_gnap->_actionStatus = -1;
@@ -2354,11 +2354,11 @@ void Scene06::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2449,11 +2449,11 @@ void Scene06::run() {
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
_vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TalkToHorse;
}
@@ -2552,17 +2552,17 @@ void Scene06::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS06TryToGetGas:
- gameSys.insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xFC;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0xFC, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xFC;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
break;
case kAS06TryToClimbLadder:
gameSys.insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0xFD, _vm->_gnapId, 0);
- gameSys.insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xFD;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.setAnimation(0xFD, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0xFD, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xFD;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS06TryToClimbLadderDone;
break;
case kAS06TryToClimbLadderDone:
@@ -2583,7 +2583,7 @@ void Scene06::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_platypusSequenceId == 0xFA) {
+ if (_vm->_plat->_sequenceId == 0xFA) {
gameSys.setAnimation(0, 0, 1);
_vm->invAdd(kItemGas);
_vm->setFlag(kGFGasTaken);
@@ -2591,9 +2591,9 @@ void Scene06::updateAnimations() {
_vm->setGrabCursorSprite(kItemGas);
_vm->_plat->_actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 8);
- gameSys.insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
+ gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
+ _vm->_plat->_sequenceId = 0x7C1;
+ _vm->_plat->_sequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
_vm->_gnap->_actionStatus = -1;
_vm->showCursor();
@@ -2612,16 +2612,16 @@ void Scene06::updateAnimations() {
_vm->hideCursor();
gameSys.setAnimation(0xFA, 256, 1);
gameSys.insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x100, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0xFA, 256, 0xFB, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xFA;
- _vm->_platypusSequenceDatNum = 0;
- gameSys.insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
+ gameSys.insertSequence(0xFB, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFA, 256, 0xFB, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceId = 0xFA;
+ _vm->_plat->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x107B7, _vm->_gnap->_id, 0x100, _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B7;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B7;
+ _vm->_gnap->_sequenceDatNum = 1;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
_nextPlatSequenceId = -1;
@@ -2686,17 +2686,17 @@ void Scene07::run() {
_vm->endSceneInit();
} else {
_vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnapId = 140;
- _vm->_gnapSequenceId = 0x8F;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_id = 140;
+ _vm->_gnap->_sequenceId = 0x8F;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS07Wait;
_vm->_plat->_pos = Common::Point(3, 8);
- _vm->_platypusId = 160;
- _vm->_platypusSequenceId = 0x91;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_id = 160;
+ _vm->_plat->_sequenceId = 0x91;
+ _vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_idleFacing = kDirNone;
gameSys.insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -2725,11 +2725,11 @@ void Scene07::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -2759,11 +2759,11 @@ void Scene07::run() {
_vm->playGnapPullOutDevice(3, 3);
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_vm->getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = _vm->getGnapSequenceId(gskUseDevice, 0, 0);
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -2809,8 +2809,8 @@ void Scene07::run() {
int gnapRandomValue = _vm->getRandom(20);
// TODO Cleanup
if (_vm->_plat->_idleFacing != kDirNone) {
- if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7CA) {
- if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7CA) {
+ if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7CA) {
+ if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7CA) {
if (_vm->_plat->_pos.y == 9)
_vm->playPlatypusSequence(0x107CA);
} else {
@@ -2819,8 +2819,8 @@ void Scene07::run() {
} else {
_vm->playPlatypusSequence(0x107CC);
}
- } else if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7C9) {
- if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7C9) {
+ } else if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7C9) {
+ if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7C9) {
if (_vm->_plat->_pos.y == 9)
_vm->playPlatypusSequence(0x107C9);
} else {
@@ -2829,7 +2829,7 @@ void Scene07::run() {
} else {
_vm->playPlatypusSequence(0x107CB);
}
- gameSys.setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, 1);
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
@@ -2996,11 +2996,11 @@ void Scene08::run() {
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x14D);
- _vm->gnapKissPlatypus(8);
+ _vm->_gnap->kissPlatypus(8);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -3043,12 +3043,12 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(8, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
@@ -3061,13 +3061,13 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapScratchingHead(6, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
@@ -3078,13 +3078,13 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(4, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
_vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
@@ -3324,14 +3324,14 @@ void Scene08::updateAnimations() {
} else if (_nextDogSequenceId == 0x147) {
gameSys.setAnimation(_nextDogSequenceId, 100, 3);
gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x148, 160, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = 0x134;
_vm->_plat->_pos = Common::Point(1, 8);
- _vm->_platypusId = 160;
- _vm->_platypusSequenceId = 0x148;
+ _vm->_plat->_id = 160;
+ _vm->_plat->_sequenceId = 0x148;
_vm->_plat->_idleFacing = kDirUnk4;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceDatNum = 0;
if (_vm->_gnap->_pos == Common::Point(1, 8))
_vm->gnapWalkStep();
} else if (_nextDogSequenceId != -1) {
@@ -3343,10 +3343,10 @@ void Scene08::updateAnimations() {
if (_currDogSequenceId == 0x133) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x14D;
+ gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x14D;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
}
}
@@ -3425,11 +3425,11 @@ void Scene09::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -3529,12 +3529,12 @@ void Scene09::updateAnimations() {
break;
case kAS09SearchTrash:
gameSys.setAnimation(0x4C, 120, 0);
- gameSys.insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x4C, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x4B, 2, true);
- _vm->_gnapSequenceId = 0x4C;
- _vm->_gnapId = 120;
+ _vm->_gnap->_sequenceId = 0x4C;
+ _vm->_gnap->_id = 120;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(9, 6);
_vm->_gnap->_actionStatus = kAS09SearchTrashDone;
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 6aca6434ed..5cad36d393 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -117,11 +117,11 @@ void Scene10::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(10);
+ _vm->_gnap->kissPlatypus(10);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -150,7 +150,7 @@ void Scene10::run() {
case kHS10Cook:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 8, 6, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
@@ -164,12 +164,12 @@ void Scene10::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(4, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(4, 6, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
@@ -206,7 +206,7 @@ void Scene10::run() {
_vm->playGnapMoan2(-1, -1);
else {
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
@@ -239,7 +239,7 @@ void Scene10::run() {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
@@ -257,16 +257,16 @@ void Scene10::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 10, 5) | 0x10000);
+ _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 10, 5) | 0x10000);
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
- gameSys.insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x10E;
- _vm->_gnapId = 120;
+ gameSys.insertSequence(0x10E, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x10E;
+ _vm->_gnap->_id = 120;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(9, 6);
_vm->_timers[2] = 360;
break;
@@ -371,16 +371,16 @@ void Scene10::updateAnimations() {
_vm->_plat->_pos = Common::Point(4, 8);
gameSys.insertSequence(0x109, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x107C9, 160,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
gameSys.removeSequence(0x107, 100, true);
_currCookSequenceId = 0x109;
_nextCookSequenceId = 0x843;
- _vm->_platypusSequenceId = 0x7C9;
- _vm->_platypusId = 160;
+ _vm->_plat->_sequenceId = 0x7C9;
+ _vm->_plat->_id = 160;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_platypusSequenceDatNum = 1;
+ _vm->_plat->_sequenceDatNum = 1;
break;
case 0x843:
_vm->hideCursor();
@@ -455,10 +455,10 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = 300;
- gameSys.insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x10C;
+ gameSys.insertSequence(0x10C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x10C;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
_vm->_plat->_actionStatus = -1;
}
@@ -598,11 +598,11 @@ void Scene11::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -653,7 +653,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(3, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
break;
}
@@ -671,7 +671,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 3, 6) | 0x10000);
+ _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
@@ -679,7 +679,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(5, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
@@ -840,10 +840,10 @@ void Scene11::updateAnimations() {
gameSys.setAnimation(0, 0, 0);
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x1F4;
- _vm->_gnapId = 255;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x1F4, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x1F4;
+ _vm->_gnap->_id = 255;
+ _vm->_gnap->_sequenceDatNum = 0;
gameSys.removeSequence(0x207, 257, true);
gameSys.removeSequence(0x208, 256, true);
_nextGoggleGuySequenceId = 0x1F8;
@@ -893,11 +893,11 @@ void Scene11::updateAnimations() {
if (_nextHookGuySequenceId == 0x204) {
gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
gameSys.insertSequence(0x204, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x1F5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1F5, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_currHookGuySequenceId = 0x204;
_nextHookGuySequenceId = -1;
- _vm->_gnapSequenceId = 0x1F5;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x1F5;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_timers[4] = _vm->getRandom(40) + 20;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
@@ -1017,11 +1017,11 @@ void Scene12::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1065,11 +1065,11 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(3, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
@@ -1102,12 +1102,12 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(6, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
_vm->playGnapPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS12PlatWithBarkeeper;
break;
}
@@ -1135,11 +1135,11 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(7, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
@@ -1360,11 +1360,11 @@ void Scene12::updateAnimations() {
gameSys.setAnimation(0x10843, 301, 0);
_vm->_gnap->_actionStatus = kAS12QuarterToToothGuyDone;
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- gameSys.insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301,
+ gameSys.insertSequence(0x10843, 301, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x107B7, _vm->_gnap->_id, 0x10843, 301,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B7;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B7;
+ _vm->_gnap->_sequenceDatNum = 1;
_vm->setFlag(kGFTwigTaken);
_vm->invAdd(kItemQuarterWithHole);
_vm->invRemove(kItemQuarter);
@@ -1372,11 +1372,11 @@ void Scene12::updateAnimations() {
if (_nextToothGuySequenceId == 0x1EF) {
gameSys.setAnimation(_nextToothGuySequenceId, 50, 2);
gameSys.insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
- _vm->_gnapSequenceId = 0x205;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x205;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_timers[4] = 40;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
@@ -1526,11 +1526,11 @@ void Scene13::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1560,14 +1560,14 @@ void Scene13::run() {
case TALK_CURSOR:
if (_vm->_gnap->_pos == Common::Point(5, 5)) {
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- gameSys.setAnimation(_backToiletCtr + 0xA3, _vm->_gnapId, 0);
- gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.setAnimation(_backToiletCtr + 0xA3, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqScale | kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_actionStatus = kAS13Wait;
- _vm->_gnapSequenceId = _backToiletCtr + 0xA3;
+ _vm->_gnap->_sequenceId = _backToiletCtr + 0xA3;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
} else {
_vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS13BackToilet;
@@ -1613,7 +1613,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
+ _vm->gnapWalkTo(7, 7, -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1628,7 +1628,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
+ _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 9, 6));
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
@@ -1650,7 +1650,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
+ _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 5, 9));
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
@@ -1770,9 +1770,9 @@ void Scene13::updateAnimations() {
break;
case kAS13BackToilet:
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
- _vm->_gnapSequenceId = _backToiletCtr + 0xA3;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 9, 0, 0, 0);
+ _vm->_gnap->_sequenceId = _backToiletCtr + 0xA3;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
break;
case kAS13FrontToilet:
@@ -1785,12 +1785,12 @@ void Scene13::updateAnimations() {
break;
case kAS13GrabSink:
gameSys.setAnimation(0xAB, 160, 0);
- gameSys.insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xAB, 160, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0xAA, 256, true);
- _vm->_gnapSequenceId = 0xAB;
- _vm->_gnapId = 160;
+ _vm->_gnap->_sequenceId = 0xAB;
+ _vm->_gnap->_id = 160;
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(4, 8);
_vm->_timers[2] = 360;
_vm->_gnap->_actionStatus = kAS13GrabSinkDone;
@@ -1804,11 +1804,11 @@ void Scene13::updateAnimations() {
break;
case kAS13GrabUrinal:
gameSys.setAnimation(0xA2, 120, 0);
- gameSys.insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA2;
- _vm->_gnapId = 120;
+ gameSys.insertSequence(0xA2, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xA2;
+ _vm->_gnap->_id = 120;
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(4, 6);
_vm->_timers[2] = 360;
_vm->_gnap->_actionStatus = kAS13Wait;
@@ -1862,7 +1862,7 @@ void Scene14::run() {
if (!_vm->isFlag(kGFNeedleTaken)) {
gameSys.insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x24;
+ _vm->_gnap->_sequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -1893,7 +1893,7 @@ void Scene14::run() {
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
gameSys.setAnimation(0x26, 10, 0);
- gameSys.insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x26, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playSound(0x108E9, false);
} else {
@@ -1902,9 +1902,9 @@ void Scene14::run() {
_vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- gameSys.insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x25, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x23;
+ _vm->_gnap->_sequenceId = 0x23;
break;
case TALK_CURSOR:
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
@@ -1944,8 +1944,8 @@ void Scene14::run() {
_vm->checkGameKeys();
if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
- gameSys.insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x24;
+ gameSys.insertSequence(0x24, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -2340,10 +2340,10 @@ void Scene17::platHangUpPhone() {
gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (gameSys.getAnimationStatus(4) != 2)
_vm->gameUpdateTick();
- gameSys.setAnimation(0x25B, _vm->_platypusId, 1);
- gameSys.insertSequence(0x25B, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25B;
- _vm->_platypusSequenceDatNum = 0;
+ gameSys.setAnimation(0x25B, _vm->_plat->_id, 1);
+ gameSys.insertSequence(0x25B, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceId = 0x25B;
+ _vm->_plat->_sequenceDatNum = 0;
_currPhoneSequenceId = -1;
_nextPhoneSequenceId = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
@@ -2423,11 +2423,11 @@ void Scene17::run() {
} else if (_vm->isFlag(kGFUnk27)) {
_vm->initGnapPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25A;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x25A;
+ _vm->_plat->_sequenceDatNum = 0;
_vm->endSceneInit();
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
@@ -2442,10 +2442,10 @@ void Scene17::run() {
_vm->clearFlag(kGFUnk16);
_vm->initPlatypusPos(7, 9, kDirNone);
_vm->_gnap->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_gnap->_id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 601;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 601;
_vm->_gnap->_actionStatus = kAS17GnapHangUpPhone;
_vm->clearFlag(kGFUnk25);
gameSys.insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -2458,12 +2458,12 @@ void Scene17::run() {
_vm->_sceneWaiting = true;
_vm->initGnapPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
_currPhoneSequenceId = 0x251;
gameSys.insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25A;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x25A;
+ _vm->_plat->_sequenceDatNum = 0;
_vm->endSceneInit();
gameSys.setAnimation(_currPhoneSequenceId, 254, 1);
_vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
@@ -2490,21 +2490,21 @@ void Scene17::run() {
}
} else {
_vm->_gnap->_pos = Common::Point(3, 6);
- _vm->_gnapId = 120;
- _vm->_gnapSequenceId = 0x23D;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_id = 120;
+ _vm->_gnap->_sequenceId = 0x23D;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirBottomRight;
- gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
_vm->_plat->_pos = Common::Point(-1, 8);
- _vm->_platypusId = 160;
+ _vm->_plat->_id = 160;
gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
+ gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0x241, _vm->_plat->_id,
kSeqScale | kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_platGridX, 48 * _vm->_plat->_pos.y - _vm->_platGridY);
gameSys.insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
_vm->endSceneInit();
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
+ _vm->_plat->_sequenceId = 0x7C1;
+ _vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_idleFacing = kDirBottomRight;
_vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
}
@@ -2528,9 +2528,9 @@ void Scene17::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else {
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 0, 0x107BA, 1);
_vm->_plat->_actionStatus = kAS17GetWrench1;
@@ -2549,7 +2549,7 @@ void Scene17::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2577,7 +2577,7 @@ void Scene17::run() {
case PLAT_CURSOR:
if (_canTryGetWrench) {
platHangUpPhone();
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS17TryGetWrench;
_vm->_gnap->_actionStatus = kAS17TryGetWrench;
@@ -2593,7 +2593,7 @@ void Scene17::run() {
case kHS17Phone1:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
@@ -2605,7 +2605,7 @@ void Scene17::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GetCoinFromPhone;
} else
_vm->playGnapImpossible(0, 0);
@@ -2617,7 +2617,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
@@ -2634,7 +2634,7 @@ void Scene17::run() {
case kHS17Phone2:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
@@ -2648,7 +2648,7 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
@@ -2661,7 +2661,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
@@ -2841,10 +2841,10 @@ void Scene17::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS17PutCoinIntoPhone:
- gameSys.setAnimation(0x24C, _vm->_gnapId, 0);
- gameSys.insertSequence(0x24C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x24C;
+ gameSys.setAnimation(0x24C, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x24C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x24C;
_vm->invRemove(kItemDiceQuarterHole);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFUnk18);
@@ -2855,15 +2855,15 @@ void Scene17::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS17GnapUsePhone:
- gameSys.setAnimation(0x24D, _vm->_gnapId, 0);
- gameSys.insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x24D, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x24D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
case kAS17GnapHangUpPhone:
- gameSys.insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x258;
+ gameSys.insertSequence(0x258, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x258;
_vm->_gnap->_actionStatus = -1;
break;
case kAS17LeaveScene:
@@ -2896,10 +2896,10 @@ void Scene17::updateAnimations() {
_vm->setGrabCursorSprite(kItemWrench);
break;
case kAS17PlatUsePhone:
- gameSys.setAnimation(0x24E, _vm->_platypusId, 1);
- gameSys.insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x24E;
+ gameSys.setAnimation(0x24E, _vm->_plat->_id, 1);
+ gameSys.insertSequence(0x24E, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x24E;
_vm->_plat->_actionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
@@ -2909,9 +2909,9 @@ void Scene17::updateAnimations() {
_platPhoneCtr = 0;
_nextPhoneSequenceId = -1;
_currPhoneSequenceId = -1;
- gameSys.insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x25B;
+ gameSys.insertSequence(0x25B, _vm->_plat->_id, 0x25A, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x25B;
_vm->_plat->_actionStatus = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
_vm->_sceneWaiting = false;
@@ -2920,9 +2920,9 @@ void Scene17::updateAnimations() {
_nextPhoneSequenceId = kPlatPhoneSequenceIds[_platPhoneCtr];
gameSys.setAnimation(_nextPhoneSequenceId, 254, 1);
gameSys.insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x25A, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x25A;
+ gameSys.insertSequence(0x25A, _vm->_plat->_id, 0x25A, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x25A;
_currPhoneSequenceId = _nextPhoneSequenceId;
}
break;
@@ -2936,27 +2936,27 @@ void Scene17::updateAnimations() {
switch (_nextWrenchSequenceId) {
case 0x233:
_vm->_gnap->_actionStatus = -1;
- gameSys.insertSequence(0x243, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ gameSys.insertSequence(0x243, _vm->_plat->_id,
+ _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
- _vm->_platypusSequenceId = 0x243;
- _vm->_platypusSequenceDatNum = 0;
- gameSys.setAnimation(0x243, _vm->_platypusId, 1);
+ _vm->_plat->_sequenceId = 0x243;
+ _vm->_plat->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x243, _vm->_plat->_id, 1);
break;
case 0x234:
_vm->_gnap->_actionStatus = -1;
- gameSys.insertSequence(0x242, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ gameSys.insertSequence(0x242, _vm->_plat->_id,
+ _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
- _vm->_platypusSequenceId = 0x242;
- _vm->_platypusSequenceDatNum = 0;
- gameSys.setAnimation(0x242, _vm->_platypusId, 1);
+ _vm->_plat->_sequenceId = 0x242;
+ _vm->_plat->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x242, _vm->_plat->_id, 1);
break;
case 0x231:
if (_vm->getRandom(2) != 0)
@@ -2989,15 +2989,15 @@ void Scene17::updateAnimations() {
_currWrenchSequenceId = 0x22E;
_canTryGetWrench = false;
}
- gameSys.setAnimation(0x23F, _vm->_platypusId, 1);
- gameSys.insertSequence(0x10875, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x23F, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ gameSys.setAnimation(0x23F, _vm->_plat->_id, 1);
+ gameSys.insertSequence(0x10875, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x23F, _vm->_plat->_id,
+ _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 1;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x875;
- _vm->_platypusSequenceId = 0x23F;
+ _vm->_gnap->_sequenceDatNum = 1;
+ _vm->_plat->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x875;
+ _vm->_plat->_sequenceId = 0x23F;
_vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
_vm->_plat->_actionStatus = kAS17GetWrench2;
}
@@ -3037,15 +3037,15 @@ void Scene17::updateAnimations() {
break;
case 0x249:
gameSys.setAnimation(0x230, 40, 2);
- gameSys.setAnimation(0x240, _vm->_platypusId, 1);
+ gameSys.setAnimation(0x240, _vm->_plat->_id, 1);
gameSys.insertSequence(0x230, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x240, _vm->_platypusId, _vm->_platypusSequenceId, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x23E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x23E;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x240;
- _vm->_platypusSequenceDatNum = 0;
+ gameSys.insertSequence(0x240, _vm->_plat->_id, _vm->_plat->_sequenceId, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x23E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x23E;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_plat->_sequenceId = 0x240;
+ _vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(0x24A, 40, 3);
gameSys.insertSequence(0x24A, 40, _nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (gameSys.getAnimationStatus(2) != 2) {
@@ -3173,9 +3173,9 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
nextGridX = destGridX;
if (nextGridX == _vm->_gnap->_pos.x) {
- gnapSeqId = _vm->_gnapSequenceId;
- gnapId = _vm->_gnapId;
- gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapSeqId = _vm->_gnap->_sequenceId;
+ gnapId = _vm->_gnap->_id;
+ gnapDatNum = _vm->_gnap->_sequenceDatNum;
gnapGridX = _vm->_gnap->_pos.x;
if (_vm->_gnap->_pos.x <= curGridX)
direction = 1;
@@ -3190,9 +3190,9 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
_vm->platypusMakeRoom();
}
}
- gnapSeqId = _vm->_gnapSequenceId;
- gnapId = _vm->_gnapId;
- gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapSeqId = _vm->_gnap->_sequenceId;
+ gnapId = _vm->_gnap->_id;
+ gnapDatNum = _vm->_gnap->_sequenceDatNum;
gnapGridX = _vm->_gnap->_pos.x;
int seqId;
if (nextGridX < _vm->_gnap->_pos.x) {
@@ -3219,20 +3219,20 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
}
if (direction == 1)
- _vm->_gnapSequenceId = 0x20A;
+ _vm->_gnap->_sequenceId = 0x20A;
else
- _vm->_gnapSequenceId = 0x209;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x209;
+ _vm->_gnap->_sequenceDatNum = 0;
if (direction == 1)
_vm->_gnap->_idleFacing = kDirBottomRight;
else
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnapId = 20 * _vm->_gnap->_pos.y + 1;
+ _vm->_gnap->_id = 20 * _vm->_gnap->_pos.y + 1;
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
+ gameSys.insertSequence(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
@@ -3253,17 +3253,17 @@ void Scene18::putDownGarbageCan(int animationIndex) {
_vm->clearFlag(kGFPlatypusDisguised);
updateHotspots();
if (_vm->_gnap->_idleFacing != kDirNone && _vm->_gnap->_idleFacing != kDirBottomRight && _vm->_gnap->_idleFacing != kDirUpRight) {
- gameSys.insertSequence(0x107BA, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x107BA, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7BA;
+ _vm->_gnap->_sequenceId = 0x7BA;
} else {
- gameSys.insertSequence(0x107B9, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x107B9, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B9;
+ _vm->_gnap->_sequenceId = 0x7B9;
}
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceDatNum = 1;
gameSys.insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
gameSys.setAnimation(0x1FA, 19, 4);
gameSys.insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
@@ -3436,7 +3436,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -3445,11 +3445,11 @@ void Scene18::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -3476,7 +3476,7 @@ void Scene18::run() {
_vm->playGnapScratchingHead(3, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 0, _vm->getGnapSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3515,7 +3515,7 @@ void Scene18::run() {
if (!_vm->isFlag(kGFTruckKeysUsed)) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y,
-1, -1, 1);
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 0, -1, 1))
@@ -3570,7 +3570,7 @@ void Scene18::run() {
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
@@ -3612,7 +3612,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan;
else
@@ -3792,17 +3792,17 @@ void Scene18::updateAnimations() {
switch (_vm->_gnap->_actionStatus) {
case kAS18GrabGarbageCanFromStreet:
if (_vm->_gnap->_idleFacing != kDirUpRight && _vm->_gnap->_idleFacing != kDirBottomRight) {
- gameSys.insertSequence(0x1FC, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x1FC, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - 675, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FC;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x1FC;
} else {
- gameSys.insertSequence(0x1FD, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x1FD, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - 525, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FD;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x1FD;
}
gameSys.removeSequence(0x1FA, 19, true);
_vm->setFlag(kGFPlatypusDisguised);
@@ -3810,23 +3810,23 @@ void Scene18::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS18GrabGarbageCanFromHydrant:
- gameSys.insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1FE, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x1F9, 19, true);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FE;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x1FE;
_vm->clearFlag(kGFTruckKeysUsed);
_vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
_vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseRightValveNoGarbageCan:
- gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x20D, 39, true);
gameSys.removeSequence(0x212, 39, true);
gameSys.removeSequence(0x211, 39, true);
_vm->stopSound(0x22B);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x205;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x205;
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
@@ -3846,7 +3846,7 @@ void Scene18::updateAnimations() {
break;
case kAS18OpenTopValveDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x208, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
gameSys.removeSequence(0x20C, 19, true);
gameSys.setAnimation(0x217, 39, 5);
@@ -3855,20 +3855,20 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x208;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x208;
_vm->invRemove(kItemWrench);
_vm->setGrabCursorSprite(-1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseTopValve:
- gameSys.insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x206, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x20E, 39, true);
gameSys.removeSequence(0x216, 39, true);
gameSys.removeSequence(0x217, 39, true);
_vm->stopSound(0x22B);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x206;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x206;
_vm->clearFlag(kGFBarnPadlockOpen);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
@@ -3876,10 +3876,10 @@ void Scene18::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS18GrabCowboyHat:
- gameSys.setAnimation(0x200, _vm->_gnapId, 0);
- gameSys.insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x200;
+ gameSys.setAnimation(0x200, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x200, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x200;
_vm->_gnap->_actionStatus = kAS18GrabCowboyHatDone;
break;
case kAS18GrabCowboyHatDone:
@@ -3910,25 +3910,25 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFPlatypusDisguised);
gameSys.requestRemoveSequence(0x211, 39);
gameSys.requestRemoveSequence(0x212, 39);
- gameSys.insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x210, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
- gameSys.setAnimation(0x210, _vm->_gnapId, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x210;
+ gameSys.setAnimation(0x210, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x210;
_vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant2;
break;
case kAS18PutGarbageCanOnRunningHydrant2:
_vm->playSound(0x22B, true);
- gameSys.setAnimation(0x1FF, _vm->_gnapId, 0);
- gameSys.insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FF;
+ gameSys.setAnimation(0x1FF, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x1FF, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x1FF;
_vm->_sceneWaiting = true;
_vm->_gnap->_actionStatus = kAS18StandingOnHydrant;
break;
case kAS18StandingOnHydrant:
- gameSys.setAnimation(0x1FF, _vm->_gnapId, 0);
- gameSys.insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1FF, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x1FF, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
break;
case kAS18OpenRightValveNoGarbageCan:
case kAS18OpenRightValveWithGarbageCan:
@@ -3947,7 +3947,7 @@ void Scene18::updateAnimations() {
break;
case kAS18OpenRightValveWithGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x207, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
gameSys.requestRemoveSequence(0x1F9, 19);
gameSys.removeSequence(0x20B, 19, true);
@@ -3957,14 +3957,14 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x207;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x207;
_vm->invRemove(kItemWrench);
_vm->_gnap->_actionStatus = -1;
break;
case kAS18OpenRightValveNoGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x207, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
gameSys.removeSequence(0x20B, 19, true);
gameSys.setAnimation(0x211, 39, 5);
@@ -3973,13 +3973,13 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x207;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x207;
_vm->invRemove(kItemWrench);
_vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseRightValveWithGarbageCan:
- gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x20D, 39, true);
gameSys.insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
@@ -3988,10 +3988,10 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 517, _vm->_gnap->_id, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
updateHotspots();
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCanDone;
break;
case kAS18CloseRightValveWithGarbageCanDone:
@@ -4000,14 +4000,14 @@ void Scene18::updateAnimations() {
case kAS18PutGarbageCanOnHydrant:
_vm->setFlag(kGFTruckKeysUsed);
_vm->clearFlag(kGFPlatypusDisguised);
- gameSys.insertSequence(0x20F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x20F, _vm->_gnapId, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x20F;
+ gameSys.insertSequence(0x20F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x20F, _vm->_gnap->_id, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x20F;
_vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrantDone;
break;
case kAS18PutGarbageCanOnHydrantDone:
- gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnap->_id, kSeqNone, 0, 0, 0);
updateHotspots();
_vm->_gnap->_actionStatus = -1;
break;
@@ -4142,7 +4142,7 @@ void Scene19::run() {
case kHS19Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -4151,11 +4151,11 @@ void Scene19::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -4191,7 +4191,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS19GrabPicture;
}
break;
@@ -4215,7 +4215,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 229aad4eb6..0a8d6041b6 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -273,7 +273,7 @@ void Scene20::run() {
case kHS20Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -282,11 +282,11 @@ void Scene20::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(20);
+ _vm->_gnap->kissPlatypus(20);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -371,7 +371,7 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_stonerGuyShowingJoint)
_vm->_gnap->_actionStatus = kAS20GrabJoint;
else
@@ -379,7 +379,7 @@ void Scene20::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
if (_vm->isFlag(kGFJointTaken))
_vm->_gnap->_actionStatus = kAS20TalkStonerGuyNoJoint;
else
@@ -405,12 +405,12 @@ void Scene20::run() {
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
@@ -425,7 +425,7 @@ void Scene20::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
@@ -437,7 +437,7 @@ void Scene20::run() {
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
@@ -603,10 +603,10 @@ void Scene20::updateAnimations() {
break;
case kAS20SwitchGroceryStoreHat:
_vm->setGrabCursorSprite(-1);
- 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;
+ gameSys.setAnimation(0x180, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x180, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x180;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->invRemove(kItemCowboyHat);
_vm->invAdd(kItemGroceryStoreHat);
_vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHatDone;
@@ -625,7 +625,7 @@ void Scene20::updateAnimations() {
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(3, 8, -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJointDone:
@@ -647,11 +647,11 @@ void Scene20::updateAnimations() {
break;
case 0x178:
gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- gameSys.setAnimation(0x17D, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x17D, _vm->_gnap->_id, 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;
+ gameSys.insertSequence(0x17D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x17D;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
@@ -664,9 +664,9 @@ void Scene20::updateAnimations() {
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;
+ gameSys.insertSequence(0x17E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x17E;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
@@ -791,7 +791,7 @@ void Scene21::run() {
case kHS21Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -800,11 +800,11 @@ void Scene21::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -824,7 +824,7 @@ void Scene21::run() {
_vm->playGnapScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
_vm->playGnapPullOutDevice(2, 5);
_vm->playGnapUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS21GrabBanana;
@@ -841,7 +841,7 @@ void Scene21::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
_vm->_newSceneNum = 47;
- _vm->gnapWalkTo(4, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(4, 6, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 6, 7, 4);
@@ -853,13 +853,13 @@ void Scene21::run() {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(7, 6, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21GrabOldLady;
_vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady].x, _vm->_hotspotsWalkPos[kHS21OldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady].x, _vm->_hotspotsWalkPos[kHS21OldLady].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
@@ -962,10 +962,10 @@ void Scene21::updateAnimations() {
_nextOldLadySequenceId = 0x87;
break;
case kAS21UseHatWithOldLady:
- 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;
+ gameSys.setAnimation(0x8F, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x8F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x8F;
_vm->_gnap->_actionStatus = kAS21UseHatWithOldLadyDone;
_vm->invAdd(kItemTickets);
_vm->invRemove(kItemGroceryStoreHat);
@@ -984,9 +984,9 @@ void Scene21::updateAnimations() {
if (_nextOldLadySequenceId == 0x87) {
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;
+ gameSys.insertSequence(0x86, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x86;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
@@ -1107,7 +1107,7 @@ void Scene22::run() {
case kHS22Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1116,11 +1116,11 @@ void Scene22::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1165,11 +1165,11 @@ void Scene22::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y,
- 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
break;
}
}
@@ -1331,7 +1331,7 @@ void Scene23::run() {
case kHS23Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1340,11 +1340,11 @@ void Scene23::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1365,7 +1365,7 @@ void Scene23::run() {
_vm->playGnapMoan2(0, 0);
else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS23LookCereals;
}
break;
@@ -1375,7 +1375,7 @@ void Scene23::run() {
else {
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
_vm->_gnap->_actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
@@ -1473,11 +1473,11 @@ void Scene23::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS23GrabCereals:
- gameSys.setAnimation(0xBE, _vm->_gnapId, 0);
- gameSys.insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xBE, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0xBE, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.requestRemoveSequence(0xBF, 2);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0xBE;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0xBE;
_vm->_gnap->_actionStatus = kAS23GrabCerealsDone;
break;
case kAS23GrabCerealsDone:
@@ -1600,7 +1600,7 @@ void Scene24::run() {
case kHS24Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1609,11 +1609,11 @@ void Scene24::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1638,7 +1638,7 @@ void Scene24::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
@@ -1846,7 +1846,7 @@ void Scene25::run() {
case kHS25Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1855,11 +1855,11 @@ void Scene25::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1874,7 +1874,7 @@ void Scene25::run() {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
_vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y,
- 0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1888,7 +1888,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
@@ -2163,7 +2163,7 @@ void Scene26::run() {
case kHS26Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -2172,11 +2172,11 @@ void Scene26::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2397,7 +2397,7 @@ void Scene27::run() {
case kHS27Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -2406,11 +2406,11 @@ void Scene27::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2435,7 +2435,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
@@ -2458,7 +2458,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
@@ -2768,7 +2768,7 @@ void Scene28::run() {
case kHS28Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -2777,11 +2777,11 @@ void Scene28::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2803,7 +2803,7 @@ void Scene28::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28GrabHornSuccess;
}
} else {
@@ -2852,7 +2852,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(5, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
@@ -2888,7 +2888,7 @@ void Scene28::run() {
_vm->playGnapScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
@@ -3000,9 +3000,9 @@ void Scene28::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
@@ -3056,12 +3056,12 @@ void Scene28::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case 0x119:
- gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextClownSequenceId, 39, 0);
gameSys.removeSequence(_currClownSequenceId, 39, true);
_vm->_gnap->_actionStatus = kAS28GrabHornFailsDone;
- _vm->_gnapSequenceId = _nextClownSequenceId;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = _nextClownSequenceId;
+ _vm->_gnap->_sequenceDatNum = 0;
_nextClownSequenceId = -1;
break;
}
@@ -3159,7 +3159,7 @@ void Scene29::run() {
case kHS29Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -3168,11 +3168,11 @@ void Scene29::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -3186,7 +3186,7 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
@@ -3342,9 +3342,9 @@ void Scene29::updateAnimations() {
if (gameSys.getAnimationStatus(4) == 2) {
if (_nextMonkeySequenceId == 0xE5) {
- gameSys.insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0xF2;
+ gameSys.insertSequence(0xF2, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0xF2;
gameSys.setAnimation(0xE6, 159, 0);
gameSys.setAnimation(0, 159, 4);
gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 0698abb060..1a22a331f3 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -88,7 +88,7 @@ void Scene30::run() {
case kHS30Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -97,11 +97,11 @@ void Scene30::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -221,23 +221,23 @@ void Scene30::updateAnimations() {
break;
case kAS30UsePillMachine:
_vm->setGrabCursorSprite(-1);
- 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;
+ gameSys.setAnimation(0x105, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x105, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x105;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS30UsePillMachine2;
break;
case kAS30UsePillMachine2:
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x3F, 255);
- gameSys.removeSequence(0x105, _vm->_gnapId, true);
+ gameSys.removeSequence(0x105, _vm->_gnap->_id, true);
gameSys.setAnimation(0x102, 256, 0);
gameSys.insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
- gameSys.setAnimation(0x103, _vm->_gnapId, 0);
- gameSys.insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x103, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x103, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->_gnap->_actionStatus = kAS30UsePillMachine3;
@@ -245,10 +245,10 @@ void Scene30::updateAnimations() {
_vm->setFlag(kGFUnk23);
break;
case kAS30UsePillMachine3:
- 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;
+ gameSys.setAnimation(0x104, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x104, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, 0x103), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x104;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = kAS30UsePillMachine4;
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
@@ -343,7 +343,7 @@ void Scene31::run() {
case kHS31Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
+ _vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -352,11 +352,11 @@ void Scene31::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -393,7 +393,7 @@ void Scene31::run() {
break;
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 1, 0x107C2, 1);
@@ -413,7 +413,7 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) {
_vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_gnap->_pos, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, -1, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->playGnapPullOutDevice(6, 8);
@@ -543,11 +543,11 @@ void Scene31::updateAnimations() {
break;
case kAS31FillEmptyBucketWithBeer:
gameSys.setAnimation(0x102, 59, 0);
- gameSys.insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x102, 59, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_pos = Common::Point(5, 7);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x102;
- _vm->_gnapId = 59;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x102;
+ _vm->_gnap->_id = 59;
_vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeerDone;
break;
case kAS31FillEmptyBucketWithBeerDone:
@@ -701,11 +701,11 @@ void Scene32::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -877,11 +877,11 @@ void Scene33::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -899,14 +899,14 @@ void Scene33::run() {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS33UseChicken;
else
_vm->_gnap->_actionStatus = -1;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
@@ -1032,9 +1032,9 @@ void Scene33::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS33UseChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ _vm->_gnap->_sequenceId = 0x7B5;
+ _vm->_gnap->_sequenceDatNum = 1;
_currChickenSequenceId = 0x7E;
gameSys.setAnimation(0x7E, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
@@ -1050,7 +1050,7 @@ void Scene33::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x81) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
- gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
@@ -1154,11 +1154,11 @@ void Scene38::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1286,43 +1286,43 @@ void Scene38::updateAnimations() {
_vm->_sceneDone = true;
break;
case kAS38ExitCave:
- 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;
- gameSys.setAnimation(0xA3, _vm->_gnapId, 0);
+ gameSys.removeSequence(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, true);
+ gameSys.insertSequence(0xA3, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xA3;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0xA3, _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS38LeaveScene;
break;
case kAS38UseHuntingTrophy:
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;
- gameSys.setAnimation(0x9C, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x9C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x9C;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x9C, _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy;
updateHotspots();
break;
case kAS38HoldingHuntingTrophy:
if (_vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
_vm->_sceneWaiting = true;
- if (_vm->_gnapSequenceId == 0xA4) {
- gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9D;
+ if (_vm->_gnap->_sequenceId == 0xA4) {
+ gameSys.insertSequence(0x9D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x9D;
} else {
- gameSys.insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA4;
+ gameSys.insertSequence(0xA4, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xA4;
}
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(_vm->_gnap->_sequenceId, _vm->_gnap->_id, 0);
break;
case kAS38ReleaseHuntingTrophy:
- if (_vm->_gnapSequenceId == 0x9E) {
+ if (_vm->_gnap->_sequenceId == 0x9E) {
gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnap->_actionStatus = -1;
} else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
- gameSys.insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA0;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0xA0, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0xA0;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(3, 6);
_vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->_isLeavingScene) {
@@ -1334,33 +1334,33 @@ void Scene38::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
}
} else {
- gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9E;
- _vm->_gnapSequenceDatNum = 0;
+ gameSys.insertSequence(0x9E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x9E;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(3, 6);
_vm->_gnap->_idleFacing = kDirBottomRight;
- gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9E, _vm->_gnap->_id, 0);
_vm->_sceneWaiting = false;
updateHotspots();
}
break;
case kAS38UsePlatypusWithTrapDoor:
_vm->_sceneWaiting = false;
- gameSys.insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9F;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x9F, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x9F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x9F;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x9F, _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy;
if (_vm->_plat->_idleFacing != kDirNone)
_vm->playPlatypusSequence(0x107D5);
else
_vm->playPlatypusSequence(0x107D4);
_vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
- 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;
- gameSys.setAnimation(0xA1, _vm->_gnapId + 1, 1);
+ gameSys.insertSequence(0xA1, _vm->_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 = _vm->_gnap->_id + 1;
+ gameSys.setAnimation(0xA1, _vm->_gnap->_id + 1, 1);
_vm->_plat->_actionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
@@ -1370,9 +1370,9 @@ void Scene38::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
- gameSys.insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xA2;
- _vm->_platypusSequenceDatNum = 0;
+ 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;
updateHotspots();
_vm->_sceneWaiting = true;
}
@@ -1460,11 +1460,11 @@ void Scene39::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 7ecaf23dd2..e4e29d92f6 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -83,11 +83,11 @@ void Scene40::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -263,13 +263,13 @@ void Scene41::run() {
gameSys.insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_gnapSequenceId = 0x120;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x120;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_pos = Common::Point(7, 7);
- _vm->_gnapId = 140;
+ _vm->_gnap->_id = 140;
gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->initPlatypusPos(8, 10, kDirBottomLeft);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 45) {
@@ -358,11 +358,11 @@ void Scene41::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -412,7 +412,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(4, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
@@ -441,7 +441,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(7, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -453,7 +453,7 @@ void Scene41::run() {
case kHS41ToyUfo:
if (_vm->_grabCursorSpriteIndex == kItemGum) {
_vm->playGnapPullOutDevice(9, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS41UseGumWithToyUfo;
}
break;
@@ -468,11 +468,11 @@ void Scene41::run() {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
if (!_vm->_timers[9] && _vm->_gnap->_actionStatus < 0) {
_vm->_gnap->_actionStatus = kAS41GiveBackToyUfo;
- if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x122) {
- gameSys.insertSequence(0x123, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x123;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x123, _vm->_gnapId, 0);
+ if (_vm->_gnap->_sequenceId == 0x121 || _vm->_gnap->_sequenceId == 0x122) {
+ gameSys.insertSequence(0x123, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x123;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x123, _vm->_gnap->_id, 0);
}
}
}
@@ -482,24 +482,24 @@ void Scene41::run() {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
int sequenceId;
if (_vm->_leftClickMouseX >= 400) {
- if (_vm->_gnapSequenceId == 0x11F || _vm->_gnapSequenceId == 0x120 || _vm->_gnapSequenceId == 0x123 || _vm->_gnapSequenceId == 0x126)
+ if (_vm->_gnap->_sequenceId == 0x11F || _vm->_gnap->_sequenceId == 0x120 || _vm->_gnap->_sequenceId == 0x123 || _vm->_gnap->_sequenceId == 0x126)
sequenceId = 0x120;
else if (_vm->_leftClickMouseX - _vm->_toyUfoX >= 400)
sequenceId = 0x126;
else
sequenceId = 0x123;
} else {
- if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x125 || _vm->_gnapSequenceId == 0x122)
+ if (_vm->_gnap->_sequenceId == 0x121 || _vm->_gnap->_sequenceId == 0x125 || _vm->_gnap->_sequenceId == 0x122)
sequenceId = 0x122;
else if (_vm->_toyUfoX - _vm->_leftClickMouseX >= 400)
sequenceId = 0x125;
else
sequenceId = 0x121;
}
- gameSys.insertSequence(sequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = sequenceId;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(sequenceId, _vm->_gnapId, 0);
+ gameSys.insertSequence(sequenceId, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = sequenceId;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(sequenceId, _vm->_gnap->_id, 0);
_vm->_toyUfoActionStatus = kAS41ToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
@@ -591,10 +591,10 @@ void Scene41::updateAnimations() {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x11F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x11F;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x11F, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x11F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x11F;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x11F, _vm->_gnap->_id, 0);
_nextKidSequenceId = 0x11A;
gameSys.insertSequence(0x11A, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextKidSequenceId, 1, 4);
@@ -611,10 +611,10 @@ void Scene41::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x110, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x110;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x110, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x110, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x110;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x110, _vm->_gnap->_id, 0);
_nextToyVendorSequenceId = 0x111;
gameSys.insertSequence(0x111, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
@@ -634,12 +634,12 @@ void Scene41::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x124, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x124, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x124;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x124, _vm->_gnapId, 0);
+ _vm->_gnap->_sequenceId = 0x124;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x124, _vm->_gnap->_id, 0);
_nextToyVendorSequenceId = 0x112;
gameSys.insertSequence(0x112, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
@@ -870,11 +870,11 @@ void Scene42::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -923,7 +923,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
@@ -1062,19 +1062,19 @@ void Scene42::updateAnimations() {
_nextBBQVendorSequenceId = 0x146;
}
if (sequenceId == 0x7B7) {
- gameSys.insertSequence(0x107B7, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(0x107B7, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, _vm->getSequenceTotalDuration(_nextBBQVendorSequenceId),
75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceDatNum = 1;
} else {
- gameSys.insertSequence(sequenceId, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(sequenceId, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceDatNum = 0;
}
- _vm->_gnapSequenceId = sequenceId;
- gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
+ _vm->_gnap->_sequenceId = sequenceId;
+ gameSys.setAnimation(sequenceId | (_vm->_gnap->_sequenceDatNum << 16), _vm->_gnap->_id, 0);
if (_vm->_gnap->_actionStatus == kAS42UseQuarterWithBBQVendor)
_vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendorDone;
else
@@ -1328,11 +1328,11 @@ void Scene43::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1376,7 +1376,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(5, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -1492,10 +1492,10 @@ void Scene43::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x13D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x13D;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x13D, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x13D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x13D;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x13D, _vm->_gnap->_id, 0);
_nextTwoHeadedGuySequenceId = 0x13B;
gameSys.insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
@@ -1702,10 +1702,10 @@ void Scene44::run() {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
_vm->_plat->_pos = Common::Point(5, 8);
- _vm->_platypusSequenceId = 0xFD;
+ _vm->_plat->_sequenceId = 0xFD;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_platypusId = 160;
- _vm->_platypusSequenceDatNum = 0;
+ _vm->_plat->_id = 160;
+ _vm->_plat->_sequenceDatNum = 0;
gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->endSceneInit();
@@ -1776,11 +1776,11 @@ void Scene44::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1827,11 +1827,11 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypus();
+ _vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
if (_vm->_gnap->_pos == Common::Point(7, 7))
_vm->gnapWalkStep();
@@ -1881,7 +1881,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -1998,10 +1998,10 @@ void Scene44::updateAnimations() {
switch (_vm->_plat->_actionStatus) {
case 4:
if (gameSys.getAnimationStatus(2) == 2) {
- gameSys.insertSequence(0xFE, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xFE;
- _vm->_platypusSequenceDatNum = 0;
- gameSys.setAnimation(0xFE, _vm->_platypusId, 1);
+ gameSys.insertSequence(0xFE, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_plat->_sequenceId = 0xFE;
+ _vm->_plat->_sequenceDatNum = 0;
+ gameSys.setAnimation(0xFE, _vm->_plat->_id, 1);
gameSys.removeSequence(_currKissingLadySequenceId, 1, true);
_vm->_plat->_actionStatus = 5;
}
@@ -2141,12 +2141,12 @@ void Scene45::run() {
gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->endSceneInit();
} else if (_vm->isFlag(kGFUnk22)) {
- _vm->_gnapSequenceId = 0x9E;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapId = 1;
+ _vm->_gnap->_sequenceId = 0x9E;
+ _vm->_gnap->_sequenceDatNum = 0;
+ _vm->_gnap->_id = 1;
gameSys.setAnimation(0x9E, 1, 0);
_vm->_gnap->_actionStatus = 1;
- gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_vm->_gnap->_sequenceId, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
_vm->initPlatypusPos(4, 8, kDirNone);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 46) {
@@ -2172,8 +2172,8 @@ void Scene45::run() {
if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->setFlag(kGFUnk21);
_vm->setGrabCursorSprite(-1);
- gameSys.setAnimation(0x9D, _vm->_gnapId, 0);
- gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x9D, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x9D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
while (gameSys.getAnimationStatus(0) != 2) {
_vm->gameUpdateTick();
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2190,26 +2190,26 @@ void Scene45::run() {
gameSys.setAnimation(0x99, 1, 4);
}
}
- _vm->_gnapSequenceId = 0x9D;
- _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnap->_sequenceId = 0x9D;
+ _vm->_gnap->_sequenceDatNum = 0;
_vm->hideCursor();
_vm->addFullScreenSprite(0x8A, 255);
gameSys.setAnimation(0xA0, 256, 0);
gameSys.insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
- gameSys.setAnimation(0x107BD, _vm->_gnapId, 0);
- gameSys.insertSequence(0x107BD, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.setAnimation(0x107BD, _vm->_gnap->_id, 0);
+ gameSys.insertSequence(0x107BD, _vm->_gnap->_id,
+ makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->removeFullScreenSprite();
_vm->showCursor();
- _vm->_gnapSequenceId = 0x7BD;
- _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnap->_sequenceId = 0x7BD;
+ _vm->_gnap->_sequenceDatNum = 1;
}
_vm->playPlatypusSequence(0x9A);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094A))
@@ -2265,13 +2265,13 @@ void Scene45::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
_vm->playPlatypusSequence(0x9A);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -2391,10 +2391,10 @@ void Scene45::updateAnimations() {
_vm->_sceneWaiting = true;
_vm->setFlag(kGFUnk22);
updateHotspots();
- gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9E;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x9E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnap->_sequenceId = 0x9E;
+ _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x9E, _vm->_gnap->_id, 0);
break;
default:
_vm->_gnap->_actionStatus = -1;
@@ -2408,7 +2408,7 @@ void Scene45::updateAnimations() {
_vm->playPlatypusSequence(0x9B);
else
_vm->playPlatypusSequence(0x9C);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
}
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2590,11 +2590,11 @@ void Scene46::run() {
_vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
+ _vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -2614,7 +2614,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -2635,7 +2635,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case GRAB_CURSOR: