[Scummvm-cvs-logs] scummvm master -> 87de8fc84a7212ebeaa631ce1b8e295a6fb1da9f
sev-
sev at scummvm.org
Tue May 24 00:27:16 CEST 2016
This automated email contains information about 235 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d80c7605a0 GNAP: Initial commit
ea59c06ba9 GNAP: Clean up scene 28
22b8cc704a GNAP: Clean up scene 29
bd7d790f14 GNAP: Clean up scene 30
11c381c8df GNAP: Clean up scene 31
fad62e18c8 GNAP: Clean up scene 32
d5d7d3c802 GNAP: Clean up scene 33
4752703298 GNAP: Clean up scene 38
9bac81c802 GNAP: Clean up scene 39
bd5417aea1 GNAP: Clean up scene 41
9f821cf1e1 GNAP: Clean up scene 42
2a23b8d90c GNAP: Update copyright
c18c5b047d GNAP: Reduce variable scope in fatUpdateFrame, change variable type to boolean
9d52140b09 GNAP: Some renaming in toyUfoFlyTo
37f84d0bc5 GNAP: change 3rd parameter of removeSequence to boolean, adapt calls accordingly
ccadc0ab20 GNAP: Some renaming, change some function parameters to boolean
da2cb981d2 GNAP: Some renaming, remove useless variables in GfxItem
83bc85713b GNAP: More renaming. Remove unused variable in MouseButtonState and Hotspot
e7e585fd9b GNAP: Reduce variable scope, some renaming
cfaa49f5fd GNAP: Reduce variable scope, some renaming. Change the type of parameter to boolean
b6ba5cfd89 GNAP: Reduce the scope of a couple of variables, make use of enum values in calls to InsertSequence
db527374b7 GNAP: Some renaming
deb1199c1d GNAP: Rename SequenceFrame members
d546847b5a GNAP: More renaming in resource.h
6b1a2f3649 GNAP: rename SoundItem members
e1debd6e26 GNAP: Some renaming in scene 43
7eb67ad851 GNAP: Renaming in scene 44
8cb4bd830c GNAP: Silence a false positive uninitialized variable
6d1a6738f4 GNAP: Some renaming in scene 45, change a global variable to local
e6496188f7 GNAP: Rename scene 43, 44 and 45 variables for consistency
b357844bde GNAP: Renaming in scene 46
cb69189a50 GNAP: Renaming in cutscenes
c4f5dd0209 GNAP: Fix compilation
5ecf008260 GNAP: Use nullptr instead of 0 for some pointers
bec37164f8 GNAP: Change a couple of variables to boolean, soft refactoring
ecc3e2a786 GNAP: Change the type of some variables to boolean
f3a164342b GNAP: Remove a global variable used for randomization
dca374efcd GNAP: Change another variable to boolean
29d989ac0e GNAP: Change the initial values of backGroundImageValue2&4, change transparent to boolean, use nullptr in several places
158726abf5 GNAP: Fix crash in DCL decompression
c0369a421b GNAP: Refactoring - Use an enum for Facing (Alien)
2d63d769eb GNAP: Refactoring - Use enum for beaver facing
16051780e0 GNAP: Some more enum changes
cd29ffb1c6 GNAP: Use constants for some more flag values
9d0caa4bdb GNAP: fix use of _sceneDone
66f5610c74 GNAP: Implement intro, currently disabled. Remove some Debug code.
f1738f457f GNAP: Add savegames (not fully working yet)
e11ec6a9c1 GNAP: Some rework of hotspot initialization code
6a55da1504 GNAP: Replace flags values by enums (WIP)
6dfa316b24 GNAP: Replace more flags values by enums (WIP)
11c0fa8fed GNAP: Replace more flags values by enums (WIP)
efa9466c81 GNAP: Replace more flags values by enums
ff43147ee3 GNAP: Fix some remaining flags
192bc34935 GNAP: Fix savegames
558ab62fd7 GNAP: Enforce the use of a boolean when calling playSound()
03027be392 GNAP: Fix hasFeature
52f0712b66 GNAP: Add debugger
43c65df526 GNAP: Use debug channels
0577aae277 GNAP: Fix compilation
5c072b859e GNAP: Fix warning
7762c49432 GNAP: Fix another warning and adding a catching condition
f4fc5e251a GNAP: Add missing newlines at the end
bd72968ccb GNAP: Rename members of GridStruct
e340538f5c GNAP: Rename variables in toyUfoFlyTo
d90b948b22 GNAP: Some renaming in scene 52
d6e4b67dca GNAP: Add load from launcher
63a13bc2c0 GNAP: Add some code to fix the transition from intro to game
08ba28db7f GNAP: Cosmetic changes
c144b884c3 GNAP: Fix phone keys hotspots
ba20d63573 GNAP: Fix a crash after disco ball animation
be10dd378c GNAP: Remove useless return after an error
82db01550a GNAP: Fix hotspots in scene 30
0f58e9481d GNAP: Rename hotspots in scene 53
de17d92199 GNAP: Remove unused variable in fatUpdateFrame
ff7f8aa26d GNAP: Refactor getBeaverSequenceId
90c7e1db01 GNAP: Rename members of GnapEngine from beaver to platypus for consistency
70fec4db2c GNAP: More renaming of 'beaver' variables
145b375119 GNAP: Refactor Scene01 (WIP)
a176945b60 GNAP: Refactor scene 0
65f8a72b16 GNAP: REfactor scene 2
880bc07ae1 GNAP: Add destructor to scene 1
55618fa005 GNAP: Enforce the use of boolean values for _isLeavingScene
7a6c02ca04 GNAP: Refactor scene 3
729b82a428 GNAP: Use enum value for a flag instead of number
5882753014 GNAP: Refactor scene 4
ca21ed4615 GNAP: Refactor scene 5
aea51e0d40 GNAP: Refactor scene 6
0f43db94a2 GNAP: Refactor scene 7
84bd15a525 GNAP: Refactor scene 8, Add updateAnimationsCb to Scene
4e8119b262 GNAP: Refactor scene 9
076d23fdb6 GNAP: Refactor scene 10
b535ef3abe GNAP: Refactor scene 11
e8db252fc3 GNAP: Refactor scene 12
cc5bfede08 GNAP: Refactor scene 13
2409d89eb5 GNAP: Refactor scene 14
4f4c25534c GNAP: Use a nullptr instead of 0 in deleteSurface()
c30810c933 GNAP: Refactor scene 15
861e5c1067 GNAP: Refactor scenes 16, 47, 48, 54 (cutscenes)
453194b48b GNAP: Refactor scene 17
c8f4fce895 GNAP: Refactor scene 18
4c7756e75d GNAP: Refactor scenes 19 and 20
14ec2e9699 GNAP: Refactor scene 21
d1e7c9f594 GNAP: Refactor scenes 22 & 23
417d8066c9 GNAP: Refactor scene 24
7479a2b73c GNAP: Refactor scenes 25 & 26
367a10bdbd GNAP: Refactor scene 27
2e37c2b9e6 GNAP: Refactor scene 28
093c58a397 GNAP: Refactor scene 29
294f1a6557 GNAP: Refactor scene 30
a8c1fb5727 GNAP: Refactor scene 31
a5d312b23f GNAP: Refactor scenes 32 & 33
1095af09a6 GNAP: Refactor scene 38
f7e7a45f12 GNAP: Refactor scene 39
01f8cfd8af GNAP: Refactor scene 40
ad06f53b62 GNAP: Refactor scene 41
6043c7842b GNAP: Refactor scene 42
598fb5d876 GNAP: Refactor scene 43
206a18dbfa GNAP: Refactor scene 44
1cf3c3b93e GNAP: Rename variables of scene 29
5246356d44 GNAP: Refactor scene 45
f58874aa45 GNAP: Refactor scene 46
f3b59a2dfb GNAP: Enforce the use of boolean values for _sceneWaiting
5b0ff520b7 GNAP: Refactor scene 49
aca5984e2b GNAP: Refactor scene 50
7a66d4b356 GNAP: Refactor scenes 51&52
ba0c3f2cc3 GNAP: Refactor scene 53
28d8a8be7c GNAP: Rename and move two fonctions to Scene
441565db4d GNAP: Reduce code duplication in SceneCore
9503f9bdc8 GNAP: Add detection for the russian version
0a7f2fe938 GNAP: Remove debug code
700d82c1c2 GNAP: Fix crash in CutScenes
aa8df847f7 GNAP: Reduce dereferencing in scene group 4, some renaming
71ba82154e GNAP: Group cutscenes in a single scene group file
19d205b3da GNAP: Prepare the merge of scene group 0 (WIP)
ffb93fa214 GNAP: Prepare the merge of scene group 0 (WIP 2)
9fc9de7882 GNAP: Prepare the merge of scene group 0 (WIP 3)
0a1c36a26b GNAP: Prepare the merge of scene group 0 (End)
5381edd40e GNAP: group first scenes, rename intro
12fa081a19 GNAP: Remove debug code
02c8aeae20 GNAP: renaming and grouping of scenes in group 1
4edfe094ea GNAP: renaming and grouping of scenes in group 2
d7bd157fef GNAP: renaming and grouping of scenes in group 3
4120f8795e GNAP: renaming and grouping of scenes in group 4
8a91335bfa GNAP: renaming and grouping of scenes in group Arcade and Group 5
5e950a7acf GNAP: Move enums to header files
e0781ea437 GNAP: Move more enums to header files
25fc9c0a13 GNAP: Janitorial - Remove trailing spaces and tabs
33b27b8db3 GNAP: Fix regression
ce8e3281d4 GNAP: Reduce dereferencing of _gameSys
087492b15f GNAP: Remove useless parameters in gnapCarryGarbageCanTo
f50891f990 GNAP: rework gnapCarryGarbageCanTo
a2d45c70e9 GNAP: For consistancy, use hex values for playSound calls
99580a1b08 GNAP: Remove 3 CHECKMEs
aee3842163 GNAP: Some renaming
2e50019c05 GNAP: Introduce Character class - WIP
45bc40166f GNAP: Use a Character for Platypus (WIP)
dda4931ee9 GNAP: Move _actionStatus to the Character class
579ecdabd1 GNAP: More refactoring related to characters (WIP)
00c544f9f8 GNAP: More refactoring related to characters (WIP)
45f27ea81c GNAP: Even more refactoring related to characters (WIP)
38a83d1770 GNAP: More character refactoring (WIP)
9d2c537beb GNAP: Some more refactoring in Character, some renaming
3209ce8003 GNAP: Fix a small bug in Playtpuss pathfinding
81074f4503 GNAP: use Common::Point for gnapWalkTo
b3bf17a315 GNAP: Use Common::Point with platypusWalkTo
951fab4853 GNAP: Move walkTo and walkStep to Character
8a725082a5 GNAP: Move more functions to PlayerGnap
a508936349 GNAP: Move Gnap action functions to PlayerGnap
33ca09ae12 GNAP: Remove useless redirections, move two more functions
81c5f8651d GNAP: USe Common::Point for getSequenceId
1f7eeb24a0 GNAP: Simplify some checks
fdabbcc16a GNAP: Reduce dereferencing of _gnap
6e9243d125 GNAP: Reduce dereferencing of _plat
b605baef85 GNAP: Reorder functions in grid.cpp
a67a9923a9 GNAP: Refactoring of playBrainPulsating, playIdle and playImpossible
cf32e654a7 GNAP: Refactoring of playMoan1&2, playPullOutDevice and playPullOutDeviceNonWorking
d4053ee11b GNAP: Refactoring of playScratchingHead, playShowCurrItem, playUseDevice
5981ef48da GNAP: Make all relevant destructors virtual
7b1c738f0f GNAP: Fix initialization and out-of-bounds write
3459437d7c GNAP: Fix initialization
b21089f81c GNAP: Rename GetSequence enums
2aaebf0ae9 GNAP: Use enum values for _sceneClickedHotspot in scene 53
f467db5ed2 GNAP: Add music when game is paused
af1cf151de GNAP: Use Common::Rect for hotspots
9c0808237c GNAP: Remove _id from HotSpot structure
55162fb7ca GNAP: Simplify some calls of _hotspotWalkPos
e5f60634a5 GNAP: Fix regression in hotspots
52374bfe7b GNAP: Load TTF from the executable (optional)
85b7da75de GNAP: Explicitely set _scoreLevel to 1 when score greater than 556
4371d2f4d9 GNAP: Fix score display in Monkey arcade game.
bb35d5063b GNAP: Fix broken debug strings
06f3dc2973 GNAP: Fix a couple of unintialized variables
e280c833c7 GNAP: Enforce the use of nullptr in function calls
090c178214 GNAP: Fix another valgrind error
e024a26ccd GNAP: Replace memcpy on overlapping memory area by memmove. Thanks to eriktorbjorn for suggesting it
6358981201 GNAP: USe Common::Point for mouse position, initialize some more variables
4c37381a8e GNAP: Add missing stars in header, change include guard name in gnap.h
4faedcdfcb GNAP: Fix some spacing
0a8e552c6d GNAP: Fix the coding style of a couple of casts
931846182b GNAP: Change pixel format - Courtesy of _sev
3bf35331ab GNAP: Add thumbnails, rewrite partially querySaveMetaInfos.
97ac77b5f1 GNAP: Compute the thumbnail when opening the device so that it doesn't show the large hand in savegames
9a2bc3c572 GNAP: Add several checks on _gameDone in order to quit the game quickly
ba61f90eb6 GNAP: Rework the code of Scene07::run, remove an obsolete todo
8a112ec92d GNAP: Enable a clown sequence which wasn't used in the original due to a bug
20b3d1814a GNAP: Remove some CHECKME's
f734291abb GNAP: Implement delayTicks functions, refactor them to share code
85417c15bb GNAP: Remove obsolete TODOs
72d46655ff GNAP: Remove TODOs, add safeguard checks
a2fb71928b GNAP: Remove some unused variables in resources
7da6d99371 GNAP: Fix transparency
3f2fcec10b GNAP: Fix sprite transparency
3981d8514e GNAP: Remove erroneous comments, simplify a call to blitSprite32
bd4ef7ffb4 GNAP: Rework gfxItem, remove the code related to impossible flag values
bd2008f985 GNAP: Remove some obsolete comments, take better advantage of the possible values of gfxItem._flags (0 and 1)
8a94670516 GNAP: Remove or rephrase a couple of notes
4c6ef29b49 GNAP: Implement setSoundVolume
0873f92ceb GNAP: Remove yet another TODO
13c363f440 GNAP: Remove double smi-columns
94e1e3a8fe GNAP: Use KeyCode value instead of numeric value for Backspace
58fb1563ca GNAP: Map remaining Key codes
58e77d693b GNAP: Remove original debug code
2a2082c1f9 GNAP: Remove a TODO
a586f7701d GNAP: Remove useless in ResourceClass constructor
c9fdd32ebc GNAP: Remove an irrelevant TODO copied from another engine
d2aa9c7ded GNAP: Add a note concerning the original save and load screens
16bc084053 GNAP: Add 2 other double semi columns
1a8093c922 GNAP: After double-checking them, remove two CHECKMEs
f0f42b05ca GNAP: Rename two Facing enums
aeb36d4afc GNAP: Add safeguard checks in PlayerGnap's getWalkStopSequenceId and getWalkFacing
ecdf982eba GNAP: Add a note, remove a checkme
7eeb50e488 GNAP: As suggested by Tsoliman, tag the games as unstable
94c58f9143 GNAP: Add safeguard in setSoundVolume
e14e7992cc GNAP: Fix inventory content when loading from launcher
87de8fc84a Merge pull request #757 from Strangerke/gnap
Commit: d80c7605a0892ae401953da4b889543598292986
https://github.com/scummvm/scummvm/commit/d80c7605a0892ae401953da4b889543598292986
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Initial commit
Changed paths:
A engines/gnap/datarchive.cpp
A engines/gnap/datarchive.h
A engines/gnap/detection.cpp
A engines/gnap/fontdata.h
A engines/gnap/gamesys.cpp
A engines/gnap/gamesys.h
A engines/gnap/gnap.cpp
A engines/gnap/gnap.h
A engines/gnap/grid.cpp
A engines/gnap/menu.cpp
A engines/gnap/module.mk
A engines/gnap/resource.cpp
A engines/gnap/resource.h
A engines/gnap/scenes/scene01.cpp
A engines/gnap/scenes/scene02.cpp
A engines/gnap/scenes/scene03.cpp
A engines/gnap/scenes/scene04.cpp
A engines/gnap/scenes/scene05.cpp
A engines/gnap/scenes/scene06.cpp
A engines/gnap/scenes/scene07.cpp
A engines/gnap/scenes/scene08.cpp
A engines/gnap/scenes/scene09.cpp
A engines/gnap/scenes/scene10.cpp
A engines/gnap/scenes/scene11.cpp
A engines/gnap/scenes/scene12.cpp
A engines/gnap/scenes/scene13.cpp
A engines/gnap/scenes/scene14.cpp
A engines/gnap/scenes/scene15.cpp
A engines/gnap/scenes/scene16.cpp
A engines/gnap/scenes/scene17.cpp
A engines/gnap/scenes/scene18.cpp
A engines/gnap/scenes/scene19.cpp
A engines/gnap/scenes/scene20.cpp
A engines/gnap/scenes/scene21.cpp
A engines/gnap/scenes/scene22.cpp
A engines/gnap/scenes/scene23.cpp
A engines/gnap/scenes/scene24.cpp
A engines/gnap/scenes/scene25.cpp
A engines/gnap/scenes/scene26.cpp
A engines/gnap/scenes/scene27.cpp
A engines/gnap/scenes/scene28.cpp
A engines/gnap/scenes/scene29.cpp
A engines/gnap/scenes/scene30.cpp
A engines/gnap/scenes/scene31.cpp
A engines/gnap/scenes/scene32.cpp
A engines/gnap/scenes/scene33.cpp
A engines/gnap/scenes/scene38.cpp
A engines/gnap/scenes/scene39.cpp
A engines/gnap/scenes/scene40.cpp
A engines/gnap/scenes/scene41.cpp
A engines/gnap/scenes/scene42.cpp
A engines/gnap/scenes/scene43.cpp
A engines/gnap/scenes/scene44.cpp
A engines/gnap/scenes/scene45.cpp
A engines/gnap/scenes/scene46.cpp
A engines/gnap/scenes/scene47.cpp
A engines/gnap/scenes/scene48.cpp
A engines/gnap/scenes/scene49.cpp
A engines/gnap/scenes/scene50.cpp
A engines/gnap/scenes/scene51.cpp
A engines/gnap/scenes/scene52.cpp
A engines/gnap/scenes/scene53.cpp
A engines/gnap/scenes/scene54.cpp
A engines/gnap/scenes/scenecore.cpp
A engines/gnap/sound.cpp
A engines/gnap/sound.h
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
new file mode 100644
index 0000000..d480d31
--- /dev/null
+++ b/engines/gnap/datarchive.cpp
@@ -0,0 +1,121 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "common/dcl.h"
+#include "common/file.h"
+#include "common/stream.h"
+#include "common/substream.h"
+#include "gnap/datarchive.h"
+
+#include "engines/util.h"
+
+namespace Gnap {
+
+// DatArchive
+
+DatArchive::DatArchive(const char *filename) {
+ _fd = new Common::File();
+ if (!_fd->open(filename))
+ error("DatArchive::DatArchive() Could not open %s", filename);
+ _fd->skip(8); // Skip signature
+ _fd->skip(2); // Skip unknown
+ _fd->skip(2); // Skip unknown
+ _entriesCount = _fd->readUint32LE();
+ debug(1, "_entriesCount: %d", _entriesCount);
+ _fd->skip(4); // Skip unknown
+ _entries = new DatEntry[_entriesCount];
+ for (int i = 0; i < _entriesCount; ++i) {
+ _entries[i].ofs = _fd->readUint32LE();
+ _entries[i].outSize1 = _fd->readUint32LE();
+ _entries[i].type = _fd->readUint32LE();
+ _entries[i].outSize2 = _fd->readUint32LE();
+ }
+}
+
+DatArchive::~DatArchive() {
+ _fd->close();
+ delete _fd;
+ delete[] _entries;
+}
+
+byte *DatArchive::load(int index) {
+ _fd->seek(_entries[index].ofs);
+ debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index].outSize2, _entries[index].outSize1);
+ byte *buffer = new byte[_entries[index].outSize1];
+ if (!Common::decompressDCL(_fd, buffer, 0, _entries[index].outSize1))
+ error("DatArchive::load() Error during decompression of entry %d", index);
+ return buffer;
+}
+
+// DatManager
+
+DatManager::DatManager() {
+ for (int i = 0; i < kMaxDatArchives; ++i)
+ _datArchives[i] = 0;
+}
+
+DatManager::~DatManager() {
+ for (int i = 0; i < kMaxDatArchives; ++i)
+ delete _datArchives[i];
+}
+
+void DatManager::open(int index, const char *filename) {
+ close(index);
+ _datArchives[index] = new DatArchive(filename);
+}
+
+void DatManager::close(int index) {
+ delete _datArchives[index];
+ _datArchives[index] = 0;
+}
+
+byte *DatManager::loadResource(int resourceId) {
+ const int datIndex = ridToDatIndex(resourceId);
+ const int entryIndex = ridToEntryIndex(resourceId);
+ return _datArchives[datIndex] ? _datArchives[datIndex]->load(entryIndex) : 0;
+}
+
+uint32 DatManager::getResourceType(int resourceId) {
+ const int datIndex = ridToDatIndex(resourceId);
+ const int entryIndex = ridToEntryIndex(resourceId);
+ return _datArchives[datIndex] ? _datArchives[datIndex]->getEntryType(entryIndex) : 0;
+}
+
+uint32 DatManager::getResourceSize(int resourceId) {
+ const int datIndex = ridToDatIndex(resourceId);
+ const int entryIndex = ridToEntryIndex(resourceId);
+ return _datArchives[datIndex] ? _datArchives[datIndex]->getEntrySize(entryIndex) : 0;
+}
+
+int ridToDatIndex(int resourceId) {
+ return (resourceId & 0xFFFF0000) >> 16;
+}
+
+int ridToEntryIndex(int resourceId) {
+ return resourceId & 0xFFFF;
+}
+
+int makeRid(int datIndex, int entryIndex) {
+ return (datIndex << 16) | entryIndex;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/datarchive.h b/engines/gnap/datarchive.h
new file mode 100644
index 0000000..2fd431b
--- /dev/null
+++ b/engines/gnap/datarchive.h
@@ -0,0 +1,80 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_DATARCHIVE_H
+#define GNAP_DATARCHIVE_H
+
+#include "common/array.h"
+#include "common/events.h"
+#include "common/file.h"
+#include "common/memstream.h"
+#include "common/random.h"
+#include "common/str.h"
+#include "common/substream.h"
+#include "common/system.h"
+#include "engines/engine.h"
+
+namespace Gnap {
+
+struct DatEntry {
+ uint32 ofs;
+ uint32 outSize1;
+ uint32 type;
+ uint32 outSize2;
+};
+
+class DatArchive {
+public:
+ DatArchive(const char *filename);
+ ~DatArchive();
+ byte *load(int index);
+ int getCount() const { return _entriesCount; }
+ uint32 getEntryType(int index) { return _entries[index].type; }
+ uint32 getEntrySize(int index) { return _entries[index].outSize1; }
+protected:
+ Common::File *_fd;
+ int _entriesCount;
+ DatEntry *_entries;
+};
+
+const int kMaxDatArchives = 2;
+
+class DatManager {
+public:
+ DatManager();
+ ~DatManager();
+ void open(int index, const char *filename);
+ void close(int index);
+ byte *loadResource(int resourceId);
+ uint32 getResourceType(int resourceId);
+ uint32 getResourceSize(int resourceId);
+protected:
+ DatArchive *_datArchives[kMaxDatArchives];
+};
+
+int ridToDatIndex(int resourceId);
+int ridToEntryIndex(int resourceId);
+int makeRid(int datIndex, int entryIndex);
+
+} // End of namespace Gnap
+
+#endif // GNAP_DATARCHIVE_H
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
new file mode 100644
index 0000000..8898d90
--- /dev/null
+++ b/engines/gnap/detection.cpp
@@ -0,0 +1,195 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+
+#include "common/config-manager.h"
+#include "engines/advancedDetector.h"
+#include "common/savefile.h"
+#include "common/system.h"
+#include "base/plugins.h"
+#include "graphics/thumbnail.h"
+
+static const PlainGameDescriptor gnapGames[] = {
+ { "gnap", "Gnap" },
+ { 0, 0 }
+};
+
+namespace Gnap {
+
+static const ADGameDescription gameDescriptions[] = {
+ {
+ "gnap", "",
+ {
+ {"stock_n.dat", 0, "46819043d019a2f36b727cc2bdd6980f", 12515823},
+ AD_LISTEND
+ },
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO0()
+ },
+
+ AD_TABLE_END_MARKER
+};
+
+} // End of namespace Gnap
+
+class GnapMetaEngine : public AdvancedMetaEngine {
+public:
+ GnapMetaEngine() : AdvancedMetaEngine(Gnap::gameDescriptions, sizeof(ADGameDescription), gnapGames) {
+ _singleid = "gnap";
+ _maxScanDepth = 3;
+ }
+
+ virtual const char *getName() const {
+ return "Gnap";
+ }
+
+ virtual const char *getOriginalCopyright() const {
+ return "Gnap (C) 1999";
+ }
+
+ virtual bool hasFeature(MetaEngineFeature f) const;
+ virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
+ virtual int getMaximumSaveSlot() const;
+ virtual SaveStateList listSaves(const char *target) const;
+ SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
+ virtual void removeSaveState(const char *target, int slot) const;
+};
+
+bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
+ return
+ false;
+#if 0
+ (f == kSupportsListSaves) ||
+ (f == kSupportsLoadingDuringStartup) ||
+ (f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo) ||
+ (f == kSavesSupportThumbnail) ||
+ (f == kSavesSupportCreationDate);
+#endif
+}
+
+void GnapMetaEngine::removeSaveState(const char *target, int slot) const {
+ Common::String fileName = Common::String::format("%s.%03d", target, slot);
+ g_system->getSavefileManager()->removeSavefile(fileName);
+}
+
+int GnapMetaEngine::getMaximumSaveSlot() const { return 99; }
+
+SaveStateList GnapMetaEngine::listSaves(const char *target) const {
+ Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+ Common::StringArray filenames;
+ Common::String pattern = target;
+ pattern += ".???";
+
+ filenames = saveFileMan->listSavefiles(pattern);
+ sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
+
+ SaveStateList saveList;
+#if 0
+ int slotNum = 0;
+ for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) {
+ // Obtain the last 3 digits of the filename, since they correspond to the save slot
+ slotNum = atoi(filename->c_str() + filename->size() - 3);
+
+ if (slotNum >= 0 && slotNum <= 99) {
+ Common::InSaveFile *file = saveFileMan->openForLoading(*filename);
+ if (file) {
+ int32 version = file->readSint32BE();
+ if (version != GNAP_SAVEGAME_VERSION) {
+ delete file;
+ continue;
+ }
+
+ // read name
+ uint16 nameSize = file->readUint16BE();
+ if (nameSize >= 255) {
+ delete file;
+ continue;
+ }
+ char name[256];
+ file->read(name, nameSize);
+ name[nameSize] = 0;
+
+ saveList.push_back(SaveStateDescriptor(slotNum, name));
+ delete file;
+ }
+ }
+ }
+#endif
+ return saveList;
+}
+
+SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
+#if 0
+ Common::String fileName = Common::String::format("%s.%03d", target, slot);
+ Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
+ if (file) {
+
+ int32 version = file->readSint32BE();
+ if (version != GNAP_SAVEGAME_VERSION) {
+ delete file;
+ return SaveStateDescriptor();
+ }
+
+ uint32 saveNameLength = file->readUint16BE();
+ char saveName[256];
+ file->read(saveName, saveNameLength);
+ saveName[saveNameLength] = 0;
+
+ SaveStateDescriptor desc(slot, saveName);
+
+ Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
+ desc.setThumbnail(thumbnail);
+
+ uint32 saveDate = file->readUint32BE();
+ uint16 saveTime = file->readUint16BE();
+
+ int day = (saveDate >> 24) & 0xFF;
+ int month = (saveDate >> 16) & 0xFF;
+ int year = saveDate & 0xFFFF;
+
+ desc.setSaveDate(year, month, day);
+
+ int hour = (saveTime >> 8) & 0xFF;
+ int minutes = saveTime & 0xFF;
+
+ desc.setSaveTime(hour, minutes);
+
+ delete file;
+ return desc;
+ }
+#endif
+ return SaveStateDescriptor();
+}
+
+bool GnapMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
+ if (desc) {
+ *engine = new Gnap::GnapEngine(syst, desc);
+ }
+ return desc != 0;
+}
+
+#if PLUGIN_ENABLED_DYNAMIC(GNAP)
+ REGISTER_PLUGIN_DYNAMIC(GNAP, PLUGIN_TYPE_ENGINE, GnapMetaEngine);
+#else
+ REGISTER_PLUGIN_STATIC(GNAP, PLUGIN_TYPE_ENGINE, GnapMetaEngine);
+#endif
diff --git a/engines/gnap/fontdata.h b/engines/gnap/fontdata.h
new file mode 100644
index 0000000..9ad0d23
--- /dev/null
+++ b/engines/gnap/fontdata.h
@@ -0,0 +1,851 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_FONTDATA_H
+#define GNAP_FONTDATA_H
+
+namespace Gnap {
+
+struct FONT_CHAR_INFO {
+ const byte width; // width, in bits (or pixels), of the character
+ const uint16 offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
+};
+
+/*
+** Font data for DejaVu Sans 9pt
+*/
+
+/* Character bitmaps for DejaVu Sans 9pt */
+const byte dejaVuSans9ptCharBitmaps[] =
+{
+ /* @0 ' ' (5 pixels wide) */
+ 0x00, 0x00, /* */
+ 0x00, 0x00, /* */
+ 0x00, 0x00, /* */
+ 0x00, 0x00, /* */
+ 0x00, 0x00, /* */
+
+ /* @10 '!' (1 pixels wide) */
+ 0x1B, 0xF0, /* ## ###### */
+
+ /* @12 '"' (3 pixels wide) */
+ 0x00, 0x70, /* ### */
+ 0x00, 0x00, /* */
+ 0x00, 0x70, /* ### */
+
+ /* @18 '#' (8 pixels wide) */
+ 0x04, 0x00, /* # */
+ 0x14, 0x80, /* # # # */
+ 0x0F, 0x80, /* ##### */
+ 0x04, 0xE0, /* # ### */
+ 0x1C, 0x80, /* ### # */
+ 0x07, 0xC0, /* ##### */
+ 0x04, 0xA0, /* # # # */
+ 0x00, 0x80, /* # */
+
+ /* @34 '$' (5 pixels wide) */
+ 0x09, 0xC0, /* # ### */
+ 0x11, 0x20, /* # # # */
+ 0x7F, 0xF0, /* ########### */
+ 0x12, 0x20, /* # # # */
+ 0x0E, 0x40, /* ### # */
+
+ /* @44 '%' (10 pixels wide) */
+ 0x00, 0xE0, /* ### */
+ 0x01, 0x10, /* # # */
+ 0x11, 0x10, /* # # # */
+ 0x0C, 0xE0, /* ## ### */
+ 0x03, 0x00, /* ## */
+ 0x01, 0x80, /* ## */
+ 0x0E, 0x60, /* ### ## */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x00, /* # # */
+ 0x0E, 0x00, /* ### */
+
+ /* @64 '&' (8 pixels wide) */
+ 0x0E, 0x00, /* ### */
+ 0x19, 0xE0, /* ## #### */
+ 0x10, 0x90, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x12, 0x20, /* # # # */
+ 0x0C, 0x00, /* ## */
+ 0x14, 0x00, /* # # */
+ 0x13, 0x00, /* # ## */
+
+ /* @80 ''' (1 pixels wide) */
+ 0x00, 0x70, /* ### */
+
+ /* @82 '(' (3 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x38, 0x38, /* ### ### */
+ 0x20, 0x08, /* # # */
+
+ /* @88 ')' (3 pixels wide) */
+ 0x20, 0x08, /* # # */
+ 0x38, 0x38, /* ### ### */
+ 0x07, 0xC0, /* ##### */
+
+ /* @94 '*' (5 pixels wide) */
+ 0x01, 0x20, /* # # */
+ 0x00, 0xC0, /* ## */
+ 0x03, 0xF0, /* ###### */
+ 0x00, 0xC0, /* ## */
+ 0x01, 0x20, /* # # */
+
+ /* @104 '+' (7 pixels wide) */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x1F, 0xC0, /* ####### */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+
+ /* @118 ',' (1 pixels wide) */
+ 0x38, 0x00, /* ### */
+
+ /* @120 '-' (3 pixels wide) */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+
+ /* @126 '.' (1 pixels wide) */
+ 0x18, 0x00, /* ## */
+
+ /* @128 '/' (4 pixels wide) */
+ 0x30, 0x00, /* ## */
+ 0x0E, 0x00, /* ### */
+ 0x01, 0xC0, /* ### */
+ 0x00, 0x30, /* ## */
+
+ /* @136 '0' (6 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x18, 0x30, /* ## ## */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x18, 0x30, /* ## ## */
+ 0x07, 0xC0, /* ##### */
+
+ /* @148 '1' (5 pixels wide) */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x1F, 0xF0, /* ######### */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+
+ /* @158 '2' (6 pixels wide) */
+ 0x10, 0x20, /* # # */
+ 0x18, 0x10, /* ## # */
+ 0x14, 0x10, /* # # # */
+ 0x12, 0x10, /* # # # */
+ 0x11, 0x30, /* # # ## */
+ 0x10, 0xE0, /* # ### */
+
+ /* @170 '3' (6 pixels wide) */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x0E, 0xE0, /* ### ### */
+
+ /* @182 '4' (6 pixels wide) */
+ 0x06, 0x00, /* ## */
+ 0x05, 0x80, /* # ## */
+ 0x04, 0x40, /* # # */
+ 0x04, 0x30, /* # ## */
+ 0x1F, 0xF0, /* ######### */
+ 0x04, 0x00, /* # */
+
+ /* @194 '5' (6 pixels wide) */
+ 0x08, 0xF0, /* # #### */
+ 0x10, 0x90, /* # # # */
+ 0x10, 0x90, /* # # # */
+ 0x10, 0x90, /* # # # */
+ 0x19, 0x90, /* ## ## # */
+ 0x0F, 0x00, /* #### */
+
+ /* @206 '6' (6 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x19, 0x20, /* ## # # */
+ 0x10, 0x90, /* # # # */
+ 0x10, 0x90, /* # # # */
+ 0x19, 0x90, /* ## ## # */
+ 0x0F, 0x20, /* #### # */
+
+ /* @218 '7' (6 pixels wide) */
+ 0x00, 0x10, /* # */
+ 0x10, 0x10, /* # # */
+ 0x0C, 0x10, /* ## # */
+ 0x03, 0x10, /* ## # */
+ 0x00, 0xD0, /* ## # */
+ 0x00, 0x30, /* ## */
+
+ /* @230 '8' (6 pixels wide) */
+ 0x0E, 0xE0, /* ### ### */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x0E, 0xE0, /* ### ### */
+
+ /* @242 '9' (6 pixels wide) */
+ 0x09, 0xE0, /* # #### */
+ 0x13, 0x30, /* # ## ## */
+ 0x12, 0x10, /* # # # */
+ 0x12, 0x10, /* # # # */
+ 0x09, 0x30, /* # # ## */
+ 0x07, 0xC0, /* ##### */
+
+ /* @254 ':' (1 pixels wide) */
+ 0x19, 0x80, /* ## ## */
+
+ /* @256 ';' (1 pixels wide) */
+ 0x39, 0x80, /* ### ## */
+
+ /* @258 '<' (8 pixels wide) */
+ 0x03, 0x00, /* ## */
+ 0x03, 0x00, /* ## */
+ 0x03, 0x00, /* ## */
+ 0x04, 0x80, /* # # */
+ 0x04, 0x80, /* # # */
+ 0x04, 0x80, /* # # */
+ 0x0C, 0xC0, /* ## ## */
+ 0x08, 0x40, /* # # */
+
+ /* @274 '=' (8 pixels wide) */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+ 0x05, 0x00, /* # # */
+
+ /* @290 '>' (8 pixels wide) */
+ 0x08, 0x40, /* # # */
+ 0x0C, 0xC0, /* ## ## */
+ 0x04, 0x80, /* # # */
+ 0x04, 0x80, /* # # */
+ 0x04, 0x80, /* # # */
+ 0x03, 0x00, /* ## */
+ 0x03, 0x00, /* ## */
+ 0x03, 0x00, /* ## */
+
+ /* @306 '?' (5 pixels wide) */
+ 0x00, 0x20, /* # */
+ 0x00, 0x10, /* # */
+ 0x1B, 0x10, /* ## ## # */
+ 0x00, 0x90, /* # # */
+ 0x00, 0x60, /* ## */
+
+ /* @316 '@' (11 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x10, 0x40, /* # # */
+ 0x20, 0x20, /* # # */
+ 0x47, 0x10, /* # ### # */
+ 0x48, 0x90, /* # # # # */
+ 0x48, 0x90, /* # # # # */
+ 0x48, 0x90, /* # # # # */
+ 0x4F, 0x90, /* # ##### # */
+ 0x28, 0x20, /* # # # */
+ 0x04, 0x60, /* # ## */
+ 0x03, 0x80, /* ### */
+
+ /* @338 'A' (8 pixels wide) */
+ 0x10, 0x00, /* # */
+ 0x0E, 0x00, /* ### */
+ 0x05, 0xC0, /* # ### */
+ 0x04, 0x30, /* # ## */
+ 0x04, 0x30, /* # ## */
+ 0x05, 0xC0, /* # ### */
+ 0x0E, 0x00, /* ### */
+ 0x10, 0x00, /* # */
+
+ /* @354 'B' (6 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x0E, 0xE0, /* ### ### */
+
+ /* @366 'C' (6 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x08, 0x20, /* # # */
+
+ /* @378 'D' (7 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x08, 0x20, /* # # */
+ 0x07, 0xC0, /* ##### */
+
+ /* @392 'E' (6 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+
+ /* @404 'F' (5 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+
+ /* @414 'G' (7 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x0F, 0x20, /* #### # */
+
+ /* @428 'H' (7 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x1F, 0xF0, /* ######### */
+
+ /* @442 'I' (1 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+
+ /* @444 'J' (3 pixels wide) */
+ 0x40, 0x00, /* # */
+ 0x40, 0x00, /* # */
+ 0x3F, 0xF0, /* ########## */
+
+ /* @450 'K' (6 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x01, 0x00, /* # */
+ 0x02, 0x80, /* # # */
+ 0x04, 0x40, /* # # */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+
+ /* @462 'L' (5 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+
+ /* @472 'M' (8 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x00, 0x60, /* ## */
+ 0x01, 0x80, /* ## */
+ 0x06, 0x00, /* ## */
+ 0x06, 0x00, /* ## */
+ 0x01, 0x80, /* ## */
+ 0x00, 0x60, /* ## */
+ 0x1F, 0xF0, /* ######### */
+
+ /* @488 'N' (7 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x00, 0x30, /* ## */
+ 0x00, 0xC0, /* ## */
+ 0x01, 0x00, /* # */
+ 0x06, 0x00, /* ## */
+ 0x18, 0x00, /* ## */
+ 0x1F, 0xF0, /* ######### */
+
+ /* @502 'O' (7 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x08, 0x20, /* # # */
+ 0x07, 0xC0, /* ##### */
+
+ /* @516 'P' (6 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x00, 0xE0, /* ### */
+
+ /* @528 'Q' (7 pixels wide) */
+ 0x07, 0xC0, /* ##### */
+ 0x08, 0x20, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x10, 0x10, /* # # */
+ 0x30, 0x10, /* ## # */
+ 0x48, 0x20, /* # # # */
+ 0x07, 0xC0, /* ##### */
+
+ /* @542 'R' (7 pixels wide) */
+ 0x1F, 0xF0, /* ######### */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x01, 0x10, /* # # */
+ 0x03, 0x10, /* ## # */
+ 0x0C, 0xE0, /* ## ### */
+ 0x10, 0x00, /* # */
+
+ /* @556 'S' (6 pixels wide) */
+ 0x08, 0xE0, /* # ### */
+ 0x11, 0x90, /* # ## # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x0E, 0x20, /* ### # */
+
+ /* @568 'T' (7 pixels wide) */
+ 0x00, 0x10, /* # */
+ 0x00, 0x10, /* # */
+ 0x00, 0x10, /* # */
+ 0x1F, 0xF0, /* ######### */
+ 0x00, 0x10, /* # */
+ 0x00, 0x10, /* # */
+ 0x00, 0x10, /* # */
+
+ /* @582 'U' (7 pixels wide) */
+ 0x0F, 0xF0, /* ######## */
+ 0x18, 0x00, /* ## */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x18, 0x00, /* ## */
+ 0x0F, 0xF0, /* ######## */
+
+ /* @596 'V' (8 pixels wide) */
+ 0x00, 0x30, /* ## */
+ 0x01, 0xC0, /* ### */
+ 0x06, 0x00, /* ## */
+ 0x18, 0x00, /* ## */
+ 0x18, 0x00, /* ## */
+ 0x06, 0x00, /* ## */
+ 0x01, 0xC0, /* ### */
+ 0x00, 0x30, /* ## */
+
+ /* @612 'W' (11 pixels wide) */
+ 0x00, 0x10, /* # */
+ 0x00, 0xE0, /* ### */
+ 0x07, 0x00, /* ### */
+ 0x18, 0x00, /* ## */
+ 0x07, 0x80, /* #### */
+ 0x00, 0x70, /* ### */
+ 0x07, 0x80, /* #### */
+ 0x18, 0x00, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x00, 0xE0, /* ### */
+ 0x00, 0x10, /* # */
+
+ /* @634 'X' (7 pixels wide) */
+ 0x10, 0x10, /* # # */
+ 0x08, 0x30, /* # ## */
+ 0x06, 0xC0, /* ## ## */
+ 0x01, 0x00, /* # */
+ 0x06, 0xC0, /* ## ## */
+ 0x08, 0x30, /* # ## */
+ 0x10, 0x10, /* # # */
+
+ /* @648 'Y' (7 pixels wide) */
+ 0x00, 0x10, /* # */
+ 0x00, 0x60, /* ## */
+ 0x01, 0x80, /* ## */
+ 0x1E, 0x00, /* #### */
+ 0x01, 0x80, /* ## */
+ 0x00, 0x60, /* ## */
+ 0x00, 0x10, /* # */
+
+ /* @662 'Z' (7 pixels wide) */
+ 0x18, 0x10, /* ## # */
+ 0x14, 0x10, /* # # # */
+ 0x12, 0x10, /* # # # */
+ 0x11, 0x10, /* # # # */
+ 0x10, 0x90, /* # # # */
+ 0x10, 0x50, /* # # # */
+ 0x10, 0x30, /* # ## */
+
+ /* @676 '[' (2 pixels wide) */
+ 0x7F, 0xF0, /* ########### */
+ 0x40, 0x10, /* # # */
+
+ /* @680 '\' (4 pixels wide) */
+ 0x00, 0x30, /* ## */
+ 0x01, 0xC0, /* ### */
+ 0x0E, 0x00, /* ### */
+ 0x30, 0x00, /* ## */
+
+ /* @688 ']' (2 pixels wide) */
+ 0x40, 0x10, /* # # */
+ 0x7F, 0xF0, /* ########### */
+
+ /* @692 '^' (6 pixels wide) */
+ 0x00, 0x40, /* # */
+ 0x00, 0x20, /* # */
+ 0x00, 0x10, /* # */
+ 0x00, 0x10, /* # */
+ 0x00, 0x20, /* # */
+ 0x00, 0x40, /* # */
+
+ /* @704 '_' (6 pixels wide) */
+ 0x80, 0x00, /* # */
+ 0x80, 0x00, /* # */
+ 0x80, 0x00, /* # */
+ 0x80, 0x00, /* # */
+ 0x80, 0x00, /* # */
+ 0x80, 0x00, /* # */
+
+ /* @716 '`' (2 pixels wide) */
+ 0x00, 0x08, /* # */
+ 0x00, 0x10, /* # */
+
+ /* @720 'a' (6 pixels wide) */
+ 0x0C, 0x80, /* ## # */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x0A, 0x40, /* # # # */
+ 0x1F, 0x80, /* ###### */
+
+ /* @732 'b' (6 pixels wide) */
+ 0x1F, 0xF8, /* ########## */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x18, 0xC0, /* ## ## */
+ 0x0F, 0x80, /* ##### */
+
+ /* @744 'c' (5 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x08, 0x80, /* # # */
+
+ /* @754 'd' (6 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x18, 0xC0, /* ## ## */
+ 0x1F, 0xF8, /* ########## */
+
+ /* @766 'e' (6 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x0A, 0xC0, /* # # ## */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0xC0, /* # # ## */
+ 0x0B, 0x80, /* # ### */
+
+ /* @778 'f' (4 pixels wide) */
+ 0x00, 0x40, /* # */
+ 0x1F, 0xF0, /* ######### */
+ 0x00, 0x48, /* # # */
+ 0x00, 0x48, /* # # */
+
+ /* @786 'g' (6 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x58, 0xC0, /* # ## ## */
+ 0x90, 0x40, /* # # # */
+ 0x90, 0x40, /* # # # */
+ 0xD8, 0xC0, /* ## ## ## */
+ 0x7F, 0xC0, /* ######### */
+
+ /* @798 'h' (6 pixels wide) */
+ 0x1F, 0xF8, /* ########## */
+ 0x00, 0x80, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x1F, 0x80, /* ###### */
+
+ /* @810 'i' (1 pixels wide) */
+ 0x1F, 0xD0, /* ####### # */
+
+ /* @812 'j' (2 pixels wide) */
+ 0x80, 0x00, /* # */
+ 0xFF, 0xD0, /* ########## # */
+
+ /* @816 'k' (5 pixels wide) */
+ 0x1F, 0xF8, /* ########## */
+ 0x02, 0x00, /* # */
+ 0x05, 0x00, /* # # */
+ 0x08, 0x80, /* # # */
+ 0x10, 0x40, /* # # */
+
+ /* @826 'l' (1 pixels wide) */
+ 0x1F, 0xF8, /* ########## */
+
+ /* @828 'm' (9 pixels wide) */
+ 0x1F, 0xC0, /* ####### */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x1F, 0x80, /* ###### */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x1F, 0x80, /* ###### */
+
+ /* @846 'n' (6 pixels wide) */
+ 0x1F, 0xC0, /* ####### */
+ 0x00, 0x80, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+ 0x1F, 0x80, /* ###### */
+
+ /* @858 'o' (6 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x18, 0xC0, /* ## ## */
+ 0x0F, 0x80, /* ##### */
+
+ /* @870 'p' (6 pixels wide) */
+ 0xFF, 0xC0, /* ########## */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x18, 0xC0, /* ## ## */
+ 0x0F, 0x80, /* ##### */
+
+ /* @882 'q' (6 pixels wide) */
+ 0x0F, 0x80, /* ##### */
+ 0x18, 0xC0, /* ## ## */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+ 0x18, 0xC0, /* ## ## */
+ 0xFF, 0xC0, /* ########## */
+
+ /* @894 'r' (4 pixels wide) */
+ 0x1F, 0xC0, /* ####### */
+ 0x00, 0x80, /* # */
+ 0x00, 0x40, /* # */
+ 0x00, 0x40, /* # */
+
+ /* @902 's' (5 pixels wide) */
+ 0x09, 0x80, /* # ## */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x0C, 0x80, /* ## # */
+
+ /* @912 't' (4 pixels wide) */
+ 0x00, 0x40, /* # */
+ 0x1F, 0xF0, /* ######### */
+ 0x10, 0x40, /* # # */
+ 0x10, 0x40, /* # # */
+
+ /* @920 'u' (6 pixels wide) */
+ 0x0F, 0xC0, /* ###### */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x10, 0x00, /* # */
+ 0x08, 0x00, /* # */
+ 0x1F, 0xC0, /* ####### */
+
+ /* @932 'v' (6 pixels wide) */
+ 0x00, 0xC0, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x18, 0x00, /* ## */
+ 0x18, 0x00, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x00, 0xC0, /* ## */
+
+ /* @944 'w' (9 pixels wide) */
+ 0x00, 0xC0, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x18, 0x00, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x00, 0xC0, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x18, 0x00, /* ## */
+ 0x07, 0x00, /* ### */
+ 0x00, 0xC0, /* ## */
+
+ /* @962 'x' (6 pixels wide) */
+ 0x10, 0x40, /* # # */
+ 0x0D, 0x80, /* ## ## */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x0D, 0x80, /* ## ## */
+ 0x10, 0x40, /* # # */
+
+ /* @974 'y' (6 pixels wide) */
+ 0x80, 0xC0, /* # ## */
+ 0x83, 0x00, /* # ## */
+ 0x4C, 0x00, /* # ## */
+ 0x38, 0x00, /* ### */
+ 0x07, 0x00, /* ### */
+ 0x00, 0xC0, /* ## */
+
+ /* @986 'z' (5 pixels wide) */
+ 0x18, 0x40, /* ## # */
+ 0x14, 0x40, /* # # # */
+ 0x12, 0x40, /* # # # */
+ 0x11, 0x40, /* # # # */
+ 0x10, 0xC0, /* # ## */
+
+ /* @996 '{' (5 pixels wide) */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x7D, 0xF0, /* ##### ##### */
+ 0x40, 0x10, /* # # */
+ 0x40, 0x10, /* # # */
+
+ /* @1006 '|' (1 pixels wide) */
+ 0xFF, 0xF0, /* ############ */
+
+ /* @1008 '}' (5 pixels wide) */
+ 0x40, 0x10, /* # # */
+ 0x40, 0x10, /* # # */
+ 0x7D, 0xF0, /* ##### ##### */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+
+ /* @1018 '~' (8 pixels wide) */
+ 0x02, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x01, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x02, 0x00, /* # */
+ 0x01, 0x00, /* # */
+};
+
+/* Character descriptors for DejaVu Sans 9pt */
+/* { [Char width in bits], [Offset into dejaVuSans9ptCharBitmaps in bytes] } */
+const FONT_CHAR_INFO dejaVuSans9ptCharDescriptors[] =
+{
+ {5, 0}, /* */
+ {1, 10}, /* ! */
+ {3, 12}, /* " */
+ {8, 18}, /* # */
+ {5, 34}, /* $ */
+ {10, 44}, /* % */
+ {8, 64}, /* & */
+ {1, 80}, /* ' */
+ {3, 82}, /* ( */
+ {3, 88}, /* ) */
+ {5, 94}, /* * */
+ {7, 104}, /* + */
+ {1, 118}, /* , */
+ {3, 120}, /* - */
+ {1, 126}, /* . */
+ {4, 128}, /* / */
+ {6, 136}, /* 0 */
+ {5, 148}, /* 1 */
+ {6, 158}, /* 2 */
+ {6, 170}, /* 3 */
+ {6, 182}, /* 4 */
+ {6, 194}, /* 5 */
+ {6, 206}, /* 6 */
+ {6, 218}, /* 7 */
+ {6, 230}, /* 8 */
+ {6, 242}, /* 9 */
+ {1, 254}, /* : */
+ {1, 256}, /* ; */
+ {8, 258}, /* < */
+ {8, 274}, /* = */
+ {8, 290}, /* > */
+ {5, 306}, /* ? */
+ {11, 316}, /* @ */
+ {8, 338}, /* A */
+ {6, 354}, /* B */
+ {6, 366}, /* C */
+ {7, 378}, /* D */
+ {6, 392}, /* E */
+ {5, 404}, /* F */
+ {7, 414}, /* G */
+ {7, 428}, /* H */
+ {1, 442}, /* I */
+ {3, 444}, /* J */
+ {6, 450}, /* K */
+ {5, 462}, /* L */
+ {8, 472}, /* M */
+ {7, 488}, /* N */
+ {7, 502}, /* O */
+ {6, 516}, /* P */
+ {7, 528}, /* Q */
+ {7, 542}, /* R */
+ {6, 556}, /* S */
+ {7, 568}, /* T */
+ {7, 582}, /* U */
+ {8, 596}, /* V */
+ {11, 612}, /* W */
+ {7, 634}, /* X */
+ {7, 648}, /* Y */
+ {7, 662}, /* Z */
+ {2, 676}, /* [ */
+ {4, 680}, /* \ */
+ {2, 688}, /* ] */
+ {6, 692}, /* ^ */
+ {6, 704}, /* _ */
+ {2, 716}, /* ` */
+ {6, 720}, /* a */
+ {6, 732}, /* b */
+ {5, 744}, /* c */
+ {6, 754}, /* d */
+ {6, 766}, /* e */
+ {4, 778}, /* f */
+ {6, 786}, /* g */
+ {6, 798}, /* h */
+ {1, 810}, /* i */
+ {2, 812}, /* j */
+ {5, 816}, /* k */
+ {1, 826}, /* l */
+ {9, 828}, /* m */
+ {6, 846}, /* n */
+ {6, 858}, /* o */
+ {6, 870}, /* p */
+ {6, 882}, /* q */
+ {4, 894}, /* r */
+ {5, 902}, /* s */
+ {4, 912}, /* t */
+ {6, 920}, /* u */
+ {6, 932}, /* v */
+ {9, 944}, /* w */
+ {6, 962}, /* x */
+ {6, 974}, /* y */
+ {5, 986}, /* z */
+ {5, 996}, /* { */
+ {1, 1006}, /* | */
+ {5, 1008}, /* } */
+ {8, 1018}, /* ~ */
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_RESOURCE_H
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
new file mode 100644
index 0000000..d6f8db8
--- /dev/null
+++ b/engines/gnap/gamesys.cpp
@@ -0,0 +1,1303 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gamesys.h"
+#include "gnap/fontdata.h"
+#include "graphics/fontman.h"
+#include "graphics/font.h"
+#include "graphics/decoders/bmp.h"
+
+namespace Gnap {
+
+void GfxItem::testUpdRect(const Common::Rect &updRect) {
+ Common::Rect intersectingRect;
+ if (!updFlag && prevFrame.spriteId != -1 &&
+ updRectsCount < 20 && intersectRect(intersectingRect, prevFrame.rect, updRect))
+ updRects[updRectsCount++] = intersectingRect;
+}
+
+// GameSys
+
+GameSys::GameSys(GnapEngine *vm)
+ : _vm(vm) {
+
+ _newSpriteDrawItemsCount = 0;
+ _removeSequenceItemsCount = 0;
+ _removeSpriteDrawItemsCount = 0;
+ _grabSpriteId = -1;
+ _grabSpriteChanged = false;
+ _reqRemoveSequenceItem = false;
+ _removeSequenceItemSequenceId = -1;
+ _removeSequenceItemValue = 0;
+ _gfxItemsCount = 0;
+ _animationsCount = 0;
+ _backgroundImageValue3 = 0;
+ _backgroundImageValue1 = 0;
+ _backgroundImageValue4 = 0;
+ _backgroundImageValue2 = 0;
+ _backgroundImageError = true;
+ _gameSysClock = 0;
+ _lastUpdateClock = 0;
+ _backgroundSurface = 0;
+ _frontSurface = 0;
+ for (int i = 0; i < kMaxAnimations; ++i) {
+ _animations[i].sequenceId = -1;
+ _animations[i].id = 0;
+ _animations[i].status = 0;
+ }
+ _screenRect = Common::Rect(0, 0, 800, 600);
+}
+
+GameSys::~GameSys() {
+}
+
+void GameSys::insertSequence(int sequenceId, int a2, int sequenceId2, int a4, int flags, int totalDuration, int16 x, int16 y) {
+ debug(0, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, a2, sequenceId2, a4, x, y);
+ Sequence sequence;
+ SequenceResource *sequenceResource = _vm->_sequenceCache->get(sequenceId);
+ sequenceResource->_sequenceId = sequenceId;
+ sequence.sequenceId = sequenceId;
+ sequence.id = a2 != -1 ? a2 : sequenceResource->_field_8;
+ sequence.sequenceId2 = sequenceId2 != (int32)0x80000000 ? sequenceId2 : sequenceResource->_sequenceId2;
+ sequence.id2 = a4 != -1 ? a4 : sequenceResource->_field_10;
+ sequence.flags = flags != -1 ? flags : sequenceResource->_flags;
+ sequence.totalDuration = totalDuration != -1 ? totalDuration : sequenceResource->_totalDuration;
+ sequence.x = (x < 10000 && x > -10000) ? x : sequenceResource->_xOffs;
+ sequence.y = (y < 10000 && y > -10000) ? y : sequenceResource->_yOffs;
+ _fatSequenceItems.push_back(sequence);
+}
+
+void GameSys::insertDirtyRect(const Common::Rect &rect) {
+ _dirtyRects.push_back(rect);
+}
+
+void GameSys::removeSequence(int sequenceId, int a2, int a3) {
+ //WaitForSingleObject(removeSequence2Mutex, INFINITE);
+ if (_removeSequenceItemsCount < kMaxSequenceItems) {
+ _removeSequenceItems[_removeSequenceItemsCount].sequenceId = sequenceId;
+ _removeSequenceItems[_removeSequenceItemsCount].id = a2;
+ _removeSequenceItems[_removeSequenceItemsCount].a3 = a3;
+ ++_removeSequenceItemsCount;
+ //ResetEvent(removeSequenceItemsEvent);
+ //ReleaseMutex(removeSequence2Mutex);
+ //WaitForSingleObject(removeSequenceItemsEvent, INFINITE);
+ }
+}
+
+void GameSys::invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::Surface *surface1, Graphics::Surface *surface2) {
+ //WaitForSingleObject(grabSpriteMutex, INFINITE);
+ _grabSpriteId = id;
+ _grabSpriteRect = rect;
+ _grabSpriteSurface2 = surface2;
+ _grabSpriteSurface1 = surface1;
+ //ResetEvent(grabSpriteEvent);
+ _grabSpriteChanged = true;
+ //ReleaseMutex(grabSpriteMutex);
+ //WaitForSingleObject(grabSpriteEvent, INFINITE);
+}
+
+void GameSys::requestClear2(int a1) {
+ _fatSequenceItems.clear();
+ _seqItems.clear();
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ gfxItem->sequenceId = -1;
+ gfxItem->animation = 0;
+ gfxItem->soundValue = 0;
+ if (a1) {
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ } else {
+ gfxItem->updFlag = false;
+ }
+ }
+ _lastUpdateClock = 0;
+ _gameSysClock = 0;
+}
+
+void GameSys::requestClear1() {
+ _gfxItemsCount = 0;
+ _fatSequenceItems.clear();
+ _seqItems.clear();
+ _lastUpdateClock = 0;
+ _gameSysClock = 0;
+}
+
+void GameSys::requestRemoveSequence(int sequenceId, int a2) {
+ //WaitForSingleObject(removeSequence2Mutex, INFINITE);
+ _reqRemoveSequenceItem = true;
+ _removeSequenceItemSequenceId = sequenceId;
+ _removeSequenceItemValue = a2;
+
+ handleReqRemoveSequenceItem();//CHECKME?
+
+ //ResetEvent(reqClearEvent);
+ //ReleaseMutex(removeSequence2Mutex);
+ //WaitForSingleObject(reqClearEvent, INFINITE);
+}
+
+void GameSys::waitForUpdate() {
+ //ResetEvent(updateEvent);
+ //WaitForSingleObject(updateEvent, INFINITE);
+}
+
+int GameSys::isSequenceActive(int sequenceId, int a2) {
+ for (uint i = 0; i < _seqItems.size(); ++i)
+ if (_seqItems[i].sequenceId == sequenceId && _seqItems[i].id == a2)
+ return true;
+ return false;
+}
+
+void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7) {
+
+ debug(1, "GameSys::setBackgroundSurface() Setting background image");
+
+ _backgroundSurface = surface;
+ if (!_backgroundSurface) {
+ _backgroundImageError = true;
+ return;
+ }
+
+ if (!_frontSurface || _frontSurface->w != surface->w || _frontSurface->h != surface->h) {
+ debug(1, "GameSys::setBackgroundSurface() Creating background working surface");
+ if (_frontSurface)
+ _frontSurface->free();
+ delete _frontSurface;
+ _frontSurface = new Graphics::Surface();
+ _frontSurface->create(surface->w, surface->h, surface->format);
+ }
+
+ memcpy(_frontSurface->getPixels(), surface->getPixels(), surface->pitch * surface->h);
+
+ _vm->_system->copyRectToScreen(_frontSurface->getPixels(), _frontSurface->pitch, 0, 0, _frontSurface->w, _frontSurface->h);
+
+ _backgroundImageError = false;
+ _backgroundImageValue1 = a4;
+ _backgroundImageValue3 = a6;
+ _backgroundImageValue2 = a5;
+ _backgroundImageValue4 = a7;
+ _lastUpdateClock = 0;
+ _gameSysClock = 0;
+
+}
+
+void GameSys::setScaleValues(int a1, int a2, int a3, int a4) {
+ _backgroundImageValue1 = a1;
+ _backgroundImageValue3 = a3;
+ _backgroundImageValue2 = a2;
+ _backgroundImageValue4 = a4;
+}
+
+void GameSys::insertSpriteDrawItem(Graphics::Surface *surface, int x, int y, int id) {
+ if (surface && _newSpriteDrawItemsCount < kMaxSpriteDrawItems) {
+ _newSpriteDrawItems[_newSpriteDrawItemsCount].id = id;
+ _newSpriteDrawItems[_newSpriteDrawItemsCount].rect = Common::Rect(x, y, x + surface->w, y + surface->h);
+ _newSpriteDrawItems[_newSpriteDrawItemsCount].surface = surface;
+ ++_newSpriteDrawItemsCount;
+ }
+}
+
+void GameSys::removeSpriteDrawItem(Graphics::Surface *surface, int a2) {
+ if (surface && _removeSpriteDrawItemsCount < kMaxSpriteDrawItems) {
+ _removeSpriteDrawItems[_removeSpriteDrawItemsCount].id = a2;
+ _removeSpriteDrawItems[_removeSpriteDrawItemsCount].surface = surface;
+ ++_removeSpriteDrawItemsCount;
+ }
+}
+
+void GameSys::drawSpriteToBackground(int x, int y, int resourceId) {
+
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ uint32 *sourcePalette = spriteResource->_palette;
+ byte *sourcePixels = spriteResource->_pixels;
+ int spriteWidth = spriteResource->_width;
+ int spriteHeight = spriteResource->_height;
+ Common::Rect dstRect(0, 0, spriteWidth, spriteHeight);
+ blitSprite32(_backgroundSurface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ _vm->_spriteCache->release(resourceId);
+
+ // Add dirty rect so the modified background is redrawn
+ insertDirtyRect(Common::Rect(x, y, x + spriteWidth, y + spriteHeight));
+}
+
+Graphics::Surface *GameSys::allocSurface(int width, int height) {
+ Graphics::Surface *surface = new Graphics::Surface();
+ surface->create(width, height, _backgroundSurface->format);
+ surface->fillRect(Common::Rect(0, 0, surface->w, surface->h), 0xFFFF00FF);
+ return surface;
+}
+
+Graphics::Surface *GameSys::createSurface(int resourceId) {
+ debug(0, "GameSys::createSurface() resourceId: %08X", resourceId);
+
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ Graphics::Surface *surface = allocSurface(spriteResource->_width, spriteResource->_height);
+ _vm->_spriteCache->release(resourceId);
+
+ drawSpriteToSurface(surface, 0, 0, resourceId);
+
+ return surface;
+}
+
+void GameSys::drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int resourceId) {
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ uint32 *sourcePalette = spriteResource->_palette;
+ byte *sourcePixels = spriteResource->_pixels;
+ Common::Rect dstRect(0, 0, spriteResource->_width, spriteResource->_height);
+ blitSprite32(surface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ _vm->_spriteCache->release(resourceId);
+}
+
+void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text) {
+
+ // NOTE Not that nice but will have to do for now
+
+ bool doDirty = false;
+
+ if (!surface) {
+ surface = _backgroundSurface;
+ doDirty = true;
+ }
+
+ uint32 color = surface->format.RGBToColor(r, g, b);
+
+ for (const char *cp = text; *cp != 0; ++cp) {
+ byte c = *cp;
+ if (c < 32 || c > 127)
+ c = (byte)'_';
+ c -= 32;
+ int w = dejaVuSans9ptCharDescriptors[c].width;
+ const byte *data = dejaVuSans9ptCharBitmaps + dejaVuSans9ptCharDescriptors[c].offset;
+ for (int xc = 0; xc < w; ++xc) {
+ for (int yc = 15; yc >= 0; --yc) {
+ byte *dst = (byte*)surface->getBasePtr(x + xc, y + yc);
+ if (data[1 - (yc >> 3)] & (1 << (yc & 7)))
+ WRITE_LE_UINT32(dst, color);
+ }
+ data += 2;
+ }
+ x += w + 1;
+ }
+
+ if (doDirty) {
+ insertDirtyRect(Common::Rect(x, y, x + getTextWidth(text), y + 16));
+ }
+
+}
+
+int GameSys::getTextWidth(const char *text) {
+ int width = 0;
+ for (const char *cp = text; *cp != 0; ++cp) {
+ byte c = *cp;
+ if (c < 32 || c > 127)
+ c = (byte)'_';
+ c -= 32;
+ width += dejaVuSans9ptCharDescriptors[c].width + 1;
+ }
+ return width;
+}
+
+void GameSys::fillSurface(Graphics::Surface *surface, int x, int y, int width, int height, byte r, byte g, byte b) {
+ Common::Rect rect(x, y, x + width, y + height);
+ if (!surface) {
+ _backgroundSurface->fillRect(rect, _backgroundSurface->format.RGBToColor(r, g, b));
+ insertDirtyRect(rect);
+ } else {
+ surface->fillRect(rect, surface->format.RGBToColor(r, g, b));
+ }
+}
+
+void GameSys::setAnimation(int sequenceId, int id, int animationIndex) {
+ if (animationIndex < kMaxAnimations) {
+ _animations[animationIndex].sequenceId = sequenceId;
+ _animations[animationIndex].id = id;
+ _animations[animationIndex].status = 0;
+ }
+}
+
+int GameSys::getAnimationStatus(int animationIndex) {
+ int result = -1;
+ if (animationIndex < kMaxAnimations)
+ result = _animations[animationIndex].status;
+ return result;
+}
+
+int GameSys::getSpriteWidthById(int resourceId) {
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ const int width = spriteResource->_width;
+ _vm->_spriteCache->release(resourceId);
+ return width;
+}
+
+int GameSys::getSpriteHeightById(int resourceId) {
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ const int height = spriteResource->_height;
+ _vm->_spriteCache->release(resourceId);
+ return height;
+}
+
+Graphics::Surface *GameSys::loadBitmap(int resourceId) {
+ debug("GameSys::loadBitmap() resourceId: %08X", resourceId);
+ if (_vm->_dat->getResourceType(resourceId) != 1)
+ return 0;
+ byte *resourceData = _vm->_dat->loadResource(resourceId);
+ uint32 resourceSize = _vm->_dat->getResourceSize(resourceId);
+ Common::MemoryReadStream stream(resourceData, resourceSize, DisposeAfterUse::NO);
+ Graphics::Surface *bmpSurface;
+ Graphics::BitmapDecoder bmp;
+ if (!bmp.loadStream(stream))
+ error("GameSys::loadBitmap() Could not load bitmap resource %08X", resourceId);
+ bmpSurface = bmp.getSurface()->convertTo(_vm->_system->getScreenFormat());
+ delete[] resourceData;
+ return bmpSurface;
+}
+
+void GameSys::drawBitmap(int resourceId) {
+ Graphics::Surface *bmpSurface = loadBitmap(resourceId);
+ if (!bmpSurface || !_backgroundSurface) {
+ debug("GameSys::drawBitmap() Error loading the bitmap");
+ return;
+ }
+ if (bmpSurface->format != _backgroundSurface->format ||
+ bmpSurface->w != _backgroundSurface->w || bmpSurface->h != _backgroundSurface->h) {
+ debug("GameSys::drawBitmap() Different bitmap properties than current background");
+ } else {
+ byte *src = (byte*)bmpSurface->getPixels();
+ byte *dst = (byte*)_backgroundSurface->getPixels();
+ const int pitch = bmpSurface->pitch;
+ int height = bmpSurface->h;
+ while (height--) {
+ memcpy(dst, src, pitch);
+ src += pitch;
+ dst += pitch;
+ }
+ }
+ bmpSurface->free();
+ delete bmpSurface;
+
+ insertDirtyRect(Common::Rect(0, 0, 800, 600));
+}
+
+Sequence *GameSys::seqFind(int sequenceId, int a2, int *outIndex) {
+ for (uint i = 0; i < _seqItems.size(); ++i)
+ if (_seqItems[i].sequenceId == sequenceId && _seqItems[i].id == a2) {
+ if (outIndex)
+ *outIndex = i;
+ return &_seqItems[i];
+ }
+ return 0;
+}
+
+int GameSys::seqLocateGfx(int sequenceId, int id, int *outGfxIndex) {
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ if (gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
+ if (outGfxIndex)
+ *outGfxIndex = i;
+ return gfxItem->sequenceId;
+ }
+ if (gfxItem->id > id) {
+ if (outGfxIndex)
+ *outGfxIndex = i;
+ return 0;
+ }
+ }
+ if (outGfxIndex)
+ *outGfxIndex = _gfxItemsCount;
+ return 0;
+}
+
+void GameSys::seqInsertGfx(int index, int duration) {
+
+ Sequence *seqItem = &_seqItems[index];
+ SequenceResource *sequenceResource = _vm->_sequenceCache->get(seqItem->sequenceId);
+
+ if (sequenceResource->_animationsCount > 50 - _gfxItemsCount)
+ return;
+
+ int gfxIndex;
+ seqLocateGfx(seqItem->sequenceId, seqItem->id, &gfxIndex);
+
+ if (gfxIndex != _gfxItemsCount)
+ memcpy(&_gfxItems[gfxIndex + sequenceResource->_animationsCount], &_gfxItems[gfxIndex], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
+ _gfxItemsCount += sequenceResource->_animationsCount;
+
+ for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
+ int totalDuration;
+ GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
+ SequenceAnimation *animation = &sequenceResource->_animations[i];
+
+ debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->sequenceId);
+
+ gfxItem->sequenceId = seqItem->sequenceId;
+ gfxItem->id = seqItem->id;
+ gfxItem->animation = animation;
+ gfxItem->currFrameNum = 0;
+ gfxItem->flags = 0;
+ gfxItem->delayTicks = seqItem->totalDuration + animation->field_4;
+ gfxItem->updFlag = false;
+ gfxItem->updRectsCount = 0;
+ gfxItem->prevFrame.duration = 0;
+ gfxItem->prevFrame.spriteId = -1;
+ gfxItem->prevFrame.soundId = -1;
+ gfxItem->prevFrame.unkValue = -1;
+ totalDuration = duration;
+ if ((seqItem->flags & 4) && totalDuration > 0) {
+ gfxItem->prevFrame.duration = 1;
+ if (gfxItem->delayTicks <= totalDuration)
+ gfxItem->delayTicks = 0;
+ else
+ gfxItem->delayTicks -= totalDuration + 1;
+ gfxItem->updFlag = false;
+ } else if (gfxItem->delayTicks <= totalDuration) {
+ int j;
+ totalDuration -= gfxItem->delayTicks;
+ gfxItem->delayTicks = 0;
+ for (j = gfxItem->currFrameNum; j < animation->framesCount && animation->frames[j].duration <= totalDuration; ++j) {
+ if (animation->frames[j].soundId != -1)
+ _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | animation->frames[j].soundId);
+ totalDuration -= animation->frames[j].duration;
+ }
+ if (animation->framesCount > j)
+ gfxItem->currFrame = animation->frames[j++];
+ else
+ gfxItem->currFrame = animation->frames[j - 1];
+ if (gfxItem->currFrame.spriteId != -1 && (seqItem->x != 0 || seqItem->y != 0))
+ gfxItem->currFrame.rect.translate(seqItem->x, seqItem->y);
+ // Update sprite scaling
+ if ((seqItem->flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
+ int v2 = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
+ (_backgroundImageValue4 - _backgroundImageValue2) /
+ (_backgroundImageValue3 - _backgroundImageValue1);
+ gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - v2 * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
+ gfxItem->currFrame.rect.right = v2 * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
+ gfxItem->currFrame.isScaled = 1;
+ }
+ gfxItem->currFrame.duration -= totalDuration;
+ if (gfxItem->currFrame.soundId != -1)
+ _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | gfxItem->currFrame.soundId);
+ gfxItem->currFrameNum = j;
+ gfxItem->updFlag = true;
+ } else {
+ gfxItem->delayTicks -= totalDuration + 1;
+ gfxItem->updFlag = false;
+ }
+ }
+
+ for (int k = 0; k < kMaxAnimations; ++k) {
+ if (_animations[k].sequenceId != -1 && _animations[k].sequenceId == seqItem->sequenceId && _animations[k].id == seqItem->id) {
+ _animations[k].status = 1;
+ break;
+ }
+ }
+
+}
+
+void GameSys::seqRemoveGfx(int sequenceId, int id) {
+ int gfxIndex;
+ if (seqLocateGfx(sequenceId, id, &gfxIndex)) {
+ GfxItem *gfxItem = &_gfxItems[gfxIndex];
+ while (gfxIndex < _gfxItemsCount && gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
+ if (gfxItem->prevFrame.spriteId == -1) {
+ --_gfxItemsCount;
+ if (gfxIndex != _gfxItemsCount)
+ memcpy(&_gfxItems[gfxIndex], &_gfxItems[gfxIndex + 1], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
+ } else {
+ gfxItem->sequenceId = -1;
+ gfxItem->animation = 0;
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ ++gfxIndex;
+ gfxItem = &_gfxItems[gfxIndex];
+ }
+ }
+ }
+}
+
+bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
+ bool found = false;
+ int duration = 0x7FFFFFFF;
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ if (gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
+ found = true;
+ SequenceAnimation *animation = gfxItem->animation;
+ if (animation) {
+ if (gfxItem->currFrameNum < animation->framesCount)
+ return false;
+ if (gfxItem->updFlag) {
+ if (gfxItem->currFrame.duration > 0)
+ return false;
+ if (-gfxItem->currFrame.duration < duration)
+ duration = -gfxItem->currFrame.duration;
+ } else {
+ if (gfxItem->prevFrame.duration > 0)
+ return false;
+ if (-gfxItem->prevFrame.duration < duration)
+ duration = -gfxItem->prevFrame.duration;
+ }
+ }
+ }
+ }
+ if (found)
+ *outDuration = duration;
+ return found;
+}
+
+void GameSys::updateAnimationsStatus(int sequenceId, int a2) {
+
+ Animation *foundAnimation = 0;
+ for (int animationIndex = 0; animationIndex < kMaxAnimations; ++animationIndex) {
+ Animation *animation = &_animations[animationIndex];
+ if (animation->sequenceId != -1 && animation->sequenceId == sequenceId && animation->id == a2) {
+ foundAnimation = animation;
+ break;
+ }
+ }
+
+ if (!foundAnimation)
+ return;
+
+ bool foundSequence = false;
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ SequenceAnimation *animation = gfxItem->animation;
+ if (gfxItem->sequenceId == sequenceId && gfxItem->id == a2 && animation) {
+ foundSequence = true;
+ if (animation->framesCount > gfxItem->currFrameNum ||
+ (gfxItem->updFlag && gfxItem->currFrame.duration > 1) ||
+ gfxItem->prevFrame.duration > 1)
+ foundSequence = false;
+ break;
+ }
+ }
+
+ if (foundSequence) {
+ foundAnimation->sequenceId = -1;
+ foundAnimation->status = 2;
+ }
+
+}
+
+void GameSys::restoreBackgroundRect(const Common::Rect &rect) {
+ Common::Rect clipRect;
+ if (!intersectRect(clipRect, rect, _screenRect))
+ return;
+ byte *src = (byte*)_backgroundSurface->getBasePtr(clipRect.left, clipRect.top);
+ byte *dst = (byte*)_frontSurface->getBasePtr(clipRect.left, clipRect.top);
+ const int bytes = _backgroundSurface->format.bytesPerPixel * clipRect.width();
+ int height = clipRect.height();
+ while (height--) {
+ memcpy(dst, src, bytes);
+ src += _backgroundSurface->pitch;
+ dst += _frontSurface->pitch;
+ }
+}
+
+void GameSys::blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphics::Surface *sourceSurface,
+ Common::Rect &sourceRect, bool transparent) {
+
+ const int sourcePitch = sourceSurface->pitch;
+ byte *dst = (byte*)destSurface->getBasePtr(x, y);
+ byte *src = (byte*)sourceSurface->getBasePtr(sourceRect.left, sourceRect.top);
+ int width = sourceRect.width();
+ int height = sourceRect.height();
+ while (height--) {
+ byte *rsrc = src;
+ byte *rdst = dst;
+ for (int xc = 0; xc < width; ++xc) {
+ uint32 pixel = READ_LE_UINT32(rsrc);
+ if (!transparent || pixel != 0xFFFF00FF)
+ WRITE_LE_UINT32(rdst, pixel);
+ rsrc += 4;
+ rdst += 4;
+ }
+ dst += destSurface->pitch;
+ src += sourcePitch;
+ }
+}
+
+void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *sourcePixels,
+ int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette, bool transparent) {
+
+ const int sourcePitch = (sourceWidth + 3) & 0xFFFFFFFC;
+ byte *dst = (byte*)destSurface->getBasePtr(x, y);
+ byte *src = sourcePixels + sourceRect.left + sourcePitch * sourceRect.top;
+ int width = sourceRect.width();
+ int height = sourceRect.height();
+ while (height--) {
+ byte *rdst = dst;
+ for (int xc = 0; xc < width; ++xc) {
+ byte srcPixel = src[xc];
+ if (!transparent || srcPixel) {
+ uint32 rgb = sourcePalette[srcPixel];
+ rdst[0] = rgb & 0x000000FF;
+ rdst[1] = (rgb & 0x0000FF00) >> 8;
+ rdst[2] = (rgb & 0x00FF0000) >> 16;
+ }
+ rdst += 4;
+ }
+ dst += destSurface->pitch;
+ src += sourcePitch;
+ }
+}
+
+void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &frameRect,
+ Common::Rect &destRect, byte *sourcePixels, int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette) {
+
+ if (frameRect.height() <= 0 || frameRect.width() <= 0)
+ return;
+
+ const int ys = ((sourceRect.bottom - sourceRect.top - 1) << 16) / (frameRect.bottom - frameRect.top - 1);
+ const int xs = ((sourceRect.right - sourceRect.left - 1) << 16) / (frameRect.right - frameRect.left - 1);
+ const int destPitch = destSurface->pitch;
+ const int sourcePitch = (sourceWidth + 3) & 0xFFFFFFFC;
+
+ if (!frameRect.equals(destRect)) {
+ byte *dst = (byte*)destSurface->getBasePtr(destRect.left, destRect.top);
+ byte *src = sourcePixels + sourcePitch * sourceRect.top + sourceRect.left;
+ const int height = destRect.bottom - destRect.top;
+ const int width = destRect.right - destRect.left;
+ int yi = ys * (destRect.top - frameRect.top);
+ byte *hsrc = src + sourcePitch * ((yi + 0x8000) >> 16);
+ for (int i = 0; i < height; ++i) {
+ byte *wdst = dst;
+ int xi = xs * (destRect.left - frameRect.left);
+ byte *wsrc = hsrc + ((xi + 0x8000) >> 16);
+ for (int j = 0; j < width; ++j) {
+ byte srcPixel = *wsrc;
+ if (srcPixel) {
+ uint32 rgb = sourcePalette[srcPixel];
+ wdst[0] = rgb & 0x000000FF;
+ wdst[1] = (rgb & 0x0000FF00) >> 8;
+ wdst[2] = (rgb & 0x00FF0000) >> 16;
+ }
+ wdst += 4;
+ xi += xs;
+ wsrc = hsrc + ((xi + 0x8000) >> 16);
+ }
+ dst += destPitch;
+ yi += ys;
+ hsrc = src + sourcePitch * ((yi + 0x8000) >> 16);
+ }
+ } else {
+ byte *dst = (byte*)destSurface->getBasePtr(frameRect.left, frameRect.top);
+ byte *src = sourcePixels + sourcePitch * sourceRect.top + sourceRect.left;
+ const int height = frameRect.bottom - frameRect.top;
+ const int width = frameRect.right - frameRect.left;
+ byte *hsrc = sourcePixels + sourcePitch * sourceRect.top + sourceRect.left;
+ int yi = 0;
+ for (int i = 0; i < height; ++i) {
+ byte *wdst = dst;
+ byte *wsrc = hsrc;
+ int xi = 0;
+ for (int j = 0; j < width; ++j) {
+ byte srcPixel = *wsrc;
+ if (srcPixel) {
+ uint32 rgb = sourcePalette[srcPixel];
+ wdst[0] = rgb & 0x000000FF;
+ wdst[1] = (rgb & 0x0000FF00) >> 8;
+ wdst[2] = (rgb & 0x00FF0000) >> 16;
+ }
+ wdst += 4;
+ xi += xs;
+ wsrc = hsrc + ((xi + 0x8000) >> 16);
+ }
+ dst += destPitch;
+ yi += ys;
+ hsrc = src + sourcePitch * ((yi + 0x8000) >> 16);
+ }
+ }
+
+}
+
+void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect) {
+ debug(1, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
+ frame.rect.left, frame.rect.top, frame.rect.right, frame.rect.bottom);
+
+ Common::Rect srcRect = subRect ? *subRect : frame.rect;
+ Common::Rect clipRect;
+
+ if (!intersectRect(clipRect, srcRect, _screenRect)) {
+ debug(1, "GameSys::seqDrawStaticFrame() Surface not inside screen");
+ return;
+ }
+
+ const int x = clipRect.left, y = clipRect.top;
+
+ clipRect.translate(-frame.rect.left, -frame.rect.top);
+
+ // TODO Save transparent flag somewhere
+ blitSurface32(_frontSurface, x, y, surface, clipRect, true);
+
+}
+
+void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
+ debug(1, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
+ frame.spriteId, frame.rect.left, frame.rect.top, frame.rect.right, frame.rect.bottom);
+
+ Common::Rect srcRect = subRect ? *subRect : frame.rect;
+ Common::Rect clipRect;
+
+ if (!intersectRect(clipRect, srcRect, _screenRect)) {
+ debug(1, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
+ return;
+ }
+
+ uint32 *sourcePalette = spriteResource->_palette;
+ byte *sourcePixels = spriteResource->_pixels;
+
+ const int x = clipRect.left, y = clipRect.top;
+
+ debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame.isScaled);
+
+ // 32bit sprite drawing
+ if (frame.isScaled) {
+ Common::Rect sourceRect(0, 0, spriteResource->_width, spriteResource->_height);
+ blitSpriteScaled32(_frontSurface, frame.rect, clipRect, sourcePixels, spriteResource->_width, sourceRect, sourcePalette);
+ } else {
+ clipRect.translate(-frame.rect.left, -frame.rect.top);
+ blitSprite32(_frontSurface, x, y, sourcePixels, spriteResource->_width, clipRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ }
+
+}
+
+void GameSys::drawSprites() {
+
+ debug(1, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
+
+ // TODO Split into multiple functions for clarity
+
+ // Restore dirty background and collect rects to be redrawn for all sprites
+ // which aren't marked to be redrawn yet
+ Common::Rect intersectingRect;
+ for (uint i = 0; i < _dirtyRects.size(); ++i) {
+ restoreBackgroundRect(_dirtyRects[i]);
+ for (int j = 0; j < _gfxItemsCount; ++j)
+ _gfxItems[j].testUpdRect(_dirtyRects[i]);
+ }
+
+ for (int k = 0; k < _gfxItemsCount; ++k) {
+ GfxItem *gfxItem2 = &_gfxItems[k];
+
+ if (!gfxItem2->updFlag)
+ continue;
+
+ if (gfxItem2->prevFrame.spriteId != -1) {
+ int transparent = 0;
+ if (gfxItem2->currFrame.spriteId != -1 && !(gfxItem2->flags & 2)) {
+ if (gfxItem2->flags & 1) {
+ transparent = 1;
+ } else {
+ int resourceId = (gfxItem2->sequenceId & 0xFFFF0000) | gfxItem2->currFrame.spriteId;
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ transparent = spriteResource->_transparent;
+ _vm->_spriteCache->release(resourceId);
+ }
+ }
+ if ((gfxItem2->flags & 8) || gfxItem2->currFrame.spriteId == -1 ||
+ (!(gfxItem2->flags & 2) && (!gfxItem2->prevFrame.rect.equals(gfxItem2->currFrame.rect) || !transparent))) {
+ restoreBackgroundRect(gfxItem2->prevFrame.rect);
+ for (int l = 0; l < _gfxItemsCount; ++l)
+ _gfxItems[l].testUpdRect(gfxItem2->prevFrame.rect);
+ }
+ }
+
+ if (gfxItem2->currFrame.spriteId != -1) {
+ int transparent = 0;
+ if (gfxItem2->flags & 1) {
+ transparent = 1;
+ } else if (!(gfxItem2->flags & 2)) {
+ int resourceId = (gfxItem2->sequenceId & 0xFFFF0000) | gfxItem2->currFrame.spriteId;
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ transparent = spriteResource->_transparent;
+ _vm->_spriteCache->release(resourceId);
+ }
+ if (((gfxItem2->flags & 2) && !(gfxItem2->flags & 8)) ||
+ gfxItem2->prevFrame.spriteId == -1 ||
+ !gfxItem2->prevFrame.rect.equals(gfxItem2->currFrame.rect) || transparent) {
+ for (int l = k; l < _gfxItemsCount; ++l)
+ _gfxItems[l].testUpdRect(gfxItem2->currFrame.rect);
+ }
+ }
+
+ }
+
+ for (int m = 0; m < _gfxItemsCount; ++m) {
+ GfxItem *gfxItem5 = &_gfxItems[m];
+
+ debug(0, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
+ m, gfxItem5->updFlag, gfxItem5->currFrame.spriteId, gfxItem5->updRectsCount, gfxItem5->flags, gfxItem5->sequenceId);
+
+ if (gfxItem5->updFlag) {
+ if (gfxItem5->currFrame.spriteId != -1) {
+ if (gfxItem5->flags & 1) {
+ seqDrawStaticFrame(gfxItem5->surface, gfxItem5->currFrame, 0);
+ //debug("seqDrawStaticFrame");
+ } else if (gfxItem5->flags & 2) {
+ // TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
+ } else {
+ int resourceId = (gfxItem5->sequenceId & 0xFFFF0000) | gfxItem5->currFrame.spriteId;
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ seqDrawSpriteFrame(spriteResource, gfxItem5->currFrame, 0);
+ _vm->_spriteCache->release(resourceId);
+ }
+ }
+ } else if (gfxItem5->updRectsCount > 0) {
+ if (gfxItem5->flags & 1) {
+ for (int n = 0; n < gfxItem5->updRectsCount; ++n)
+ seqDrawStaticFrame(gfxItem5->surface, gfxItem5->prevFrame, &gfxItem5->updRects[n]);
+ } else if (gfxItem5->flags & 2) {
+ /* TODO
+ spriteData4 = gfxItem5->prevFrame.spriteId;
+ for (int n = 0; n < gfxItem5->updRectsCount; ++n)
+ seqDrawAviFrame(spriteData4, &gfxItem5->prevFrame, &gfxItem5->updRects[n], gfxItem5->flags & 8);
+ */
+ } else {
+ int resourceId = (gfxItem5->sequenceId & 0xFFFF0000) | gfxItem5->prevFrame.spriteId;
+ SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
+ for (int n = 0; n < gfxItem5->updRectsCount; ++n)
+ seqDrawSpriteFrame(spriteResource, gfxItem5->prevFrame, &gfxItem5->updRects[n]);
+ _vm->_spriteCache->release(resourceId);
+ }
+ }
+ }
+
+ debug(1, "GameSys::drawSprites() OK");
+
+}
+
+void GameSys::updateRect(const Common::Rect &r) {
+ debug(1, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
+ if (r.width() > 0 && r.height() > 0) {
+ byte *pixels = (byte*)_frontSurface->getBasePtr(r.left, r.top);
+ _vm->_system->copyRectToScreen(pixels, _frontSurface->pitch, r.left, r.top,
+ r.width(), r.height());
+ }
+}
+
+void GameSys::updateScreen() {
+
+ debug(1, "GameSys::updateScreen()");
+
+ for (uint i = 0; i < _dirtyRects.size(); ++i)
+ updateRect(_dirtyRects[i]);
+
+ if (_dirtyRects.size() > 0) {
+ _dirtyRects.clear();
+ _lastUpdateClock = 0;
+ _gameSysClock = 0;
+ }
+
+ Common::Rect dstRect, srcRect, rcSrc2;
+
+ for (int j = 0; j < _gfxItemsCount; ++j) {
+
+ GfxItem *gfxItem = &_gfxItems[j];
+
+ if (!gfxItem->updFlag)
+ continue;
+
+ if (gfxItem->prevFrame.spriteId == -1 ||
+ !intersectRect(srcRect, _screenRect, gfxItem->prevFrame.rect)) {
+ if (gfxItem->currFrame.spriteId != -1 && intersectRect(rcSrc2, _screenRect, gfxItem->currFrame.rect))
+ updateRect(rcSrc2);
+ } else if (gfxItem->currFrame.spriteId != -1 &&
+ intersectRect(rcSrc2, _screenRect, gfxItem->currFrame.rect)) {
+ updateRect(srcRect);
+ updateRect(rcSrc2);
+ }
+ gfxItem->prevFrame = gfxItem->currFrame;
+ }
+
+ updateRect(Common::Rect(0, 0, 800, 600));
+
+ debug(1, "GameSys::updateScreen() OK");
+
+}
+
+void GameSys::handleReqRemoveSequenceItem() {
+ if (_reqRemoveSequenceItem) {
+ int gfxIndex2;
+ _reqRemoveSequenceItem = false;
+ if (seqFind(_removeSequenceItemSequenceId, _removeSequenceItemValue, &gfxIndex2))
+ _seqItems.remove_at(gfxIndex2);
+ if (seqLocateGfx(_removeSequenceItemSequenceId, _removeSequenceItemValue, &gfxIndex2)) {
+ int gfxIndex2a = gfxIndex2;
+ for (GfxItem *gfxItem = &_gfxItems[gfxIndex2a];
+ gfxIndex2a < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItemSequenceId && gfxItem->id == _removeSequenceItemValue;
+ gfxItem = &_gfxItems[gfxIndex2a])
+ ++gfxIndex2a;
+ _gfxItemsCount -= gfxIndex2a - gfxIndex2;
+ if (_gfxItemsCount != gfxIndex2)
+ memcpy(&_gfxItems[gfxIndex2], &_gfxItems[gfxIndex2a], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex2));
+ }
+ }
+}
+
+void GameSys::handleReqRemoveSequenceItems() {
+ if (_removeSequenceItemsCount > 0) {
+ for (int i = 0; i < _removeSequenceItemsCount; ++i) {
+ int gfxIndex;
+ if (seqFind(_removeSequenceItems[i].sequenceId, _removeSequenceItems[i].id, &gfxIndex))
+ _seqItems.remove_at(gfxIndex);
+ seqLocateGfx(_removeSequenceItems[i].sequenceId, _removeSequenceItems[i].id, &gfxIndex);
+ for (GfxItem *gfxItem = &_gfxItems[gfxIndex];
+ gfxIndex < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItems[i].sequenceId && gfxItem->id == _removeSequenceItems[i].id;
+ gfxItem = &_gfxItems[gfxIndex]) {
+ gfxItem->sequenceId = -1;
+ gfxItem->animation = 0;
+ gfxItem->soundValue = 0;
+ if (_removeSequenceItems[i].a3) {
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ } else {
+ gfxItem->updFlag = false;
+ }
+ ++gfxIndex;
+ }
+ }
+ _removeSequenceItemsCount = 0;
+ }
+}
+
+void GameSys::handleReqRemoveSpriteDrawItems() {
+ if (_removeSpriteDrawItemsCount > 0) {
+ for (int j = 0; j < _removeSpriteDrawItemsCount; ++j) {
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ if (gfxItem->sequenceId == -1 && !gfxItem->animation && (gfxItem->flags & 1) &&
+ gfxItem->id == _removeSpriteDrawItems[j].id && _removeSpriteDrawItems[j].surface == gfxItem->surface) {
+ gfxItem->flags = 0;
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ }
+ }
+ }
+ _removeSpriteDrawItemsCount = 0;
+ }
+}
+
+void GameSys::fatUpdateFrame() {
+
+ debug(1, "GameSys::fatUpdateFrame()");
+
+ int32 clockDelta = _gameSysClock - _lastUpdateClock;
+ _lastUpdateClock = _gameSysClock;
+
+ debug(1, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
+
+ if (clockDelta <= 0)
+ return;
+
+ bool updFlag = true;
+ int duration, v20, currFrameNum;
+
+ // NOTE Skipped avi code (reqAviStart)
+
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ SequenceAnimation *animation = gfxItem->animation;
+ if ((gfxItem->sequenceId != -1 && animation) || (gfxItem->flags & 2) ||
+ gfxItem->prevFrame.spriteId != -1 || gfxItem->prevFrame.duration > 0) {
+ if (gfxItem->sequenceId == -1 || gfxItem->updFlag) {
+ if ((gfxItem->flags & 2) && !gfxItem->updFlag) {
+ // NOTE Skipped avi code
+ }
+ } else {
+ Sequence *seqItem = seqFind(gfxItem->sequenceId, gfxItem->id, 0);
+ if (!animation) {
+ updFlag = false;
+ gfxItem->sequenceId = -1;
+ gfxItem->animation = 0;
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ } else if (!seqItem) {
+ updFlag = false;
+ gfxItem->animation = 0;
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.spriteId = -1;
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ } else if ((seqItem->flags & 4) && clockDelta > 1) {
+ updFlag = false;
+ if (gfxItem->delayTicks < clockDelta) {
+ duration = clockDelta - gfxItem->delayTicks;
+ gfxItem->delayTicks = 0;
+ if (gfxItem->prevFrame.duration <= duration)
+ gfxItem->prevFrame.duration = 1;
+ else
+ gfxItem->prevFrame.duration -= duration;
+ } else {
+ gfxItem->delayTicks -= clockDelta;
+ }
+ gfxItem->updFlag = false;
+ } else if (gfxItem->delayTicks < clockDelta) {
+ duration = clockDelta - gfxItem->delayTicks;
+ gfxItem->delayTicks = 0;
+ if (gfxItem->prevFrame.duration <= duration) {
+ v20 = 0;
+ if (gfxItem->prevFrame.duration > 0) {
+ duration -= gfxItem->prevFrame.duration;
+ gfxItem->prevFrame.duration = -duration;
+ } else {
+ gfxItem->prevFrame.duration = 0;
+ v20 = 1;
+ }
+ currFrameNum = gfxItem->currFrameNum;
+ if (animation->framesCount > currFrameNum) {
+ updFlag = false;
+ while (animation->framesCount > currFrameNum &&
+ animation->frames[currFrameNum].duration <= duration) {
+ if (animation->frames[currFrameNum].soundId != -1)
+ _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | animation->frames[currFrameNum].soundId);
+ duration -= animation->frames[currFrameNum].duration;
+ ++currFrameNum;
+ }
+ if (animation->framesCount > currFrameNum)
+ gfxItem->currFrame = animation->frames[currFrameNum++];
+ else
+ gfxItem->currFrame = animation->frames[currFrameNum - 1];
+ if (gfxItem->currFrame.spriteId != -1 && (seqItem->x != 0 || seqItem->y != 0))
+ gfxItem->currFrame.rect.translate(seqItem->x, seqItem->y);
+ // Update sprite scaling
+ if ((seqItem->flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
+ int v17 = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
+ (_backgroundImageValue4 - _backgroundImageValue2) /
+ (_backgroundImageValue3 - _backgroundImageValue1);
+ gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - v17 * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
+ gfxItem->currFrame.rect.right = v17 * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
+ gfxItem->currFrame.isScaled = 1;
+ }
+ gfxItem->currFrame.duration -= duration;
+ if (gfxItem->currFrame.soundId != -1)
+ _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | gfxItem->currFrame.soundId);
+ gfxItem->currFrameNum = currFrameNum;
+ gfxItem->updFlag = true;
+ } else if (v20 && gfxItem->prevFrame.spriteId == -1) {
+ --_gfxItemsCount;
+ if (_gfxItemsCount != i)
+ memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
+ --i;
+ } else {
+ gfxItem->updFlag = false;
+ }
+ } else {
+ updFlag = false;
+ gfxItem->prevFrame.duration -= duration;
+ gfxItem->updFlag = false;
+ }
+ } else {
+ updFlag = false;
+ gfxItem->delayTicks -= clockDelta;
+ gfxItem->updFlag = false;
+ }
+ }
+ } else {
+ --_gfxItemsCount;
+ if (_gfxItemsCount != i)
+ memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
+ --i;
+ }
+ }
+
+ if (_newSpriteDrawItemsCount > 0) {
+ debug(0, "_newSpriteDrawItemsCount: %d", _newSpriteDrawItemsCount);
+ for (int k = 0; k < _newSpriteDrawItemsCount; ++k) {
+ if (_gfxItemsCount < 50) {
+ int insertIndex;
+ seqLocateGfx(-1, _newSpriteDrawItems[k].id, &insertIndex);
+ if (_gfxItemsCount != insertIndex)
+ memcpy(&_gfxItems[insertIndex + 1], &_gfxItems[insertIndex], sizeof(GfxItem) * (_gfxItemsCount - insertIndex));
+ ++_gfxItemsCount;
+ GfxItem *gfxItem = &_gfxItems[insertIndex];
+ gfxItem->sequenceId = -1;
+ gfxItem->id = _newSpriteDrawItems[k].id;
+ gfxItem->animation = 0;
+ gfxItem->currFrameNum = 0;
+ gfxItem->flags = 1;
+ gfxItem->delayTicks = 0;
+ gfxItem->updFlag = true;
+ gfxItem->updRectsCount = 0;
+ gfxItem->surface = _newSpriteDrawItems[k].surface;
+ gfxItem->prevFrame.duration = 0;
+ gfxItem->prevFrame.spriteId = -1;
+ gfxItem->prevFrame.soundId = -1;
+ gfxItem->prevFrame.unkValue = -1;
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.isScaled = 0;
+ gfxItem->currFrame.rect = _newSpriteDrawItems[k].rect;
+ gfxItem->currFrame.spriteId = _newSpriteDrawItems[k].surface ? 0xCAFEBABE : -1;// TODO
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ }
+ }
+ _newSpriteDrawItemsCount = 0;
+ }
+
+ if (_grabSpriteChanged) {
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ GfxItem *gfxItem = &_gfxItems[i];
+ if (gfxItem->sequenceId == -1 && !gfxItem->animation && (gfxItem->flags & 1) &&
+ gfxItem->id == _grabSpriteId && gfxItem->surface == _grabSpriteSurface1) {
+ gfxItem->currFrame.duration = 0;
+ gfxItem->currFrame.isScaled = 0;
+ gfxItem->currFrame.rect = _grabSpriteRect;
+ gfxItem->currFrame.spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
+ gfxItem->currFrame.soundId = -1;
+ gfxItem->currFrame.unkValue = -1;
+ gfxItem->updFlag = true;
+ gfxItem->surface = _grabSpriteSurface2;
+ break;
+ }
+ }
+ _grabSpriteChanged = false;
+ }
+
+ // NOTE Skipped avi code (reqAviStart)
+
+ debug(1, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
+
+ for (uint i = 0; i < _fatSequenceItems.size(); ++i) {
+ Sequence *seqItem = &_fatSequenceItems[i];
+ if (((seqItem->flags & 8) || (seqItem->flags & 0x20)) && seqItem->sequenceId2 != -1) {
+ duration = 0;
+ if (((seqItem->flags & 0x20) && seqLocateGfx(seqItem->sequenceId2, seqItem->id2, 0)) ||
+ updateSequenceDuration(seqItem->sequenceId2, seqItem->id2, &duration)) {
+ int index;
+ bool found = false;
+ if (seqItem->sequenceId2 == seqItem->sequenceId && seqItem->id == seqItem->id2 &&
+ seqFind(seqItem->sequenceId, seqItem->id, &index)) {
+ _seqItems[index] = *seqItem;
+ found = true;
+ } else if (_seqItems.size() < 50) {
+ index = _seqItems.size();
+ _seqItems.push_back(*seqItem);
+ found = true;
+ }
+ if (found) {
+ updFlag = false;
+ seqRemoveGfx(seqItem->sequenceId2, seqItem->id2);
+ seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ _fatSequenceItems.remove_at(i);
+ --i;
+ seqInsertGfx(index, duration);
+ }
+ }
+ } else {
+ updFlag = false;
+ if (seqItem->totalDuration < clockDelta) {
+ int index;
+ bool found = false;
+ duration = clockDelta - seqItem->totalDuration;
+ seqItem->totalDuration = 0;
+ if (seqFind(seqItem->sequenceId, seqItem->id, &index)) {
+ _seqItems[index] = *seqItem;
+ found = true;
+ } else if (_seqItems.size() < 50) {
+ index = _seqItems.size();
+ _seqItems.push_back(*seqItem);
+ found = true;
+ }
+ if (found) {
+ seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ _fatSequenceItems.remove_at(i);
+ --i;
+ seqInsertGfx(index, duration - 1);
+ }
+ } else {
+ seqItem->totalDuration -= clockDelta;
+ }
+ }
+ }
+
+ debug(1, "GameSys::fatUpdateFrame() _seqItems.size(): %d", _seqItems.size());
+
+ for (uint i = 0; i < _seqItems.size(); ++i) {
+ Sequence *seqItem = &_seqItems[i];
+ if (seqLocateGfx(seqItem->sequenceId, seqItem->id, 0)) {
+ updateAnimationsStatus(seqItem->sequenceId, seqItem->id);
+ if (seqItem->flags & 2) {
+ int gfxDuration;
+ updFlag = false;
+ if (updateSequenceDuration(seqItem->sequenceId, seqItem->id, &gfxDuration)) {
+ seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ seqInsertGfx(i, gfxDuration);
+ }
+ }
+ } else {
+ _seqItems.remove_at(i);
+ --i;
+ }
+ }
+
+}
+
+void GameSys::fatUpdate() {
+
+ debug(1, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
+
+ for (int i = 0; i < _gfxItemsCount; ++i) {
+ _gfxItems[i].updFlag = false;
+ _gfxItems[i].updRectsCount = 0;
+ }
+
+ handleReqRemoveSequenceItem();
+ handleReqRemoveSequenceItems();
+ handleReqRemoveSpriteDrawItems();
+ // NOTE Skipped avi stuff (reqAviStop)
+
+ fatUpdateFrame();
+
+}
+
+void GameSys::updatePlaySounds() {
+ for (uint i = 0; i < _soundIds.size(); ++i)
+ _vm->playSound(_soundIds[i], false);
+ _soundIds.clear();
+}
+
+bool intersectRect(Common::Rect &intersectingRect, const Common::Rect &r1, const Common::Rect &r2) {
+ if (r1.intersects(r2)) {
+ intersectingRect = r1.findIntersectingRect(r2);
+ return true;
+ } else
+ return false;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
new file mode 100644
index 0000000..5e996bf
--- /dev/null
+++ b/engines/gnap/gamesys.h
@@ -0,0 +1,216 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GAMESYS_H
+#define GNAP_GAMESYS_H
+
+#include "gnap/gnap.h"
+#include "gnap/resource.h"
+#include "common/array.h"
+#include "common/rect.h"
+#include "graphics/surface.h"
+
+namespace Gnap {
+
+const int kMaxSequenceItems = 40;
+const int kMaxSpriteDrawItems = 30;
+const int kMaxSoundIds = 50;
+const int kMaxSeqItems = 50;
+const int kMaxUpdRects = 20;
+const int kMaxGfxItems = 50;
+const int kMaxAnimations = 12;
+
+enum {
+ kSeqNone = 0x00,
+ kSeqScale = 0x01, // Enable scaling
+ kSeqLoop = 0x02, // Loop
+ kSeqUnk = 0x04, // Unknown
+ kSeqSyncWait = 0x08, // Start if other sequence is done
+ kSeqSyncExists = 0x20 // Start if other sequence exists
+};
+
+struct Sequence {
+ int32 sequenceId;
+ int32 id;
+ int32 sequenceId2;
+ int32 id2;
+ uint32 flags;
+ int32 totalDuration;
+ int16 x, y;
+};
+
+struct SpriteDrawItem {
+ int id;
+ Common::Rect rect;
+ Graphics::Surface *surface;
+};
+
+struct RemoveSequenceItem {
+ int sequenceId;
+ int id;
+ int a3;
+};
+
+struct RemoveSpriteDrawItem {
+ int id;
+ Graphics::Surface *surface;
+};
+
+struct GfxItem {
+ int sequenceId;
+ int id;
+ int flags;
+ SequenceAnimation *animation;
+ int soundValue;
+ int field_18;
+ int field_1C;
+ int currFrameNum;
+ int delayTicks;
+ bool updFlag;
+ int updRectsCount;
+ Graphics::Surface *surface;
+ Common::Rect updRects[kMaxUpdRects];
+ SequenceFrame prevFrame;
+ SequenceFrame currFrame;
+ void testUpdRect(const Common::Rect &updRect);
+};
+
+struct Animation {
+ int sequenceId;
+ int id;
+ int status;
+};
+
+class GameSys {
+public:
+ GameSys(GnapEngine *vm);
+ ~GameSys();
+ void insertSequence(int sequenceId, int a2, int sequenceId2, int a4, int flags, int totalDuration, int16 x, int16 y);
+ void insertDirtyRect(const Common::Rect &rect);
+ void removeSequence(int sequenceId, int a2, int a3);
+ void invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::Surface *surface1, Graphics::Surface *surface2);
+ void requestClear2(int a1);
+ void requestClear1();
+ void requestRemoveSequence(int sequenceId, int a2);
+ void waitForUpdate();
+ int isSequenceActive(int sequenceId, int a2);
+ void setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7);
+ void setScaleValues(int a1, int a2, int a3, int a4);
+ void insertSpriteDrawItem(Graphics::Surface *surface, int x, int y, int id);
+ void removeSpriteDrawItem(Graphics::Surface *surface, int a2);
+ void drawSpriteToBackground(int x, int y, int resourceId);
+ Graphics::Surface *allocSurface(int width, int height);
+ Graphics::Surface *createSurface(int resourceId);
+ void drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int resourceId);
+ void drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text);
+ int getTextWidth(const char *text);
+ void fillSurface(Graphics::Surface *surface, int x, int y, int width, int height, byte r, byte g, byte b);
+ void setAnimation(int sequenceId, int id, int animationIndex);
+ int getAnimationStatus(int animationIndex);
+ int getSpriteWidthById(int resourceId);
+ int getSpriteHeightById(int resourceId);
+ Graphics::Surface *loadBitmap(int resourceId);
+ void drawBitmap(int resourceId);
+public:
+ GnapEngine *_vm;
+
+ Common::Array<Common::Rect> _dirtyRects;
+
+ SpriteDrawItem _newSpriteDrawItems[kMaxSpriteDrawItems];
+ int _newSpriteDrawItemsCount;
+
+ bool _spriteDrawItems1Changed;
+
+ RemoveSequenceItem _removeSequenceItems[kMaxSequenceItems];
+ int _removeSequenceItemsCount;
+
+ RemoveSpriteDrawItem _removeSpriteDrawItems[kMaxSpriteDrawItems];
+ int _removeSpriteDrawItemsCount;
+
+ int _grabSpriteId;
+ Common::Rect _grabSpriteRect;
+ bool _grabSpriteChanged;
+ Graphics::Surface *_grabSpriteSurface1, *_grabSpriteSurface2;
+
+ bool _reqRemoveSequenceItem;
+ int _removeSequenceItemSequenceId, _removeSequenceItemValue;
+
+ Common::Array<int> _soundIds;
+
+ ////////////////////////////////////////////////////////////////////////////
+
+ Common::Array<Sequence> _seqItems;
+ Common::Array<Sequence> _fatSequenceItems;
+
+ GfxItem _gfxItems[kMaxGfxItems];
+ int _gfxItemsCount;
+
+ Animation _animations[kMaxAnimations];
+ int _animationsCount;
+
+ int _backgroundImageValue3, _backgroundImageValue1;
+ int _backgroundImageValue4, _backgroundImageValue2;
+ bool _backgroundImageError;
+
+ int32 _gameSysClock, _lastUpdateClock;
+
+ Graphics::Surface *_backgroundSurface;
+ Graphics::Surface *_frontSurface;
+ Common::Rect _screenRect;
+
+ Sequence *seqFind(int sequenceId, int a2, int *outIndex);
+ int seqLocateGfx(int sequenceId, int id, int *outGfxIndex);
+ void seqInsertGfx(int index, int duration);
+ void seqRemoveGfx(int sequenceId, int id);
+ bool updateSequenceDuration(int sequenceId, int id, int *outDuration);
+ void updateAnimationsStatus(int sequenceId, int a2);
+
+ void restoreBackgroundRect(const Common::Rect &rect);
+
+ void blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphics::Surface *sourceSurface,
+ Common::Rect &sourceRect, bool transparent);
+ void blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *sourcePixels,
+ int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette, bool transparent);
+ void blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &frameRect,
+ Common::Rect &destRect, byte *sourcePixels, int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette);
+
+ void seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect);
+ void seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect);
+
+ void drawSprites();
+ void updateRect(const Common::Rect &r);
+ void updateScreen();
+
+ void handleReqRemoveSequenceItem();
+ void handleReqRemoveSequenceItems();
+ void handleReqRemoveSpriteDrawItems();
+ void fatUpdateFrame();
+ void fatUpdate();
+ void updatePlaySounds();
+
+};
+
+bool intersectRect(Common::Rect &intersectingRect, const Common::Rect &r1, const Common::Rect &r2);
+
+} // End of namespace Gnap
+
+#endif // GNAP_GAMESYS_H
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
new file mode 100644
index 0000000..08f5985
--- /dev/null
+++ b/engines/gnap/gnap.cpp
@@ -0,0 +1,2404 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/datarchive.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/sound.h"
+
+#include "common/config-manager.h"
+#include "common/debug-channels.h"
+#include "common/error.h"
+#include "common/fs.h"
+#include "common/timer.h"
+
+#include "engines/util.h"
+
+#include "graphics/cursorman.h"
+
+namespace Gnap {
+
+static const int kCursors[] = {
+ LOOK_CURSOR,
+ GRAB_CURSOR,
+ TALK_CURSOR,
+ PLAT_CURSOR
+};
+
+static const int kDisabledCursors[] = {
+ NOLOOK_CURSOR,
+ NOGRAB_CURSOR,
+ NOTALK_CURSOR,
+ NOPLAT_CURSOR
+};
+
+static const char *kCursorNames[] = {
+ "LOOK_CURSOR",
+ "GRAB_CURSOR",
+ "TALK_CURSOR",
+ "PLAT_CURSOR",
+ "NOLOOK_CURSOR",
+ "NOGRAB_CURSOR",
+ "NOTALK_CURSOR",
+ "NOPLAT_CURSOR",
+ "EXIT_L_CURSOR",
+ "EXIT_R_CURSOR",
+ "EXIT_U_CURSOR",
+ "EXIT_D_CURSOR",
+ "EXIT_NE_CURSOR",
+ "EXIT_NW_CURSOR",
+ "EXIT_SE_CURSOR",
+ "EXIT_SW_CURSOR",
+ "WAIT_CURSOR"
+};
+
+
+static const int kCursorSpriteIds[30] = {
+ 0x005, 0x008, 0x00A, 0x004, 0x009, 0x003,
+ 0x006, 0x007, 0x00D, 0x00F, 0x00B, 0x00C,
+ 0x019, 0x01C, 0x015, 0x014, 0x010, 0x01A,
+ 0x018, 0x013, 0x011, 0x012, 0x01B, 0x016,
+ 0x017, 0x01D, 0x01E, 0x01F, 0x76A, 0x76B
+};
+
+static const char *kSceneNames[] = {
+ "open", "pigpn", "truck", "creek", "mafrm", "frbrn", "inbrn", "crash",
+ "porch", "barbk", "kitch", "bar", "juke", "wash", "john", "jkbox",
+ "brawl", "stret", "frtoy", "intoy", "frgro", "park", "cash", "ingro",
+ "frcir", "booth", "circ", "outcl", "incln", "monk", "elcir", "beer",
+ "pig2", "trk2", "creek", "frbrn", "inbrn", "mafrm", "infrm", "efair",
+ "fair", "souv", "chick", "ship", "kiss", "disco", "boot", "can",
+ "can2", "drive", "tung", "puss", "space", "phone", "can3"
+};
+
+GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
+ Engine(syst), _gameDescription(gd) {
+
+ _random = new Common::RandomSource("gnap");
+
+ Engine::syncSoundSettings();
+
+}
+
+GnapEngine::~GnapEngine() {
+
+ delete _random;
+
+}
+
+Common::Error GnapEngine::run() {
+ // Initialize the graphics mode to ARGB8888
+ Graphics::PixelFormat format = Graphics::PixelFormat(4, 8, 8, 8, 8, 16, 8, 0, 24);
+ initGraphics(800, 600, true, &format);
+
+ // We do not support color conversion yet
+ if (_system->getScreenFormat() != format)
+ return Common::kUnsupportedColorMode;
+
+ _lastUpdateClock = 0;
+
+ // >>>>> Variable initialization
+ _cursorIndex = -1;
+ _verbCursor = 1;
+ invClear();
+ clearFlags();
+ _grabCursorSprite = 0;
+ _newGrabCursorSpriteIndex = -1;
+ _backgroundSurface = 0;
+ _isStockDatLoaded = false;
+ _gameDone = false;
+ _isPaused = false;
+ _pauseSprite = 0;
+
+ ////////////////////////////////////////////////////////////////////////////
+
+ _exe = new Common::PEResources();
+ if (!_exe->loadFromEXE("ufos.exe"))
+ error("Could not load ufos.exe");
+
+ _dat = new DatManager();
+ _spriteCache = new SpriteCache(_dat);
+ _soundCache = new SoundCache(_dat);
+ _sequenceCache = new SequenceCache(_dat);
+ _gameSys = new GameSys(this);
+ _soundMan = new SoundMan(this);
+
+ _menuBackgroundSurface = 0;
+
+ initGlobalSceneVars();
+
+#if 1
+
+ mainLoop();
+
+#else
+
+ Graphics::Surface *testBack = new Graphics::Surface();
+ testBack->create(800, 600, _system->getScreenFormat());
+ //testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
+ testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
+
+ _currentSceneNum = 26;
+
+ Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
+ _dat->open(0, datFilename.c_str());
+
+ _gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
+
+ _gameSys->insertSequence(0x5b, 100, -1, -1, 0, 0, 0, 0);
+
+ CursorMan.showMouse(true);
+
+ while (!shouldQuit()) {
+ Common::Event event;
+
+ while (_eventMan->pollEvent(event)) {
+ switch (event.type) {
+ case Common::EVENT_KEYDOWN:
+ break;
+ case Common::EVENT_LBUTTONUP:
+ case Common::EVENT_LBUTTONDOWN:
+ case Common::EVENT_RBUTTONUP:
+ case Common::EVENT_RBUTTONDOWN:
+ case Common::EVENT_MOUSEMOVE:
+ break;
+ case Common::EVENT_QUIT:
+ quitGame();
+ break;
+ default:
+ break;
+ }
+ }
+
+ _gameSys->fatUpdate();
+ _gameSys->drawSprites();
+ _gameSys->updateScreen();
+ _gameSys->_gameSysClock++;
+ updateTimers();
+
+ _system->updateScreen();
+ _system->delayMillis(100);
+
+ }
+
+ _dat->close(0);
+
+ testBack->free();
+ delete testBack;
+
+ return Common::kNoError;
+
+#endif
+
+ delete _soundMan;
+ delete _gameSys;
+ delete _sequenceCache;
+ delete _soundCache;
+ delete _spriteCache;
+ delete _dat;
+
+ delete _exe;
+
+ debug("run() done");
+
+ return Common::kNoError;
+}
+
+bool GnapEngine::hasFeature(EngineFeature f) const {
+ return
+ false;
+}
+
+void GnapEngine::updateEvents() {
+ Common::Event event;
+
+ while (_eventMan->pollEvent(event)) {
+ switch (event.type) {
+ case Common::EVENT_KEYDOWN:
+ _keyPressState[event.kbd.keycode] = 1;
+ _keyDownState[event.kbd.keycode] = 1;
+ break;
+ case Common::EVENT_KEYUP:
+ _keyDownState[event.kbd.keycode] = 0;
+ break;
+ case Common::EVENT_MOUSEMOVE:
+ _mouseX = event.mouse.x;
+ _mouseY = event.mouse.y;
+ break;
+ case Common::EVENT_LBUTTONUP:
+ _mouseButtonState.left = false;
+ break;
+ case Common::EVENT_LBUTTONDOWN:
+ _leftClickMouseX = event.mouse.x;
+ _leftClickMouseY = event.mouse.y;
+ _mouseButtonState.left = true;
+ _mouseClickState.left = true;
+ break;
+ case Common::EVENT_RBUTTONUP:
+ _mouseButtonState.right = false;
+ break;
+ case Common::EVENT_RBUTTONDOWN:
+ _mouseButtonState.right = true;
+ _mouseClickState.right = true;
+ break;
+ case Common::EVENT_QUIT:
+ quitGame();
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void GnapEngine::gameUpdateTick() {
+ updateEvents();
+
+ // TODO Check _gameDone in the various game loops
+ if (shouldQuit()) {
+ _gameDone = true;
+ _sceneDone = true;
+ }
+
+ // TODO Improve this (variable frame delay to keep ~15fps)
+ int currClock = _system->getMillis();
+ if (currClock >= _lastUpdateClock + 66) {
+ _gameSys->fatUpdate();
+ _gameSys->drawSprites();
+ _gameSys->updateScreen();
+ _gameSys->updatePlaySounds();
+ _gameSys->_gameSysClock++;
+ updateTimers();
+ _lastUpdateClock = currClock;
+ }
+
+ _soundMan->update();
+ _system->updateScreen();
+ _system->delayMillis(5);
+
+}
+
+void GnapEngine::saveTimers() {
+ for (int i = 0; i < kMaxTimers; ++i )
+ _savedTimers[i] = _timers[i];
+}
+
+void GnapEngine::restoreTimers() {
+ for (int i = 0; i < kMaxTimers; ++i )
+ _timers[i] = _savedTimers[i];
+}
+
+void GnapEngine::pauseGame() {
+ if (!_isPaused) {
+ saveTimers();
+ hideCursor();
+ setGrabCursorSprite(-1);
+ _pauseSprite = _gameSys->createSurface(0x1076C);
+ _gameSys->insertSpriteDrawItem(_pauseSprite, (800 - _pauseSprite->w) / 2, (600 - _pauseSprite->h) / 2, 356);
+ _lastUpdateClock = 0;
+ gameUpdateTick();
+ // TODO playMidi("pause.mid");
+ _isPaused = true;
+ }
+}
+
+void GnapEngine::resumeGame() {
+ if (_isPaused) {
+ restoreTimers();
+ _gameSys->removeSpriteDrawItem(_pauseSprite, 356);
+ _lastUpdateClock = 0;
+ gameUpdateTick();
+ deleteSurface(&_pauseSprite);
+ // TODO stopMidi();
+ _isPaused = false;
+ clearAllKeyStatus1();
+ _mouseClickState.left = false;
+ _mouseClickState.right = false;
+ showCursor();
+ _gameSys->_gameSysClock = 0;
+ _gameSys->_lastUpdateClock = 0;
+ }
+}
+
+void GnapEngine::updatePause() {
+ while (_isPaused) {
+ gameUpdateTick();
+ if (isKeyStatus1(Common::KEYCODE_p)) {
+ clearKeyStatus1(Common::KEYCODE_p);
+ resumeGame();
+ }
+ //_system->delayMillis(100);
+ }
+}
+
+int GnapEngine::getRandom(int max) {
+ return _random->getRandomNumber(max - 1);
+}
+
+int GnapEngine::readSavegameDescription(int savegameNum, Common::String &description) {
+ description = Common::String::format("Savegame %d", savegameNum);
+ return 0;
+}
+
+int GnapEngine::loadSavegame(int savegameNum) {
+ return 1;
+}
+
+void GnapEngine::delayTicks(int a1) {
+ // TODO
+ gameUpdateTick();
+}
+
+void GnapEngine::delayTicksCursor(int a1) {
+ // TODO
+ gameUpdateTick();
+}
+
+void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags,
+ int16 walkX, int16 walkY) {
+ _hotspots[index].x1 = x1;
+ _hotspots[index].y1 = y1;
+ _hotspots[index].x2 = x2;
+ _hotspots[index].y2 = y2;
+ _hotspots[index].flags = flags;
+ _hotspots[index].id = index;
+ _hotspotsWalkPos[index].x = walkX;
+ _hotspotsWalkPos[index].y = walkY;
+}
+
+int GnapEngine::getHotspotIndexAtPos(int16 x, int16 y) {
+ for (int i = 0; i < _hotspotsCount; ++i)
+ if (!_hotspots[i].isFlag(SF_DISABLED) && _hotspots[i].isPointInside(x, y))
+ return i;
+ return -1;
+}
+
+void GnapEngine::updateCursorByHotspot() {
+ if (!_isWaiting) {
+ int hotspotIndex = getHotspotIndexAtPos(_mouseX, _mouseY);
+
+#if 1
+ // NOTE This causes some display glitches so don't worry
+ char t[256];
+ sprintf(t, "hotspot = %d", hotspotIndex);
+ _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
+ _gameSys->drawTextToSurface(0, 10, 10, 255, 255, 255, t);
+#endif
+
+ if (hotspotIndex < 0)
+ setCursor(kDisabledCursors[_verbCursor]);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_L_CURSOR)
+ setCursor(EXIT_L_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_R_CURSOR)
+ setCursor(EXIT_R_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_U_CURSOR)
+ setCursor(EXIT_U_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_D_CURSOR)
+ setCursor(EXIT_D_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_NE_CURSOR)
+ setCursor(EXIT_NE_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_NW_CURSOR)
+ setCursor(EXIT_NW_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_SE_CURSOR)
+ setCursor(EXIT_SE_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & SF_EXIT_SW_CURSOR)
+ setCursor(EXIT_SW_CURSOR);
+ else if (_hotspots[hotspotIndex].flags & (1 << _verbCursor))
+ setCursor(kCursors[_verbCursor]);
+ else
+ setCursor(kDisabledCursors[_verbCursor]);
+ }
+ // Update platypus hotspot
+ _hotspots[0].x1 = _gridMinX + 75 * _platX - 30;
+ _hotspots[0].y1 = _gridMinY + 48 * _platY - 100;
+ _hotspots[0].x2 = _gridMinX + 75 * _platX + 30;
+ _hotspots[0].y2 = _gridMinY + 48 * _platY;
+}
+
+int GnapEngine::getClickedHotspotId() {
+ int result = -1;
+ if (_isWaiting)
+ _mouseClickState.left = false;
+ else if (_mouseClickState.left) {
+ int hotspotIndex = getHotspotIndexAtPos(_leftClickMouseX, _leftClickMouseY);
+ if (hotspotIndex >= 0) {
+ _mouseClickState.left = false;
+ _timers[3] = 300;
+ result = _hotspots[hotspotIndex].id;
+ }
+ }
+ return result;
+}
+
+int GnapEngine::getInventoryItemSpriteNum(int index) {
+ return kCursorSpriteIds[index];
+}
+
+void GnapEngine::updateMouseCursor() {
+ if (_mouseClickState.right) {
+ // Switch through the verb cursors
+ _mouseClickState.right = false;
+ _timers[3] = 300;
+ _verbCursor = (_verbCursor + 1) % 4;
+ if (!isFlag(0) && _verbCursor == PLAT_CURSOR && _cursorValue == 1)
+ _verbCursor = (_verbCursor + 1) % 4;
+ if (!_isWaiting)
+ setCursor(kDisabledCursors[_verbCursor]);
+ setGrabCursorSprite(-1);
+ }
+ if (_isWaiting && ((_gnapActionStatus < 0 && _beaverActionStatus < 0) || _sceneWaiting)) {
+ setCursor(kDisabledCursors[_verbCursor]);
+ _isWaiting = false;
+ } else if (!_isWaiting && (_gnapActionStatus >= 0 || _beaverActionStatus >= 0) && !_sceneWaiting) {
+ setCursor(WAIT_CURSOR);
+ _isWaiting = true;
+ }
+}
+
+void GnapEngine::setVerbCursor(int verbCursor) {
+ _verbCursor = verbCursor;
+ if (!_isWaiting)
+ setCursor(kDisabledCursors[_verbCursor]);
+}
+
+void GnapEngine::setCursor(int cursorIndex) {
+ if (_cursorIndex != cursorIndex) {
+ const char *cursorName = kCursorNames[cursorIndex];
+ Graphics::WinCursorGroup *cursorGroup = Graphics::WinCursorGroup::createCursorGroup(*_exe, Common::WinResourceID(cursorName));
+ if (cursorGroup) {
+ Graphics::Cursor *cursor = cursorGroup->cursors[0].cursor;
+ CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(),
+ cursor->getHotspotX(), cursor->getHotspotY(), cursor->getKeyColor());
+ CursorMan.replaceCursorPalette(cursor->getPalette(), 0, 256);
+ delete cursorGroup;
+ }
+ _cursorIndex = cursorIndex;
+ }
+}
+
+void GnapEngine::showCursor() {
+ CursorMan.showMouse(true);
+}
+
+void GnapEngine::hideCursor() {
+ CursorMan.showMouse(false);
+}
+
+void GnapEngine::setGrabCursorSprite(int index) {
+ freeGrabCursorSprite();
+ if (index >= 0) {
+ createGrabCursorSprite(makeRid(1, kCursorSpriteIds[index]));
+ setVerbCursor(GRAB_CURSOR);
+ }
+ _grabCursorSpriteIndex = index;
+}
+
+void GnapEngine::createGrabCursorSprite(int spriteId) {
+ _grabCursorSprite = _gameSys->createSurface(spriteId);
+ _gameSys->insertSpriteDrawItem(_grabCursorSprite,
+ _mouseX - (_grabCursorSprite->w / 2),
+ _mouseY - (_grabCursorSprite->h / 2),
+ 300);
+ delayTicks(5);
+}
+
+void GnapEngine::freeGrabCursorSprite() {
+ if (_grabCursorSprite) {
+ _gameSys->removeSpriteDrawItem(_grabCursorSprite, 300);
+ _gameSys->removeSpriteDrawItem(_grabCursorSprite, 301);
+ delayTicks(5);
+ deleteSurface(&_grabCursorSprite);
+ }
+}
+
+void GnapEngine::updateGrabCursorSprite(int x, int y) {
+ if (_grabCursorSprite) {
+ int newGrabCursorX = _mouseX - (_grabCursorSprite->w / 2) - x;
+ int newGrabCursorY = _mouseY - (_grabCursorSprite->h / 2) - y;
+ if (_currGrabCursorX != newGrabCursorX || _currGrabCursorY != newGrabCursorY) {
+ _currGrabCursorX = newGrabCursorX;
+ _currGrabCursorY = newGrabCursorY;
+ Common::Rect rect(newGrabCursorX, newGrabCursorY,
+ newGrabCursorX + _grabCursorSprite->w, newGrabCursorY + _grabCursorSprite->h);
+ _gameSys->invalidateGrabCursorSprite(300, rect, _grabCursorSprite, _grabCursorSprite);
+ }
+ }
+}
+
+void GnapEngine::invClear() {
+ _inventory = 0;
+}
+
+void GnapEngine::invAdd(int itemId) {
+ _inventory |= (1 << itemId);
+}
+
+void GnapEngine::invRemove(int itemId) {
+ _inventory &= ~(1 << itemId);
+}
+
+bool GnapEngine::invHas(int itemId) {
+ return (_inventory & (1 << itemId)) != 0;
+}
+
+void GnapEngine::clearFlags() {
+ _gameFlags = 0;
+}
+
+void GnapEngine::setFlag(int num) {
+ _gameFlags |= (1 << num);
+}
+
+void GnapEngine::clearFlag(int num) {
+ _gameFlags &= ~(1 << num);
+}
+
+bool GnapEngine::isFlag(int num) {
+ return (_gameFlags & (1 << num)) != 0;
+}
+
+Graphics::Surface *GnapEngine::addFullScreenSprite(int resourceId, int id) {
+ _fullScreenSpriteId = id;
+ _fullScreenSprite = _gameSys->createSurface(resourceId);
+ _gameSys->insertSpriteDrawItem(_fullScreenSprite, 0, 0, id);
+ return _fullScreenSprite;
+}
+
+void GnapEngine::removeFullScreenSprite() {
+ _gameSys->removeSpriteDrawItem(_fullScreenSprite, _fullScreenSpriteId);
+ deleteSurface(&_fullScreenSprite);
+}
+
+void GnapEngine::showFullScreenSprite(int resourceId) {
+ hideCursor();
+ setGrabCursorSprite(-1);
+ addFullScreenSprite(resourceId, 256);
+ while (!_mouseClickState.left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
+ !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29)) {
+ gameUpdateTick();
+ }
+ _mouseClickState.left = false;
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(29);
+ clearKeyStatus1(Common::KEYCODE_SPACE);
+ removeFullScreenSprite();
+ showCursor();
+}
+
+void GnapEngine::queueInsertDeviceIcon() {
+ _gameSys->insertSequence(0x10849, 20, 0, 0, kSeqNone, 0, _deviceX1, _deviceY1);
+}
+
+void GnapEngine::insertDeviceIconActive() {
+ _gameSys->insertSequence(0x1084A, 21, 0, 0, kSeqNone, 0, _deviceX1, _deviceY1);
+}
+
+void GnapEngine::removeDeviceIconActive() {
+ _gameSys->removeSequence(0x1084A, 21, 1);
+}
+
+void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int y2) {
+ _deviceX1 = x1;
+ _deviceX2 = x2;
+ _deviceY1 = y1;
+ _deviceY2 = y2;
+ if (x1 == -1)
+ _deviceX1 = 730;
+ if (x2 == -1)
+ _deviceX2 = 780;
+ if (y1 == -1)
+ _deviceY1 = 14;
+ if (y2 == -1)
+ _deviceY2 = 79;
+ _hotspots[hotspotIndex].x1 = _deviceX1;
+ _hotspots[hotspotIndex].y1 = _deviceY1;
+ _hotspots[hotspotIndex].x2 = _deviceX2;
+ _hotspots[hotspotIndex].y2 = _deviceY2;
+ _hotspots[hotspotIndex].flags = SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[hotspotIndex].id = hotspotIndex;
+}
+
+int GnapEngine::getSequenceTotalDuration(int resourceId) {
+ SequenceResource *sequenceResource = _sequenceCache->get(resourceId);
+ int maxValue = 0;
+ for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
+ SequenceAnimation *animation = &sequenceResource->_animations[i];
+ if (animation->field_4 + animation->field_A > maxValue)
+ maxValue = animation->field_4 + animation->field_A;
+ }
+ int totalDuration = maxValue + sequenceResource->_totalDuration;
+ _sequenceCache->release(resourceId);
+ return totalDuration;
+}
+
+bool GnapEngine::isSoundPlaying(int resourceId) {
+ return _soundMan->isSoundPlaying(resourceId);
+}
+
+void GnapEngine::playSound(int resourceId, bool looping) {
+ debug(0, "playSound(%08X, %d)", resourceId, looping);
+ _soundMan->playSound(resourceId, looping);
+}
+
+void GnapEngine::stopSound(int resourceId) {
+ _soundMan->stopSound(resourceId);
+}
+
+void GnapEngine::setSoundVolume(int resourceId, int volume) {
+ _soundMan->setSoundVolume(resourceId, volume);
+}
+
+void GnapEngine::updateTimers() {
+ for (int i = 0; i < kMaxTimers; ++i)
+ if (_timers[i] > 0)
+ --_timers[i];
+}
+
+void GnapEngine::initGameFlags(int num) {
+ invClear();
+ invAdd(kItemMagazine);
+ switch (num) {
+ case 1:
+ setFlag(26);
+ break;
+ case 2:
+ clearFlags();
+ break;
+ case 3:
+ invAdd(kItemDiceQuarterHole);
+ clearFlags();
+ break;
+ case 4:
+ invAdd(kItemDiceQuarterHole);
+ invAdd(kItemHorn);
+ invAdd(kItemLightbulb);
+ clearFlags();
+ setFlag(0);
+ setFlag(1);
+ setFlag(2);
+ setFlag(3);
+ setFlag(4);
+ setFlag(5);
+ setFlag(6);
+ setFlag(7);
+ break;
+ }
+
+ //DEBUG!
+// setFlag(0); // Enable platypus
+ setFlag(25);
+ invClear();
+ invAdd(kItemMagazine);
+#if 0
+ invAdd(kItemDisguise);
+#endif
+#if 1
+ //invAdd(kItemGas);
+ invAdd(kItemJoint);
+ //invAdd(kItemKeys);
+ invAdd(kItemWrench);
+ //invAdd(kItemTongs);
+ invAdd(kItemDiceQuarterHole);
+ //invAdd(kItemPill);
+ invAdd(kItemBucketWithBeer);
+ invAdd(kItemChickenBucket);
+ invAdd(kItemGum);
+ invAdd(kItemPicture);
+#endif
+}
+
+void GnapEngine::loadStockDat() {
+ if (!_isStockDatLoaded) {
+ _isStockDatLoaded = true;
+ _dat->open(1, "stock_n.dat");
+ //createMenuSprite();
+ // NOTE Skipped preloading of data
+ }
+}
+
+void GnapEngine::mainLoop() {
+
+ _newCursorValue = 1;
+ _cursorValue = -1;
+ _newSceneNum = 0;
+ _currentSceneNum = 55;
+ _prevSceneNum = 55;
+ invClear();
+ clearFlags();
+ _grabCursorSpriteIndex = -1;
+ _grabCursorSprite = 0;
+
+ debug("MainLoop #1");
+
+ // > DEBUG BEGIN
+ _currentSceneNum = 53;
+ _newSceneNum = 27;
+ _newCursorValue = 3;
+ // < DEBUG END
+
+ loadStockDat();
+
+ while (!_gameDone) {
+
+ debug("New scene: %d", _newSceneNum);
+
+ _prevSceneNum = _currentSceneNum;
+ _currentSceneNum = _newSceneNum;
+
+ debug("GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
+
+ if (_newCursorValue != _cursorValue) {
+ debug("_newCursorValue: %d", _newCursorValue);
+ _cursorValue = _newCursorValue;
+ if (!_wasSavegameLoaded)
+ initGameFlags(_cursorValue);
+ }
+
+ _sceneSavegameLoaded = _wasSavegameLoaded;
+ _wasSavegameLoaded = false;
+
+ initScene();
+
+ runSceneLogic();
+ afterScene();
+
+ _soundMan->stopAll();
+
+ // Force purge all resources
+ _sequenceCache->purge(true);
+ _soundCache->purge(true);
+ _spriteCache->purge(true);
+
+ if (isKeyStatus1(28)) {
+ clearKeyStatus1(28);
+ if (_debugLevel == 4)
+ _gameDone = true;
+ }
+
+ }
+
+ if (_backgroundSurface)
+ deleteSurface(&_backgroundSurface);
+
+ _dat->close(1);
+ // TODO freeMenuSprite();
+ // TODO freeFont();
+
+ debug("MainLoop #XXX2");
+
+}
+
+void GnapEngine::initScene() {
+
+ Common::String datFilename;
+
+ _isLeavingScene = false;
+ _sceneDone = false;
+ _newSceneNum = 55;
+ _gnapActionStatus = -1;
+ _beaverActionStatus = -1;
+ gnapInitBrainPulseRndValue();
+ hideCursor();
+ clearAllKeyStatus1();
+ _mouseClickState.left = false;
+ _mouseClickState.right = false;
+ _sceneClickedHotspot = -1;
+
+ datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
+
+ debug("GnapEngine::initScene() datFilename: %s", datFilename.c_str());
+
+ _dat->open(0, datFilename.c_str());
+
+ int backgroundId = initSceneLogic();
+
+ if (!_backgroundSurface) {
+ if (_currentSceneNum != 0)
+ _backgroundSurface = _gameSys->loadBitmap(makeRid(1, 0x8AA));
+ else
+ _backgroundSurface = _gameSys->loadBitmap(makeRid(0, backgroundId));
+ _gameSys->setBackgroundSurface(_backgroundSurface, 0, 500, 1, 1000);
+ }
+
+ if (_currentSceneNum != 0 && _currentSceneNum != 16 && _currentSceneNum != 47 &&
+ _currentSceneNum != 48 && _currentSceneNum != 54) {
+ _gameSys->drawBitmap(backgroundId);
+ }
+
+ if ((_cursorValue == 4 && isFlag(12)) || _currentSceneNum == 41)
+ playSound(makeRid(1, 0x8F6), true);
+
+}
+
+void GnapEngine::endSceneInit() {
+ showCursor();
+ if (_newGrabCursorSpriteIndex >= 0)
+ setGrabCursorSprite(_newGrabCursorSpriteIndex);
+}
+
+void GnapEngine::afterScene() {
+
+ if (_gameDone)
+ return;
+
+ if (_newCursorValue == _cursorValue && _newSceneNum != 0 && _newSceneNum != 16 &&
+ _newSceneNum != 47 && _newSceneNum != 48 && _newSceneNum != 54 && _newSceneNum != 49 &&
+ _newSceneNum != 50 && _newSceneNum != 51 && _newSceneNum != 52)
+ _newGrabCursorSpriteIndex = _grabCursorSpriteIndex;
+ else
+ _newGrabCursorSpriteIndex = -1;
+
+ setGrabCursorSprite(-1);
+
+ _gameSys->requestClear2(0);
+ _gameSys->requestClear1();
+ _gameSys->waitForUpdate();
+
+ _gameSys->requestClear2(0);
+ _gameSys->requestClear1();
+ _gameSys->waitForUpdate();
+
+ screenEffect(0, 0, 0, 0);
+
+ _dat->close(0);
+
+ for (int animationIndex = 0; animationIndex < 12; ++animationIndex)
+ _gameSys->setAnimation(0, 0, animationIndex);
+
+ clearKeyStatus1(Common::KEYCODE_p);
+
+ _mouseClickState.left = false;
+ _mouseClickState.right = false;
+
+}
+
+void GnapEngine::checkGameKeys() {
+ if (isKeyStatus1(Common::KEYCODE_p)) {
+ clearKeyStatus1(Common::KEYCODE_p);
+ pauseGame();
+ updatePause();
+ }
+ // TODO? Debug input
+}
+
+void GnapEngine::startSoundTimerA(int timerIndex) {
+ _soundTimerIndexA = timerIndex;
+ _timers[timerIndex] = getRandom(50) + 100;
+}
+
+int GnapEngine::playSoundA() {
+
+ static const int kSoundIdsA[] = {
+ 0x93E, 0x93F, 0x941, 0x942, 0x943, 0x944,
+ 0x945, 0x946, 0x947, 0x948, 0x949
+ };
+
+ int soundId = -1;
+
+ if (!_timers[_soundTimerIndexA]) {
+ _timers[_soundTimerIndexA] = getRandom(50) + 100;
+ soundId = kSoundIdsA[getRandom(11)];
+ playSound(soundId | 0x10000, 0);
+ }
+ return soundId;
+}
+
+void GnapEngine::startSoundTimerB(int timerIndex) {
+ _soundTimerIndexB = timerIndex;
+ _timers[timerIndex] = getRandom(50) + 150;
+}
+
+int GnapEngine::playSoundB() {
+
+ static const int kSoundIdsB[] = {
+ 0x93D, 0x929, 0x92A, 0x92B, 0x92C, 0x92D,
+ 0x92E, 0x92F, 0x930, 0x931, 0x932, 0x933,
+ 0x934, 0x935, 0x936, 0x937, 0x938, 0x939,
+ 0x93A
+ };
+
+ int soundId = -1;
+
+ if (!_timers[_soundTimerIndexB]) {
+ _timers[_soundTimerIndexB] = getRandom(50) + 150;
+ soundId = kSoundIdsB[getRandom(19)];
+ playSound(soundId | 0x10000, 0);
+ }
+ return soundId;
+}
+
+void GnapEngine::startSoundTimerC(int timerIndex) {
+ _soundTimerIndexC = timerIndex;
+ _timers[timerIndex] = getRandom(50) + 150;
+}
+
+int GnapEngine::playSoundC() {
+
+ static const int kSoundIdsC[] = {
+ 0x918, 0x91F, 0x920, 0x922, 0x923, 0x924,
+ 0x926
+ };
+
+ int soundId = -1;
+
+ if (!_timers[_soundTimerIndexC]) {
+ _timers[_soundTimerIndexC] = getRandom(50) + 150;
+ soundId = kSoundIdsC[getRandom(7)] ;
+ playSound(soundId | 0x10000, 0);
+ }
+ return soundId;
+}
+
+void GnapEngine::startIdleTimer(int timerIndex) {
+ _idleTimerIndex = timerIndex;
+ _timers[timerIndex] = 3000;
+}
+
+void GnapEngine::updateIdleTimer() {
+ if (!_timers[_idleTimerIndex]) {
+ _timers[_idleTimerIndex] = 3000;
+ _gameSys->insertSequence(0x1088B, 255, 0, 0, kSeqNone, 0, 0, 75);
+ }
+}
+
+void GnapEngine::screenEffect(int dir, byte r, byte g, byte b) {
+ if (dir == 1) {
+ for (int y = 300; y < 600; y += 50) {
+ _gameSys->fillSurface(0, 0, y, 800, 50, r, g, b);
+ _gameSys->fillSurface(0, 0, 549 - y + 1, 800, 50, r, g, b);
+ gameUpdateTick();
+ _system->delayMillis(50);
+ }
+ } else {
+ for (int y = 0; y < 300; y += 50) {
+ _gameSys->fillSurface(0, 0, y, 800, 50, r, g, b);
+ _gameSys->fillSurface(0, 0, 549 - y + 1, 800, 50, r, g, b);
+ gameUpdateTick();
+ _system->delayMillis(50);
+ }
+ }
+}
+
+bool GnapEngine::isKeyStatus1(int key) {
+ return _keyPressState[key] != 0;;
+}
+
+bool GnapEngine::isKeyStatus2(int key) {
+ return _keyDownState[key] != 0;;
+}
+
+void GnapEngine::clearKeyStatus1(int key) {
+ _keyPressState[key] = 0;
+ _keyDownState[key] = 0;
+}
+
+void GnapEngine::clearAllKeyStatus1() {
+ _keyStatus1[0] = 0;
+ _keyStatus1[1] = 0;
+ memset(_keyPressState, 0, sizeof(_keyPressState));
+ memset(_keyDownState, 0, sizeof(_keyDownState));
+}
+
+void GnapEngine::deleteSurface(Graphics::Surface **surface) {
+ if (surface && *surface) {
+ (*surface)->free();
+ delete *surface;
+ *surface = 0;
+ }
+}
+
+int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
+ int sequenceId = 0;
+
+ switch (kind) {
+
+ case gskPullOutDevice:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x83F;
+ _gnapIdleFacing = 5;
+ } else {
+ sequenceId = 0x83D;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x83B;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x839;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x839;
+ break;
+ case 3:
+ sequenceId = 0x83B;
+ break;
+ case 7:
+ sequenceId = 0x83D;
+ break;
+ default:
+ sequenceId = 0x83F;
+ break;
+ }
+ }
+ break;
+
+ case gskPullOutDeviceNonWorking:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x829;
+ _gnapIdleFacing = 5;
+ } else {
+ sequenceId = 0x828;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x827;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x826;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x826;
+ break;
+ case 3:
+ sequenceId = 0x827;
+ break;
+ case 7:
+ sequenceId = 0x828;
+ break;
+ default:
+ sequenceId = 0x829;
+ break;
+ }
+ }
+ break;
+
+ case gskScratchingHead:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x834;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x885;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x834;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x833;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x833;
+ _gnapIdleFacing = 1;
+ break;
+ case 3:
+ sequenceId = 0x834;
+ _gnapIdleFacing = 3;
+ break;
+ case 7:
+ sequenceId = 0x885;
+ _gnapIdleFacing = 7;
+ break;
+ default:
+ sequenceId = 0x834;
+ _gnapIdleFacing = 3;
+ break;
+ }
+ }
+ break;
+
+ case gskIdle:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x7BC;
+ _gnapIdleFacing = 5;
+ } else {
+ sequenceId = 0x7BB;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x7BA;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7B9;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x7B9;
+ break;
+ case 3:
+ sequenceId = 0x7BA;
+ break;
+ case 7:
+ sequenceId = 0x7BB;
+ break;
+ default:
+ sequenceId = 0x7BC;
+ break;
+ }
+ }
+ break;
+
+ case gskBrainPulsating:
+ _gnapBrainPulseNum = (_gnapBrainPulseNum + 1) & 1;
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
+ _gnapIdleFacing = 5;
+ } else {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
+ break;
+ case 3:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
+ break;
+ case 7:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
+ break;
+ default:
+ sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
+ break;
+ }
+ }
+ break;
+
+ case gskImpossible:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x831;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7A8;
+ _gnapIdleFacing = 1;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x831;
+ _gnapIdleFacing = 3;
+ } else {
+ if (_gnapX % 2)
+ sequenceId = 0x7A8;
+ else
+ sequenceId = 0x89A;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ sequenceId = 0x831;
+ _gnapIdleFacing = 3;
+ } else {
+ if (_currentSceneNum % 2)
+ sequenceId = 0x7A8;
+ else
+ sequenceId = 0x89A;
+ _gnapIdleFacing = 1;
+ }
+ break;
+
+ case gskDeflect:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x830;
+ _gnapIdleFacing = 5;
+ } else {
+ sequenceId = 0x82F;
+ _gnapIdleFacing = 7;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x82E;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7A7;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else {
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x7A7;
+ break;
+ case 3:
+ sequenceId = 0x82E;
+ break;
+ case 5:
+ sequenceId = 0x830;
+ break;
+ case 7:
+ sequenceId = 0x82F;
+ break;
+ }
+ }
+ break;
+
+ case gskUseDevice:
+ switch (_gnapIdleFacing) {
+ case 1:
+ sequenceId = 0x83A;
+ break;
+ case 3:
+ sequenceId = 0x83C;
+ break;
+ case 5:
+ sequenceId = 0x840;
+ break;
+ case 7:
+ sequenceId = 0x83E;
+ break;
+ }
+ break;
+
+ case gskMoan1:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ break;
+
+ case gskMoan2:
+ if (gridX > 0 && gridY > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ } else {
+ if (_gnapX > gridX) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ }
+ } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ sequenceId = 0x832;
+ _gnapIdleFacing = 3;
+ } else {
+ sequenceId = 0x7AA;
+ _gnapIdleFacing = 1;
+ }
+ break;
+
+ }
+
+ return sequenceId | 0x10000;
+}
+
+int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
+
+ int sequenceId;
+ int facing = _gnapIdleFacing;
+
+ if (gridY > 0 && gridX > 0) {
+ if (_gnapY > gridY) {
+ if (_gnapX > gridX)
+ _gnapIdleFacing = 5;
+ else
+ _gnapIdleFacing = 7;
+ } else {
+ if (_gnapX > gridX)
+ _gnapIdleFacing = 5;
+ else
+ _gnapIdleFacing = 7;
+ }
+ } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ _gnapIdleFacing = 5;
+ } else {
+ _gnapIdleFacing = 7;
+ }
+
+ switch (index) {
+ case 0:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x8A0;
+ else
+ sequenceId = 0x8A1;
+ break;
+ case 1:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x880;
+ else
+ sequenceId = 0x895;
+ break;
+ case 2:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x884;
+ else
+ sequenceId = 0x899;
+ break;
+ //Skip 3
+ case 4:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x881;
+ else
+ sequenceId = 0x896;
+ break;
+ case 5:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x883;
+ else
+ sequenceId = 0x898;
+ break;
+ case 6:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87E;
+ else
+ sequenceId = 0x893;
+ break;
+ case 7:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x848;
+ else
+ sequenceId = 0x890;
+ break;
+ case 8:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87D;
+ else
+ sequenceId = 0x892;
+ break;
+ case 9:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x882;
+ else
+ sequenceId = 0x897;
+ break;
+ case 10:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87C;
+ else
+ sequenceId = 0x891;
+ break;
+ case 11:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87C;
+ else
+ sequenceId = 0x891;
+ break;
+ case 12:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87D;
+ else
+ sequenceId = 0x892;
+ break;
+ case 13:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x888;
+ else
+ sequenceId = 0x89D;
+ break;
+ case 14:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87F;
+ else
+ sequenceId = 0x894;
+ break;
+ case 15:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87B;
+ else
+ sequenceId = 0x8A3;
+ break;
+ case 16:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x877;
+ else
+ sequenceId = 0x88C;
+ break;
+ //Skip 17
+ case 18:
+ sequenceId = 0x887;
+ break;
+ case 19:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87A;
+ else
+ sequenceId = 0x88F;
+ break;
+ case 20:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x878;
+ else
+ sequenceId = 0x88D;
+ break;
+ case 21:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x879;
+ else
+ sequenceId = 0x88E;
+ break;
+ case 22:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x88A;
+ else
+ sequenceId = 0x89F;
+ break;
+ case 23:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x889;
+ else
+ sequenceId = 0x89E;
+ break;
+ case 24:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x886;
+ else
+ sequenceId = 0x89B;
+ break;
+ case 25:
+ if (_gnapIdleFacing == 7)
+ sequenceId = 0x87A;
+ else
+ sequenceId = 0x88F;
+ break;
+ //Skip 26
+ //Skip 27
+ //Skip 28
+ //Skip 29
+ default:
+ _gnapIdleFacing = facing;
+ sequenceId = getGnapSequenceId(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,
+ 32, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
+ _gnapSequenceDatNum = 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,
+ 32, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
+ _gnapSequenceDatNum = 1;
+ }
+}
+
+void GnapEngine::playGnapSequence(int sequenceId) {
+ _timers[2] = getRandom(30) + 20;
+ _timers[3] = 300;
+ gnapIdle();
+ _gameSys->insertSequence(sequenceId, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 9, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = ridToEntryIndex(sequenceId);
+ _gnapSequenceDatNum = ridToDatIndex(sequenceId);
+}
+
+void GnapEngine::playGnapImpossible(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskImpossible, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapScratchingHead(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapMoan1(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskMoan1, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapMoan2(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskMoan2, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapBrainPulsating(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapPullOutDevice(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapPullOutDeviceNonWorking(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapUseDevice(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapIdle(int gridX, int gridY) {
+ playGnapSequence(getGnapSequenceId(gskIdle, gridX, gridY) | 0x10000);
+}
+
+void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
+ playGnapSequence(getGnapShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
+}
+
+void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
+ if (_platX == gridX && _platY == gridY)
+ beaverMakeRoom();
+ gnapWalkTo(gridX, gridY, -1, -1, 1);
+ playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
+}
+
+void GnapEngine::updateGnapIdleSequence() {
+ if (_gnapActionStatus < 0) {
+ if (_timers[2] > 0) {
+ if (_timers[3] == 0) {
+ _timers[2] = 60;
+ _timers[3] = 300;
+ _gnapRandomValue = getRandom(5);
+ if (_gnapIdleFacing == 1) {
+ switch (_gnapRandomValue) {
+ case 0:
+ playGnapSequence(0x107A6);
+ break;
+ case 1:
+ playGnapSequence(0x107AA);
+ break;
+ case 2:
+ playGnapSequence(0x10841);
+ break;
+ default:
+ playGnapSequence(0x108A2);
+ break;
+ }
+ } else if (_gnapIdleFacing == 3) {
+ if (_gnapRandomValue > 2)
+ playGnapSequence(0x10832);
+ else
+ playGnapSequence(0x10842);
+ }
+ }
+ } else {
+ _timers[2] = getRandom(30) + 20;
+ if (_gnapIdleFacing == 1) {
+ _gameSys->insertSequence(0x107BD, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = 0x7BD;
+ _gnapSequenceDatNum = 1;
+ } else if (_gnapIdleFacing == 3) {
+ _gameSys->insertSequence(0x107BE, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = 0x7BE;
+ _gnapSequenceDatNum = 1;
+ }
+ }
+ } else {
+ _timers[2] = getRandom(30) + 20;
+ _timers[3] = 300;
+ }
+}
+
+void GnapEngine::updateGnapIdleSequence2() {
+ if (_gnapActionStatus < 0) {
+ if (_timers[2] > 0) {
+ if (_timers[3] == 0) {
+ _timers[2] = 60;
+ _timers[3] = 300;
+ if (_gnapIdleFacing == 1) {
+ playGnapSequence(0x107AA);
+ } else if (_gnapIdleFacing == 3) {
+ playGnapSequence(0x10832);
+ }
+ }
+ } else {
+ _timers[2] = getRandom(30) + 20;
+ if (_gnapIdleFacing == 1) {
+ _gameSys->insertSequence(0x107BD, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = 0x7BD;
+ _gnapSequenceDatNum = 1;
+ } else if (_gnapIdleFacing == 3) {
+ _gameSys->insertSequence(0x107BE, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = 0x7BE;
+ _gnapSequenceDatNum = 1;
+ }
+ }
+ } else {
+ _timers[2] = getRandom(30) + 20;
+ _timers[3] = 300;
+ }
+}
+
+bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2) {
+ if (_mouseClickState.left && someStatus == _gnapActionStatus) {
+ _isLeavingScene = false;
+ _gameSys->setAnimation(0, 0, animationIndex);
+ _gnapActionStatus = -1;
+ _beaverActionStatus = -1;
+ gnapWalkTo(gridX1, gridY1, -1, -1, 1);
+ platypusWalkTo(gridX2, gridY2, -1, -1, 1);
+ _mouseClickState.left = false;
+ return true;
+ }
+ return false;
+}
+
+void GnapEngine::initGnapPos(int gridX, int gridY, int facing) {
+ _timers[2] = 30;
+ _timers[3] = 300;
+ _gnapX = gridX;
+ _gnapY = gridY;
+ if (facing <= 0)
+ _gnapIdleFacing = 1;
+ else
+ _gnapIdleFacing = facing;
+ if (_gnapIdleFacing == 3) {
+ _gnapSequenceId = 0x7B8;
+ } else {
+ _gnapSequenceId = 0x7B5;
+ _gnapIdleFacing = 1;
+ }
+ _gnapId = 20 * _gnapY;
+ _gnapSequenceDatNum = 1;
+ _gameSys->insertSequence(makeRid(1, _gnapSequenceId), 20 * _gnapY,
+ 0, 0,
+ 1, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+}
+
+void GnapEngine::gnapInitBrainPulseRndValue() {
+ _gnapBrainPulseRndValue = 2 * getRandom(10);
+}
+
+void GnapEngine::gnapUseDeviceOnBeaver() {
+
+ playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
+
+ if (_beaverFacing != 0) {
+ _gameSys->insertSequence(makeRid(1, 0x7D5), _beaverId,
+ makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ 8, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ _beaverSequenceId = 0x7D5;
+ _beaverSequenceDatNum = 1;
+ } else {
+ _gameSys->insertSequence(makeRid(1, 0x7D4), _beaverId,
+ makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ 8, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ _beaverSequenceId = 0x7D4;
+ _beaverSequenceDatNum = 1;
+ }
+
+ int newSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
+ _gameSys->insertSequence(makeRid(1, newSequenceId), _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = newSequenceId;
+ _gnapSequenceDatNum = 1;
+
+}
+
+void GnapEngine::doCallback(int callback) {
+ switch (callback) {
+ case 8:
+ scene08_updateAnimationsCb();
+ break;
+ case 10:
+ scene10_updateAnimationsCb();
+ break;
+ case 20:
+ scene20_updateAnimationsCb();
+ break;
+ }
+}
+
+bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
+ bool result = false;
+
+ if (_gnapActionStatus <= -1 && _beaverActionStatus <= -1) {
+ _gnapActionStatus = 100;
+ if (isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY))
+ platypusWalkStep();
+ if (!isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY)) {
+ gnapWalkTo(_platX + gridX, _platY + gridY, 0, 0x107B9, 1);
+ while (_gameSys->getAnimationStatus(0) != 2) {
+ updateMouseCursor();
+ doCallback(callback);
+ gameUpdateTick();
+ }
+ _gameSys->setAnimation(0, 0, 0);
+ if (_platX + gridX == _gnapX && _platY + gridY == _gnapY) {
+ _gameSys->setAnimation(platSequenceId, _beaverId, 1);
+ playBeaverSequence(platSequenceId);
+ while (_gameSys->getAnimationStatus(1) != 2) {
+ updateMouseCursor();
+ doCallback(callback);
+ gameUpdateTick();
+ }
+ result = true;
+ }
+ }
+ _gnapActionStatus = -1;
+ }
+ return result;
+}
+
+void GnapEngine::gnapKissPlatypus(int callback) {
+ if (gnapPlatypusAction(-1, 0, 0x107D1, callback)) {
+ _gnapActionStatus = 100;
+ _gameSys->setAnimation(0, 0, 1);
+ _gameSys->setAnimation(0x10847, _gnapId, 0);
+ _gameSys->insertSequence(0x10847, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 15 * (5 * _gnapX - 20) - (21 - _gridMinX), 48 * (_gnapY - 6) - (146 - _gridMinY));
+ _gnapSequenceDatNum = 1;
+ _gnapSequenceId = 0x847;
+ _gameSys->insertSequence(0x107CB, _beaverId,
+ makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ 8, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ _beaverSequenceDatNum = 1;
+ _beaverSequenceId = 0x7CB;
+ _beaverFacing = 0;
+ playGnapSequence(0x107B5);
+ while (_gameSys->getAnimationStatus(0) != 2) {
+ updateMouseCursor();
+ doCallback(callback);
+ gameUpdateTick();
+ }
+ _gameSys->setAnimation(0, 0, 0);
+ _gnapActionStatus = -1;
+ } else {
+ playGnapSequence(getGnapSequenceId(gskScratchingHead, _platX, _platY) | 0x10000);
+ }
+}
+
+void GnapEngine::gnapUseJointOnPlatypus() {
+ setGrabCursorSprite(-1);
+ if (gnapPlatypusAction(1, 0, 0x107C1, 0)) {
+ _gnapActionStatus = 100;
+ _gameSys->setAnimation(0, 0, 1);
+ _gameSys->setAnimation(0x10876, _beaverId, 0);
+ _gameSys->insertSequence(0x10875, _gnapId,
+ makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ 8, 0, 15 * (5 * _gnapX - 30), 48 * (_gnapY - 7));
+ _gnapSequenceDatNum = 1;
+ _gnapSequenceId = 0x875;
+ _gameSys->insertSequence(0x10876, _beaverId,
+ _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ 8, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
+ _beaverSequenceDatNum = 1;
+ _beaverSequenceId = 0x876;
+ _beaverFacing = 0;
+ playGnapSequence(0x107B5);
+ gnapWalkStep();
+ while (_gameSys->getAnimationStatus(0) != 2) {
+ updateMouseCursor();
+ gameUpdateTick();
+ }
+ _gameSys->setAnimation(0, 0, 0);
+ _gnapActionStatus = -1;
+ } else {
+ playGnapSequence(getGnapSequenceId(gskScratchingHead, _platX, _platY) | 0x10000);
+ }
+}
+
+void GnapEngine::gnapUseDisguiseOnPlatypus() {
+ _gameSys->setAnimation(0x10846, _gnapId, 0);
+ playGnapSequence(0x10846);
+ while (_gameSys->getAnimationStatus(0) != 2)
+ gameUpdateTick();
+ _newSceneNum = 47;
+ _isLeavingScene = true;
+ _sceneDone = true;
+ setFlag(10);
+}
+
+int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
+ int sequenceId;
+
+ // TODO kind is always 0, remove that parameter
+ if (kind != 0)
+ return 0;
+
+ if (gridX > 0 && gridY > 0) {
+ if (gridX < _platX) {
+ sequenceId = 0x7CC;
+ _beaverFacing = 4;
+ } else {
+ sequenceId = 0x7CB;
+ _beaverFacing = 0;
+ }
+ } else if (_beaverFacing != 0) {
+ sequenceId = 0x7CC;
+ _beaverFacing = 4;
+ } else {
+ sequenceId = 0x7CB;
+ _beaverFacing = 0;
+ }
+ return sequenceId | 0x10000;
+}
+
+void GnapEngine::playBeaverSequence(int sequenceId) {
+ _gameSys->insertSequence(sequenceId, _beaverId,
+ makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ 9, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ _beaverSequenceId = ridToEntryIndex(sequenceId);
+ _beaverSequenceDatNum = ridToDatIndex(sequenceId);
+}
+
+void GnapEngine::updateBeaverIdleSequence() {
+ if (_beaverActionStatus < 0 && _gnapActionStatus < 0) {
+ if (_timers[0] > 0) {
+ if (_timers[1] == 0) {
+ _timers[1] = getRandom(20) + 30;
+ _gnapRandomValue = getRandom(10);
+ if (_beaverFacing != 0) {
+ if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7CA) {
+ if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7CA)
+ playBeaverSequence(0x107CA);
+ else
+ playBeaverSequence(0x10845);
+ } else {
+ playBeaverSequence(0x107CC);
+ }
+ } else if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7C9) {
+ if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7C9) {
+ if (_gnapRandomValue != 2 || _beaverSequenceId != 0x7C9)
+ playBeaverSequence(0x107C9);
+ else
+ playBeaverSequence(0x108A4);
+ } else {
+ playBeaverSequence(0x10844);
+ }
+ } else {
+ playBeaverSequence(0x107CB);
+ }
+ }
+ } else {
+ _timers[0] = getRandom(75) + 75;
+ beaverMakeRoom();
+ }
+ } else {
+ _timers[0] = 100;
+ _timers[1] = 35;
+ }
+}
+
+void GnapEngine::beaverSub426234() {
+ if (_beaverActionStatus < 0 && _gnapActionStatus < 0) {
+ if (_timers[0]) {
+ if (!_timers[1]) {
+ _timers[1] = getRandom(20) + 30;
+ _gnapRandomValue = getRandom(10);
+ if (_beaverFacing != 0) {
+ if (_gnapRandomValue >= 2 || _beaverSequenceId != 0x7CA)
+ playBeaverSequence(0x107CA);
+ else
+ playBeaverSequence(0x107CC);
+ } else {
+ if (_gnapRandomValue >= 2 || _beaverSequenceId != 0x7C9) {
+ playBeaverSequence(0x107C9);
+ } else {
+ playBeaverSequence(0x107CB);
+ }
+ }
+ }
+ } else {
+ _timers[0] = getRandom(75) + 75;
+ beaverMakeRoom();
+ }
+ } else {
+ _timers[0] = 100;
+ _timers[1] = 35;
+ }
+}
+
+void GnapEngine::initBeaverPos(int gridX, int gridY, int facing) {
+ _timers[0] = 50;
+ _timers[1] = 20;
+ _platX = gridX;
+ _platY = gridY;
+ if (facing <= 0)
+ _beaverFacing = 0;
+ else
+ _beaverFacing = facing;
+ if (_beaverFacing == 4) {
+ _beaverSequenceId = 0x7D1;
+ } else {
+ _beaverSequenceId = 0x7C1;
+ _beaverFacing = 0;
+ }
+ _beaverId = 20 * _platY;
+ _beaverSequenceDatNum = 1;
+ _gameSys->insertSequence(makeRid(1, _beaverSequenceId), 20 * _platY,
+ 0, 0,
+ 1, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void GnapEngine::initGlobalSceneVars() {
+
+ // Scene 1
+ _s01_pigsIdCtr = 0;
+ _s01_smokeIdCtr = 0;
+ _s01_spaceshipSurface = 0;
+
+ // Scene 2
+ _s02_truckGrillCtr = 0;
+
+ // Scene 3
+ _s03_nextPlatSequenceId = -1;
+ _s03_platypusScared = false;
+ _s03_platypusHypnotized = false;
+
+ // Scene 4
+ _s04_dogIdCtr = 0;
+ //_s04_triedWindow = true;//??
+ _s04_triedWindow = false;
+
+ // Scene 5
+ _s05_nextChickenSequenceId = -1;
+
+ // Scene 6
+ _s06_nextPlatSequenceId = -1;
+
+ // Scene 11
+ _s11_billardBallCtr = 0;
+
+ // Scene 13
+ _s13_backToiletCtr = -1;
+
+ // Scene 17
+ _s17_platTryGetWrenchCtr = 0;
+ _s17_wrenchCtr = 2;
+ _s17_nextCarWindowSequenceId = -1;
+ _s17_nextWrenchSequenceId = -1;
+ _s17_canTryGetWrench = true;
+ _s17_platPhoneCtr = 0;
+ _s17_nextPhoneSequenceId = -1;
+ _s17_currPhoneSequenceId = -1;
+
+ // Scene 18
+ _s18_garbageCanPos = 8;
+ _s18_platPhoneCtr = 0;
+ _s18_platPhoneIter = 0;
+ _s18_nextPhoneSequenceId = -1;
+ _s18_currPhoneSequenceId = -1;
+
+ // Scene 19
+ _s19_toyGrabCtr = 0;
+ _s19_pictureSurface = 0;
+ _s19_shopAssistantCtr = 0;
+
+ // Scene 20
+ _s20_stonerGuyCtr = 3;
+ _s20_stonerGuyShowingJoint = false;
+ _s20_groceryStoreGuyCtr = 0;
+
+ // Scene 22
+ _s22_caughtBefore = false;
+ _s22_cashierCtr = 3;
+
+ // Scene 50
+ _s50_timesPlayed = 0;
+ _s50_timesPlayedModifier = 0;
+ _s50_attackCounter = 0;
+ _s50_leftTongueEnergyBarPos = 10;
+ _s50_leftTongueNextIdCtr = 0;
+ _s50_rightTongueEnergyBarPos = 10;
+ _s50_rightTongueNextIdCtr = 0;
+
+ // Scene 52
+ _s52_gameScore = 0;
+ _s52_aliensInitialized = false;
+ _s52_alienDirection = 0;
+ _s52_soundToggle = false;
+
+ // Scene 53
+ _s53_callsMadeCtr = 0;
+ _s53_callsRndUsed = 0;
+
+ // Toy UFO
+ _toyUfoId = 0;
+ _toyUfoActionStatus = -1;
+ _toyUfoX = 0;
+ _toyUfoY = 50;
+
+}
+
+bool GnapEngine::sceneXX_sub_4466B1() {
+
+ if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(Common::KEYCODE_UP);
+ clearKeyStatus1(Common::KEYCODE_RIGHT);
+ clearKeyStatus1(Common::KEYCODE_LEFT);
+ clearKeyStatus1(Common::KEYCODE_p);
+ return true;
+ }
+
+ if (isKeyStatus1(Common::KEYCODE_p)) {
+ clearKeyStatus1(Common::KEYCODE_p);
+ pauseGame();
+ updatePause();
+ }
+ return false;
+
+}
+
+void GnapEngine::sceneXX_playRandomSound(int timerIndex) {
+ if (!_timers[timerIndex]) {
+ _timers[timerIndex] = getRandom(40) + 50;
+ _gnapRandomValue = getRandom(4);
+ switch (_gnapRandomValue) {
+ case 0:
+ playSound(0x1091B, 0);
+ break;
+ case 1:
+ playSound(0x10921, 0);
+ break;
+ case 2:
+ playSound(0x10927, 0);
+ break;
+ case 3:
+ playSound(0x1091D, 0);
+ break;
+ }
+ }
+}
+
+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,
+ 8, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ _gnapSequenceId = sequenceId2;
+ _gnapSequenceDatNum = 0;
+ while (_gameSys->getAnimationStatus(0) != 2)
+ gameUpdateTick();
+ hideCursor();
+ addFullScreenSprite(fullScreenSpriteId, 255);
+ _gameSys->setAnimation(sequenceId1, 256, 0);
+ _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,
+ 8, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ removeFullScreenSprite();
+ showCursor();
+ _gnapSequenceId = sequenceId3;
+}
+
+// Scene 0
+
+int GnapEngine::scene00_init() {
+ return 0x37C;
+}
+
+void GnapEngine::toyUfoSetStatus(int a1) {
+ clearFlag(16);
+ clearFlag(17);
+ clearFlag(18);
+ clearFlag(19);
+ setFlag(a1);
+}
+
+int GnapEngine::toyUfoGetSequenceId() {
+ if (isFlag(16))
+ return 0x84E;
+ if (isFlag(17))
+ return 0x84B;
+ if (isFlag(18))
+ return 0x84D;
+ if (isFlag(19))
+ return 0x84C;
+ return 0x84E;
+}
+
+bool GnapEngine::toyUfoCheckTimer() {
+ if (!isFlag(12) || isFlag(18) || _timers[9] ||
+ _toyUfoSequenceId == 0x870 || _toyUfoSequenceId == 0x871 || _toyUfoSequenceId == 0x872 || _toyUfoSequenceId == 0x873)
+ return false;
+ _sceneDone = true;
+ _newSceneNum = 41;
+ return true;
+}
+
+void GnapEngine::toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a6, int animationIndex) {
+ int v21 = 0;
+ int v14 = 0;
+ int v17 = 36;
+ int v15 = 32;
+ int i = 0;
+ GridStruct v16[34];
+
+ if (destX == -1)
+ destX = _leftClickMouseX;
+
+ if (destY == -1)
+ destY = _leftClickMouseY;
+
+ //CHECKME
+
+ int v25 = CLIP(destX, a3, a4);
+ int v26 = CLIP(destY, a5, a6);
+ int v24, v23;
+ int v13, v20;
+
+ if (v25 == _toyUfoX)
+ v24 = 0;
+ else
+ v24 = (v25 - _toyUfoX) / ABS(v25 - _toyUfoX);
+
+ if (v26 == _toyUfoY)
+ v23 = 0;
+ else
+ v23 = (v26 - _toyUfoY) / ABS(v26 - _toyUfoY);
+
+ v13 = ABS(v25 - _toyUfoX);
+ v20 = ABS(v26 - _toyUfoY);
+
+ if (v20 > v13) {
+ int v22 = v20 / v15;
+ while (v14 < v20 && i < 34) {
+ if (v22 - 5 >= i) {
+ v15 = MIN(36, 8 * i + 8);
+ } else {
+ v15 = MAX(6, v15 - 3);
+ }
+ v14 += v15;
+ v16[i].gridX1 = _toyUfoX + v24 * v13 * v14 / v20;
+ v16[i].gridY1 = _toyUfoY + v23 * v14;
+ ++i;
+ }
+ } else {
+ int v22 = v13 / v17;
+ while (v14 < v13 && i < 34) {
+ if (v22 - 5 >= i) {
+ v17 = MIN(38, 8 * i + 8);
+ } else {
+ v17 = MAX(6, v17 - 3);
+ }
+ v14 += v17;
+ v16[i].gridX1 = _toyUfoX + v24 * v14;
+ v16[i].gridY1 = _toyUfoY + v23 * v20 * v14 / v13;
+ ++i;
+ }
+ }
+
+ v21 = i - 1;
+
+ _toyUfoX = v25;
+ _toyUfoY = v26;
+
+ debug("v21: %d", v21);
+
+ if (i - 1 > 0) {
+ int v18;
+ if (isFlag(16))
+ v18 = 0x867;
+ else if (isFlag(17))
+ v18 = 0x84F;
+ else if (isFlag(18))
+ v18 = 0x85F;
+ else if (isFlag(19))
+ v18 = 0x857;
+ v16[0].sequenceId = v18;
+ v16[0].id = 0;
+ _gameSys->insertSequence(v18 | 0x10000, 0,
+ _toyUfoSequenceId | 0x10000, _toyUfoId,
+ 8, 0, v16[0].gridX1 - 365, v16[0].gridY1 - 128);
+ for (i = 1; i < v21; ++i) {
+ v16[i].sequenceId = v18 + (i % 8);
+ v16[i].id = i;
+ _gameSys->insertSequence(v16[i].sequenceId | 0x10000, v16[i].id,
+ v16[i - 1].sequenceId | 0x10000, v16[i - 1].id,
+ 8, 0,
+ v16[i].gridX1 - 365, v16[i].gridY1 - 128);
+ }
+
+ _toyUfoSequenceId = v16[v21 - 1].sequenceId;
+ _toyUfoId = v16[v21 - 1].id;
+
+ if (animationIndex >= 0)
+ _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, animationIndex);
+
+ }
+
+}
+
+// Scene 99
+
+int GnapEngine::cutscene_init() {
+ return -1;
+}
+
+void GnapEngine::cutscene_run() {
+
+ int itemIndex = 0;
+ int soundId = -1;
+ int volume = 100;
+ int duration = 0;
+ bool skip = false;
+
+ int v1 = 0;
+
+ if (_prevSceneNum == 2) {
+ soundId = 0x36B;
+ duration = MAX(1, 300 / getSequenceTotalDuration(_s99_dword_47F370[_s99_itemsCount - 1]));//CHECKME
+ _timers[0] = 0;
+ }
+
+ if (soundId != -1)
+ playSound(soundId, 0);
+
+ hideCursor();
+
+ _gameSys->drawSpriteToBackground(0, 0, _s99_dword_47F2F0[0]);
+
+ for (int j = 0; j < _s99_dword_47F330[0]; ++j)
+ _gameSys->insertSequence(_s99_dword_47F370[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->setAnimation(_s99_dword_47F370[0], 2, 0);
+
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(Common::KEYCODE_SPACE);
+ clearKeyStatus1(29);
+
+ _mouseClickState.left = false;
+
+ while (!_sceneDone) {
+
+ gameUpdateTick();
+
+ if (_gameSys->getAnimationStatus(0) == 2 || skip) {
+ skip = 0;
+ _gameSys->requestClear2(0);
+ _gameSys->requestClear1();
+ _gameSys->setAnimation(0, 0, 0);
+ v1 += _s99_dword_47F330[itemIndex++];
+ if (itemIndex >= _s99_itemsCount) {
+ _sceneDone = true;
+ } else {
+ for (int m = 0; m < _s99_dword_47F330[itemIndex]; ++m)
+ _gameSys->insertSequence(_s99_dword_47F370[v1 + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->drawSpriteToBackground(0, 0, _s99_dword_47F2F0[itemIndex]);
+ _gameSys->setAnimation(_s99_dword_47F370[v1], 2, 0);
+ }
+ }
+
+ if (isKeyStatus1(Common::KEYCODE_ESCAPE) || isKeyStatus1(Common::KEYCODE_SPACE) || isKeyStatus1(29)) {
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(Common::KEYCODE_SPACE);
+ clearKeyStatus1(29);
+ if (_s99_canSkip[itemIndex] & 1)
+ skip = true;
+ else
+ _sceneDone = true;
+ }
+
+ if (!_timers[0] && itemIndex == _s99_itemsCount - 1) {
+ _timers[0] = 2;
+ volume = MAX(1, volume - duration);
+ setSoundVolume(soundId, volume);
+ }
+
+ }
+
+ if (soundId != -1)
+ stopSound(soundId);
+
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
new file mode 100644
index 0000000..e1d13ec
--- /dev/null
+++ b/engines/gnap/gnap.h
@@ -0,0 +1,1117 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_H
+#define GNAP_H
+
+#include "common/array.h"
+#include "common/events.h"
+#include "common/file.h"
+#include "common/memstream.h"
+#include "common/random.h"
+#include "common/str.h"
+#include "common/substream.h"
+#include "common/system.h"
+#include "common/winexe.h"
+#include "common/winexe_pe.h"
+#include "engines/engine.h"
+#include "graphics/pixelformat.h"
+#include "graphics/wincursor.h"
+
+#include "gnap/resource.h"
+
+struct ADGameDescription;
+
+namespace Gnap {
+
+class DatManager;
+class SequenceResource;
+class SpriteResource;
+class GameSys;
+class SoundMan;
+
+struct MouseButtonState {
+ bool left;
+ bool right;
+ bool middle;
+ MouseButtonState() : left(false), right(false), middle(false) {
+ }
+};
+
+struct Hotspot {
+ int16 x1, y1, x2, y2;
+ int16 field_10;
+ int16 field_12;
+ uint16 flags;
+ int id;
+ bool isPointInside(int16 x, int16 y) const {
+ return x >= x1 && x <= x2 && y >= y1 && y <= y2;
+ }
+ bool isFlag(uint16 flag) const {
+ return (flags & flag) != 0;
+ }
+};
+
+struct GridStruct {
+ int deltaX, deltaY;
+ int gridX1, gridY1;
+ int sequenceId;
+ int id;
+};
+
+const int kMaxGridStructs = 30;
+const int kMaxTimers = 10;
+
+enum {
+ SF_LOOK_CURSOR = 0x0001,
+ SF_GRAB_CURSOR = 0x0002,
+ SF_TALK_CURSOR = 0x0004,
+ SF_PLAT_CURSOR = 0x0008,
+ SF_DISABLED = 0x0010,
+ SF_WALKABLE = 0x0020,
+ SF_EXIT_L_CURSOR = 0x0040,
+ SF_EXIT_R_CURSOR = 0x0080,
+ SF_EXIT_U_CURSOR = 0x0100,
+ SF_EXIT_D_CURSOR = 0x0200,
+ SF_EXIT_NW_CURSOR = 0x0400,
+ SF_EXIT_NE_CURSOR = 0x0800,
+ SF_EXIT_SW_CURSOR = 0x1000,
+ SF_EXIT_SE_CURSOR = 0x2000
+};
+
+enum {
+ LOOK_CURSOR = 0,
+ GRAB_CURSOR = 1,
+ TALK_CURSOR = 2,
+ PLAT_CURSOR = 3,
+ NOLOOK_CURSOR = 4,
+ NOGRAB_CURSOR = 5,
+ NOTALK_CURSOR = 6,
+ NOPLAT_CURSOR = 7,
+ EXIT_L_CURSOR = 8,
+ EXIT_R_CURSOR = 9,
+ EXIT_U_CURSOR = 10,
+ EXIT_D_CURSOR = 11,
+ EXIT_NE_CURSOR = 12,
+ EXIT_NW_CURSOR = 13,
+ EXIT_SE_CURSOR = 14,
+ EXIT_SW_CURSOR = 15,
+ WAIT_CURSOR = 16
+};
+
+enum {
+ gskPullOutDevice = 0,
+ gskPullOutDeviceNonWorking = 1,
+ gskIdle = 2,
+ gskBrainPulsating = 3,
+ gskImpossible = 4,
+ gskScratchingHead = 5,
+ gskDeflect = 6,
+ gskUseDevice = 7,
+ gskMoan1 = 8,
+ gskMoan2 = 9
+};
+
+enum {
+ kItemMagazine = 0,
+ kItemMud = 1,
+ kItemGrass = 2,
+ kItemDisguise = 3,
+ kItemNeedle = 4,
+ kItemTwig = 5,
+ kItemGas = 6,
+ kItemKeys = 7,
+ kItemDice = 8,
+ kItemTongs = 9,
+ kItemQuarter = 10,
+ kItemQuarterWithHole = 11,
+ kItemDiceQuarterHole = 12,
+ kItemWrench = 13,
+ kItemCowboyHat = 14,
+ kItemGroceryStoreHat = 15,
+ kItemBanana = 16,
+ kItemTickets = 17,
+ kItemPicture = 18,
+ kItemEmptyBucket = 19,
+ kItemBucketWithBeer = 20,
+ kItemBucketWithPill = 21,
+ kItemPill = 22,
+ kItemHorn = 23,
+ kItemJoint = 24,
+ kItemChickenBucket = 25,
+ kItemGum = 26,
+ kItemSpring = 27,
+ kItemLightbulb = 28,
+ kItemCereals = 29
+};
+
+enum {
+ kGFPlatypus = 0,
+ kGFMudTaken = 1,
+
+
+ kGFEnd
+};
+
+/*
+ Game flags
+ 0 1 With Platypus
+ 1 2 Mud taken
+ 2 4 Needle taken
+ 3 8 Twig taken
+ 4 0x10
+ 5 0x20 Keys taken
+ 6 0x40 Grass taken
+ 7 0x80 Barn padlock open
+ 8 0x100 Truck filled with gas
+ 9 0x200 Truck keys used
+ 10 0x400 Platypus disguised
+ 11 0x800 Scene flag 1
+ 12 0x1000 Gnap controls toy ufo
+ 13 0x2000
+ 14 0x4000
+ 15 0x8000 Spring taken
+ 16 0x10000
+ 17 0x20000 Joint taken
+ 18 0x40000
+ 19 0x80000 Grocery store hat taken
+ 20 0x100000 Picture taken
+ 21 0x200000
+ 22 0x400000
+ 23 0x800000
+ 24 0x1000000
+ 25 0x2000000
+ 26 0x4000000 Platypus talking with toy shop assistant
+ 27 0x8000000
+ 28 0x10000000
+ 29 0x20000000 Gas taken
+ 30 0x40000000
+ 31 0x80000000
+
+
+*/
+
+ // 0x7AB Gnap walks to the right 1
+ // 0x7AC Gnap walks to the right 2
+ // 0x7AF Gnap walks to the left 1
+ // 0x7B0 Gnap walks to the left 2
+
+struct Scene49Obstacle {
+ int currSequenceId;
+ int closerSequenceId;
+ int passedSequenceId;
+ int splashSequenceId;
+ int collisionSequenceId;
+ int prevId;
+ int currId;
+ int laneNum;
+};
+
+struct Scene51Item {
+ int currSequenceId;
+ int droppedSequenceId;
+ int x, y;
+ int collisionX;
+ int canCatch;
+ int isCollision;
+ int x2;
+ int id;
+};
+
+class GnapEngine : public Engine {
+protected:
+ Common::Error run();
+ virtual bool hasFeature(EngineFeature f) const;
+public:
+ GnapEngine(OSystem *syst, const ADGameDescription *gd);
+ ~GnapEngine();
+private:
+ const ADGameDescription *_gameDescription;
+ Graphics::PixelFormat _pixelFormat;
+public:
+ Common::RandomSource *_random;
+
+ Common::PEResources *_exe;
+
+ DatManager *_dat;
+ SpriteCache *_spriteCache;
+ SoundCache *_soundCache;
+ SequenceCache *_sequenceCache;
+ GameSys *_gameSys;
+ SoundMan *_soundMan;
+
+ int _lastUpdateClock;
+
+ int _debugLevel;
+ bool _gameDone;
+
+ byte _keyPressState[512];
+ byte _keyDownState[512];
+
+ bool _isPaused;
+ Graphics::Surface *_pauseSprite;
+ int _timers[kMaxTimers], _savedTimers[kMaxTimers];
+
+ MouseButtonState _mouseButtonState;
+ MouseButtonState _mouseClickState;
+
+ uint32 _keyStatus1[2];
+
+ bool _sceneSavegameLoaded, _wasSavegameLoaded;
+
+ Graphics::Surface *_backgroundSurface;
+ int _prevSceneNum, _currentSceneNum, _newSceneNum;
+ bool _sceneDone, _sceneWaiting;
+
+ uint32 _inventory, _gameFlags;
+
+ Hotspot _hotspots[20];
+ Common::Point _hotspotsWalkPos[20];
+ int _hotspotsCount;
+ int _sceneClickedHotspot;
+
+ bool _isWaiting;
+ bool _isLeavingScene;
+
+ bool _isStockDatLoaded;
+
+ int _newCursorValue, _cursorValue;
+
+ int _verbCursor, _cursorIndex;
+ int _mouseX, _mouseY;
+ int _leftClickMouseX, _leftClickMouseY;
+
+ Graphics::Surface *_grabCursorSprite;
+ int _currGrabCursorX, _currGrabCursorY;
+ int _grabCursorSpriteIndex, _newGrabCursorSpriteIndex;
+
+ Graphics::Surface *_fullScreenSprite;
+ int _fullScreenSpriteId;
+
+ int _deviceX1, _deviceY1, _deviceX2, _deviceY2;
+
+ int _soundTimerIndexA;
+ int _soundTimerIndexB;
+ int _soundTimerIndexC;
+ int _idleTimerIndex;
+
+ void updateEvents();
+ void gameUpdateTick();
+ void saveTimers();
+ void restoreTimers();
+
+ void pauseGame();
+ void resumeGame();
+ void updatePause();
+
+ int getRandom(int max);
+
+ int readSavegameDescription(int savegameNum, Common::String &description);
+ int loadSavegame(int savegameNum);
+
+ void delayTicks(int a1);
+ void delayTicksCursor(int a1);
+
+ void setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags = 0,
+ int16 walkX = -1, int16 walkY = -1);
+ int getHotspotIndexAtPos(int16 x, int16 y);
+ void updateCursorByHotspot();
+ int getClickedHotspotId();
+
+ int getInventoryItemSpriteNum(int index);
+
+ void updateMouseCursor();
+ void setVerbCursor(int verbCursor);
+ void setCursor(int cursorIndex);
+ void showCursor();
+ void hideCursor();
+
+ void setGrabCursorSprite(int index);
+ void createGrabCursorSprite(int spriteId);
+ void freeGrabCursorSprite();
+ void updateGrabCursorSprite(int x, int y);
+
+ void invClear();
+ void invAdd(int itemId);
+ void invRemove(int itemId);
+ bool invHas(int itemId);
+
+ void clearFlags();
+ void setFlag(int num);
+ void clearFlag(int num);
+ bool isFlag(int num);
+
+ Graphics::Surface *addFullScreenSprite(int resourceId, int id);
+ void removeFullScreenSprite();
+ void showFullScreenSprite(int resourceId);
+
+ void queueInsertDeviceIcon();
+ void insertDeviceIconActive();
+ void removeDeviceIconActive();
+ void setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int y2);
+
+ int getSequenceTotalDuration(int resourceId);
+
+ bool isSoundPlaying(int resourceId);
+ void playSound(int resourceId, bool looping);
+ void stopSound(int resourceId);
+ void setSoundVolume(int resourceId, int volume);
+
+ void updateTimers();
+
+ void initGameFlags(int num);
+ void loadStockDat();
+
+ void mainLoop();
+ void initScene();
+ void endSceneInit();
+ void afterScene();
+
+ int initSceneLogic();
+ void runSceneLogic();
+
+ void checkGameKeys();
+
+ void startSoundTimerA(int timerIndex);
+ int playSoundA();
+ void startSoundTimerB(int timerIndex);
+ int playSoundB();
+ void startSoundTimerC(int timerIndex);
+ int playSoundC();
+ void startIdleTimer(int timerIndex);
+ void updateIdleTimer();
+
+ void screenEffect(int dir, byte r, byte g, byte b);
+
+ bool isKeyStatus1(int key);
+ bool isKeyStatus2(int key);
+ void clearKeyStatus1(int key);
+ void clearAllKeyStatus1();
+
+ void deleteSurface(Graphics::Surface **surface);
+
+ // Menu
+ int _menuStatus;
+ int _menuSpritesIndex;
+ bool _menuDone;
+ Graphics::Surface *_menuBackgroundSurface;
+ Graphics::Surface *_menuQuitQuerySprite;
+ Graphics::Surface *_largeSprite;
+ Graphics::Surface *_menuSaveLoadSprite;
+ Graphics::Surface *_menuSprite2;
+ Graphics::Surface *_menuSprite1;
+ char _savegameFilenames[7][30];
+ Graphics::Surface *_savegameSprites[7];
+ Graphics::Surface *_spriteHandle;
+ Graphics::Surface *_cursorSprite;
+ int _menuInventoryIndices[30];
+ Graphics::Surface *_menuInventorySprites[30];
+ int _savegameIndex;
+ void createMenuSprite();
+ void freeMenuSprite();
+ void initMenuHotspots1();
+ void initMenuHotspots2();
+ void initMenuQuitQueryHotspots();
+ void initSaveLoadHotspots();
+ void drawInventoryFrames();
+ void insertInventorySprites();
+ void removeInventorySprites();
+ void runMenu();
+ void updateMenuStatusInventory();
+ void updateMenuStatusMainMenu();
+ void updateMenuStatusSaveGame();
+ void updateMenuStatusLoadGame();
+ void updateMenuStatusQueryQuit();
+
+ // Grid common
+ int _gnapGridX, _gnapGridY;
+ int _platGridX, _platGridY;
+ int _gridMinX, _gridMinY;
+ int _gridMaxX, _gridMaxY;
+ bool isPointBlocked(int gridX, int gridY);
+ void initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gridMaxY);
+ bool testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2);
+
+ // Gnap walking
+ int _gnapWalkNodesCount;
+ GridStruct _gnapWalkNodes[kMaxGridStructs];
+ int _gnapX, _gnapY;
+ int _gnapWalkDestX, _gnapWalkDestY;
+ int _gnapWalkDeltaX, _gnapWalkDeltaY, _gnapWalkDirX, _gnapWalkDirY, _gnapWalkDirXIncr, _gnapWalkDirYIncr;
+
+ int getGnapWalkSequenceId(int deltaX, int deltaY);
+ int getGnapWalkStopSequenceId(int deltaX, int deltaY);
+ int getGnapWalkFacing(int deltaX, int deltaY);
+ bool gridSub41F08B(int gridX, int gridY);
+ bool gridSub41F5FC(int gridX, int gridY, int index);
+ bool gridSub41FAD5(int gridX, int gridY, int index);
+ bool gnapFindPath3(int gridX, int gridY);
+ bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
+ void gnapWalkStep();
+
+ // Beaver walking
+ int _platWalkNodesCount;
+ GridStruct _platWalkNodes[kMaxGridStructs];
+ int _platX, _platY;
+ int _platWalkDestX, _platWalkDestY;
+ int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
+
+ int getBeaverWalkSequenceId(int deltaX, int deltaY);
+ bool gridSub423750(int gridX, int gridY);
+ bool gridSub423CC1(int gridX, int gridY, int index);
+ bool gridSub42419A(int gridX, int gridY, int index);
+ bool platFindPath3(int gridX, int gridY);
+ bool platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
+ void platypusWalkStep();
+ void beaverMakeRoom();
+
+ // Gnap
+ int _gnapIdleFacing;
+ int _gnapActionStatus;
+ int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
+ int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
+ int _gnapRandomValue;
+
+ int getGnapSequenceId(int kind, int gridX, int gridY);
+ int getGnapShowSequenceId(int index, int gridX, int gridY);
+ void gnapIdle();
+ void gnapActionIdle(int sequenceId);
+ void playGnapSequence(int sequenceId);
+ void playGnapImpossible(int gridX, int gridY);
+ void playGnapScratchingHead(int gridX, int gridY);
+ void playGnapMoan1(int gridX, int gridY);
+ void playGnapMoan2(int gridX, int gridY);
+ void playGnapBrainPulsating(int gridX, int gridY);
+ void playGnapPullOutDevice(int gridX, int gridY);
+ void playGnapPullOutDeviceNonWorking(int gridX, int gridY);
+ void playGnapUseDevice(int gridX, int gridY);
+ void playGnapIdle(int gridX, int gridY);
+ void playGnapShowItem(int itemIndex, int gridLookX, int gridLookY);
+ void playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
+ void updateGnapIdleSequence();
+ void updateGnapIdleSequence2();
+ void initGnapPos(int gridX, int gridY, int facing);
+ void gnapInitBrainPulseRndValue();
+ void gnapUseDeviceOnBeaver();
+ void doCallback(int callback);
+ bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
+ void gnapKissPlatypus(int callback);
+ void gnapUseJointOnPlatypus();
+ void gnapUseDisguiseOnPlatypus();
+
+ // Beaver
+ int _beaverFacing;
+ int _beaverActionStatus;
+ int _beaverSequenceId, _beaverSequenceDatNum, _beaverId;
+ int getBeaverSequenceId(int kind, int gridX, int gridY);
+ void playBeaverSequence(int sequenceId);
+ void updateBeaverIdleSequence();
+ void beaverSub426234();
+ void initBeaverPos(int gridX, int gridY, int facing);
+
+ // Scenes
+
+ int _toyUfoNextSequenceId, _toyUfoSequenceId;
+ int _toyUfoId;
+ int _toyUfoActionStatus;
+ int _toyUfoX;
+ int _toyUfoY;
+
+ void initGlobalSceneVars();
+
+ bool sceneXX_sub_4466B1();
+ void sceneXX_playRandomSound(int timerIndex);
+ void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
+
+ // Scene 0
+ int scene00_init();
+
+ // Scene 1
+ int _s01_pigsIdCtr, _s01_smokeIdCtr;
+ Graphics::Surface *_s01_spaceshipSurface;
+ int scene01_init();
+ void scene01_updateHotspots();
+ void scene01_run();
+ void scene01_updateAnimations();
+
+ // Scene 2
+ int _s02_truckGrillCtr;
+ int _s02_nextChickenSequenceId, _s02_currChickenSequenceId;
+ int _s02_gnapTruckSequenceId;
+ int scene02_init();
+ void scene02_updateHotspots();
+ void scene02_run();
+ void scene02_updateAnimations();
+
+ // Scene 3
+ bool _s03_platypusHypnotized;
+ bool _s03_platypusScared;
+ int _s03_nextPlatSequenceId;
+ int _s03_nextFrogSequenceId, _s03_currFrogSequenceId;
+ int scene03_init();
+ void scene03_updateHotspots();
+ void scene03_run();
+ void scene03_updateAnimations();
+
+ // Scene 4
+ bool _s04_triedWindow;
+ int _s04_dogIdCtr;
+ int _s04_nextDogSequenceId, _s04_currDogSequenceId;
+ int scene04_init();
+ void scene04_updateHotspots();
+ void scene04_run();
+ void scene04_updateAnimations();
+
+ // Scene 5
+ int _s05_nextChickenSequenceId, _s05_currChickenSequenceId;
+ int scene05_init();
+ void scene05_updateHotspots();
+ void scene05_run();
+ void scene05_updateAnimations();
+
+ // Scene 6
+ bool _s06_horseTurnedBack;
+ int _s06_nextPlatSequenceId;
+ int _s06_nextHorseSequenceId, _s06_currHorseSequenceId;
+ int scene06_init();
+ void scene06_updateHotspots();
+ void scene06_run();
+ void scene06_updateAnimations();
+
+ // Scene 7
+ int scene07_init();
+ void scene07_updateHotspots();
+ void scene07_run();
+ void scene07_updateAnimations();
+
+ // Scene 8
+ int _s08_nextDogSequenceId, _s08_currDogSequenceId;
+ int _s08_nextManSequenceId, _s08_currManSequenceId;
+ int scene08_init();
+ void scene08_updateHotspots();
+ void scene08_updateAnimationsCb();
+ void scene08_run();
+ void scene08_updateAnimations();
+
+ // Scene 9
+ int scene09_init();
+ void scene09_updateHotspots();
+ void scene09_run();
+ void scene09_updateAnimations();
+
+ // Scene 10
+ int _s10_nextCookSequenceId, _s10_currCookSequenceId;
+ int scene10_init();
+ void scene10_updateHotspots();
+ void scene10_run();
+ void scene10_updateAnimations();
+ void scene10_updateAnimationsCb();
+
+ // Scene 11
+ int _s11_billardBallCtr;
+ int _s11_nextHookGuySequenceId, _s11_currHookGuySequenceId;
+ int _s11_nextGoggleGuySequenceId, _s11_currGoggleGuySequenceId;
+ int scene11_init();
+ void scene11_updateHotspots();
+ void scene11_run();
+ void scene11_updateAnimations();
+
+ // Scene 12
+ int _s12_nextBeardGuySequenceId, _s12_currBeardGuySequenceId;
+ int _s12_nextToothGuySequenceId, _s12_currToothGuySequenceId;
+ int _s12_nextBarkeeperSequenceId, _s12_currBarkeeperSequenceId;
+ int scene12_init();
+ void scene12_updateHotspots();
+ void scene12_run();
+ void scene12_updateAnimations();
+
+ // Scene 13
+ int _s13_backToiletCtr;
+ int scene13_init();
+ void scene13_updateHotspots();
+ void scene13_showScribble();
+ void scene13_run();
+ void scene13_updateAnimations();
+
+ // Scene 14
+ int scene14_init();
+ void scene14_updateHotspots();
+ void scene14_run();
+ void scene14_updateAnimations();
+
+ // Scene 15
+ int _s15_nextRecordSequenceId, _s15_currRecordSequenceId;
+ int _s15_nextSlotSequenceId, _s15_currSlotSequenceId;
+ int _s15_nextUpperButtonSequenceId, _s15_currUpperButtonSequenceId;
+ int _s15_nextLowerButtonSequenceId, _s15_currLowerButtonSequenceId;
+ int scene15_init();
+ void scene15_updateHotspots();
+ void scene15_run();
+ void scene15_updateAnimations();
+
+ // Scene 16
+ void scene16_initCutscene();
+
+ // Scene 17
+ bool _s17_canTryGetWrench;
+ int _s17_wrenchCtr, _s17_platPhoneCtr, _s17_platTryGetWrenchCtr;
+ int _s17_nextPhoneSequenceId, _s17_currPhoneSequenceId;
+ int _s17_nextWrenchSequenceId, _s17_currWrenchSequenceId;
+ int _s17_nextCarWindowSequenceId, _s17_currCarWindowSequenceId;
+ int scene17_init();
+ void scene17_updateHotspots();
+ void scene17_update();
+ void scene17_platHangUpPhone();
+ void scene17_run();
+ void scene17_updateAnimations();
+
+ // Scene 18
+ int _s18_garbageCanPos;
+ int _s18_platPhoneCtr;
+ int _s18_platPhoneIter;
+ int _s18_nextPhoneSequenceId, _s18_currPhoneSequenceId;
+ Graphics::Surface *_s18_cowboyHatSurface;
+ int scene18_init();
+ void scene18_updateHotspots();
+ void scene18_gnapCarryGarbageCanTo(int a1, int arg4, int animationIndex, int argC, int a5);
+ void scene18_putDownGarbageCan(int animationIndex);
+ void scene18_platEndPhoning(int a1);
+ void scene18_closeHydrantValve();
+ void scene18_waitForGnapAction();
+ void scene18_run();
+ void scene18_updateAnimations();
+
+ // Scene 19
+ int _s19_currShopAssistantSequenceId, _s19_nextShopAssistantSequenceId;
+ int _s19_toyGrabCtr;
+ int _s19_shopAssistantCtr;
+ Graphics::Surface *_s19_pictureSurface;
+ int scene19_init();
+ void scene19_updateHotspots();
+ void scene19_run();
+ void scene19_updateAnimations();
+
+ // Scene 20
+ int _s20_currStonerGuySequenceId, _s20_nextStonerGuySequenceId;
+ int _s20_currGroceryStoreGuySequenceId, _s20_nextGroceryStoreGuySequenceId;
+ int _s20_stonerGuyCtr;
+ bool _s20_stonerGuyShowingJoint;
+ int _s20_groceryStoreGuyCtr;
+ int scene20_init();
+ void scene20_updateHotspots();
+ void scene20_updateAnimationsCb();
+ void scene20_stopSounds();
+ void scene20_run();
+ void scene20_updateAnimations();
+
+ // Scene 21
+ int _s21_currOldLadySequenceId, _s21_nextOldLadySequenceId;
+ int scene21_init();
+ void scene21_updateHotspots();
+ void scene21_run();
+ void scene21_updateAnimations();
+
+ // Scene 22
+ int _s22_currCashierSequenceId, _s22_nextCashierSequenceId;
+ bool _s22_caughtBefore;
+ int _s22_cashierCtr;
+ int scene22_init();
+ void scene22_updateHotspots();
+ void scene22_run();
+ void scene22_updateAnimations();
+
+ // Scene 23
+ int _s23_currStoreClerkSequenceId, _s23_nextStoreClerkSequenceId;
+ int scene23_init();
+ void scene23_updateHotspots();
+ void scene23_run();
+ void scene23_updateAnimations();
+
+ // Scene 24
+ int _s24_currWomanSequenceId, _s24_nextWomanSequenceId;
+ int _s24_boySequenceId;
+ int _s24_girlSequenceId;
+ int scene24_init();
+ void scene24_updateHotspots();
+ void scene24_run();
+ void scene24_updateAnimations();
+
+ // Scene 25
+ int _s25_currTicketVendorSequenceId, _s25_nextTicketVendorSequenceId;
+ int scene25_init();
+ void scene25_updateHotspots();
+ void scene25_playAnims(int index);
+ void scene25_run();
+ void scene25_updateAnimations();
+
+ // Scene 26
+ int _s26_currKidSequenceId, _s26_nextKidSequenceId;
+ int scene26_init();
+ void scene26_updateHotspots();
+ void scene26_run();
+ void scene26_updateAnimations();
+
+ // Scene 27
+ int _s27_nextJanitorSequenceId;
+ int _s27_currJanitorSequenceId;
+ int scene27_init();
+ void scene27_updateHotspots();
+ void scene27_run();
+ void scene27_updateAnimations();
+
+ // Scene 28
+ int _s28_dword_47EA5C;
+ int _s28_dword_47EA60;
+ int _s28_dword_474938;
+ int scene28_init();
+ void scene28_updateHotspots();
+ void scene28_run();
+ void scene28_updateAnimations();
+
+ // Scene 29
+ int _s29_dword_47EA74;
+ int _s29_dword_47EA78;
+ int _s29_dword_47EA7C;
+ int _s29_dword_47EA80;
+ int scene29_init();
+ void scene29_updateHotspots();
+ void scene29_run();
+ void scene29_updateAnimations();
+
+ // Scene 30
+ int _s30_dword_47EA88;
+ int _s30_dword_47EA8C;
+ int scene30_init();
+ void scene30_updateHotspots();
+ void scene30_run();
+ void scene30_updateAnimations();
+
+ // Scene 31
+ int _s31_dword_47EAA8;
+ int _s31_dword_47EAAC;
+ int _s31_dword_47EAB0;
+ bool _s31_beerGuyDistracted;
+ int _s31_dword_474940;
+ int _s31_dword_47EAB4;
+ int scene31_init();
+ void scene31_updateHotspots();
+ void scene31_run();
+ void scene31_updateAnimations();
+
+ // Scene 32
+ int _s32_dword_47EADC;
+ int scene32_init();
+ void scene32_updateHotspots();
+ void scene32_run();
+ void scene32_updateAnimations();
+
+ int _s33_dword_47EAE4;
+ int _s33_dword_47EAE8;
+ int _s33_dword_47EAEC;
+ int scene33_init();
+ void scene33_updateHotspots();
+ void scene33_run();
+ void scene33_updateAnimations();
+
+ // Scene 38
+ int scene38_init();
+ void scene38_updateHotspots();
+ void scene38_run();
+ void scene38_updateAnimations();
+
+ // Scene 39
+ int _s39_dword_47EAF8;
+ int _s39_dword_47EAFC;
+ int scene39_init();
+ void scene39_updateHotspots();
+ void scene39_run();
+ void scene39_updateAnimations();
+
+ // Scene 40
+ int scene40_init();
+ void scene40_updateHotspots();
+ void scene40_run();
+ void scene40_updateAnimations();
+
+ // Scene 4x
+ void toyUfoSetStatus(int a1);
+ int toyUfoGetSequenceId();
+ bool toyUfoCheckTimer();
+ void toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a6, int animationIndex);
+
+ // Scene 41
+ int _s41_dword_47F2C0;
+ int _s41_dword_47F2C4;
+ int _s41_dword_47F2C8;
+ int _s41_dword_47F2CC;
+ int scene41_init();
+ void scene41_updateHotspots();
+ void scene41_run();
+ void scene41_updateAnimations();
+
+ // Scene 42
+ int _s42_dword_47F2B8;
+ int _s42_dword_47F2BC;
+ int scene42_init();
+ void scene42_updateHotspots();
+ void scene42_run();
+ void scene42_updateAnimations();
+
+ // Scene 43
+ int _s43_dword_47F2B0;
+ int _s43_dword_47F2B4;
+ int scene43_init();
+ void scene43_updateHotspots();
+ void scene43_run();
+ void scene43_updateAnimations();
+
+ // Scene 44
+ int _s44_dword_47EB04;
+ int _s44_dword_47EB08;
+ int _s44_dword_47EB0C;
+ int _s44_dword_47EB10;
+ int scene44_init();
+ void scene44_updateHotspots();
+ void scene44_run();
+ void scene44_updateAnimations();
+
+ // Scene 45
+ int _s45_dword_4749BC;
+ int _s45_dword_4749C0;
+ int scene45_init();
+ void scene45_updateHotspots();
+ void scene45_run();
+ void scene45_updateAnimations();
+
+ // Scene 46
+ int _s46_dword_47EB18;
+ int _s46_dword_47EB1C;
+ int _s46_dword_47EB20;
+ int _s46_dword_47EB24;
+ int scene46_init();
+ void scene46_updateHotspots();
+ void scene46_run();
+ void scene46_updateAnimations();
+
+ // Scene 47
+ void scene47_initCutscene1();
+ void scene47_initCutscene2();
+ void scene47_initCutscene3();
+ void scene47_initCutscene4();
+ void scene47_initCutscene5();
+ void scene47_initCutscene6();
+ void scene47_initCutscene7();
+
+ // Scene 48
+ void scene48_initCutscene();
+
+ // Scene 49
+ int _s49_scoreBarPos, _s49_scoreLevel, _s49_scoreBarFlash;
+ int _s49_obstacleIndex;
+ Scene49Obstacle _s49_obstacles[5];
+ int _s49_truckSequenceId, _s49_truckId, _s49_truckLaneNum;
+ int scene49_init();
+ void scene49_updateHotspots();
+ void scene49_checkObstacles();
+ void scene49_updateObstacle(int i);
+ void scene49_increaseScore(int amount);
+ void scene49_decreaseScore(int amount);
+ void scene49_refreshScoreBar();
+ void scene49_clearObstacle(int index);
+ void scene49_run();
+ void scene49_updateAnimations();
+
+ // Scene 50
+ bool _s50_fightDone;
+ int _s50_timesPlayed, _s50_timesPlayedModifier;
+ int _s50_attackCounter;
+ int _s50_roundNum, _s50_timeRemaining;
+ int _s50_leftTongueRoundsWon, _s50_rightTongueRoundsWon;
+ int _s50_leftTongueEnergyBarPos, _s50_rightTongueEnergyBarPos;
+ int _s50_leftTongueSequenceId, _s50_leftTongueId;
+ int _s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueNextIdCtr;
+ int _s50_rightTongueSequenceId, _s50_rightTongueId;
+ int _s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueNextIdCtr;
+ int _s50_leftTongueEnergy, _s50_rightTongueEnergy;
+ int scene50_init();
+ void scene50_updateHotspots();
+ bool scene50_tongueWinsRound(int tongueNum);
+ void scene50_playWinAnim(int tongueNum, bool fightOver);
+ void scene50_delayTicks();
+ void scene50_initRound();
+ bool scene50_updateCountdown();
+ void scene50_drawCountdown(int value);
+ void scene50_playTonguesIdle();
+ void scene50_playRoundAnim(int roundNum);
+ bool scene50_updateEnergyBars(int newLeftBarPos, int newRightBarPos);
+ void scene50_waitForAnim(int animationIndex);
+ int scene50_checkInput();
+ int scene50_getRightTongueAction();
+ void scene50_updateAnimations();
+ int scene50_getRightTongueActionTicks();
+ int scene50_getLeftTongueNextId();
+ int scene50_getRightTongueNextId();
+ void scene50_playWinBadgeAnim(int tongueNum);
+ void scene50_run();
+
+ // Scene 51
+ int _s51_cashAmount;
+ int _s51_digits[4];
+ int _s51_digitSequenceIds[4];
+ int _s51_guySequenceId, _s51_guyNextSequenceId;
+ int _s51_itemsCaughtCtr;
+ int _s51_dropSpeedTicks;
+ int _s51_nextDropItemKind, _s51_itemInsertX, _s51_itemInsertDirection;
+ int _s51_platypusSequenceId, _s51_platypusNextSequenceId, _s51_platypusJumpSequenceId;
+ bool _s51_dropLoseCash;
+ int _s51_itemsCtr,_s51_itemsCtr1, _s51_itemsCtr2;
+ Scene51Item _s51_items[6];
+
+ int scene51_init();
+ void scene51_updateHotspots();
+ void scene51_clearItem(Scene51Item *item);
+ void scene51_dropNextItem();
+ void scene51_updateItemAnimations();
+ int scene51_checkCollision(int sequenceId);
+ void scene51_updateItemAnimation(Scene51Item *item, int index);
+ void scene51_removeCollidedItems();
+ int scene51_itemIsCaught(Scene51Item *item);
+ bool scene51_isJumpingRight(int sequenceId);
+ bool scene51_isJumpingLeft(int sequenceId);
+ bool scene51_isJumping(int sequenceId);
+ void scene51_waitForAnim(int animationIndex);
+ int scene51_getPosRight(int sequenceId);
+ int scene51_getPosLeft(int sequenceId);
+ void scene51_playIntroAnim();
+ void scene51_updateGuyAnimation();
+ int scene51_incCashAmount(int sequenceId);
+ void scene51_winMinigame();
+ void scene51_playCashAppearAnim();
+ void scene51_updateCash(int amount);
+ void scene51_drawDigit(int digit, int position);
+ void scene51_initCashDisplay();
+ void scene51_run();
+
+ // Scene 52
+ int _s52_liveAlienRows;
+ int _s52_gameScore;
+ bool _s52_soundToggle;
+ int _s52_arcadeScreenLeft;
+ int _s52_arcadeScreenRight;
+ int _s52_arcadeScreenBottom;
+ int _s52_shipsLeft;
+ int _s52_shieldSpriteIds[3];
+ int _s52_shieldPosX[3];
+ int _s52_shipPosX;
+ int _s52_shipCannonFired, _s52_shipCannonPosX, _s52_shipCannonPosY;
+ int _s52_shipCannonFiring;
+ int _s52_shipCannonWidth, _s52_shipCannonHeight;
+ int _s52_shipCannonTopY;
+ int _s52_shipMidX, _s52_shipMidY;
+ bool _s52_shipFlag;
+ bool _s52_aliensInitialized;
+ int _s52_alienSpeed, _s52_alienDirection;
+ int _s52_alienWidth, _s52_alienHeight;
+ int _s52_alienLeftX, _s52_alienTopY;
+ int _s52_alienRowDownCtr;
+ int _s52_alienRowKind[7];
+ int _s52_alienRowAnims[7];
+ int _s52_alienRowIds[7];
+ int _s52_alienRowXOfs[7];
+ int _s52_alienCannonFired[3];
+ int _s52_alienCannonPosX[3];
+ int _s52_alienCannonPosY[3];
+ int _s52_alienCannonSequenceIds[3];
+ int _s52_alienCannonIds[3];
+ bool _s52_alienWave, _s52_alienSingle;
+ int _s52_alienCounter;
+ bool _s52_bottomAlienFlag;
+ int _s52_aliensCount;
+ int _s52_items[8][5];
+ int _s52_nextUfoSequenceId, _s52_ufoSequenceId;
+ int scene52_init();
+ void scene52_updateHotspots();
+ void scene52_update();
+ void scene52_initShipCannon(int bottomY);
+ void scene52_initAlienCannons();
+ void scene52_fireShipCannon(int posX);
+ void scene52_fireAlienCannon();
+ int scene52_getFreeShipCannon();
+ int scene52_getFreeAlienCannon();
+ void scene52_updateShipCannon();
+ void scene52_updateAlienCannons();
+ void scene52_initAliens();
+ void scene52_initAlienRowKind(int rowNum, int alienKind);
+ void scene52_insertAlienRow(int rowNum);
+ void scene52_insertAlienRowAliens(int rowNum);
+ void scene52_updateAlienRow(int rowNum);
+ void scene52_moveDownAlienRow();
+ int scene52_updateHitAlien();
+ int scene52_getHitAlienNum(int rowNum);
+ int scene52_alienCannonHitShip(int cannonNum);
+ int scene52_alienCannonHitShield(int cannonNum);
+ int scene52_shipCannonHitShield(int cannonNum);
+ int scene52_shipCannonHitAlien();
+ void scene52_shipExplode();
+ int scene52_checkAlienRow(int a1);
+ void scene52_updateAlienRowXOfs();
+ void scene52_initAlienSize();
+ void scene52_playSound();
+ void scene52_updateAliens();
+ void scene52_updateAlien(int rowNum);
+ void scene52_loseShip();
+ void scene52_initShields();
+ void scene52_initAnims();
+ void scene52_drawScore(int a1);
+ void scene52_run();
+
+ // Scene 53
+ int _s53_currHandSequenceId;
+ bool _s53_isGnapPhoning;
+ int _s53_callsMadeCtr;
+ uint _s53_callsRndUsed;
+ int scene53_init();
+ void scene53_updateHotspots();
+ int scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum);
+ int scene53_getRandomCallIndex();
+ void scene53_runRandomCall();
+ void scene53_runChitChatLine();
+ void scene53_run();
+
+ // Scene 54
+ void scene54_initCutscene1();
+ void scene54_initCutscene2();
+
+ // Scene 99
+ int _s99_itemsCount;
+ int _s99_dword_47F2F0[16];
+ int _s99_dword_47F330[16];
+ int _s99_dword_47F370[50];
+ byte _s99_canSkip[16];
+ int cutscene_init();
+ void cutscene_run();
+
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_H
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
new file mode 100644
index 0000000..522c72c
--- /dev/null
+++ b/engines/gnap/grid.cpp
@@ -0,0 +1,1392 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/datarchive.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+void GnapEngine::initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gridMaxY) {
+ _gridMinX = gridMinX;
+ _gridMinY = gridMinY;
+ _gridMaxX = gridMaxX;
+ _gridMaxY = gridMaxY;
+ _gnapGridX = 410 - gridMinX;
+ _gnapGridY = 450 - gridMinY;
+ _platGridX = 396 - gridMinX;
+ _platGridY = 347 - gridMinY;
+}
+
+int GnapEngine::getGnapWalkSequenceId(int deltaX, int deltaY) {
+ static const int _gnapWalkSequenceIds[9] = {
+ 0x7B2, 0x000, 0x7B4,
+ 0x7AD, 0x000, 0x7AE,
+ 0x7B1, 0x000, 0x7B3
+ };
+ // CHECKME This is a little weird
+ return _gnapWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
+int GnapEngine::getGnapWalkStopSequenceId(int deltaX, int deltaY) {
+ static const int _gnapWalkStopSequenceIds[9] = {
+ 0x7BC, 0x7BA, 0x7BA,
+ 0x7BC, 0x000, 0x7BA,
+ 0x7BB, 0x7B9, 0x7B9
+ };
+ // CHECKME This is a little weird
+ return _gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
+int GnapEngine::getGnapWalkFacing(int deltaX, int deltaY) {
+ static const int _gnapWalkFacings[9] = {
+ 5, 3, 3,
+ 5, 0, 3,
+ 7, 1, 1
+ };
+ // CHECKME This is a little weird
+ return _gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
+}
+
+bool GnapEngine::isPointBlocked(int gridX, int gridY) {
+
+ if (gridX < 0 || gridX >= _gridMaxX || gridY < 0 || gridY >= _gridMaxY)
+ return true;
+
+ if ((gridX == _gnapX && gridY == _gnapY) || (gridX == _platX && gridY == _platY))
+ return true;
+
+ const int x = _gridMinX + 75 * gridX;
+ const int y = _gridMinY + 48 * gridY;
+
+ for (int i = 0; i < _hotspotsCount; ++i) {
+ if (x >= _hotspots[i].x1 && x <= _hotspots[i].x2 &&
+ y >= _hotspots[i].y1 && y <= _hotspots[i].y2 &&
+ !(_hotspots[i].flags & SF_WALKABLE))
+ return true;
+ }
+
+ return false;
+
+}
+
+bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
+ bool result = false;
+
+ _gnapWalkNodesCount = 0;
+ _gnapWalkDirXIncr = 0;
+ _gnapWalkDirYIncr = 0;
+ _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
+ _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
+
+ if (_gnapWalkDeltaX)
+ _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
+ else
+ _gnapWalkDirX = 0;
+
+ if (_gnapWalkDeltaY)
+ _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
+ else
+ _gnapWalkDirY = 0;
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkDirYIncr;
+ } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else {
+ _gnapWalkDeltaX = _gnapWalkDirXIncr;
+ _gnapWalkDeltaY = _gnapWalkDirYIncr;
+ --_gnapWalkNodesCount;
+ }
+ } else {
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else {
+ _gnapWalkDeltaX = _gnapWalkDirXIncr;
+ _gnapWalkDeltaY = _gnapWalkDirYIncr;
+ --_gnapWalkNodesCount;
+ }
+ }
+ ++_gnapWalkNodesCount;
+ }
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkNodesCount;
+ } else {
+ _gnapWalkDeltaX = _gnapWalkDirXIncr;
+ }
+ }
+
+ while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ ++_gnapWalkNodesCount;
+ } else {
+ _gnapWalkDeltaY = _gnapWalkDirYIncr;
+ }
+ }
+
+ if (gridX + _gnapWalkDirX * _gnapWalkDirXIncr != _gnapWalkDestX || gridY + _gnapWalkDirY * _gnapWalkDirYIncr != _gnapWalkDestY) {
+ _gnapWalkDestX = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkDestY = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ result = false;
+ } else {
+ result = true;
+ }
+
+ return result;
+}
+
+bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
+ _gnapWalkNodesCount = index;
+ _gnapWalkDirXIncr = 0;
+ _gnapWalkDirYIncr = 0;
+ _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
+ _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
+
+ if (_gnapWalkDeltaX)
+ _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
+ else
+ _gnapWalkDirX = 0;
+
+ if (_gnapWalkDeltaY)
+ _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
+ else
+ _gnapWalkDirY = 0;
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkDirYIncr;
+ } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else
+ return false;
+ } else {
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else
+ return false;
+ }
+ ++_gnapWalkNodesCount;
+ }
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ return true;
+}
+
+bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
+ _gnapWalkNodesCount = index;
+ _gnapWalkDirXIncr = 0;
+ _gnapWalkDirYIncr = 0;
+ _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
+ _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
+
+ if (_gnapWalkDeltaX)
+ _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
+ else
+ _gnapWalkDirX = 0;
+
+ if (_gnapWalkDeltaY)
+ _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
+ else
+ _gnapWalkDirY = 0;
+
+ while (_gnapWalkDeltaY < _gnapWalkDeltaX - _gnapWalkDirXIncr) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, gridY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_gnapWalkDeltaX < _gnapWalkDeltaY - _gnapWalkDirYIncr) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(gridX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkDirYIncr;
+ } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else
+ return false;
+ } else {
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ } else
+ return false;
+ }
+ ++_gnapWalkNodesCount;
+ }
+
+ while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ ++_gnapWalkDirXIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
+ _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ ++_gnapWalkDirYIncr;
+ ++_gnapWalkNodesCount;
+ } else
+ return false;
+ }
+
+ return true;
+}
+
+bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
+ int gridIncr = 1;
+ bool done = false;
+
+ while (!done && gridIncr < _gridMaxX) {
+ if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41F5FC(gridX + gridIncr, gridY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41F5FC(gridX - gridIncr, gridY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41F5FC(gridX, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = 0;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41F5FC(gridX, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = 0;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41FAD5(gridX + gridIncr, gridY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41FAD5(gridX - gridIncr, gridY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41FAD5(gridX, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = 0;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41FAD5(gridX, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = 0;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY + i;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX + i;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = 1;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _gnapWalkNodes[i].gridX1 = gridX - i;
+ _gnapWalkNodes[i].gridY1 = gridY - i;
+ _gnapWalkNodes[i].deltaX = -1;
+ _gnapWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ ++gridIncr;
+ }
+
+ return done;
+}
+
+bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
+
+ int datNum = flags & 3;
+ bool done = false;
+
+ _timers[2] = 200;
+ _timers[3] = 300;
+
+ if (gridX < 0)
+ gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
+
+ if (gridY < 0)
+ gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
+
+ _gnapWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
+ _gnapWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
+
+ if (animationIndex >= 0 && _gnapWalkDestX == _platX && _gnapWalkDestY == _platY)
+ beaverMakeRoom();
+
+ if (gridSub41F5FC(_gnapX, _gnapY, 0))
+ done = true;
+
+ if (!done && gridSub41FAD5(_gnapX, _gnapY, 0))
+ done = true;
+
+ if (!done && gnapFindPath3(_gnapX, _gnapY))
+ done = true;
+
+ if (!done && gridSub41F08B(_gnapX, _gnapY))
+ done = true;
+
+ gnapIdle();
+
+ int gnapSequenceId = _gnapSequenceId;
+ int gnapId = _gnapId;
+ int gnapSequenceDatNum = _gnapSequenceDatNum;
+
+ debug(0, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
+
+ for (int index = 0; index < _gnapWalkNodesCount; ++index) {
+ _gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;
+ if (_gnapWalkNodes[index].deltaX == 1 && _gnapWalkNodes[index].deltaY == 0) {
+ if (index % 2) {
+ _gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index].id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ _gnapWalkNodes[index].sequenceId = 0x7AB;
+ gnapSequenceId = 0x7AB;
+ } else {
+ _gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index].id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ _gnapWalkNodes[index].sequenceId = 0x7AC;
+ gnapSequenceId = 0x7AC;
+ }
+ } else if (_gnapWalkNodes[index].deltaX == -1 && _gnapWalkNodes[index].deltaY == 0) {
+ if (index % 2) {
+ _gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index].id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ _gnapWalkNodes[index].sequenceId = 0x7AF;
+ gnapSequenceId = 0x7AF;
+ } else {
+ _gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index].id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ _gnapWalkNodes[index].sequenceId = 0x7B0;
+ gnapSequenceId = 0x7B0;
+ }
+ } else {
+ if (_gnapWalkNodes[index].deltaY == -1)
+ _gnapWalkNodes[index].id -= 10;
+ else
+ _gnapWalkNodes[index].id += 10;
+ int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index].deltaX, _gnapWalkNodes[index].deltaY);
+ _gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index].id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ _gnapWalkNodes[index].sequenceId = newSequenceId;
+ gnapSequenceId = newSequenceId;
+ }
+ gnapId = _gnapWalkNodes[index].id;
+ gnapSequenceDatNum = datNum;
+ }
+
+ if (flags & 8) {
+ if (_gnapWalkNodesCount > 0) {
+ _gnapSequenceId = gnapSequenceId;
+ _gnapId = gnapId;
+ _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
+ _gnapSequenceDatNum = datNum;
+ if (animationIndex >= 0)
+ _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
+ } else if (animationIndex >= 0) {
+ _gameSys->setAnimation(0x107D3, 1, animationIndex);
+ _gameSys->insertSequence(0x107D3, 1, 0, 0, 0, 0, 0, 0);
+ }
+ } else {
+ if (sequenceId >= 0 && sequenceId != -1) {
+ _gnapSequenceId = ridToEntryIndex(sequenceId);
+ _gnapSequenceDatNum = ridToDatIndex(sequenceId);
+ if (_gnapSequenceId == 0x7B9) {
+ _gnapIdleFacing = 1;
+ } else {
+ switch (_gnapSequenceId) {
+ case 0x7BA:
+ _gnapIdleFacing = 3;
+ break;
+ case 0x7BB:
+ _gnapIdleFacing = 7;
+ break;
+ case 0x7BC:
+ _gnapIdleFacing = 5;
+ break;
+ }
+ }
+ } else {
+ if (_gnapWalkNodesCount > 0) {
+ _gnapSequenceId = getGnapWalkStopSequenceId(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
+ _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
+ } else if (gridX >= 0 || gridY >= 0) {
+ switch (_gnapIdleFacing) {
+ case 1:
+ _gnapSequenceId = 0x7B9;
+ break;
+ case 3:
+ _gnapSequenceId = 0x7BA;
+ break;
+ case 7:
+ _gnapSequenceId = 0x7BB;
+ break;
+ default:
+ _gnapSequenceId = 0x7BC;
+ break;
+ }
+ } else {
+ int v10 = _leftClickMouseX - (_gridMinX + 75 * _gnapX);
+ int v11 = _leftClickMouseY - (_gridMinY + 48 * _gnapY);
+ if (_leftClickMouseX == _gridMinX + 75 * _gnapX)
+ ++v10;
+ if (_leftClickMouseY == _gridMinY + 48 * _gnapY)
+ v11 = 1;
+ _gnapSequenceId = getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
+ _gnapIdleFacing = getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
+ }
+ _gnapSequenceDatNum = datNum;
+ }
+
+ if (animationIndex < 0) {
+ _gnapId = 20 * _gnapWalkDestY + 1;
+ } else {
+ _gnapId = _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY;
+ _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY, animationIndex);
+ }
+
+ if (flags & 4) {
+ _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 0, 0);
+ } else {
+ _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ 9, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
+ }
+
+ }
+
+ _gnapX = _gnapWalkDestX;
+ _gnapY = _gnapWalkDestY;
+
+ return done;
+}
+
+void GnapEngine::gnapWalkStep() {
+ bool done = false;
+ for (int i = 1; i < _gridMaxX && !done; ++i) {
+ done = true;
+ if (!isPointBlocked(_gnapX + i, _gnapY))
+ gnapWalkTo(_gnapX + i, _gnapY, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX - i, _gnapY))
+ gnapWalkTo(_gnapX - i, _gnapY, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX, _gnapY + 1))
+ gnapWalkTo(_gnapX, _gnapY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX, _gnapY - 1))
+ gnapWalkTo(_gnapX, _gnapY - 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX + 1, _gnapY + 1))
+ gnapWalkTo(_gnapX + 1, _gnapY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX - 1, _gnapY + 1))
+ gnapWalkTo(_gnapX - 1, _gnapY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX + 1, _gnapY - 1))
+ gnapWalkTo(_gnapX + 1, _gnapY - 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnapX - 1, _gnapY - 1))
+ gnapWalkTo(_gnapX - 1, _gnapY - 1, -1, -1, 1);
+ else
+ done = false;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+int GnapEngine::getBeaverWalkSequenceId(int deltaX, int deltaY) {
+ static const int _beaverWalkSequenceIds[9] = {
+ 0x7C5, 0x000, 0x7C8,
+ 0x7C4, 0x000, 0x7C7,
+ 0x7C3, 0x000, 0x7C6
+ };
+ // CHECKME This is a little weird
+ return _beaverWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
+bool GnapEngine::gridSub423750(int gridX, int gridY) {
+ bool result = false;
+
+ _platWalkNodesCount = 0;
+ _platWalkDirXIncr = 0;
+ _platWalkDirYIncr = 0;
+ _platWalkDeltaX = ABS(_platWalkDestX - gridX);
+ _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+
+ if (_platWalkDeltaX)
+ _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+ else
+ _platWalkDirX = 0;
+
+ if (_platWalkDeltaY)
+ _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ else
+ _platWalkDirY = 0;
+
+ while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirXIncr;
+ ++_platWalkDirYIncr;
+ } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else {
+ _platWalkDeltaX = _platWalkDirXIncr;
+ _platWalkDeltaY = _platWalkDirYIncr;
+ --_platWalkNodesCount;
+ }
+ } else {
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else {
+ _platWalkDeltaX = _platWalkDirXIncr;
+ _platWalkDeltaY = _platWalkDirYIncr;
+ --_platWalkNodesCount;
+ }
+ }
+ ++_platWalkNodesCount;
+ }
+
+ while (_platWalkDirXIncr < _platWalkDeltaX) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ ++_platWalkNodesCount;
+ } else {
+ _platWalkDeltaX = _platWalkDirXIncr;
+ }
+ }
+
+ while (_platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ ++_platWalkNodesCount;
+ } else {
+ _platWalkDeltaY = _platWalkDirYIncr;
+ }
+ }
+
+ if (gridX + _platWalkDirX * _platWalkDirXIncr != _platWalkDestX || gridY + _platWalkDirY * _platWalkDirYIncr != _platWalkDestY) {
+ _platWalkDestX = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkDestY = gridY + _platWalkDirY * _platWalkDirYIncr;
+ result = false;
+ } else {
+ result = true;
+ }
+
+ return result;
+}
+
+bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
+ _platWalkNodesCount = index;
+ _platWalkDirXIncr = 0;
+ _platWalkDirYIncr = 0;
+ _platWalkDeltaX = ABS(_platWalkDestX - gridX);
+ _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+
+ if (_platWalkDeltaX)
+ _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+ else
+ _platWalkDirX = 0;
+
+ if (_platWalkDeltaY)
+ _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ else
+ _platWalkDirY = 0;
+
+ while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirXIncr;
+ ++_platWalkDirYIncr;
+ } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else
+ return false;
+ } else {
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else
+ return false;
+ }
+ ++_platWalkNodesCount;
+ }
+
+ while (_platWalkDirXIncr < _platWalkDeltaX) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ return true;
+}
+
+bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
+ _platWalkNodesCount = index;
+ _platWalkDirXIncr = 0;
+ _platWalkDirYIncr = 0;
+ _platWalkDeltaX = ABS(_platWalkDestX - gridX);
+ _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+
+ if (_platWalkDeltaX)
+ _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+ else
+ _platWalkDirX = 0;
+
+ if (_platWalkDeltaY)
+ _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ else
+ _platWalkDirY = 0;
+
+ while (_platWalkDeltaY < _platWalkDeltaX - _platWalkDirXIncr) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, gridY)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_platWalkDeltaX < _platWalkDeltaY - _platWalkDirYIncr) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(gridX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirXIncr;
+ ++_platWalkDirYIncr;
+ } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else
+ return false;
+ } else {
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ } else
+ return false;
+ }
+ ++_platWalkNodesCount;
+ }
+
+ while (_platWalkDirXIncr < _platWalkDeltaX) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ ++_platWalkDirXIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ while (_platWalkDirYIncr < _platWalkDeltaY) {
+ _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
+ _platWalkNodes[_platWalkNodesCount].deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ ++_platWalkDirYIncr;
+ ++_platWalkNodesCount;
+ } else
+ return false;
+ }
+
+ return true;
+}
+
+bool GnapEngine::platFindPath3(int gridX, int gridY) {
+ int gridIncr = 1;
+ bool done = false;
+
+ while (!done && gridIncr < _gridMaxX) {
+ if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub423CC1(_platX + gridIncr, _platY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub423CC1(_platX - gridIncr, _platY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub423CC1(_platX, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = 0;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub423CC1(_platX, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = 0;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub423CC1(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub423CC1(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub423CC1(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub423CC1(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub42419A(_platX + gridIncr, _platY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub42419A(_platX - gridIncr, _platY, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = 0;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub42419A(_platX, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = 0;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub42419A(_platX, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = 0;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub42419A(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub42419A(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY + i;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = 1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub42419A(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX + i;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = 1;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub42419A(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
+ for (int i = 0; i < gridIncr; ++i) {
+ _platWalkNodes[i].gridX1 = _platX - i;
+ _platWalkNodes[i].gridY1 = _platY - i;
+ _platWalkNodes[i].deltaX = -1;
+ _platWalkNodes[i].deltaY = -1;
+ }
+ done = true;
+ break;
+ }
+ ++gridIncr;
+ }
+
+ return done;
+}
+
+bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
+
+ int datNum = flags & 3;
+ bool done = false;
+
+ _timers[1] = 60;
+
+ if (gridX < 0)
+ gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
+
+ if (gridY < 0)
+ gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
+
+ _platWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
+ _platWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
+
+ if (animationIndex >= 0 && _platWalkDestX == _gnapX && _platWalkDestY == _gnapY)
+ gnapWalkStep();
+
+ if (gridSub423CC1(_platX, _platY, 0))
+ done = true;
+
+ if (!done && gridSub42419A(_platX, _platY, 0))
+ done = true;
+
+ if (!done && platFindPath3(_platX, _platY))
+ done = true;
+
+ if (!done)
+ gridSub423750(_platX, _platY);
+
+ int platSequenceId = _beaverSequenceId;
+ int platId = _beaverId;
+ int platSequenceDatNum = _beaverSequenceDatNum;
+
+ for (int index = 0; index < _platWalkNodesCount; ++index) {
+ _platWalkNodes[index].id = index + 20 * _platWalkNodes[index].gridY1;
+ if (_platWalkNodes[index].deltaX == 1 && _platWalkNodes[index].deltaY == 0) {
+ if (index % 2) {
+ _gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index].id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ _platWalkNodes[index].sequenceId = 0x7CD;
+ platSequenceId = 0x7CD;
+ } else {
+ _gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index].id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ _platWalkNodes[index].sequenceId = 0x7CE;
+ platSequenceId = 0x7CE;
+ }
+ } else if (_platWalkNodes[index].deltaX == -1 && _platWalkNodes[index].deltaY == 0) {
+ if (index % 2) {
+ _gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index].id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ _platWalkNodes[index].sequenceId = 0x7CF;
+ platSequenceId = 0x7CF;
+ } else {
+ _gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index].id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ _platWalkNodes[index].sequenceId = 0x7D0;
+ platSequenceId = 0x7D0;
+ }
+ } else {
+ if (_platWalkNodes[index].deltaY == -1)
+ _platWalkNodes[index].id -= 10;
+ else
+ _platWalkNodes[index].id += 10;
+ int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index].deltaX, _platWalkNodes[index].deltaY);
+ _gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index].id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ _platWalkNodes[index].sequenceId = newSequenceId;
+ platSequenceId = newSequenceId;
+ }
+ platId = _platWalkNodes[index].id;
+ platSequenceDatNum = datNum;
+ }
+
+ if (flags & 8) {
+ if (_platWalkNodesCount > 0) {
+ _beaverSequenceId = platSequenceId;
+ _beaverId = platId;
+ _beaverSequenceDatNum = datNum;
+ // CHECKME Not sure if this is correct...
+ if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0)
+ _beaverFacing = 0;
+ else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0)
+ _beaverFacing = 4;
+ else if (_platWalkNodes[_platWalkNodesCount - 1].gridX1 % 2)
+ _beaverFacing = 4;
+ else
+ _beaverFacing = 0;
+ if (animationIndex >= 0)
+ _gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId, animationIndex);
+ } else if (animationIndex >= 0) {
+ _gameSys->setAnimation(0x107D3, 1, animationIndex);
+ _gameSys->insertSequence(0x107D3, 1, 0, 0, 0, 0, 0, 0);
+ }
+ } else {
+ if (sequenceId >= 0 && sequenceId != -1) {
+ _beaverSequenceId = ridToEntryIndex(sequenceId);
+ _beaverSequenceDatNum = ridToDatIndex(sequenceId);
+ if (_beaverSequenceId == 0x7C2) {
+ _beaverFacing = 0;
+ } else if (_beaverSequenceId == 0x7D2) {
+ _beaverFacing = 4;
+ }
+ } else {
+ if (_platWalkNodesCount > 0) {
+ if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0) {
+ _beaverSequenceId = 0x7C2;
+ _beaverFacing = 0;
+ } else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0) {
+ _beaverSequenceId = 0x7D2;
+ _beaverFacing = 4;
+ } else if (_platWalkNodes[0].deltaX > 0) {
+ _beaverSequenceId = 0x7C2;
+ _beaverFacing = 0;
+ } else if (_platWalkNodes[0].deltaX < 0) {
+ _beaverSequenceId = 0x7D2;
+ _beaverFacing = 4;
+ } else {
+ _beaverSequenceId = 0x7D2;
+ _beaverFacing = 4;
+ }
+ } else if (_beaverFacing > 0) {
+ _beaverSequenceId = 0x7D2;
+ } else {
+ _beaverSequenceId = 0x7C2;
+ }
+ _beaverSequenceDatNum = datNum;
+ }
+
+ if (animationIndex < 0) {
+ _beaverId = 20 * _platWalkDestY;
+ } else {
+ _beaverId = animationIndex + 20 * _platWalkDestY;
+ _gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
+ }
+
+ if (flags & 4)
+ _gameSys->insertSequence(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 0, 0);
+ else
+ _gameSys->insertSequence(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _platWalkDestX - _platGridX, 48 * _platWalkDestY - _platGridY);
+ }
+
+ _platX = _platWalkDestX;
+ _platY = _platWalkDestY;
+
+ return done;
+}
+
+void GnapEngine::platypusWalkStep() {
+ bool done = false;
+ for (int i = 1; !done && i < _gridMaxX; ++i) {
+ done = true;
+ if (!isPointBlocked(_platX + i, _platY))
+ platypusWalkTo(_platX + i, _platY, -1, -1, 1);
+ else if (!isPointBlocked(_platX - i, _platY))
+ platypusWalkTo(_platX - i, _platY, -1, -1, 1);
+ else if (!isPointBlocked(_platX, _platY + 1))
+ platypusWalkTo(_platX, _platY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_platX, _platY - 1))
+ platypusWalkTo(_platX, _platY - 1, -1, -1, 1);
+ else if (!isPointBlocked(_platX + 1, _platY + 1))
+ platypusWalkTo(_platX + 1, _platY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_platX - 1, _platY + 1))
+ platypusWalkTo(_platX - 1, _platY + 1, -1, -1, 1);
+ else if (!isPointBlocked(_platX + 1, _platY - 1))
+ platypusWalkTo(_platX + 1, _platY - 1, -1, -1, 1);
+ else if (!isPointBlocked(_platX - 1, _platY - 1))
+ platypusWalkTo(_platX - 1, _platY - 1, -1, -1, 1);
+ else
+ done = false;
+ }
+}
+
+void GnapEngine::beaverMakeRoom() {
+ int rndGridX, rndGridY;
+ do {
+ rndGridY = getRandom(_gridMaxY);
+ rndGridX = getRandom(_gridMaxX);
+ } while (ABS(rndGridX - _platX) > 4 || ABS(rndGridY - _platY) > 3 ||
+ isPointBlocked(rndGridX, rndGridY));
+ platypusWalkTo(rndGridX, rndGridY, -1, -1, 1);
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
new file mode 100644
index 0000000..e6fc073
--- /dev/null
+++ b/engines/gnap/menu.cpp
@@ -0,0 +1,811 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/datarchive.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+void GnapEngine::createMenuSprite() {
+ _menuBackgroundSurface = _gameSys->createSurface(0x10002);
+}
+
+void GnapEngine::freeMenuSprite() {
+ _gameSys->removeSpriteDrawItem(_menuBackgroundSurface, 260);
+ delayTicksCursor(5);
+ deleteSurface(&_menuBackgroundSurface);
+}
+
+void GnapEngine::initMenuHotspots1() {
+
+ int v0, v2 = 0;
+
+ for (int i = 0; i < 3; ++i) {
+ int v1 = 0;
+ while (v1 < 3) {
+ _hotspots[v2].x1 = 87 * v1 + 262;
+ _hotspots[v2].y1 = 74 * i + 69;
+ _hotspots[v2].x2 = _hotspots[v2].x1 + 79;
+ _hotspots[v2].y2 = _hotspots[v2].y1 + 66;
+ _hotspots[v2].flags = 0;
+ _hotspots[v2].id = v2;
+ ++v1;
+ ++v2;
+ }
+ }
+
+ _hotspots[v2].x1 = 330;
+ _hotspots[v2].y1 = 350;
+ _hotspots[v2].x2 = 430;
+ _hotspots[v2].y2 = 460;
+ _hotspots[v2].flags = 2;
+ _hotspots[v2].id = v2;
+
+ v0 = v2 + 1;
+ _hotspots[v0].x1 = 180;
+ _hotspots[v0].y1 = 15;
+ _hotspots[v0].x2 = 620;
+ _hotspots[v0].y2 = 580;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+
+ ++v0;
+ _hotspots[v0].x1 = 0;
+ _hotspots[v0].y1 = 0;
+ _hotspots[v0].x2 = 799;
+ _hotspots[v0].y2 = 599;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+
+ _hotspotsCount = v0 + 1;
+}
+
+void GnapEngine::initMenuHotspots2() {
+ int i, v0;
+
+ for (i = 0; i < 4; ++i) {
+ _hotspots[i].x1 = 312;
+ _hotspots[i].y1 = 48 * i + 85;
+ _hotspots[i].x2 = _hotspots[i].x1 + 153;
+ _hotspots[i].y2 = _hotspots[i].y1 + 37;
+ _hotspots[i].flags = SF_GRAB_CURSOR;
+ _hotspots[i].id = i;
+ }
+ _hotspots[i].x1 = 500;
+ _hotspots[i].y1 = 72;
+ _hotspots[i].x2 = 527;
+ _hotspots[i].y2 = 99;
+ _hotspots[i].flags = SF_DISABLED;
+ _hotspots[i].id = i;
+ v0 = i + 1;
+ _hotspots[v0].x1 = 330;
+ _hotspots[v0].y1 = 350;
+ _hotspots[v0].x2 = 430;
+ _hotspots[v0].y2 = 460;
+ _hotspots[v0].flags = SF_GRAB_CURSOR;
+ _hotspots[v0].id = v0;
+ ++v0;
+ _hotspots[v0].x1 = 180;
+ _hotspots[v0].y1 = 15;
+ _hotspots[v0].x2 = 620;
+ _hotspots[v0].y2 = 580;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+ ++v0;
+ _hotspots[v0].x1 = 0;
+ _hotspots[v0].y1 = 0;
+ _hotspots[v0].x2 = 799;
+ _hotspots[v0].y2 = 599;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+ _hotspotsCount = v0 + 1;
+}
+
+void GnapEngine::initMenuQuitQueryHotspots() {
+ _hotspots[0].x1 = 311;
+ _hotspots[0].y1 = 197;
+ _hotspots[0].x2 = 377;
+ _hotspots[0].y2 = 237;
+ _hotspots[0].flags = SF_GRAB_CURSOR;
+ _hotspots[0].id = 0;
+ _hotspots[1].x1 = 403;
+ _hotspots[1].y1 = 197;
+ _hotspots[1].x2 = 469;
+ _hotspots[1].y2 = 237;
+ _hotspots[1].flags = SF_GRAB_CURSOR;
+ _hotspots[1].id = 1;
+ _hotspots[2].x1 = 330;
+ _hotspots[2].y1 = 350;
+ _hotspots[2].x2 = 430;
+ _hotspots[2].y2 = 460;
+ _hotspots[2].flags = SF_GRAB_CURSOR;
+ _hotspots[2].id = 2;
+ _hotspots[3].x1 = 180;
+ _hotspots[3].y1 = 15;
+ _hotspots[3].x2 = 620;
+ _hotspots[3].y2 = 580;
+ _hotspots[3].flags = 0;
+ _hotspots[3].id = 3;
+ _hotspots[4].x1 = 0;
+ _hotspots[4].y1 = 0;
+ _hotspots[4].x2 = 799;
+ _hotspots[4].y2 = 599;
+ _hotspots[4].flags = 0;
+ _hotspots[4].id = 4;
+ _hotspotsCount = 5;
+}
+
+void GnapEngine::initSaveLoadHotspots() {
+ int i, v0;
+ for (i = 0; i < 7; ++i ) {
+ _hotspots[i].x1 = 288;
+ _hotspots[i].y1 = 31 * i + 74;
+ _hotspots[i].x2 = _hotspots[i].x1 + 91;
+ _hotspots[i].y2 = _hotspots[i].y1 + 22;
+ _hotspots[i].flags = SF_GRAB_CURSOR;
+ _hotspots[i].id = i;
+ }
+ if (_menuStatus == 2) {
+ _hotspots[i].x1 = 416;
+ _hotspots[i].y1 = 160;
+ _hotspots[i].x2 = 499;
+ _hotspots[i].y2 = 188;
+ _hotspots[i].flags = SF_GRAB_CURSOR;
+ _hotspots[i].id = i;
+ ++i;
+ }
+ _hotspots[i].x1 = 416;
+ _hotspots[i].y1 = 213;
+ _hotspots[i].x2 = 499;
+ _hotspots[i].y2 = 241;
+ _hotspots[i].flags = SF_GRAB_CURSOR;
+ _hotspots[i].id = i;
+ v0 = i + 1;
+ _hotspots[v0].x1 = 330;
+ _hotspots[v0].y1 = 350;
+ _hotspots[v0].x2 = 430;
+ _hotspots[v0].y2 = 460;
+ _hotspots[v0].flags = SF_GRAB_CURSOR;
+ _hotspots[v0].id = v0;
+ ++v0;
+ _hotspots[v0].x1 = 180;
+ _hotspots[v0].y1 = 15;
+ _hotspots[v0].x2 = 620;
+ _hotspots[v0].y2 = 580;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+ ++v0;
+ _hotspots[v0].x1 = 0;
+ _hotspots[v0].y1 = 0;
+ _hotspots[v0].x2 = 799;
+ _hotspots[v0].y2 = 599;
+ _hotspots[v0].flags = 0;
+ _hotspots[v0].id = v0;
+ _hotspotsCount = v0 + 1;
+}
+
+void GnapEngine::drawInventoryFrames() {
+ for (int i = 0; i < 9; ++i)
+ _gameSys->drawSpriteToSurface(_menuBackgroundSurface, _hotspots[i].x1 - 93, _hotspots[i].y1, 0x10001);
+}
+
+void GnapEngine::insertInventorySprites() {
+
+ for (int i = 0; i < 9; ++i) {
+ _menuInventoryIndices[i] = -1;
+ _gameSys->removeSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot], 261);
+ _menuInventorySprites[i] = 0;
+ }
+
+ _menuSpritesIndex = 0;
+
+ for (int index = 0; index < 30 && _menuSpritesIndex < 9; ++index) {
+ if (invHas(index)) {
+ _gameSys->drawSpriteToSurface(_menuBackgroundSurface,
+ _hotspots[_menuSpritesIndex].x1 - 93, _hotspots[_menuSpritesIndex].y1, 0x10000);
+ _menuInventorySprites[_menuSpritesIndex] = _gameSys->createSurface(getInventoryItemSpriteNum(index) | 0x10000);
+ if (index != _grabCursorSpriteIndex) {
+ _menuInventoryIndices[_menuSpritesIndex] = index;
+ _gameSys->insertSpriteDrawItem(_menuInventorySprites[_menuSpritesIndex],
+ _hotspots[_menuSpritesIndex].x1 + ((79 - _menuInventorySprites[_menuSpritesIndex]->w) / 2),
+ _hotspots[_menuSpritesIndex].y1 + ((66 - _menuInventorySprites[_menuSpritesIndex]->h) / 2),
+ 261);
+ }
+ _hotspots[_menuSpritesIndex].flags = SF_GRAB_CURSOR;
+ ++_menuSpritesIndex;
+ }
+ }
+
+}
+
+void GnapEngine::removeInventorySprites() {
+ for (int i = 0; i < _menuSpritesIndex; ++i)
+ if (_menuInventorySprites[i])
+ _gameSys->removeSpriteDrawItem(_menuInventorySprites[i], 261);
+ delayTicksCursor(5);
+ for (int j = 0; j < _menuSpritesIndex; ++j) {
+ if (_menuInventorySprites[j]) {
+ deleteSurface(&_menuInventorySprites[j]);
+ _menuInventorySprites[j] = 0;
+ _menuInventoryIndices[j] = -1;
+ }
+ }
+ _menuSpritesIndex = 0;
+}
+
+void GnapEngine::runMenu() {
+
+ int v43;
+
+ _spriteHandle = 0;
+ _cursorSprite = 0;
+ _menuSprite1 = 0;
+ _menuSprite2 = 0;
+ _menuSaveLoadSprite = 0;
+ _menuQuitQuerySprite = 0;
+
+ _menuStatus = 0;
+ _menuDone = false;
+
+ createMenuSprite();//??? CHECKME Crashes when done in loadStockDat() find out why
+
+ insertDeviceIconActive();
+
+ for (int i = 0; i < 7; ++i) {
+ _savegameFilenames[i][0] = 0;
+ _savegameSprites[i] = 0;
+ }
+
+ v43 = 0;
+
+ if (_menuStatus == 0) {
+ invAdd(kItemMagazine);
+ setGrabCursorSprite(-1);
+ hideCursor();
+ initMenuHotspots1();
+ drawInventoryFrames();
+ insertInventorySprites();
+ _gameSys->insertSpriteDrawItem(_menuBackgroundSurface, 93, 0, 260);
+ showCursor();
+ // SetCursorPos(400, 300);
+ setVerbCursor(GRAB_CURSOR);
+ // pollMessages();
+ }
+
+ _timers[2] = 10;
+
+ while (!isKeyStatus1(8) && !isKeyStatus1(28) && !_sceneDone && !_menuDone) {
+
+ updateCursorByHotspot();
+
+ switch (_menuStatus) {
+ case 0:
+ updateMenuStatusInventory();
+ break;
+ case 1:
+ updateMenuStatusMainMenu();
+ break;
+ case 2:
+ updateMenuStatusSaveGame();
+ break;
+ case 3:
+ updateMenuStatusLoadGame();
+ break;
+ case 4:
+ updateMenuStatusQueryQuit();
+ break;
+ }
+
+ gameUpdateTick();
+
+ }
+
+ removeInventorySprites();
+ if (_spriteHandle)
+ _gameSys->removeSpriteDrawItem(_spriteHandle, 261);
+ if (_menuSprite1)
+ _gameSys->removeSpriteDrawItem(_menuSprite1, 262);
+ if (_menuSprite2)
+ _gameSys->removeSpriteDrawItem(_menuSprite2, 262);
+ for (int i = 0; i < 7; ++i)
+ if (_savegameSprites[i])
+ _gameSys->removeSpriteDrawItem(_savegameSprites[i], 263);
+ if (_cursorSprite)
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ if (_menuSaveLoadSprite)
+ _gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
+ if (_menuQuitQuerySprite)
+ _gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
+ if (_menuBackgroundSurface)
+ _gameSys->removeSpriteDrawItem(_menuBackgroundSurface, 260);
+
+ delayTicksCursor(5);
+
+ deleteSurface(&_spriteHandle);
+ deleteSurface(&_menuSprite1);
+ deleteSurface(&_menuSprite2);
+ for (int i = 0; i < 7; ++i)
+ deleteSurface(&_savegameSprites[i]);
+ deleteSurface(&_cursorSprite);
+ deleteSurface(&_menuSaveLoadSprite);
+ deleteSurface(&_menuQuitQuerySprite);
+
+ _sceneClickedHotspot = -1;
+
+ _timers[2] = getRandom(20) + 30;
+ _timers[3] = getRandom(200) + 50;
+ _timers[0] = getRandom(75) + 75;
+ _timers[1] = getRandom(20) + 30;
+
+ clearAllKeyStatus1();
+
+ _mouseClickState.left = false;
+
+ removeDeviceIconActive();
+
+ freeMenuSprite();//??? CHECKME
+}
+
+void GnapEngine::updateMenuStatusInventory() {
+
+ static const struct {
+ int item1, item2, resultItem;
+ } kCombineItems[] = {
+ {kItemGrass, kItemMud, kItemDisguise},
+ {kItemDice, kItemQuarterWithHole, kItemDiceQuarterHole},
+ {kItemPill, kItemBucketWithBeer, kItemBucketWithPill}
+ };
+
+ updateGrabCursorSprite(0, 0);
+ _hotspots[0].x1 = 262;
+ _hotspots[0].y1 = 69;
+ _hotspots[0].x2 = 341;
+ _hotspots[0].y2 = 135;
+ _sceneClickedHotspot = -1;
+ if (_timers[2] == 0)
+ _sceneClickedHotspot = getClickedHotspotId();
+ if (_sceneClickedHotspot == -1 || _sceneClickedHotspot >= _menuSpritesIndex) {
+ if (_sceneClickedHotspot == _hotspotsCount - 3) {
+ if (_grabCursorSpriteIndex == -1) {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ _menuStatus = 1;
+ Common::Rect dirtyRect(_hotspots[0].x1, _hotspots[0].y1, _hotspots[2].x2, _hotspots[_hotspotsCount - 4].y2);
+ drawInventoryFrames();
+ initMenuHotspots2();
+ removeInventorySprites();
+ if (!_menuSprite1)
+ _menuSprite1 = _gameSys->createSurface(0x104F8);
+ _gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+ _gameSys->insertDirtyRect(dirtyRect);
+ } else {
+ playSound(0x108F5, 0);
+ }
+ } else if (_sceneClickedHotspot == _hotspotsCount - 1) {
+ _timers[2] = 10;
+ playSound(0x108F5, 0);
+ _menuDone = true;
+ }
+ } else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] != -1 && _grabCursorSpriteIndex == -1) {
+ _gameSys->removeSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot], 261);
+ setGrabCursorSprite(_menuInventoryIndices[_sceneClickedHotspot]);
+ _menuInventoryIndices[_sceneClickedHotspot] = -1;
+ } else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] == -1 && _grabCursorSpriteIndex != -1) {
+ _menuInventoryIndices[_sceneClickedHotspot] = _grabCursorSpriteIndex;
+ _gameSys->insertSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot],
+ _hotspots[_sceneClickedHotspot].x1 + ((79 - _menuInventorySprites[_sceneClickedHotspot]->w) / 2),
+ _hotspots[_sceneClickedHotspot].y1 + (66 - _menuInventorySprites[_sceneClickedHotspot]->h) / 2,
+ 261);
+ setGrabCursorSprite(-1);
+ } else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] != -1 && _grabCursorSpriteIndex != -1) {
+ int combineIndex = -1;
+ for (int i = 0; i < ARRAYSIZE(kCombineItems); ++i) {
+ if ((_grabCursorSpriteIndex == kCombineItems[i].item1 && _menuInventoryIndices[_sceneClickedHotspot] == kCombineItems[i].item2) ||
+ (_grabCursorSpriteIndex == kCombineItems[i].item2 && _menuInventoryIndices[_sceneClickedHotspot] == kCombineItems[i].item1)) {
+ combineIndex = i;
+ break;
+ }
+ }
+ if (combineIndex >= 0) {
+ invRemove(kCombineItems[combineIndex].item1);
+ invRemove(kCombineItems[combineIndex].item2);
+ invAdd(kCombineItems[combineIndex].resultItem);
+ playSound(0x108AE, 0);
+ deleteSurface(&_spriteHandle); // CHECKME
+ _spriteHandle = _gameSys->createSurface(0x10001);
+ _gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1].x1, _hotspots[_menuSpritesIndex - 1].y1, 261);
+ setGrabCursorSprite(kCombineItems[combineIndex].resultItem);
+ removeInventorySprites();
+ insertInventorySprites();
+ delayTicksCursor(5);
+ } else {
+ playSound(0x108F5, 0);
+ }
+ }
+}
+
+void GnapEngine::updateMenuStatusMainMenu() {
+ _hotspots[0].x1 = 312;
+ _hotspots[0].y1 = 85;
+ _hotspots[0].x2 = 465;
+ _hotspots[0].y2 = 122;
+ _sceneClickedHotspot = -1;
+ if (!_timers[2])
+ _sceneClickedHotspot = getClickedHotspotId();
+
+ if (_sceneClickedHotspot != 1 && _sceneClickedHotspot != 0) {
+ if (_sceneClickedHotspot != 2 && _hotspotsCount - 1 != _sceneClickedHotspot) {
+ if (_sceneClickedHotspot == 3) {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ _gameSys->removeSpriteDrawItem(_menuSprite1, 262);
+ initMenuQuitQueryHotspots();
+ _menuStatus = 4;
+ if (!_menuQuitQuerySprite)
+ _menuQuitQuerySprite = _gameSys->createSurface(0x104FC);
+ _gameSys->insertSpriteDrawItem(_menuQuitQuerySprite, 254, 93, 262);
+ } else if (_sceneClickedHotspot == 4) {
+ playSound(0x108F4, 0);
+ Common::Rect dirtyRect(0, 0, 799, 599);
+ hideCursor();
+ _largeSprite = _gameSys->allocSurface(800, 600);
+
+ for (int i = 0; i < 3; ++i) {
+
+ _timers[2] = 10;
+
+ if (i == 0) {
+ _gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078D);
+ _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
+ /* TODO
+ if (_midiFlag) {
+ playMidi("pause.mid", 0);
+ }
+ */
+ } else if (i == 1) {
+ _gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078E);
+ _gameSys->insertDirtyRect(dirtyRect);
+ } else if (i == 2) {
+ _gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078F);
+ _gameSys->insertDirtyRect(dirtyRect);
+ }
+
+ while (!_mouseClickState.left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2]) {
+ gameUpdateTick();
+ }
+
+ playSound(0x108F5, 0);
+ _mouseClickState.left = false;
+ clearKeyStatus1(28);
+ clearKeyStatus1(29);
+ clearKeyStatus1(30);
+ }
+
+ _gameSys->removeSpriteDrawItem(_largeSprite, 300);
+ delayTicksCursor(5);
+ deleteSurface(&_largeSprite);
+ showCursor();
+ } else if (_hotspotsCount - 3 == _sceneClickedHotspot) {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ initMenuHotspots1();
+ /* TODO
+ if (_mouseX < 93 || _mouseX > 638 || _mouseY < 0 || _mouseY > 600)
+ SetCursorPos(400, 300);
+ */
+ _menuStatus = 0;
+ if (_menuSprite1)
+ _gameSys->removeSpriteDrawItem(_menuSprite1, 262);
+ insertInventorySprites();
+ Common::Rect dirtyRect(_hotspots[0].x1, _hotspots[0].y1, _hotspots[2].x2, _hotspots[_hotspotsCount - 4].y2);
+ _gameSys->insertDirtyRect(dirtyRect);
+ }
+ } else {
+ playSound(0x108F5, 0);
+ _menuDone = true;
+ }
+ } else {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ _gameSys->removeSpriteDrawItem(_menuSprite1, 262);
+ if (_menuSaveLoadSprite)
+ deleteSurface(&_menuSaveLoadSprite);
+ if (_sceneClickedHotspot == 1) {
+ _menuStatus = 2;
+ initSaveLoadHotspots();
+ _menuSaveLoadSprite = _gameSys->createSurface(0x104FB);
+ } else {
+ _menuStatus = 3;
+ initSaveLoadHotspots();
+ _menuSaveLoadSprite = _gameSys->createSurface(0x104FA);
+ }
+ _gameSys->insertSpriteDrawItem(_menuSaveLoadSprite, 403, 72, 262);
+ if (!_menuSprite2)
+ _menuSprite2 = _gameSys->createSurface(0x104F9);
+ _gameSys->insertSpriteDrawItem(_menuSprite2, 277, 66, 262);
+ for (int i = 0; i < 7; ++i) {
+ Common::String savegameDescription;
+ if (!_savegameSprites[i])
+ _savegameSprites[i] = _gameSys->allocSurface(111, 40);
+ if (readSavegameDescription(i + 1, savegameDescription) == 0)
+ strncpy(_savegameFilenames[i], savegameDescription.c_str(), 40);
+ _gameSys->drawTextToSurface(_savegameSprites[i], 0, 0, 255, 0, 0, _savegameFilenames[i]);
+ _gameSys->insertSpriteDrawItem(_savegameSprites[i], 288, _hotspots[i].y1, 263);
+ }
+ _savegameIndex = -1;
+ }
+}
+
+void GnapEngine::updateMenuStatusSaveGame() {
+#if 0 // TODO
+ _hotspots[0].x1 = 288;
+ _hotspots[0].y1 = 74;
+ _hotspots[0].x2 = 379;
+ _hotspots[0].y2 = 96;
+ _sceneClickedHotspot = -1;
+ if (!_timers[2])
+ _sceneClickedHotspot = getClickedHotspotId();
+ if (_hotspotsCount - 3 == _sceneClickedHotspot)
+ {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ _menuStatus = 1;
+ writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
+ }
+ else if (_hotspotsCount - 4 == _sceneClickedHotspot)
+ {
+ _timers[2] = 10;
+ playSound(0x108F5, 0);
+ _menuStatus = 1;
+ if (strcmp(&v43, &_savegameFilenames[30 * _savegameIndex]) && _savegameIndex != -1)
+ {
+ strcpy((char *)&_savegameFilenames[30 * _savegameIndex], &v43);
+ if (_savegameSprites[_savegameIndex] != -1)
+ {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ delayTicksCursor(5);
+ memFreeHandle(_savegameSprites[_savegameIndex]);
+ }
+ v16 = getSpriteWidthById(0x104F9);
+ _savegameSprites[_savegameIndex] = allocSprite(v16, 40, 128, 0);
+ }
+ }
+ else if (_hotspotsCount - 5 == _sceneClickedHotspot)
+ {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ if ((signed int)_savegameIndex > -1)
+ writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
+ _menuStatus = 1;
+ }
+ else if (_hotspotsCount - 1 == _sceneClickedHotspot)
+ {
+ _menuDone = true;
+ }
+ else if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot)
+ {
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ v17 = strcmp(&v43, &_savegameFilenames[30 * _savegameIndex]);
+ if (!v17)
+ LOBYTE(v17) = 0;
+ if ((unsigned int8)v17 & (_savegameIndex < 0xFFFFFFFF))
+ {
+ strcpy((char *)&_savegameFilenames[30 * _savegameIndex], &v43);
+ if (_savegameSprites[_savegameIndex] != -1)
+ {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ delayTicksCursor(5);
+ memFreeHandle(_savegameSprites[_savegameIndex]);
+ }
+ v18 = getSpriteWidthById(0x104F9);
+ _savegameSprites[_savegameIndex] = allocSprite(v18, 40, 128, 0);
+ drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
+ insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex].y1, 263);
+ }
+ _savegameIndex = _sceneClickedHotspot;
+ v46 = strlen(&_savegameFilenames[30 * _sceneClickedHotspot]);
+ strcpy(&v43, &_savegameFilenames[30 * _sceneClickedHotspot]);
+ if (_cursorSprite == -1)
+ {
+ v19 = getTextHeight("_");
+ v20 = getTextWidth("_");
+ _cursorSprite = allocSprite(v20, v19, 128, 0);
+ drawTextToSurface(_cursorSprite, 0, 0, 255, 0, 0, "_");
+ }
+ else
+ {
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ }
+ v21 = _hotspots[_savegameIndex].x2;
+ v22 = v21 - getTextWidth("_");
+ if (v22 > getTextWidth(&_savegameFilenames[30 * _savegameIndex]) + 288)
+ {
+ v25 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]) + 288;
+ insertSpriteDrawItem(_cursorSprite, v25, _hotspots[_savegameIndex].y1, 264);
+ }
+ else
+ {
+ v23 = _hotspots[_savegameIndex].x2;
+ v24 = v23 - getTextWidth("_");
+ insertSpriteDrawItem(_cursorSprite, v24, _hotspots[_savegameIndex].y1, 264);
+ }
+ }
+ if ((signed int)_savegameIndex > -1 && keybChar)
+ {
+ if ((keybChar < 'A' || keybChar > 'Z') && (keybChar < '0' || keybChar > '9') && keybChar != ' ')
+ {
+ if (keybChar == 8)
+ {
+ if ((signed int)v46 > 0)
+ --v46;
+ *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
+ if (_savegameSprites[_savegameIndex] != -1)
+ {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ memFreeHandle(_savegameSprites[_savegameIndex]);
+ }
+ v32 = getSpriteWidthById(0x104F9);
+ _savegameSprites[_savegameIndex] = allocSprite(v32, 40, 128, 0);
+ drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
+ insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex].y1, 263);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ v33 = _hotspots[_savegameIndex].y1;
+ v34 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]);
+ insertSpriteDrawItem(_cursorSprite, LOWORD(_hotspots[_savegameIndex].x1) + v34, v33, 264);
+ }
+ else if (keybChar == 13)
+ {
+ _menuStatus = 1;
+ writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
+ }
+ }
+ else
+ {
+ *(&_savegameFilenames[30 * _savegameIndex] + v46) = keybChar;
+ if ((signed int)v46 < 28)
+ ++v46;
+ *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
+ if (getTextWidth(&_savegameFilenames[30 * _savegameIndex]) > 91)
+ {
+ --v46;
+ *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
+ }
+ drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
+ v26 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]);
+ rect.right = _hotspots[_savegameIndex].x1 + v26;
+ v27 = rect.right;
+ rect.left = v27 - 2 * getTextWidth("W");
+ rect.top = _hotspots[_savegameIndex].y1;
+ rect.bottom = _hotspots[_savegameIndex].y2;
+ insertDirtyRect(&rect);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ v28 = _hotspots[_savegameIndex].x2;
+ v29 = getTextWidth("_");
+ if (v28 - v29 > rect.right)
+ {
+ insertSpriteDrawItem(_cursorSprite, SLOWORD(rect.right), SLOWORD(rect.top), 264);
+ }
+ else
+ {
+ v30 = _hotspots[_savegameIndex].x2;
+ v31 = v30 - getTextWidth("_");
+ insertSpriteDrawItem(_cursorSprite, v31, SLOWORD(rect.top), 264);
+ }
+ clearKeyStatus1(8);
+ }
+ }
+ keybChar = 0;
+ if (_menuStatus == 1 || _menuDone)
+ {
+ _gameSys->removeSpriteDrawItem(_menuSprite2, 262);
+ _gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
+ for (i = 0; i < 7; ++i)
+ _gameSys->removeSpriteDrawItem(_savegameSprites[i], 263);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ if (!_menuDone)
+ {
+ initMenuHotspots2();
+ insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+ }
+ }
+#endif
+}
+
+void GnapEngine::updateMenuStatusLoadGame() {
+ _hotspots[0].x1 = 288;
+ _hotspots[0].y1 = 74;
+ _hotspots[0].x2 = 379;
+ _hotspots[0].y2 = 96;
+ _sceneClickedHotspot = -1;
+ if (!_timers[2])
+ _sceneClickedHotspot = getClickedHotspotId();
+ if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot) {
+ _timers[2] = 10;
+ if (_hotspotsCount - 4 <= _sceneClickedHotspot) {
+ playSound(0x108F5, 0);
+ _gameSys->removeSpriteDrawItem(_menuSprite2, 262);
+ _gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
+ for (int i = 0; i < 7; ++i)
+ _gameSys->removeSpriteDrawItem(_savegameSprites[i], 263);
+ if (_hotspotsCount - 1 == _sceneClickedHotspot) {
+ _menuDone = true;
+ } else {
+ _menuStatus = 1;
+ initMenuHotspots2();
+ _gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+ }
+ } else if (loadSavegame(_sceneClickedHotspot + 1)) {
+ playSound(0x108F5, 0);
+ } else {
+ playSound(0x108F4, 0);
+ _sceneDone = true;
+ }
+ }
+}
+
+void GnapEngine::updateMenuStatusQueryQuit() {
+
+ _hotspots[0].x1 = 311;
+ _hotspots[0].y1 = 197;
+ _hotspots[0].x2 = 377;
+ _hotspots[0].y2 = 237;
+
+ _sceneClickedHotspot = -1;
+
+ if (!_timers[2])
+ _sceneClickedHotspot = getClickedHotspotId();
+
+ /* _sceneClickedHotspot
+ 0 Yes
+ 1 No
+ 2 Button
+ 3 Display
+ 4 Background
+ */
+
+ if (_sceneClickedHotspot == 0) {
+ // Quit the game
+ playSound(0x108F5, 0);
+ _gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
+ _sceneDone = true;
+ _gameDone = true;
+ } else if (_sceneClickedHotspot == 4) {
+ // Exit the device
+ playSound(0x108F4, 0);
+ _gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
+ _menuDone = true;
+ } else if (_sceneClickedHotspot != -1) {
+ // Return to the main menu
+ playSound(0x108F4, 0);
+ _gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
+ _timers[2] = 10;
+ _menuStatus = 1;
+ initMenuHotspots2();
+ _gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+ }
+
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
new file mode 100644
index 0000000..78e2cce
--- /dev/null
+++ b/engines/gnap/module.mk
@@ -0,0 +1,70 @@
+MODULE := engines/gnap
+
+MODULE_OBJS := \
+ datarchive.o \
+ detection.o \
+ gamesys.o \
+ gnap.o \
+ grid.o \
+ menu.o \
+ resource.o \
+ sound.o \
+ scenes/scene01.o \
+ scenes/scene02.o \
+ scenes/scene03.o \
+ scenes/scene04.o \
+ scenes/scene05.o \
+ scenes/scene06.o \
+ scenes/scene07.o \
+ scenes/scene08.o \
+ scenes/scene09.o \
+ scenes/scene10.o \
+ scenes/scene11.o \
+ scenes/scene12.o \
+ scenes/scene13.o \
+ scenes/scene14.o \
+ scenes/scene15.o \
+ scenes/scene16.o \
+ scenes/scene17.o \
+ scenes/scene18.o \
+ scenes/scene19.o \
+ scenes/scene20.o \
+ scenes/scene21.o \
+ scenes/scene22.o \
+ scenes/scene23.o \
+ scenes/scene24.o \
+ scenes/scene25.o \
+ scenes/scene26.o \
+ scenes/scene27.o \
+ scenes/scene28.o \
+ scenes/scene29.o \
+ scenes/scene30.o \
+ scenes/scene31.o \
+ scenes/scene32.o \
+ scenes/scene33.o \
+ scenes/scene38.o \
+ scenes/scene39.o \
+ scenes/scene40.o \
+ scenes/scene41.o \
+ scenes/scene42.o \
+ scenes/scene43.o \
+ scenes/scene44.o \
+ scenes/scene45.o \
+ scenes/scene46.o \
+ scenes/scene47.o \
+ scenes/scene48.o \
+ scenes/scene49.o \
+ scenes/scene50.o \
+ scenes/scene51.o \
+ scenes/scene52.o \
+ scenes/scene53.o \
+ scenes/scene54.o \
+ scenes/scenecore.o
+
+# This module can be built as a plugin
+ifeq ($(ENABLE_GNAP), DYNAMIC_PLUGIN)
+PLUGIN := 1
+endif
+
+# Include common rules
+include $(srcdir)/rules.mk
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
new file mode 100644
index 0000000..ab83b13
--- /dev/null
+++ b/engines/gnap/resource.cpp
@@ -0,0 +1,118 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+// SequenceFrame
+
+void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
+ duration = stream.readUint16LE();
+ isScaled = stream.readUint16LE();
+ rect.left = stream.readUint32LE();
+ rect.top = stream.readUint32LE();
+ rect.right = stream.readUint32LE();
+ rect.bottom = stream.readUint32LE();
+ spriteId = stream.readUint32LE();
+ soundId = stream.readUint32LE();
+ unkValue = stream.readUint32LE();
+ //isScaled = 0;//DEBUG
+ debug(1, "SequenceFrame() spriteId: %d; soundId: %d", spriteId, soundId);
+}
+
+// SequenceAnimation
+
+void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
+ field_0 = stream.readUint16LE();
+ field_2 = stream.readUint16LE();
+ field_4 = stream.readUint32LE();
+ framesCount = stream.readUint16LE();
+ field_A = stream.readUint16LE();
+ debug(1, "SequenceAnimation() framesCount: %d", framesCount);
+ frames = new SequenceFrame[framesCount];
+ for (int i = 0; i < framesCount; ++i)
+ frames[i].loadFromStream(stream);
+}
+
+// SequenceResource
+
+SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
+ Common::MemoryReadStream stream(data, size, DisposeAfterUse::NO);
+ _field_0 = stream.readUint32LE();
+ _sequenceId = stream.readUint32LE();
+ _field_8 = stream.readUint32LE();
+ _sequenceId2 = stream.readUint32LE();
+ _field_10 = stream.readUint32LE();
+ _flags = stream.readUint32LE();
+ _totalDuration = stream.readUint32LE();
+ _xOffs = stream.readUint16LE();
+ _yOffs = stream.readUint16LE();
+ _animationsCount = stream.readUint32LE();
+ _animations = new SequenceAnimation[_animationsCount];
+ debug(1, "SequenceResource() _animationsCount: %d", _animationsCount);
+ for (int i = 0; i < _animationsCount; ++i) {
+ uint32 animationOffs = stream.readUint32LE();
+ debug(1, "animationOffs: %08X", animationOffs);
+ uint32 oldOffs = stream.pos();
+ stream.seek(animationOffs);
+ _animations[i].loadFromStream(stream);
+ stream.seek(oldOffs);
+ }
+ // TODO Convert resourceIds
+}
+
+SequenceResource::~SequenceResource() {
+ delete[] _animations;
+}
+
+// SpriteResource
+
+SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
+ _data = data;
+ _width = READ_LE_UINT16(_data);
+ _height = READ_LE_UINT16(_data + 2);
+ _unk1 = READ_LE_UINT16(_data + 4);
+ _unk2 = READ_LE_UINT16(_data + 6);
+ _transparent = READ_LE_UINT16(_data + 8);
+ _colorsCount = READ_LE_UINT16(_data + 10);
+ _palette = (uint32*)(_data + 12);
+ _pixels = _data + 12 + _colorsCount * 4;
+ debug(1, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
+}
+
+SpriteResource::~SpriteResource() {
+ delete[] _data;
+}
+
+// SoundResource
+
+SoundResource::SoundResource(int resourceId, byte *data, uint32 size) {
+ _data = data;
+ _size = size;
+}
+
+SoundResource::~SoundResource() {
+ delete[] _data;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
new file mode 100644
index 0000000..b0f6a61
--- /dev/null
+++ b/engines/gnap/resource.h
@@ -0,0 +1,196 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_RESOURCE_H
+#define GNAP_RESOURCE_H
+
+#include "common/array.h"
+#include "common/events.h"
+#include "common/file.h"
+#include "common/memstream.h"
+#include "common/str.h"
+#include "common/stream.h"
+#include "common/substream.h"
+#include "common/system.h"
+
+#include "graphics/surface.h"
+
+#include "gnap/datarchive.h"
+
+namespace Gnap {
+
+enum {
+ kResTypeSprite = 0,
+ kResTypeBitmap = 1,
+ kResTypeSound = 2,
+ kResTypeSequence = 3
+};
+
+struct SequenceFrame {
+ int16 duration;
+ int16 isScaled;
+ Common::Rect rect;
+ int32 spriteId;
+ int32 soundId;
+ int32 unkValue;
+ void loadFromStream(Common::MemoryReadStream &stream);
+};
+
+struct SequenceAnimation {
+ int16 field_0;
+ int16 field_2;
+ int32 field_4;
+ int16 framesCount;
+ int16 field_A;
+ SequenceFrame *frames;
+ SequenceAnimation() : frames(0) {}
+ ~SequenceAnimation() { delete[] frames; }
+ void loadFromStream(Common::MemoryReadStream &stream);
+};
+
+class SequenceResource {
+public:
+ SequenceResource(int resourceId, byte *data, uint32 size);
+ ~SequenceResource();
+public:
+ uint32 _field_0;
+ int32 _sequenceId;
+ int32 _field_8;
+ int32 _sequenceId2;
+ uint32 _field_10;
+ uint32 _flags;
+ int32 _totalDuration;
+ int16 _xOffs;
+ int16 _yOffs;
+ int32 _animationsCount;
+ SequenceAnimation *_animations;
+};
+
+class SpriteResource {
+public:
+ SpriteResource(int resourceId, byte *data, uint32 size);
+ ~SpriteResource();
+public:
+ byte *_data;
+ byte *_pixels;
+ uint32 *_palette;
+ int16 _width, _height;
+ uint16 _unk1;
+ uint16 _unk2;
+ uint16 _transparent;
+ uint16 _colorsCount;
+};
+
+class SoundResource {
+public:
+ SoundResource(int resourceId, byte *data, uint32 size);
+ ~SoundResource();
+public:
+ byte *_data;
+ uint32 _size;
+};
+
+template <class ResourceClass, int ResourceType, bool FreeAfterLoad>
+class ResourceCacheTemplate {
+public:
+
+ ResourceCacheTemplate(DatManager *dat) : _dat(dat) {
+ }
+
+ ~ResourceCacheTemplate() {
+ }
+
+ ResourceClass *get(int resourceId) {
+ Resource *resource = find(resourceId);
+ if (!resource) {
+ debug(1, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
+ resource = new Resource(load(resourceId));
+ _cache[resourceId] = resource;
+ } else {
+ debug(1, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
+ }
+ resource->_isLocked = true;
+ return resource->_obj;
+ }
+
+ void release(int resourceId) {
+ Resource *resource = find(resourceId);
+ if (resource)
+ resource->_isLocked = false;
+ }
+
+ void purge(bool force = false) {
+ debug("Count before purge: %d", _cache.size());
+ for (CacheMapIterator it = _cache.begin(); it != _cache.end(); ++it) {
+ Resource *resource = it->_value;
+ if (force || !resource->_isLocked) {
+ delete resource;
+ _cache.erase(it);
+ }
+ }
+ debug("Count after purge: %d", _cache.size());
+ }
+
+protected:
+
+ struct Resource {
+ ResourceClass *_obj;
+ bool _isLocked;
+ Resource(ResourceClass *obj) : _obj(obj), _isLocked(false) {}
+ ~Resource() { delete _obj; }
+ };
+
+ typedef Common::HashMap<int, Resource*> CacheMap;
+ typedef typename CacheMap::iterator CacheMapIterator;
+
+ DatManager *_dat;
+ CacheMap _cache;
+
+ Resource *find(int resourceId) {
+ CacheMapIterator it = _cache.find(resourceId);
+ if (it != _cache.end())
+ return it->_value;
+ return 0;
+ }
+
+ ResourceClass *load(int resourceId) {
+ if (_dat->getResourceType(resourceId) != ResourceType) {
+ error("ResourceCache::load() Wrong resource type: Expected %d, got %d", ResourceType, _dat->getResourceType(resourceId));
+ return 0;
+ }
+ byte *resourceData = _dat->loadResource(resourceId);
+ uint32 resourceSize = _dat->getResourceSize(resourceId);
+ ResourceClass *obj = new ResourceClass(resourceId, resourceData, resourceSize);
+ if (FreeAfterLoad)
+ delete[] resourceData;
+ return obj;
+ }
+
+};
+
+typedef ResourceCacheTemplate<SpriteResource, kResTypeSprite, false> SpriteCache;
+typedef ResourceCacheTemplate<SoundResource, kResTypeSound, false> SoundCache;
+typedef ResourceCacheTemplate<SequenceResource, kResTypeSequence, true> SequenceCache;
+
+} // End of namespace Gnap
+
+#endif // GNAP_RESOURCE_H
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
new file mode 100644
index 0000000..0e4695c
--- /dev/null
+++ b/engines/gnap/scenes/scene01.cpp
@@ -0,0 +1,373 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+enum {
+ kHSPlatypus = 0,
+ kHSExitTruck = 1,
+ kHSMud = 2,
+ kHSPigs = 3,
+ kHSSpaceship = 4,
+ kHSDevice = 5,
+ kHSWalkArea1 = 6,
+ kHSWalkArea2 = 7,
+ kHSWalkArea3 = 8,
+ kHSWalkArea4 = 9,
+ kHSWalkArea5 = 10,
+ kHSWalkArea6 = 11,
+ kHSWalkArea7 = 12,
+ kHSWalkArea8 = 13
+};
+
+enum {
+ kASLookSpaceship = 1,
+ kASLookSpaceshipDone = 2,
+ kASLeaveScene = 3,
+ kASTakeMud = 5,
+ kASLookPigs = 6,
+ kASUsePigs = 7
+};
+
+int GnapEngine::scene01_init() {
+ _gameSys->setAnimation(0, 0, 0);
+ _gameSys->setAnimation(0, 0, 3);
+ return 0x88;
+}
+
+void GnapEngine::scene01_updateHotspots() {
+ setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ setHotspot(kHSMud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ setHotspot(kHSPigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
+ setHotspot(kHSSpaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ setHotspot(kHSWalkArea1, 0, 0, 162, 426);
+ setHotspot(kHSWalkArea2, 162, 0, 237, 396);
+ setHotspot(kHSWalkArea3, 237, 0, 319, 363);
+ setHotspot(kHSWalkArea4, 520, 0, 800, 404);
+ setHotspot(kHSWalkArea5, 300, 447, 800, 600);
+ setHotspot(kHSWalkArea6, 678, 0, 800, 404);
+ setHotspot(kHSWalkArea7, 0, 0, 520, 351);
+ setHotspot(kHSWalkArea8, 0, 546, 300, 600);
+ setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (isFlag(0))
+ _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (isFlag(1))
+ _hotspots[kHSMud].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspotsCount = 14;
+}
+
+void GnapEngine::scene01_run() {
+
+ // NOTE Removed _s01_dword_474380 which was set when the mud was taken
+ // which is also set in the global game flags.
+
+ playSound(0x1091C, 1);
+ startSoundTimerC(5);
+
+ _gameSys->setAnimation(134, 20, 4);
+ _gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _gameSys->setAnimation(0x7F, 40, 2);
+ _gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
+
+ _timers[4] = getRandom(100) + 300;
+
+ if (!isFlag(1))
+ _gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
+
+ queueInsertDeviceIcon();
+
+ if (_prevSceneNum == 2) {
+ initGnapPos(11, 6, 3);
+ if (isFlag(0))
+ initBeaverPos(12, 6, 4);
+ endSceneInit();
+ if (isFlag(0))
+ platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ gnapWalkTo(8, 6, -1, 0x107B9, 1);
+ } else {
+ initGnapPos(1, 6, 1);
+ if (isFlag(0))
+ initBeaverPos(1, 7, 0);
+ endSceneInit();
+ }
+
+ while (!_sceneDone) {
+
+ updateMouseCursor();
+ updateCursorByHotspot();
+ testWalk(0, 3, -1, -1, -1, -1);
+
+ _sceneClickedHotspot = getClickedHotspotId();
+ updateGrabCursorSprite(0, 0);
+
+ switch (_sceneClickedHotspot) {
+
+ case kHSDevice:
+ if (_gnapActionStatus < 0) {
+ runMenu();
+ scene01_updateHotspots();
+ }
+ break;
+
+ case kHSPlatypus:
+ if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_grabCursorSpriteIndex == kItemDisguise) {
+ gnapUseDisguiseOnPlatypus();
+ } else if (_grabCursorSpriteIndex >= 0) {
+ playGnapImpossible(0, 0);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ if (isFlag(5))
+ playGnapMoan1(_platX, _platY);
+ else
+ playGnapScratchingHead(_platX, _platY);
+ break;
+ case GRAB_CURSOR:
+ gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ playGnapBrainPulsating(_platX, _platY);
+ playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ break;
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSSpaceship:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 2);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ _gnapIdleFacing = 5;
+ if (gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _gnapActionStatus = kASLookSpaceship;
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSMud:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 2, 3);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ playGnapScratchingHead(3, 3);
+ break;
+ case GRAB_CURSOR:
+ gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _gnapActionStatus = kASTakeMud;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSPigs:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 7, 2);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ _gnapIdleFacing = 7;
+ gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _gnapActionStatus = kASLookPigs;
+ break;
+ case GRAB_CURSOR:
+ _gnapIdleFacing = 7;
+ gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _gnapActionStatus = kASUsePigs;
+ break;
+ case TALK_CURSOR:
+ _gnapIdleFacing = 7;
+ gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _gnapActionStatus = kASLookPigs;
+ break;
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSExitTruck:
+ if (_gnapActionStatus < 0) {
+ _isLeavingScene = true;
+ gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107AB, 1);
+ _gnapActionStatus = kASLeaveScene;
+ if (isFlag(0))
+ platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
+ _newSceneNum = 2;
+ }
+ break;
+
+ case kHSWalkArea1:
+ case kHSWalkArea2:
+ case kHSWalkArea3:
+ case kHSWalkArea4:
+ case kHSWalkArea5:
+ case kHSWalkArea6:
+ case kHSWalkArea7:
+ case kHSWalkArea8:
+ if (_gnapActionStatus < 0)
+ gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_mouseClickState.left && _gnapActionStatus < 0) {
+ gnapWalkTo(-1, -1, -1, -1, 1);
+ _mouseClickState.left = false;
+ }
+ break;
+
+ }
+
+ scene01_updateAnimations();
+
+ if (!isSoundPlaying(0x1091C))
+ playSound(0x1091C, 1);
+
+ if (!_isLeavingScene) {
+ if (_beaverActionStatus < 0 && isFlag(0))
+ updateBeaverIdleSequence();
+ if (_gnapActionStatus < 0)
+ updateGnapIdleSequence();
+ if (_timers[4] == 0) {
+ // Update bird animation
+ _timers[4] = getRandom(100) + 300;
+ if (getRandom(1) == 0)
+ _gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ playSoundC();
+ }
+
+ checkGameKeys();
+ if (isKeyStatus1(8)) {
+ clearKeyStatus1(8);
+ runMenu();
+ scene01_updateHotspots();
+ }
+
+ gameUpdateTick();
+
+ }
+
+}
+
+void GnapEngine::scene01_updateAnimations() {
+
+ if (_gameSys->getAnimationStatus(0) == 2) {
+ _gameSys->setAnimation(0, 0, 0);
+ switch (_gnapActionStatus) {
+ case kASLookSpaceship:
+ _s01_spaceshipSurface = _gameSys->createSurface(47);
+ _gameSys->insertSpriteDrawItem(_s01_spaceshipSurface, 0, 0, 255);
+ _gameSys->setAnimation(133, 256, 0);
+ _gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _gnapActionStatus = kASLookSpaceshipDone;
+ break;
+ case kASLookSpaceshipDone:
+ _gameSys->removeSequence(133, 256, 1);
+ _gameSys->removeSpriteDrawItem(_s01_spaceshipSurface, 255);
+ deleteSurface(&_s01_spaceshipSurface);
+ _gnapActionStatus = -1;
+ break;
+ case kASLeaveScene:
+ _sceneDone = true;
+ break;
+ case kASTakeMud:
+ playGnapPullOutDevice(2, 3);
+ playGnapUseDevice(0, 0);
+ _gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(128, 40, 3);
+ _gnapActionStatus = -1;
+ break;
+ case kASLookPigs:
+ playSound(138, 0);
+ playSound(139, 0);
+ playSound(140, 0);
+ _gnapActionStatus = -1;
+ break;
+ case kASUsePigs:
+ playGnapPullOutDevice(7, 2);
+ playGnapUseDevice(0, 0);
+ _gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, getRandom(140) - 40, 0);
+ _gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_gameSys->getAnimationStatus(3) == 2) {
+ _gameSys->setAnimation(0, 0, 3);
+ invAdd(kItemMud);
+ setGrabCursorSprite(kItemMud);
+ setFlag(1);
+ scene01_updateHotspots();
+ }
+
+ if (_gameSys->getAnimationStatus(4) == 2) {
+ _s01_smokeIdCtr = (_s01_smokeIdCtr + 1) % 2;
+ _gameSys->setAnimation(0x86, _s01_smokeIdCtr + 20, 4);
+ _gameSys->insertSequence(0x86, _s01_smokeIdCtr + 20,
+ 0x86, (_s01_smokeIdCtr + 1) % 2 + 20,
+ kSeqSyncWait, 0, 0, 0);
+ }
+
+ if (_gameSys->getAnimationStatus(2) == 2) {
+ _s01_pigsIdCtr = (_s01_pigsIdCtr + 1) % 2;
+ _gameSys->setAnimation(0x7F, _s01_pigsIdCtr + 40, 2);
+ _gameSys->insertSequence(0x7F, _s01_pigsIdCtr + 40,
+ 0x7F, (_s01_pigsIdCtr + 1) % 2 + 40,
+ kSeqSyncWait, 0, 0, 0);
+ }
+
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
new file mode 100644
index 0000000..5d740b9
--- /dev/null
+++ b/engines/gnap/scenes/scene02.cpp
@@ -0,0 +1,539 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+enum {
+ kHSPlatypus = 0,
+ kHSChicken = 1,
+ kHSTruck1 = 2,
+ kHSTruck2 = 3,
+ kHSTruckGrill = 4,
+ kHSDevice = 5,
+ kHSExitHouse = 6,
+ kHSExitBarn = 7,
+ kHSExitCreek = 8,
+ kHSExitPigpen = 9,
+ kHSWalkArea1 = 10,
+ kHSWalkArea2 = 11,
+ kHSWalkArea3 = 12,
+ kHSWalkArea4 = 13
+};
+
+enum {
+ kASUseTruckNoKeys = 0,
+ kASUseGasWithTruck = 1,
+ kASUseTruckGas = 2,
+ kASUseTruckNoGas = 3,
+ kASGrabTruckGrill = 5,
+ kASLeaveScene = 6,
+ kASTalkChicken = 7,
+ kASGrabChicken = 8,
+ kASGrabChickenDone = 9,
+ kASUseTruckNoKeysDone = 11,
+ kASUseGasWithTruckDone = 12,
+ kASUseTwigWithChicken = 16
+};
+
+int GnapEngine::scene02_init() {
+ _gameSys->setAnimation(0, 0, 0);
+ return isFlag(9) ? 0x15A : 0x15B;
+}
+
+void GnapEngine::scene02_updateHotspots() {
+ setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
+ setHotspot(kHSChicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ setHotspot(kHSTruck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
+ setHotspot(kHSTruck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
+ setHotspot(kHSTruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
+ setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
+ setHotspot(kHSExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
+ setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ setHotspot(kHSWalkArea1, 92, 140, 304, 430, 0, 3, 1);
+ setHotspot(kHSWalkArea2, 0, 0, 800, 380);
+ setHotspot(kHSWalkArea3, 0, 0, 386, 445);
+ setHotspot(kHSWalkArea4, 386, 0, 509, 410);
+ setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (isFlag(0))
+ _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspotsCount = 14;
+}
+
+void GnapEngine::scene02_run() {
+
+ playSound(0x1091C, 1);
+ startSoundTimerC(6);
+
+ _s02_currChickenSequenceId = 0x14B;
+ _gameSys->setAnimation(0x14B, 179, 2);
+ _gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
+
+ _s02_nextChickenSequenceId = -1;
+ _timers[5] = getRandom(20) + 30;
+ _timers[4] = getRandom(100) + 300;
+
+ queueInsertDeviceIcon();
+
+ switch (_prevSceneNum) {
+ case 3:
+ initGnapPos(11, 6, 3);
+ if (isFlag(0))
+ initBeaverPos(12, 6, 4);
+ endSceneInit();
+ if (isFlag(0))
+ platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ break;
+ case 4:
+ initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 3);
+ if (isFlag(0))
+ initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 4);
+ endSceneInit();
+ gnapWalkTo(7, 6, 0, 0x107B9, 1);
+ if (isFlag(0))
+ platypusWalkTo(8, 6, 1, 0x107C2, 1);
+ scene02_updateHotspots();
+ _gameSys->waitForUpdate();
+ break;
+ case 47:
+ clearFlag(25);
+ initGnapPos(5, 6, 3);
+ initBeaverPos(6, 7, 4);
+ endSceneInit();
+ break;
+ case 49:
+ initGnapPos(5, 6, 1);
+ if (isFlag(0))
+ initBeaverPos(6, 7, 0);
+ endSceneInit();
+ break;
+ default:
+ initGnapPos(-1, 6, 1);
+ if (isFlag(0))
+ initBeaverPos(-1, 7, 0);
+ endSceneInit();
+ if (isFlag(0))
+ platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ break;
+ }
+
+ while (!_sceneDone) {
+
+ updateMouseCursor();
+
+ updateCursorByHotspot();
+
+ testWalk(0, 6, 7, 6, 8, 6);
+
+ _sceneClickedHotspot = getClickedHotspotId();
+ updateGrabCursorSprite(0, 0);
+
+ switch (_sceneClickedHotspot) {
+
+ case kHSDevice:
+ if (_gnapActionStatus < 0) {
+ runMenu();
+ scene02_updateHotspots();
+ }
+ break;
+
+ case kHSPlatypus:
+ if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_grabCursorSpriteIndex == kItemDisguise) {
+ gnapUseDisguiseOnPlatypus();
+ } else if (_grabCursorSpriteIndex >= 0) {
+ playGnapImpossible(0, 0);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ if (isFlag(5))
+ playGnapMoan1(_platX, _platY);
+ else
+ playGnapScratchingHead(_platX, _platY);
+ break;
+ case GRAB_CURSOR:
+ gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ playGnapBrainPulsating(_platX, _platY);
+ playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ break;
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSChicken:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex == kItemTwig) {
+ _gnapIdleFacing = 7;
+ gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1,
+ 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _gnapActionStatus = kASUseTwigWithChicken;
+ } else if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y + 1, 9, 8);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ playGnapMoan2(9, 8);
+ break;
+ case GRAB_CURSOR:
+ _gnapIdleFacing = 1;
+ if (gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _gnapActionStatus = kASGrabChicken;
+ else
+ _gnapActionStatus = -1;
+ break;
+ case TALK_CURSOR:
+ _gnapIdleFacing = 1;
+ gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _gnapActionStatus = kASTalkChicken;
+ break;
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSTruck1:
+ case kHSTruck2:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex == kItemKeys) {
+ if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ setGrabCursorSprite(-1);
+ invRemove(kItemKeys);
+ if (isFlag(8))
+ _gnapActionStatus = kASUseTruckGas;
+ else
+ _gnapActionStatus = kASUseTruckNoGas;
+ }
+ } else if (_grabCursorSpriteIndex == kItemGas) {
+ _hotspots[kHSWalkArea4].flags |= SF_WALKABLE;
+ if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ _gnapActionStatus = kASUseGasWithTruck;
+ _hotspots[kHSWalkArea4].flags &= ~SF_WALKABLE;
+ } else if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 2, 2);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ playGnapScratchingHead(2, 2);
+ break;
+ case GRAB_CURSOR:
+ if (isFlag(9)) {
+ if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (isFlag(8))
+ _gnapActionStatus = kASUseTruckGas;
+ else
+ _gnapActionStatus = kASUseTruckNoGas;
+ }
+ } else {
+ _gnapIdleFacing = 4;
+ if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ _gnapActionStatus = kASUseTruckNoKeys;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSTruckGrill:
+ if (_gnapActionStatus < 0) {
+ if (_grabCursorSpriteIndex >= 0) {
+ playGnapShowCurrItem(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 2, 4);
+ } else {
+ switch (_verbCursor) {
+ case LOOK_CURSOR:
+ playGnapMoan2(2, 4);
+ break;
+ case GRAB_CURSOR:
+ _gnapIdleFacing = 7;
+ gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _gnapActionStatus = kASGrabTruckGrill;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHSExitHouse:
+ if (_gnapActionStatus < 0) {
+ _isLeavingScene = 1;
+ gnapWalkTo(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 0, 0x107AD, 1);
+ _gnapActionStatus = kASLeaveScene;
+ if (isFlag(0))
+ platypusWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, -1, 0x107C1, 1);
+ scene02_updateHotspots();
+ _newSceneNum = 4;
+ }
+ break;
+
+ case kHSExitBarn:
+ if (_gnapActionStatus < 0) {
+ _isLeavingScene = 1;
+ gnapWalkTo(_hotspotsWalkPos[7].x, _hotspotsWalkPos[7].y, 0, 0x107AD, 1);
+ _gnapActionStatus = kASLeaveScene;
+ if (isFlag(0))
+ platypusWalkTo(_hotspotsWalkPos[7].x + 1, _hotspotsWalkPos[7].y, -1, 0x107C1, 1);
+ scene02_updateHotspots();
+ _newSceneNum = 5;
+ }
+ break;
+
+ case kHSExitCreek:
+ if (_gnapActionStatus < 0) {
+ _isLeavingScene = 1;
+ gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _gnapActionStatus = kASLeaveScene;
+ if (isFlag(0))
+ platypusWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, -1, 0x107CD, 1);
+ _newSceneNum = 3;
+ }
+ break;
+
+ case kHSExitPigpen:
+ if (_gnapActionStatus < 0) {
+ _isLeavingScene = 1;
+ gnapWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, 0, 0x107AF, 1);
+ _gnapActionStatus = kASLeaveScene;
+ if (isFlag(0))
+ platypusWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, -1, 0x107CF, 1);
+ _newSceneNum = 1;
+ }
+ break;
+
+ case kHSWalkArea1:
+ case kHSWalkArea2:
+ case kHSWalkArea3:
+ case kHSWalkArea4:
+ if (_gnapActionStatus < 0)
+ gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_mouseClickState.left && _gnapActionStatus < 0) {
+ gnapWalkTo(-1, -1, -1, -1, 1);
+ _mouseClickState.left = false;
+ }
+ break;
+
+ }
+
+ scene02_updateAnimations();
+
+ if (!isSoundPlaying(0x1091C))
+ playSound(0x1091C, 1);
+
+ if (!_isLeavingScene) {
+ if (_beaverActionStatus < 0 && isFlag(0))
+ updateBeaverIdleSequence();
+ if (_gnapActionStatus < 0)
+ updateGnapIdleSequence();
+ if (!_timers[4]) {
+ // Update bird animation
+ _timers[4] = getRandom(100) + 300;
+ if (getRandom(2) != 0)
+ _gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_timers[5] && _s02_nextChickenSequenceId == -1 && _gnapActionStatus != 7 && _gnapActionStatus != 8) {
+ if (getRandom(6) != 0) {
+ _s02_nextChickenSequenceId = 0x14B;
+ _timers[5] = getRandom(20) + 30;
+ } else {
+ _s02_nextChickenSequenceId = 0x14D;
+ _timers[5] = getRandom(20) + 50;
+ }
+ }
+ playSoundC();
+ }
+
+ checkGameKeys();
+
+ if (isKeyStatus1(8)) {
+ clearKeyStatus1(8);
+ runMenu();
+ scene02_updateHotspots();
+ }
+
+ gameUpdateTick();
+
+ }
+
+}
+
+void GnapEngine::scene02_updateAnimations() {
+
+ if (_gameSys->getAnimationStatus(0) == 2) {
+ switch (_gnapActionStatus) {
+ case kASUseTruckNoKeys:
+ _gameSys->insertSequence(0x14E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(0x14E, _gnapId, 0);
+ _gnapSequenceId = 0x14E;
+ _gnapSequenceDatNum = 0;
+ _gnapActionStatus = kASUseTruckNoKeysDone;
+ break;
+ case kASUseGasWithTruck:
+ _gameSys->insertSequence(0x151, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(0x151, _gnapId, 0);
+ _gnapSequenceId = 0x151;
+ _gnapSequenceDatNum = 0;
+ invRemove(kItemGas);
+ setGrabCursorSprite(-1);
+ setFlag(8);
+ _gnapActionStatus = kASUseGasWithTruckDone;
+ break;
+ case kASUseTruckGas:
+ _timers[5] = 9999;
+ _timers[4] = 9999;
+ hideCursor();
+ setGrabCursorSprite(-1);
+ if (!isFlag(9)) {
+ _gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->waitForUpdate();
+ setFlag(9);
+ _gnapSequenceId = 0x14F;
+ _gnapSequenceDatNum = 0;
+ invRemove(kItemKeys);
+ setGrabCursorSprite(-1);
+ }
+ _newSceneNum = 47;
+ _sceneDone = true;
+ break;
+ case kASUseTruckNoGas:
+ hideCursor();
+ setGrabCursorSprite(-1);
+ _timers[4] = 250;
+ if (!isFlag(9)) {
+ _gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->waitForUpdate();
+ setFlag(9);
+ _gnapSequenceId = 0x14F;
+ _gnapSequenceDatNum = 0;
+ invRemove(kItemKeys);
+ setGrabCursorSprite(-1);
+ }
+ _newSceneNum = 47;
+ _sceneDone = true;
+ setFlag(25);
+ break;
+ case kASGrabTruckGrill:
+ switch (_s02_truckGrillCtr) {
+ case 0:
+ _s02_gnapTruckSequenceId = 0x158;
+ break;
+ case 1:
+ _s02_gnapTruckSequenceId = 0x159;
+ break;
+ case 2:
+ _s02_gnapTruckSequenceId = 0x157;
+ break;
+ }
+ _s02_truckGrillCtr = (_s02_truckGrillCtr + 1) % 3;
+ _gameSys->insertSequence(_s02_gnapTruckSequenceId, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s02_gnapTruckSequenceId, _gnapId, 0);
+ _gnapSequenceId = _s02_gnapTruckSequenceId;
+ _gnapSequenceDatNum = 0;
+ _gnapActionStatus = -1;
+ break;
+ case kASLeaveScene:
+ _sceneDone = true;
+ break;
+ case kASTalkChicken:
+ _s02_nextChickenSequenceId = 0x14C;
+ break;
+ case kASGrabChicken:
+ _s02_nextChickenSequenceId = 0x150;
+ _timers[2] = 100;
+ break;
+ case kASGrabChickenDone:
+ _gameSys->insertSequence(0x107B5, _gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ _gnapSequenceId = 0x7B5;
+ _gnapSequenceDatNum = 1;
+ _s02_currChickenSequenceId = 0x14B;
+ _gameSys->setAnimation(0x14B, 179, 2);
+ _gameSys->insertSequence(_s02_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _gnapActionStatus = -1;
+ _timers[5] = 30;
+ break;
+ case kASUseTwigWithChicken:
+ playGnapShowItem(5, 0, 0);
+ _gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, 32, 0, 0, 0);
+ _s02_currChickenSequenceId = 0x155;
+ _s02_nextChickenSequenceId = -1;
+ _gnapActionStatus = -1;
+ break;
+ case kASUseTruckNoKeysDone:
+ case kASUseGasWithTruckDone:
+ default:
+ _gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_s02_nextChickenSequenceId == 0x150) {
+ _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 0);
+ _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->removeSequence(_s02_currChickenSequenceId, 179, 1);
+ _s02_nextChickenSequenceId = -1;
+ _s02_currChickenSequenceId = -1;
+ _gnapActionStatus = kASGrabChickenDone;
+ _timers[5] = 500;
+ } else if (_s02_nextChickenSequenceId == 0x14C) {
+ _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
+ _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _s02_currChickenSequenceId = _s02_nextChickenSequenceId;
+ _s02_nextChickenSequenceId = -1;
+ _gnapActionStatus = -1;
+ } else if (_s02_nextChickenSequenceId != -1) {
+ _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
+ _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _s02_currChickenSequenceId = _s02_nextChickenSequenceId;
+ _s02_nextChickenSequenceId = -1;
+ }
+ }
+
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
new file mode 100644
index 0000000..6f191dc
--- /dev/null
+++ b/engines/gnap/scenes/scene03.cpp
@@ -0,0 +1,517 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+enum {
+ kHSPlatypus = 0,
+ kHSGrass = 1,
+ kHSExitTruck = 2,
+ kHSCreek = 3,
+ kHSTrappedPlatypus = 4,
+ kHSDevice = 5,
+ kHSWalkAreas1 = 6,
+ kHSWalkAreas2 = 7,
+ kHSPlatypusWalkArea = 8,
+ kHSWalkAreas3 = 9
+};
+
+enum {
+ kASLeaveScene = 0,
+ kASFreePlatypus = 1,
+ kASHypnotizePlat = 2,
+ kASHypnotizeScaredPlat = 3,
+ kASFreePlatypusDone = 4,
+ kASGrabPlatypus = 5,
+ kASGrabCreek = 6,
+ kASGrabCreekDone = 7,
+ kASGrabScaredPlatypus = 8
+};
+
+int GnapEngine::scene03_init() {
+ _gameSys->setAnimation(0, 0, 0);
+ _gameSys->setAnimation(0, 0, 1);
+ _gameSys->setAnimation(0, 0, 5);
+ return 0x1CC;
+}
+
+void GnapEngine::scene03_updateHotspots() {
+ setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ setHotspot(kHSGrass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ setHotspot(kHSExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
+ setHotspot(kHSCreek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ setHotspot(kHSTrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
+ setHotspot(kHSWalkAreas1, 0, 500, 300, 600);
+ setHotspot(kHSWalkAreas2, 300, 447, 800, 600);
+ setHotspot(kHSPlatypusWalkArea, 235, 0, 800, 600);
+ setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
+ setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (isFlag(0))
+ _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (isFlag(6))
+ _hotspots[kHSGrass].flags = SF_WALKABLE | SF_DISABLED;
+ if (isFlag(0))
+ _hotspots[kHSTrappedPlatypus].flags = SF_DISABLED;
+ if (isFlag(0) || _s03_platypusHypnotized)
+ _hotspots[kHSPlatypusWalkArea].flags |= SF_WALKABLE;
+ _hotspotsCount = 10;
+}
+
+void GnapEngine::scene03_run() {
+
+ playSound(0x10925, 1);
+
+ startSoundTimerC(7);
+
+ _gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ _gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
+
+ _s03_platypusHypnotized = false;
+
+ initGnapPos(3, 4, 1);
+
+ _gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
+
+ _s03_currFrogSequenceId = 0x1C6;
+ _s03_nextFrogSequenceId = -1;
+ _gameSys->setAnimation(0x1C6, 253, 2);
+
+ _timers[6] = getRandom(20) + 30;
+ _timers[4] = getRandom(100) + 300;
+ _timers[5] = getRandom(100) + 200;
+
+ if (isFlag(0)) {
+ initBeaverPos(5, 4, 0);
+ } else {
+ _timers[1] = getRandom(40) + 20;
+ _gameSys->setAnimation(0x1C2, 99, 1);
+ _gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
+ _beaverSequenceId = 0x1C2;
+ _beaverSequenceDatNum = 0;
+ }
+
+ _gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
+
Commit: ea59c06ba9194cd82de811f7516a69a0e8555c89
https://github.com/scummvm/scummvm/commit/ea59c06ba9194cd82de811f7516a69a0e8555c89
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 28
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene28.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 08f5985..80817b8 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 26;
+ _currentSceneNum = 28;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0x5b, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x113, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 27;
+ _newSceneNum = 28;
_newCursorValue = 3;
// < DEBUG END
@@ -2131,6 +2131,7 @@ bool GnapEngine::sceneXX_sub_4466B1() {
pauseGame();
updatePause();
}
+
return false;
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index e1d13ec..60fe029 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -779,9 +779,8 @@ public:
void scene27_updateAnimations();
// Scene 28
- int _s28_dword_47EA5C;
- int _s28_dword_47EA60;
- int _s28_dword_474938;
+ int _s28_currClownSequenceId, _s28_nextClownSequenceId;
+ int _s28_clownTalkCtr;
int scene28_init();
void scene28_updateHotspots();
void scene28_run();
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 23c3e52..b2b8455 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -31,12 +31,26 @@ enum {
kHSHorn = 1,
kHSClown = 2,
kHSExitOutsideClown = 3,
- kHSUnknown = 4,
+ kHSEmptyBucket = 4,
kHSDevice = 5,
kHSWalkArea1 = 6,
kHSWalkArea2 = 7
};
+enum {
+ kASUseBeerBucketWithClown = 0,
+ kASUsePillBucketWithClown = 1,
+ kASGrabHornFails = 2,
+ kASGrabEmptyBucket = 3,
+ kASGrabHornSuccess = 4,
+ kASGrabHornSuccessDone = 5,
+ kASGrabEmptyBucketDone = 6,
+ kASGrabHornFailsDone = 7,
+ kASTalkClown = 8,
+ kASGnapWaiting = 9,
+ kASLeaveScene = 10
+};
+
int GnapEngine::scene28_init() {
return 0x125;
}
@@ -46,21 +60,21 @@ void GnapEngine::scene28_updateHotspots() {
setHotspot(kHSHorn, 148, 352, 215, 383, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
setHotspot(kHSClown, 130, 250, 285, 413, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
setHotspot(kHSExitOutsideClown, 660, 190, 799, 400, SF_EXIT_R_CURSOR, 9, 6);
- setHotspot(kHSUnknown, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
+ setHotspot(kHSEmptyBucket, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
setHotspot(kHSWalkArea1, 0, 0, 799, 523);
setHotspot(kHSWalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (invHas(kItemHorn))
_hotspots[kHSHorn].flags = SF_DISABLED;
if (isFlag(22))
- _hotspots[kHSUnknown].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSEmptyBucket].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 8;
}
void GnapEngine::scene28_run() {
playSound(0x1093C, 1);
- _s28_dword_47EA60 = -1;
+ _s28_nextClownSequenceId = -1;
queueInsertDeviceIcon();
_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -73,11 +87,11 @@ void GnapEngine::scene28_run() {
_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
if (!invHas(kItemHorn))
_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
- _s28_dword_47EA5C = 0x11C;
+ _s28_currClownSequenceId = 0x11C;
} else {
- _s28_dword_47EA5C = 0x11B;
+ _s28_currClownSequenceId = 0x11B;
_gameSys->setAnimation(0x11B, 39, 3);
- _gameSys->insertSequence(_s28_dword_47EA5C, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s28_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_timers[4] = getRandom(20) + 80;
}
initGnapPos(8, 8, 3);
@@ -89,13 +103,13 @@ void GnapEngine::scene28_run() {
initBeaverPos(9, 8, 4);
endSceneInit();
playSequences(0xF7, 0x121, 0x122, 0x123);
- _s28_dword_47EA5C = 0x115;
+ _s28_currClownSequenceId = 0x115;
setFlag(1);
_gameSys->setAnimation(0x115, 39, 3);
- _gameSys->insertSequence(_s28_dword_47EA5C, 39, 283, 39, kSeqSyncWait, 0, 0, 0);
- _s28_dword_47EA60 = -1;
+ _gameSys->insertSequence(_s28_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
+ _s28_nextClownSequenceId = -1;
_timers[4] = getRandom(20) + 80;
- _gnapActionStatus = 9;
+ _gnapActionStatus = kASGnapWaiting;
while (_gameSys->getAnimationStatus(3) != 2) {
gameUpdateTick();
updateMouseCursor();
@@ -159,7 +173,7 @@ void GnapEngine::scene28_run() {
if (isFlag(21)) {
if (!invHas(kItemHorn)) {
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y) | 0x10000, 1);
- _gnapActionStatus = 4;
+ _gnapActionStatus = kASGrabHornSuccess;
}
} else {
_gnapIdleFacing = 5;
@@ -167,7 +181,7 @@ void GnapEngine::scene28_run() {
_hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
_hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASGrabHornFails;
}
break;
case TALK_CURSOR:
@@ -191,13 +205,13 @@ void GnapEngine::scene28_run() {
gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASUseBeerBucketWithClown;
} else if (_grabCursorSpriteIndex == kItemBucketWithPill) {
_gnapIdleFacing = 5;
gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASUsePillBucketWithClown;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 2, 4);
} else {
@@ -208,7 +222,7 @@ void GnapEngine::scene28_run() {
case TALK_CURSOR:
_gnapIdleFacing = 5;
gnapWalkTo(5, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 8;
+ _gnapActionStatus = kASTalkClown;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -225,13 +239,13 @@ void GnapEngine::scene28_run() {
_newSceneNum = 27;
_hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BF, 1);
- _gnapActionStatus = 10;
+ _gnapActionStatus = kASLeaveScene;
_hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x - 1, _hotspotsWalkPos[kHSExitOutsideClown].y, -1, 0x107C2, 1);
}
break;
- case kHSUnknown:
+ case kHSEmptyBucket:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowItem(_grabCursorSpriteIndex, 8, 6);
@@ -243,8 +257,8 @@ void GnapEngine::scene28_run() {
playGnapScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSUnknown].x, _hotspotsWalkPos[kHSUnknown].y) | 0x10000, 1);
- _gnapActionStatus = 3;
+ gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSEmptyBucket].x, _hotspotsWalkPos[kHSEmptyBucket].y) | 0x10000, 1);
+ _gnapActionStatus = kASGrabEmptyBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -281,7 +295,7 @@ void GnapEngine::scene28_run() {
if (!_timers[4]) {
_timers[4] = getRandom(20) + 80;
if (_gnapActionStatus < 0 && !isFlag(21))
- _s28_dword_47EA60 = 0x114;
+ _s28_nextClownSequenceId = 0x114;
}
}
@@ -304,37 +318,30 @@ void GnapEngine::scene28_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
- case 0:
+ case kASUseBeerBucketWithClown:
setFlag(22);
- _s28_dword_47EA60 = 275;
+ _s28_nextClownSequenceId = 0x113;
invRemove(kItemBucketWithBeer);
scene28_updateHotspots();
break;
- case 1:
- _s28_dword_47EA60 = 0x116;
+ case kASUsePillBucketWithClown:
+ _s28_nextClownSequenceId = 0x116;
invRemove(kItemBucketWithPill);
setFlag(22);
setFlag(21);
scene28_updateHotspots();
break;
- case 2:
- _s28_dword_47EA60 = 0x119;
+ case kASGrabHornFails:
+ _s28_nextClownSequenceId = 0x119;
break;
- case 3:
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x111, 99, 0);
- _gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = 6;
- break;
- case 4:
+ case kASGrabHornSuccess:
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
_gameSys->setAnimation(0x117, 59, 0);
_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = 5;
+ _gnapActionStatus = kASGrabHornSuccessDone;
break;
- case 5:
+ case kASGrabHornSuccessDone:
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(0xF6, 255);
@@ -349,63 +356,70 @@ void GnapEngine::scene28_updateAnimations() {
scene28_updateHotspots();
_gnapActionStatus = -1;
break;
- case 6:
+ case kASGrabEmptyBucket:
+ playGnapPullOutDevice(0, 0);
+ playGnapUseDevice(0, 0);
+ _gameSys->setAnimation(0x111, 99, 0);
+ _gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
+ _gnapActionStatus = kASGrabEmptyBucketDone;
+ break;
+ case kASGrabEmptyBucketDone:
setGrabCursorSprite(kItemEmptyBucket);
clearFlag(22);;
scene28_updateHotspots();
invAdd(kItemEmptyBucket);
_gnapActionStatus = -1;
break;
- case 7:
+ case kASGrabHornFailsDone:
_gameSys->insertSequence(0x107B5, _gnapId, 281, 39, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s28_dword_47EA5C = 0x11B;
- _s28_dword_47EA60 = -1;
+ _s28_currClownSequenceId = 0x11B;
+ _s28_nextClownSequenceId = -1;
_gnapActionStatus = -1;
gnapWalkTo(2, 8, -1, 0x107BB, 1);
break;
- case 8:
- _s28_dword_474938 = (_s28_dword_474938 + 1) % 2;
- if (_s28_dword_474938 == 0)
- _s28_dword_47EA60 = 0x11D;
- else if (_s28_dword_474938 == 1)
- _s28_dword_47EA60 = 0x11E;
- else if (_s28_dword_474938 == 2)
- _s28_dword_47EA60 = 0x11F; // NOTE CHECKME Never set, bug in the original?
+ case kASTalkClown:
+ _s28_clownTalkCtr = (_s28_clownTalkCtr + 1) % 2;
+ if (_s28_clownTalkCtr == 0)
+ _s28_nextClownSequenceId = 0x11D;
+ else if (_s28_clownTalkCtr == 1)
+ _s28_nextClownSequenceId = 0x11E;
+ else if (_s28_clownTalkCtr == 2)
+ _s28_nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
break;
- case 9:
+ case kASGnapWaiting:
_gnapActionStatus = -1;
break;
- case 10:
+ case kASLeaveScene:
_sceneDone = true;
break;
}
}
if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_s28_dword_47EA60) {
+ switch (_s28_nextClownSequenceId) {
case 0x113:
setGrabCursorSprite(-1);
- _gameSys->setAnimation(_s28_dword_47EA60, 39, 0);
- _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_dword_47EA60), 0, 0);
- _gameSys->insertSequence(_s28_dword_47EA60, 39, _s28_dword_47EA5C, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x11B, 39, _s28_dword_47EA60, 39, kSeqSyncWait, 0, 0, 0);
- _s28_dword_47EA5C = 0x11B;
- _s28_dword_47EA60 = -1;
- _gnapActionStatus = 9;
+ _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x11B, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _s28_currClownSequenceId = 0x11B;
+ _s28_nextClownSequenceId = -1;
+ _gnapActionStatus = kASGnapWaiting;
break;
case 0x116:
setGrabCursorSprite(-1);
- _gameSys->setAnimation(_s28_dword_47EA60, 39, 0);
- _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_dword_47EA60), 0, 0);
- _gameSys->insertSequence(_s28_dword_47EA60, 39, _s28_dword_47EA5C, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x11C, 39, _s28_dword_47EA60, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_dword_47EA60), 0, 0);
- _s28_dword_47EA5C = _s28_dword_47EA60;
- _s28_dword_47EA60 = -1;
- _gnapActionStatus = 9;
+ _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x11C, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _s28_currClownSequenceId = _s28_nextClownSequenceId;
+ _s28_nextClownSequenceId = -1;
+ _gnapActionStatus = kASGnapWaiting;
break;
case 0x11D:
case 0x11E:
@@ -413,20 +427,20 @@ void GnapEngine::scene28_updateAnimations() {
_gnapActionStatus = -1;
break;
case 0x119:
- _gameSys->insertSequence(_s28_dword_47EA60, 39, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_dword_47EA60, 39, 0);
- _gameSys->removeSequence(_s28_dword_47EA5C, 39, 1);
- _gnapActionStatus = 7;
- _gnapSequenceId = _s28_dword_47EA60;
+ _gameSys->insertSequence(_s28_nextClownSequenceId, 39, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _gameSys->removeSequence(_s28_currClownSequenceId, 39, 1);
+ _gnapActionStatus = kASGrabHornFailsDone;
+ _gnapSequenceId = _s28_nextClownSequenceId;
_gnapSequenceDatNum = 0;
- _s28_dword_47EA60 = -1;
+ _s28_nextClownSequenceId = -1;
break;
}
- if (_s28_dword_47EA60 != -1) {
- _gameSys->insertSequence(_s28_dword_47EA60, 39, _s28_dword_47EA5C, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_dword_47EA60, 39, 3);
- _s28_dword_47EA5C = _s28_dword_47EA60;
- _s28_dword_47EA60 = -1;
+ if (_s28_nextClownSequenceId != -1) {
+ _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 3);
+ _s28_currClownSequenceId = _s28_nextClownSequenceId;
+ _s28_nextClownSequenceId = -1;
}
}
Commit: 22b8cc704a37e03373e77ebca45d6d6c4bb456d4
https://github.com/scummvm/scummvm/commit/22b8cc704a37e03373e77ebca45d6d6c4bb456d4
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 29
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene29.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 80817b8..aa1b29e 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 28;
+ _currentSceneNum = 29;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0x113, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0xed, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -721,8 +721,8 @@ void GnapEngine::initGameFlags(int num) {
//invAdd(kItemPill);
invAdd(kItemBucketWithBeer);
invAdd(kItemChickenBucket);
- invAdd(kItemGum);
- invAdd(kItemPicture);
+ invAdd(kItemBanana);
+ invAdd(kItemHorn);
#endif
}
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 28;
+ _newSceneNum = 29;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 60fe029..7141cc8 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -787,10 +787,8 @@ public:
void scene28_updateAnimations();
// Scene 29
- int _s29_dword_47EA74;
- int _s29_dword_47EA78;
- int _s29_dword_47EA7C;
- int _s29_dword_47EA80;
+ int _s28_currMonkeySequenceId, _s28_nextMonkeySequenceId;
+ int _s28_currManSequenceId, _s28_nextManSequenceId;
int scene29_init();
void scene29_updateHotspots();
void scene29_run();
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 3a78107..4433c0a 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -36,6 +36,11 @@ enum {
kHSWalkArea1 = 6
};
+enum {
+ kASUseBananaWithMonkey = 0,
+ kASLeaveScene = 2
+};
+
int GnapEngine::scene29_init() {
return 0xF6;
}
@@ -60,13 +65,13 @@ void GnapEngine::scene29_run() {
queueInsertDeviceIcon();
if (invHas(kItemHorn)) {
- _s29_dword_47EA74 = 0xE8;
- _s29_dword_47EA78 = -1;
+ _s28_currMonkeySequenceId = 0xE8;
+ _s28_nextMonkeySequenceId = -1;
_gameSys->setAnimation(0xE8, 159, 4);
- _gameSys->insertSequence(_s29_dword_47EA74, 159, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s28_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s29_dword_47EA7C = 0xED;
- _s29_dword_47EA80 = -1;
+ _s28_currManSequenceId = 0xED;
+ _s28_nextManSequenceId = -1;
_gameSys->setAnimation(0xED, 39, 3);
_timers[4] = getRandom(20) + 60;
} else {
@@ -141,9 +146,9 @@ void GnapEngine::scene29_run() {
if (_grabCursorSpriteIndex == kItemBanana) {
_gnapIdleFacing = 1;
gnapWalkTo(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASUseBananaWithMonkey;
_newSceneNum = 51;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
setGrabCursorSprite(-1);
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y, 5, 6);
@@ -166,20 +171,20 @@ void GnapEngine::scene29_run() {
case kHSExitCircus:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 26;
gnapWalkTo(_hotspotsWalkPos[kHSExitCircus].x, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
}
break;
case kHSExitOutsideClown:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 27;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AB, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y - 1, -1, 0x107CD, 1);
}
break;
@@ -188,11 +193,11 @@ void GnapEngine::scene29_run() {
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
setGrabCursorSprite(-1);
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 52;
gnapWalkTo(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y, 0, -1, 1);
playGnapIdle(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASLeaveScene;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y, 2, 3);
} else {
@@ -239,19 +244,19 @@ void GnapEngine::scene29_run() {
if (_gnapActionStatus < 0) {
switch (getRandom(5)) {
case 0:
- _s29_dword_47EA80 = 0xED;
+ _s28_nextManSequenceId = 0xED;
break;
case 1:
- _s29_dword_47EA80 = 0xEE;
+ _s28_nextManSequenceId = 0xEE;
break;
case 2:
- _s29_dword_47EA80 = 0xEF;
+ _s28_nextManSequenceId = 0xEF;
break;
case 3:
- _s29_dword_47EA80 = 0xF0;
+ _s28_nextManSequenceId = 0xF0;
break;
case 4:
- _s29_dword_47EA80 = 0xF1;
+ _s28_nextManSequenceId = 0xF1;
break;
}
}
@@ -279,71 +284,70 @@ void GnapEngine::scene29_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
- case 0:
- _s29_dword_47EA78 = 0xE5;
+ case kASUseBananaWithMonkey:
+ _s28_nextMonkeySequenceId = 0xE5;
break;
- case 1:
- case 2:
+ case kASLeaveScene:
_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s29_dword_47EA80 != -1) {
- _gameSys->insertSequence(_s29_dword_47EA80, 39, _s29_dword_47EA7C, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s29_dword_47EA80, 39, 3);
- _s29_dword_47EA7C = _s29_dword_47EA80;
- _s29_dword_47EA80 = -1;
+ if (_gameSys->getAnimationStatus(3) == 2 && _s28_nextManSequenceId != -1) {
+ _gameSys->insertSequence(_s28_nextManSequenceId, 39, _s28_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextManSequenceId, 39, 3);
+ _s28_currManSequenceId = _s28_nextManSequenceId;
+ _s28_nextManSequenceId = -1;
}
if (_gameSys->getAnimationStatus(4) == 2) {
- if (_s29_dword_47EA78 == 0xE5) {
+ if (_s28_nextMonkeySequenceId == 0xE5) {
_gameSys->insertSequence(0xF2, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0xF2;
_gameSys->setAnimation(0xE6, 159, 0);
_gameSys->setAnimation(0, 159, 4);
- _gameSys->insertSequence(_s29_dword_47EA78, 159, _s29_dword_47EA74, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xE6, 159, _s29_dword_47EA78, 159, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = 1;
- _s29_dword_47EA74 = 0xE6;
- _s29_dword_47EA78 = -1;
+ _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0xE6, 159, _s28_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _gnapActionStatus = kASLeaveScene;
+ _s28_currMonkeySequenceId = 0xE6;
+ _s28_nextMonkeySequenceId = -1;
_timers[5] = 30;
while (_timers[5])
gameUpdateTick();
platypusWalkTo(0, 8, 1, 0x107CF, 1);
while (_gameSys->getAnimationStatus(1) != 2)
gameUpdateTick();
- } else if (_s29_dword_47EA78 == -1) {
+ } else if (_s28_nextMonkeySequenceId == -1) {
switch (getRandom(6)) {
case 0:
- _s29_dword_47EA78 = 0xE8;
+ _s28_nextMonkeySequenceId = 0xE8;
break;
case 1:
- _s29_dword_47EA78 = 0xE9;
+ _s28_nextMonkeySequenceId = 0xE9;
break;
case 2:
- _s29_dword_47EA78 = 0xEA;
+ _s28_nextMonkeySequenceId = 0xEA;
break;
case 3:
- _s29_dword_47EA78 = 0xEB;
+ _s28_nextMonkeySequenceId = 0xEB;
break;
case 4:
- _s29_dword_47EA78 = 0xEC;
+ _s28_nextMonkeySequenceId = 0xEC;
break;
case 5:
- _s29_dword_47EA78 = 0xE7;
+ _s28_nextMonkeySequenceId = 0xE7;
break;
}
- _gameSys->insertSequence(_s29_dword_47EA78, 159, _s29_dword_47EA74, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s29_dword_47EA78, 159, 4);
- _s29_dword_47EA74 = _s29_dword_47EA78;
- _s29_dword_47EA78 = -1;
+ _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
+ _s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
+ _s28_nextMonkeySequenceId = -1;
} else {
- _gameSys->insertSequence(_s29_dword_47EA78, 159, _s29_dword_47EA74, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s29_dword_47EA78, 159, 4);
- _s29_dword_47EA74 = _s29_dword_47EA78;
- _s29_dword_47EA78 = -1;
+ _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
+ _s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
+ _s28_nextMonkeySequenceId = -1;
}
}
Commit: bd7d790f141eb0afb2276777391e2a7986195b09
https://github.com/scummvm/scummvm/commit/bd7d790f141eb0afb2276777391e2a7986195b09
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 30
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene30.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index aa1b29e..d1f4b80 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 29;
+ _currentSceneNum = 30;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0xed, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0xff, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 29;
+ _newSceneNum = 30;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7141cc8..d90a58f 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -795,8 +795,7 @@ public:
void scene29_updateAnimations();
// Scene 30
- int _s30_dword_47EA88;
- int _s30_dword_47EA8C;
+ int _s30_kidSequenceId;
int scene30_init();
void scene30_updateHotspots();
void scene30_run();
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 341caee..f6ec969 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -34,6 +34,15 @@ enum {
kHSWalkArea1 = 4
};
+enum {
+ kASLeaveScene = 0,
+ kASUsePillMachine = 1,
+ kASUsePillMachine2 = 2,
+ kASLookPillMachine = 3,
+ kASUsePillMachine3 = 4,
+ kASUsePillMachine4 = 5
+};
+
int GnapEngine::scene30_init() {
return isFlag(23) ? 0x10B : 0x10A;
}
@@ -65,7 +74,7 @@ void GnapEngine::scene30_run() {
_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
_timers[4] = getRandom(100) + 300;
- _s30_dword_47EA88 = 0x101;
+ _s30_kidSequenceId = 0x101;
initGnapPos(7, 12, 1);
initBeaverPos(6, 12, 0);
endSceneInit();
@@ -121,7 +130,7 @@ void GnapEngine::scene30_run() {
_hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
_hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASUsePillMachine;
hasTakenPill = true;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 8, 5);
@@ -129,7 +138,7 @@ void GnapEngine::scene30_run() {
switch (_verbCursor) {
case LOOK_CURSOR:
gnapWalkTo(9, 8, 0, 0x107BC, 1);
- _gnapActionStatus = 3;
+ _gnapActionStatus = kASLookPillMachine;
break;
case GRAB_CURSOR:
playGnapScratchingHead(8, 5);
@@ -151,7 +160,7 @@ void GnapEngine::scene30_run() {
else
_newSceneNum = 26;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C2, 1);
}
break;
@@ -184,8 +193,8 @@ void GnapEngine::scene30_run() {
if (_gnapActionStatus < 0) {
if (getRandom(5) == 1) {
_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x100, 40, _s30_dword_47EA88, 40, kSeqSyncWait, 0, 0, 0);
- _s30_dword_47EA88 = 0x100;
+ _gameSys->insertSequence(0x100, 40, _s30_kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _s30_kidSequenceId = 0x100;
} else {
_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -195,10 +204,9 @@ void GnapEngine::scene30_run() {
_timers[5] = getRandom(50) + 180;
if (_gnapActionStatus < 0) {
if (!isFlag(23) || hasTakenPill)
- _s30_dword_47EA8C = 0x109;
+ _gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _s30_dword_47EA8C = 0x108;
- _gameSys->insertSequence(_s30_dword_47EA8C, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
playSoundB();
@@ -223,56 +231,54 @@ void GnapEngine::scene30_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
- case 0:
+ case kASLeaveScene:
_sceneDone = true;
break;
- case 1:
+ case kASUsePillMachine:
setGrabCursorSprite(-1);
_gameSys->setAnimation(0x105, _gnapId, 0);
_gameSys->insertSequence(0x105, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x105;
_gnapSequenceDatNum = 0;
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASUsePillMachine2;
break;
- case 2:
+ case kASUsePillMachine2:
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(0x3F, 255);
_gameSys->removeSequence(0x105, _gnapId, 1);
_gameSys->setAnimation(0x102, 256, 0);
_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2) {
- // checkGameAppStatus();
+ while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
- }
_gameSys->setAnimation(0x103, _gnapId, 0);
_gameSys->insertSequence(0x103, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
removeFullScreenSprite();
showCursor();
- _gnapActionStatus = 4;
+ _gnapActionStatus = kASUsePillMachine3;
invAdd(kItemPill);
setFlag(23);
break;
- case 3:
- if (isFlag(23))
- showFullScreenSprite(0xE3);
- else
- showFullScreenSprite(0xE2);
- _gnapActionStatus = -1;
- break;
- case 4:
+ case kASUsePillMachine3:
_gameSys->setAnimation(0x104, _gnapId, 0);
_gameSys->insertSequence(0x104, _gnapId, makeRid(_gnapSequenceDatNum, 0x103), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x104;
_gnapSequenceDatNum = 0;
- _gnapActionStatus = 5;
+ _gnapActionStatus = kASUsePillMachine4;
setGrabCursorSprite(kItemDiceQuarterHole);
break;
- case 5:
+ case kASUsePillMachine4:
_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y + 1, -1, 0x107BC, 1);
_gnapActionStatus = -1;
break;
+ case kASLookPillMachine:
+ if (isFlag(23))
+ showFullScreenSprite(0xE3);
+ else
+ showFullScreenSprite(0xE2);
+ _gnapActionStatus = -1;
+ break;
}
}
Commit: 11c381c8df1ff9e6d545c63c4b2654df0e020281
https://github.com/scummvm/scummvm/commit/11c381c8df1ff9e6d545c63c4b2654df0e020281
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 31
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene31.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d1f4b80..4d18215 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 30;
+ _currentSceneNum = 31;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0xff, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0xfe, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -719,7 +719,7 @@ void GnapEngine::initGameFlags(int num) {
//invAdd(kItemTongs);
invAdd(kItemDiceQuarterHole);
//invAdd(kItemPill);
- invAdd(kItemBucketWithBeer);
+ //invAdd(kItemBucketWithBeer);
invAdd(kItemChickenBucket);
invAdd(kItemBanana);
invAdd(kItemHorn);
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 30;
+ _newSceneNum = 31;
_newCursorValue = 3;
// < DEBUG END
@@ -2087,6 +2087,10 @@ void GnapEngine::initGlobalSceneVars() {
// Scene 22
_s22_caughtBefore = false;
_s22_cashierCtr = 3;
+
+ // Scene 31
+ _s31_beerGuyDistracted = false;
+ _s31_clerkMeasureMaxCtr = 3;
// Scene 50
_s50_timesPlayed = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d90a58f..ebd1162 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -802,12 +802,9 @@ public:
void scene30_updateAnimations();
// Scene 31
- int _s31_dword_47EAA8;
- int _s31_dword_47EAAC;
- int _s31_dword_47EAB0;
+ int _s28_currClerkSequenceId, _s28_nextClerkSequenceId;
bool _s31_beerGuyDistracted;
- int _s31_dword_474940;
- int _s31_dword_47EAB4;
+ int _s31_clerkMeasureCtr, _s31_clerkMeasureMaxCtr;
int scene31_init();
void scene31_updateHotspots();
void scene31_run();
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 864dbf9..39bb1bb 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -36,6 +36,15 @@ enum {
kHSWalkArea1 = 6
};
+enum {
+ kASUseBeerBarrel = 1,
+ kASFillEmptyBucketWithBeer = 2,
+ kASFillEmptyBucketWithBeerDone = 3,
+ kASPlatMeasuringClown = 4,
+ kASUseMeasuringClown = 5,
+ kASLeaveScene = 6
+};
+
int GnapEngine::scene31_init() {
return 0x105;
}
@@ -61,8 +70,8 @@ void GnapEngine::scene31_run() {
_s31_beerGuyDistracted = false;
_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s31_dword_47EAA8 = 0xFB;
- _s31_dword_47EAAC = -1;
+ _s28_currClerkSequenceId = 0xFB;
+ _s28_nextClerkSequenceId = -1;
_gameSys->setAnimation(0xFB, 39, 3);
@@ -94,7 +103,7 @@ void GnapEngine::scene31_run() {
switch (_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0 || _gnapActionStatus == 4) {
+ if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
runMenu();
scene31_updateHotspots();
}
@@ -127,8 +136,8 @@ void GnapEngine::scene31_run() {
break;
case kHSMeasuringClown:
- if (_gnapActionStatus < 0 || _gnapActionStatus == 4) {
- if (_gnapActionStatus == 4) {
+ if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
+ if (_gnapActionStatus == kASPlatMeasuringClown) {
if (_verbCursor == LOOK_CURSOR)
playGnapScratchingHead(2, 2);
else
@@ -145,7 +154,7 @@ void GnapEngine::scene31_run() {
_hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 0, 0x107B9, 1);
_hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
- _gnapActionStatus = 5;
+ _gnapActionStatus = kASUseMeasuringClown;
_timers[4] = 300;
break;
case TALK_CURSOR:
@@ -158,8 +167,8 @@ void GnapEngine::scene31_run() {
_hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
_hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
- _beaverActionStatus = 4;
- _gnapActionStatus = 4;
+ _beaverActionStatus = kASPlatMeasuringClown;
+ _gnapActionStatus = kASPlatMeasuringClown;
_timers[4] = 300;
} else
playGnapImpossible(0, 0);
@@ -170,16 +179,16 @@ void GnapEngine::scene31_run() {
break;
case kHSBeerBarrel:
- if (_gnapActionStatus < 0 || _gnapActionStatus == 4) {
+ if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
if (_grabCursorSpriteIndex == kItemEmptyBucket && _s31_beerGuyDistracted) {
setGrabCursorSprite(-1);
gnapWalkTo(_gnapX, _gnapY, -1, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y) | 0x10000, 1);
- _s31_dword_474940 += 5;
+ _s31_clerkMeasureMaxCtr += 5;
_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
playGnapPullOutDevice(6, 8);
playGnapUseDevice(0, 0);
gnapWalkTo(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASFillEmptyBucketWithBeer;
_timers[4] = 300;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 6, 2);
@@ -193,7 +202,7 @@ void GnapEngine::scene31_run() {
playGnapScratchingHead(6, 2);
} else {
gnapWalkTo(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASUseBeerBarrel;
_gnapIdleFacing = 5;
}
break;
@@ -211,7 +220,7 @@ void GnapEngine::scene31_run() {
_isLeavingScene = 1;
_newSceneNum = 26;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = 6;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
}
break;
@@ -221,7 +230,7 @@ void GnapEngine::scene31_run() {
_isLeavingScene = 1;
_newSceneNum = 27;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AF, 1);
- _gnapActionStatus = 6;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y + 1, -1, 0x107CF, 1);
}
break;
@@ -251,19 +260,19 @@ void GnapEngine::scene31_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 60;
- if (_gnapActionStatus < 0 && _s31_dword_47EAAC == -1) {
+ if (_gnapActionStatus < 0 && _s28_nextClerkSequenceId == -1) {
switch (getRandom(6)){
case 0:
- _s31_dword_47EAAC = 0xFF;
+ _s28_nextClerkSequenceId = 0xFF;
break;
case 1:
- _s31_dword_47EAAC = 0x100;
+ _s28_nextClerkSequenceId = 0x100;
break;
case 2:
- _s31_dword_47EAAC = 0x101;
+ _s28_nextClerkSequenceId = 0x101;
break;
default:
- _s31_dword_47EAAC = 0xFB;
+ _s28_nextClerkSequenceId = 0xFB;
break;
}
}
@@ -272,10 +281,9 @@ void GnapEngine::scene31_run() {
_timers[5] = getRandom(50) + 180;
if (_gnapActionStatus < 0) {
if (getRandom(2) != 0)
- _s31_dword_47EAB4 = 0x104;
+ _gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _s31_dword_47EAB4 = 0x103;
- _gameSys->insertSequence(_s31_dword_47EAB4, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
playSoundB();
@@ -300,10 +308,10 @@ void GnapEngine::scene31_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
- case 1:
- _s31_dword_47EAAC = 0xFE;
+ case kASUseBeerBarrel:
+ _s28_nextClerkSequenceId = 0xFE;
break;
- case 2:
+ case kASFillEmptyBucketWithBeer:
_gameSys->setAnimation(0x102, 59, 0);
_gameSys->insertSequence(0x102, 59, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapX = 5;
@@ -311,9 +319,9 @@ void GnapEngine::scene31_updateAnimations() {
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x102;
_gnapId = 59;
- _gnapActionStatus = 3;
+ _gnapActionStatus = kASFillEmptyBucketWithBeerDone;
break;
- case 3:
+ case kASFillEmptyBucketWithBeerDone:
_gnapIdleFacing = 3;
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
@@ -323,11 +331,11 @@ void GnapEngine::scene31_updateAnimations() {
invRemove(kItemEmptyBucket);
setGrabCursorSprite(kItemBucketWithBeer);
break;
- case 5:
- _s31_dword_47EAAC = 0xFA;
- _s31_dword_474940 = 1;
+ case kASUseMeasuringClown:
+ _s28_nextClerkSequenceId = 0xFA;
+ _s31_clerkMeasureMaxCtr = 1;
break;
- case 6:
+ case kASLeaveScene:
_sceneDone = true;
_gnapActionStatus = -1;
break;
@@ -336,58 +344,58 @@ void GnapEngine::scene31_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_beaverActionStatus == 4) {
- _sceneWaiting = 1;
+ if (_beaverActionStatus == kASPlatMeasuringClown) {
+ _sceneWaiting = true;
_s31_beerGuyDistracted = true;
- _s31_dword_47EAAC = 0xFA;
+ _s28_nextClerkSequenceId = 0xFA;
}
}
if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_s31_dword_47EAAC) {
+ switch (_s28_nextClerkSequenceId) {
case 0xFA:
- _gameSys->insertSequence(_s31_dword_47EAAC, 39, _s31_dword_47EAA8, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFC, 39, _s31_dword_47EAAC, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0xFC, 39, _s28_nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(0xFC, 39, 3);
- _s31_dword_47EAA8 = 0xFC;
- _s31_dword_47EAAC = 0xFC;
- _s31_dword_47EAB0 = 0;
+ _s28_currClerkSequenceId = 0xFC;
+ _s28_nextClerkSequenceId = 0xFC;
+ _s31_clerkMeasureCtr = 0;
break;
case 0xFC:
- ++_s31_dword_47EAB0;
- if (_s31_dword_47EAB0 >= _s31_dword_474940) {
+ ++_s31_clerkMeasureCtr;
+ if (_s31_clerkMeasureCtr >= _s31_clerkMeasureMaxCtr) {
if (_gnapActionStatus != 5)
_beaverActionStatus = -1;
_timers[0] = 40;
- _gameSys->insertSequence(0xFD, 39, _s31_dword_47EAA8, 39, kSeqSyncWait, 0, 0, 0);
- _s31_dword_47EAA8 = 0xFD;
- _s31_dword_47EAAC = -1;
- if (_gnapActionStatus != 3 && _gnapActionStatus != 2)
+ _gameSys->insertSequence(0xFD, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _s28_currClerkSequenceId = 0xFD;
+ _s28_nextClerkSequenceId = -1;
+ if (_gnapActionStatus != kASFillEmptyBucketWithBeerDone && _gnapActionStatus != kASFillEmptyBucketWithBeer)
_gnapActionStatus = -1;
_s31_beerGuyDistracted = false;
- _s31_dword_474940 = 3;
+ _s31_clerkMeasureMaxCtr = 3;
_gameSys->setAnimation(0xFD, 39, 3);
- _sceneWaiting = 0;
+ _sceneWaiting = false;
} else {
- _gameSys->insertSequence(_s31_dword_47EAAC, 39, _s31_dword_47EAA8, 39, kSeqSyncWait, 0, 0, 0);
- _s31_dword_47EAA8 = _s31_dword_47EAAC;
- _s31_dword_47EAAC = 0xFC;
+ _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
+ _s28_nextClerkSequenceId = 0xFC;
_gameSys->setAnimation(0xFC, 39, 3);
}
break;
case 0xFE:
- _gameSys->insertSequence(_s31_dword_47EAAC, 39, _s31_dword_47EAA8, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s31_dword_47EAAC, 39, 3);
- _s31_dword_47EAA8 = _s31_dword_47EAAC;
- _s31_dword_47EAAC = -1;
+ _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextClerkSequenceId, 39, 3);
+ _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
+ _s28_nextClerkSequenceId = -1;
_gnapActionStatus = -1;
break;
default:
- if (_s31_dword_47EAAC != -1) {
- _gameSys->insertSequence(_s31_dword_47EAAC, 39, _s31_dword_47EAA8, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s31_dword_47EAAC, 39, 3);
- _s31_dword_47EAA8 = _s31_dword_47EAAC;
- _s31_dword_47EAAC = -1;
+ if (_s28_nextClerkSequenceId != -1) {
+ _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s28_nextClerkSequenceId, 39, 3);
+ _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
+ _s28_nextClerkSequenceId = -1;
}
break;
}
Commit: fad62e18c898ec6f392b4cec5bfaa9bd7ff44bb5
https://github.com/scummvm/scummvm/commit/fad62e18c898ec6f392b4cec5bfaa9bd7ff44bb5
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 32
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene32.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 4d18215..86fc38d 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 31;
+ _newSceneNum = 32;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ebd1162..ec891b0 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -811,7 +811,6 @@ public:
void scene31_updateAnimations();
// Scene 32
- int _s32_dword_47EADC;
int scene32_init();
void scene32_updateHotspots();
void scene32_run();
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 3edd3db..9eaf4d2 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -40,6 +40,10 @@ enum {
kHSWalkArea8 = 10
};
+enum {
+ kASLeaveScene = 0
+};
+
int GnapEngine::scene32_init() {
_gameSys->setAnimation(0, 0, 0);
return isFlag(26) ? 0xF : 0x10;
@@ -65,7 +69,6 @@ void GnapEngine::scene32_run() {
playSound(0x1091C, 1);
startSoundTimerC(5);
queueInsertDeviceIcon();
- _s32_dword_47EADC = -1;
_timers[4] = getRandom(100) + 300;
if (_prevSceneNum == 33) {
@@ -124,10 +127,10 @@ void GnapEngine::scene32_run() {
case kHSExitTruck:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
setGrabCursorSprite(-1);
gnapWalkTo(_hotspotsWalkPos[kHSExitTruck].x, _hotspotsWalkPos[kHSExitTruck].y, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitTruck].x, _hotspotsWalkPos[kHSExitTruck].y + 1, -1, 0x107CD, 1);
_newSceneNum = 33;
}
@@ -165,10 +168,9 @@ void GnapEngine::scene32_run() {
if (!_timers[4]) {
_timers[4] = getRandom(100) + 300;
if (getRandom(2) != 0)
- _s32_dword_47EADC = 14;
+ _gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _s32_dword_47EADC = 13;
- _gameSys->insertSequence(_s32_dword_47EADC, 180, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
}
playSoundC();
}
@@ -191,7 +193,7 @@ void GnapEngine::scene32_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == 0)
+ if (_gnapActionStatus == kASLeaveScene)
_sceneDone = true;
}
Commit: d5d7d3c802ed676fc8f5db98e1158bec5a2f286e
https://github.com/scummvm/scummvm/commit/d5d7d3c802ed676fc8f5db98e1158bec5a2f286e
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 33
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene33.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ec891b0..cf146e4 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -816,9 +816,7 @@ public:
void scene32_run();
void scene32_updateAnimations();
- int _s33_dword_47EAE4;
- int _s33_dword_47EAE8;
- int _s33_dword_47EAEC;
+ int _s33_currChickenSequenceId, _s33_nextChickenSequenceId;
int scene33_init();
void scene33_updateHotspots();
void scene33_run();
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index f9471ab..e8c2328 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -38,6 +38,13 @@ enum {
kHSWalkArea2 = 8
};
+enum {
+ kASLeaveScene = 0,
+ kASTalkChicken = 1,
+ kASUseChicken = 2,
+ kASUseChickenDone = 3
+};
+
int GnapEngine::scene33_init() {
return isFlag(26) ? 0x84 : 0x85;
}
@@ -61,12 +68,11 @@ void GnapEngine::scene33_run() {
startSoundTimerC(6);
queueInsertDeviceIcon();
- _s33_dword_47EAEC = 0x7E;
+ _s33_currChickenSequenceId = 0x7E;
_gameSys->setAnimation(0x7E, 179, 2);
- _gameSys->insertSequence(_s33_dword_47EAEC, 179, 0, 0, kSeqNone, 0, 0, 0);
- _s33_dword_47EAE4 = -1;
+ _gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _s33_nextChickenSequenceId = -1;
_timers[5] = getRandom(20) + 30;
- _s33_dword_47EAE8 = -1;
_timers[4] = getRandom(100) + 300;
switch (_prevSceneNum) {
@@ -147,14 +153,14 @@ void GnapEngine::scene33_run() {
case GRAB_CURSOR:
_gnapIdleFacing = 1;
if (gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASUseChicken;
else
_gnapActionStatus = -1;
break;
case TALK_CURSOR:
_gnapIdleFacing = 1;
gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASTalkChicken;
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
@@ -167,8 +173,8 @@ void GnapEngine::scene33_run() {
case kHSExitHouse:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- _gnapActionStatus = 0;
+ _isLeavingScene = true;
+ _gnapActionStatus = kASLeaveScene;
_newSceneNum = 37;
if (_gnapX > 6)
gnapWalkTo(_gnapX, _gnapY, 0, 0x107AD, 1);
@@ -179,8 +185,8 @@ void GnapEngine::scene33_run() {
case kHSExitBarn:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- _gnapActionStatus = 0;
+ _isLeavingScene = true;
+ _gnapActionStatus = kASLeaveScene;
_newSceneNum = 35;
if (_gnapX > 7)
gnapWalkTo(_gnapX, _gnapY, 0, 0x107AD, 1);
@@ -191,9 +197,9 @@ void GnapEngine::scene33_run() {
case kHSExitCreek:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitCreek].x, _hotspotsWalkPos[kHSExitCreek].y, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitCreek].x, _hotspotsWalkPos[kHSExitCreek].y, -1, 0x107CD, 1);
_newSceneNum = 34;
}
@@ -201,9 +207,9 @@ void GnapEngine::scene33_run() {
case kHSExitPigpen:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitPigpen].x, _hotspotsWalkPos[kHSExitPigpen].y, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitPigpen].x, _hotspotsWalkPos[kHSExitPigpen].y, -1, 0x107CF, 1);
_newSceneNum = 32;
}
@@ -237,17 +243,16 @@ void GnapEngine::scene33_run() {
if (!_timers[4]) {
_timers[4] = getRandom(100) + 300;
if (getRandom(2) != 0)
- _s33_dword_47EAE8 = 0x83;
+ _gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _s33_dword_47EAE8 = 0x82;
- _gameSys->insertSequence(_s33_dword_47EAE8, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[5] && _s33_dword_47EAE4 == -1 && _gnapActionStatus != 1 && _gnapActionStatus != 2) {
+ if (!_timers[5] && _s33_nextChickenSequenceId == -1 && _gnapActionStatus != kASTalkChicken && _gnapActionStatus != kASUseChicken) {
if (getRandom(6) != 0) {
- _s33_dword_47EAE4 = 0x7E;
+ _s33_nextChickenSequenceId = 0x7E;
_timers[5] = getRandom(20) + 30;
} else {
- _s33_dword_47EAE4 = 0x80;
+ _s33_nextChickenSequenceId = 0x80;
_timers[5] = getRandom(20) + 50;
}
}
@@ -272,23 +277,23 @@ void GnapEngine::scene33_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
switch (_gnapActionStatus) {
- case 0:
+ case kASLeaveScene:
_sceneDone = true;
break;
- case 1:
- _s33_dword_47EAE4 = 0x7F;
+ case kASTalkChicken:
+ _s33_nextChickenSequenceId = 0x7F;
break;
- case 2:
- _s33_dword_47EAE4 = 0x81;
+ case kASUseChicken:
+ _s33_nextChickenSequenceId = 0x81;
_timers[2] = 100;
break;
- case 3:
+ case kASUseChickenDone:
_gameSys->insertSequence(0x107B5, _gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
- _s33_dword_47EAEC = 0x7E;
+ _s33_currChickenSequenceId = 0x7E;
_gameSys->setAnimation(0x7E, 179, 2);
- _gameSys->insertSequence(_s33_dword_47EAEC, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_gnapActionStatus = -1;
_timers[5] = 30;
break;
@@ -299,25 +304,25 @@ void GnapEngine::scene33_updateAnimations() {
}
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_s33_dword_47EAE4 == 0x81) {
- _gameSys->setAnimation(_s33_dword_47EAE4, 179, 0);
- _gameSys->insertSequence(_s33_dword_47EAE4, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(_s33_dword_47EAEC, 179, 1);
- _s33_dword_47EAE4 = -1;
- _s33_dword_47EAEC = -1;
- _gnapActionStatus = 3;
+ if (_s33_nextChickenSequenceId == 0x81) {
+ _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 0);
+ _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->removeSequence(_s33_currChickenSequenceId, 179, 1);
+ _s33_nextChickenSequenceId = -1;
+ _s33_currChickenSequenceId = -1;
+ _gnapActionStatus = kASUseChickenDone;
_timers[5] = 500;
- } else if (_s33_dword_47EAE4 == 0x7F) {
- _gameSys->setAnimation(_s33_dword_47EAE4, 179, 2);
- _gameSys->insertSequence(_s33_dword_47EAE4, 179, _s33_dword_47EAEC, 179, kSeqSyncWait, 0, 0, 0);
- _s33_dword_47EAEC = _s33_dword_47EAE4;
- _s33_dword_47EAE4 = -1;
+ } else if (_s33_nextChickenSequenceId == 0x7F) {
+ _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
+ _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _s33_currChickenSequenceId = _s33_nextChickenSequenceId;
+ _s33_nextChickenSequenceId = -1;
_gnapActionStatus = -1;
- } else if (_s33_dword_47EAE4 != -1) {
- _gameSys->setAnimation(_s33_dword_47EAE4, 179, 2);
- _gameSys->insertSequence(_s33_dword_47EAE4, 179, _s33_dword_47EAEC, 179, kSeqSyncWait, 0, 0, 0);
- _s33_dword_47EAEC = _s33_dword_47EAE4;
- _s33_dword_47EAE4 = -1;
+ } else if (_s33_nextChickenSequenceId != -1) {
+ _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
+ _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _s33_currChickenSequenceId = _s33_nextChickenSequenceId;
+ _s33_nextChickenSequenceId = -1;
}
}
Commit: 4752703298c568a87b3a7bfb281cd1993d9de3c7
https://github.com/scummvm/scummvm/commit/4752703298c568a87b3a7bfb281cd1993d9de3c7
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 38
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene38.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 86fc38d..677b073 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 32;
+ _newSceneNum = 38;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index cf146e4..86bce8d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -816,6 +816,7 @@ public:
void scene32_run();
void scene32_updateAnimations();
+ // Scene 33
int _s33_currChickenSequenceId, _s33_nextChickenSequenceId;
int scene33_init();
void scene33_updateHotspots();
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index cfbaf9d..53768fe 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -42,6 +42,16 @@ enum {
kHSWalkArea6 = 12
};
+enum {
+ kASLeaveScene = 0,
+ kASExitCave = 1,
+ kASUseHuntingTrophy = 2,
+ kASHoldingHuntingTrophy = 3,
+ kASReleaseHuntingTrophy = 4,
+ kASUseBeaverWithTrapDoor = 5,
+ kASBeaverHoldingTrapDoor = 6
+};
+
int GnapEngine::scene38_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
@@ -62,21 +72,21 @@ void GnapEngine::scene38_updateHotspots() {
setHotspot(kHSWalkArea5, 770, 0, 799, 445);
setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_DISABLED;
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSExitCave].flags = SF_EXIT_D_CURSOR;
- else if (_gnapActionStatus == 3)
+ else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSExitCave].flags = SF_EXIT_D_CURSOR;
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSTrapDoorLid1].flags = SF_DISABLED;
- else if (_gnapActionStatus == 3)
+ else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid1].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSTrapDoorLid2].flags = SF_DISABLED;
- else if (_gnapActionStatus == 3)
+ else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid2].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSWalkArea6].flags = 0;
_hotspotsCount = 13;
}
@@ -111,8 +121,8 @@ void GnapEngine::scene38_run() {
break;
case kHSPlatypus:
- if (_gnapActionStatus == 3) {
- _gnapActionStatus = 4;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _gnapActionStatus = kASReleaseHuntingTrophy;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapImpossible(_platX, _platY);
} else {
@@ -135,42 +145,42 @@ void GnapEngine::scene38_run() {
break;
case kHSExitHouse:
- if (_gnapActionStatus == 3) {
- _gnapActionStatus = 4;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _gnapActionStatus = kASReleaseHuntingTrophy;
} else {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(-1, -1, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
_newSceneNum = 37;
}
break;
case kHSExitCave:
- if (_gnapActionStatus == 3) {
- _gnapActionStatus = 4;
- if (_beaverActionStatus == 6)
- _isLeavingScene = 1;
- } else if (_beaverActionStatus == 6) {
- _sceneWaiting = 0;
- _isLeavingScene = 1;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _gnapActionStatus = kASReleaseHuntingTrophy;
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ _isLeavingScene = true;
+ } else if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
+ _sceneWaiting = false;
+ _isLeavingScene = true;
gnapWalkTo(5, 7, 0, 0x107BB, 1);
_newSceneNum = 39;
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASExitCave;
}
break;
case kHSTrapDoorLid1:
case kHSTrapDoorLid2:
- if (_gnapActionStatus == 3) {
- if (_beaverActionStatus == 6 && _verbCursor == PLAT_CURSOR)
- _gnapActionStatus = 5;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy) {
+ if (_verbCursor == PLAT_CURSOR && _beaverActionStatus != kASBeaverHoldingTrapDoor)
+ _gnapActionStatus = kASUseBeaverWithTrapDoor;
else
- _gnapActionStatus = 4;
+ _gnapActionStatus = kASReleaseHuntingTrophy;
}
break;
case kHSHuntingTrophy:
- if (_gnapActionStatus != 3) {
+ if (_gnapActionStatus != kASHoldingHuntingTrophy) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(3, 6, 2, 0);
} else {
@@ -179,12 +189,12 @@ void GnapEngine::scene38_run() {
playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_beaverActionStatus == 6)
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
playGnapImpossible(0, 0);
else {
gnapWalkTo(3, 6, 0, 0x107BB, 1);
platypusWalkTo(4, 8, -1, -1, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASUseHuntingTrophy;
}
break;
case TALK_CURSOR:
@@ -207,16 +217,16 @@ void GnapEngine::scene38_run() {
case kHSWalkArea4:
case kHSWalkArea5:
case kHSWalkArea6:
- if (_gnapActionStatus == 3)
- _gnapActionStatus = 4;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy)
+ _gnapActionStatus = kASReleaseHuntingTrophy;
else if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
if (_mouseClickState.left) {
- if (_gnapActionStatus == 3)
- _gnapActionStatus = 4;
+ if (_gnapActionStatus == kASHoldingHuntingTrophy)
+ _gnapActionStatus = kASReleaseHuntingTrophy;
else if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
_mouseClickState.left = false;
@@ -251,29 +261,29 @@ void GnapEngine::scene38_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
- case 0:
+ case kASLeaveScene:
_sceneDone = true;
break;
- case 1:
+ case kASExitCave:
_gameSys->removeSequence(_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, 1);
_gameSys->insertSequence(0xA3, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA3;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0xA3, _gnapId, 0);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
break;
- case 2:
+ case kASUseHuntingTrophy:
_gameSys->removeSequence(0x9B, 0, 1);
_gameSys->insertSequence(0x9C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9C;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x9C, _gnapId, 0);
- _gnapActionStatus = 3;
+ _gnapActionStatus = kASHoldingHuntingTrophy;
scene38_updateHotspots();
break;
- case 3:
- if (_beaverActionStatus != 6)
- _sceneWaiting = 1;
+ case kASHoldingHuntingTrophy:
+ if (_beaverActionStatus != kASBeaverHoldingTrapDoor)
+ _sceneWaiting = true;
if (_gnapSequenceId == 0xA4) {
_gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9D;
@@ -284,11 +294,11 @@ void GnapEngine::scene38_updateAnimations() {
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(_gnapSequenceId, _gnapId, 0);
break;
- case 4:
+ case kASReleaseHuntingTrophy:
if (_gnapSequenceId == 0x9E) {
_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_gnapActionStatus = -1;
- } else if (_beaverActionStatus == 6) {
+ } else if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
_gameSys->insertSequence(0xA0, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA0;
_gnapSequenceDatNum = 0;
@@ -296,10 +306,10 @@ void GnapEngine::scene38_updateAnimations() {
_gnapY = 6;
_gnapIdleFacing = 1;
if (_isLeavingScene) {
- _sceneWaiting = 0;
+ _sceneWaiting = false;
gnapWalkTo(5, 7, 0, 0x107BB, 1);
_newSceneNum = 39;
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASExitCave;
} else {
_gnapActionStatus = -1;
}
@@ -311,17 +321,17 @@ void GnapEngine::scene38_updateAnimations() {
_gnapY = 6;
_gnapIdleFacing = 1;
_gameSys->setAnimation(0x9E, _gnapId, 0);
- _sceneWaiting = 0;
+ _sceneWaiting = false;
scene38_updateHotspots();
}
break;
- case 5:
- _sceneWaiting = 0;
+ case kASUseBeaverWithTrapDoor:
+ _sceneWaiting = false;
_gameSys->insertSequence(0x9F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9F;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x9F, _gnapId, 0);
- _gnapActionStatus = 3;
+ _gnapActionStatus = kASHoldingHuntingTrophy;
if (_beaverFacing)
playBeaverSequence(0x107D5);
else
@@ -332,7 +342,7 @@ void GnapEngine::scene38_updateAnimations() {
_beaverSequenceDatNum = 0;
_beaverId = _gnapId + 1;
_gameSys->setAnimation(0xA1, _gnapId + 1, 1);
- _beaverActionStatus = 6;
+ _beaverActionStatus = kASBeaverHoldingTrapDoor;
scene38_updateHotspots();
break;
}
@@ -340,7 +350,7 @@ void GnapEngine::scene38_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_beaverActionStatus == 6) {
+ if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
_gameSys->insertSequence(0xA2, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
_beaverSequenceId = 0xA2;
_beaverSequenceDatNum = 0;
Commit: 9bac81c802e12b64cde335af30d748a98815658c
https://github.com/scummvm/scummvm/commit/9bac81c802e12b64cde335af30d748a98815658c
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 39
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene39.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 677b073..598fd8c 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 31;
+ _currentSceneNum = 39;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0xfe, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x33, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 38;
+ _newSceneNum = 39;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 86bce8d..02c1aeb 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -830,8 +830,7 @@ public:
void scene38_updateAnimations();
// Scene 39
- int _s39_dword_47EAF8;
- int _s39_dword_47EAFC;
+ int _s39_currGuySequenceId, _s39_nextGuySequenceId;
int scene39_init();
void scene39_updateHotspots();
void scene39_run();
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index 7bf04de..4ba8e16 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -36,6 +36,10 @@ enum {
kHSWalkArea2 = 6
};
+enum {
+ kASLeaveScene = 0
+};
+
int GnapEngine::scene39_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
@@ -54,15 +58,17 @@ void GnapEngine::scene39_updateHotspots() {
}
void GnapEngine::scene39_run() {
+
+ _timers[5] = 0; // Bug in the original? Timer was never intiailized.
queueInsertDeviceIcon();
- _s39_dword_47EAF8 = 0x33;
+ _s39_currGuySequenceId = 0x33;
_gameSys->setAnimation(0x33, 21, 3);
- _gameSys->insertSequence(_s39_dword_47EAF8, 21, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s39_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
- _s39_dword_47EAFC = -1;
+ _s39_nextGuySequenceId = -1;
if (_prevSceneNum == 38) {
initGnapPos(3, 7, 7);
initBeaverPos(2, 7, 5);
@@ -79,7 +85,7 @@ void GnapEngine::scene39_run() {
playSound(0x1094B, 1);
setSoundVolume(0x1094B, 60);
}
-
+
updateMouseCursor();
updateCursorByHotspot();
@@ -122,10 +128,10 @@ void GnapEngine::scene39_run() {
case kHSExitUfoParty:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_sceneDone = true;
gnapWalkTo(_gnapX, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
_newSceneNum = 40;
}
break;
@@ -154,7 +160,7 @@ void GnapEngine::scene39_run() {
case kHSExitInsideHouse:
if (_gnapActionStatus < 0) {
_sceneDone = true;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 38;
}
break;
@@ -185,16 +191,16 @@ void GnapEngine::scene39_run() {
_timers[5] = getRandom(20) + 50;
switch (getRandom(4)) {
case 0:
- _s39_dword_47EAFC = 0x30;
+ _s39_nextGuySequenceId = 0x30;
break;
case 1:
- _s39_dword_47EAFC = 0x31;
+ _s39_nextGuySequenceId = 0x31;
break;
case 2:
- _s39_dword_47EAFC = 0x32;
+ _s39_nextGuySequenceId = 0x32;
break;
case 3:
- _s39_dword_47EAFC = 0x33;
+ _s39_nextGuySequenceId = 0x33;
break;
}
}
@@ -219,17 +225,17 @@ void GnapEngine::scene39_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == 0)
+ if (_gnapActionStatus == kASLeaveScene)
_sceneDone = true;
else
_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s39_dword_47EAFC != -1) {
- _gameSys->setAnimation(_s39_dword_47EAFC, 21, 3);
- _gameSys->insertSequence(_s39_dword_47EAFC, 21, _s39_dword_47EAF8, 21, kSeqSyncWait, 0, 0, 0);
- _s39_dword_47EAF8 = _s39_dword_47EAFC;
- _s39_dword_47EAFC = -1;
+ if (_gameSys->getAnimationStatus(3) == 2 && _s39_nextGuySequenceId != -1) {
+ _gameSys->setAnimation(_s39_nextGuySequenceId, 21, 3);
+ _gameSys->insertSequence(_s39_nextGuySequenceId, 21, _s39_currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _s39_currGuySequenceId = _s39_nextGuySequenceId;
+ _s39_nextGuySequenceId = -1;
}
}
Commit: bd5417aea1e513f591cedf7bc2f7daad345d375e
https://github.com/scummvm/scummvm/commit/bd5417aea1e513f591cedf7bc2f7daad345d375e
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 41
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene41.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 598fd8c..aaecbfb 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -158,14 +158,14 @@ Common::Error GnapEngine::run() {
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
- _currentSceneNum = 39;
+ _currentSceneNum = 41;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0x33, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x11b, 100, -1, -1, 0, 0, 0, 0);
CursorMan.showMouse(true);
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 39;
+ _newSceneNum = 41;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 02c1aeb..b085293 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -849,10 +849,8 @@ public:
void toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a6, int animationIndex);
// Scene 41
- int _s41_dword_47F2C0;
- int _s41_dword_47F2C4;
- int _s41_dword_47F2C8;
- int _s41_dword_47F2CC;
+ int _s41_currKidSequenceId, _s41_nextKidSequenceId;
+ int _s41_currToyVendorSequenceId, _s41_nextToyVendorSequenceId;
int scene41_init();
void scene41_updateHotspots();
void scene41_run();
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 60c5979..ff90193 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -45,6 +45,19 @@ enum {
kHSUfoWalkArea1 = 4
};
+enum {
+ kASLeaveScene = 0,
+ kASUseQuarterWithToyVendor = 1,
+ kASTalkToyVendor = 2,
+ kASUseGumWithToyUfo = 3,
+ kASUseChickenBucketWithKid = 4,
+ kASGrabKid = 5,
+ kASGiveBackToyUfo = 6,
+ kASToyUfoLeaveScene = 7,
+ kASToyUfoRefresh = 8,
+ kASUfoGumAttached = 9
+};
+
int GnapEngine::scene41_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
@@ -83,7 +96,7 @@ void GnapEngine::scene41_run() {
if (_toyUfoY < 0 || _toyUfoY > 300)
_toyUfoY = 150;
if (!_timers[9])
- _gnapActionStatus = 6;
+ _gnapActionStatus = kASGiveBackToyUfo;
} else {
if (!isFlag(16) && !isFlag(17) && !isFlag(18) && !isFlag(19))
toyUfoSetStatus(16);
@@ -101,20 +114,20 @@ void GnapEngine::scene41_run() {
_gameSys->insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
if (isFlag(12))
- _s41_dword_47F2C4 = 0x11B;
+ _s41_currKidSequenceId = 0x11B;
else
- _s41_dword_47F2C4 = 0x11D;
+ _s41_currKidSequenceId = 0x11D;
- _s41_dword_47F2C0 = -1;
+ _s41_nextKidSequenceId = -1;
- _gameSys->setAnimation(_s41_dword_47F2C4, 1, 4);
- _gameSys->insertSequence(_s41_dword_47F2C4, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->setAnimation(_s41_currKidSequenceId, 1, 4);
+ _gameSys->insertSequence(_s41_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s41_dword_47F2CC = 0x118;
- _s41_dword_47F2C8 = -1;
+ _s41_currToyVendorSequenceId = 0x118;
+ _s41_nextToyVendorSequenceId = -1;
_gameSys->setAnimation(0x118, 1, 3);
- _gameSys->insertSequence(_s41_dword_47F2CC, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s41_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
@@ -175,8 +188,8 @@ void GnapEngine::scene41_run() {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
- _toyUfoActionStatus = 7;
+ _isLeavingScene = true;
+ _toyUfoActionStatus = kASToyUfoLeaveScene;
_newSceneNum = 45;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
}
@@ -184,8 +197,8 @@ void GnapEngine::scene41_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
- _toyUfoActionStatus = 7;
+ _isLeavingScene = true;
+ _toyUfoActionStatus = kASToyUfoLeaveScene;
_newSceneNum = 42;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
}
@@ -236,31 +249,31 @@ void GnapEngine::scene41_run() {
break;
case kHSExitCave:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitCave].x, _hotspotsWalkPos[kHSExitCave].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
_newSceneNum = 40;
break;
case kHSExit:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExit].x, -1, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExit].x, -1, -1, 0x107CF, 1);
_newSceneNum = 45;
break;
case kHSExitBBQ:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, -1, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, -1, -1, 0x107CD, 1);
_newSceneNum = 42;
break;
case kHSToyVendor:
if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASUseQuarterWithToyVendor;
gnapWalkTo(4, 7, 0, 0x107BB, 9);
playGnapShowItem(_grabCursorSpriteIndex, 5, 0);
} else if (_grabCursorSpriteIndex >= 0) {
@@ -276,7 +289,7 @@ void GnapEngine::scene41_run() {
case TALK_CURSOR:
_gnapIdleFacing = 7;
gnapWalkTo(4, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASTalkToyVendor;
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -289,7 +302,7 @@ void GnapEngine::scene41_run() {
if (_grabCursorSpriteIndex == kItemChickenBucket) {
gnapWalkTo(7, 7, 0, 0x107BB, 1);
_gnapIdleFacing = 7;
- _gnapActionStatus = 4;
+ _gnapActionStatus = kASUseChickenBucketWithKid;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(7, 7, 8, 0);
} else {
@@ -300,7 +313,7 @@ void GnapEngine::scene41_run() {
case GRAB_CURSOR:
gnapWalkTo(7, 7, 0, 0x107BB, 1);
_gnapIdleFacing = 7;
- _gnapActionStatus = 5;
+ _gnapActionStatus = kASGrabKid;
break;
case TALK_CURSOR:
_gnapIdleFacing = 7;
@@ -317,7 +330,7 @@ void GnapEngine::scene41_run() {
if (_grabCursorSpriteIndex == kItemGum) {
playGnapPullOutDevice(9, 0);
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = 3;
+ _gnapActionStatus = kASUseGumWithToyUfo;
}
break;
@@ -331,7 +344,7 @@ void GnapEngine::scene41_run() {
if (isFlag(12)) {
if (!_timers[9] && _gnapActionStatus < 0) {
- _gnapActionStatus = 6;
+ _gnapActionStatus = kASGiveBackToyUfo;
if (_gnapSequenceId == 0x121 || _gnapSequenceId == 0x122) {
_gameSys->insertSequence(0x123, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x123;
@@ -364,7 +377,7 @@ void GnapEngine::scene41_run() {
_gnapSequenceId = sequenceId;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(sequenceId, _gnapId, 0);
- _toyUfoActionStatus = 8;
+ _toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
gnapWalkTo(-1, -1, -1, -1, 1);
@@ -380,32 +393,32 @@ void GnapEngine::scene41_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_dword_47F2C8 == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
_gnapRandomValue = getRandom(3);
switch (_gnapRandomValue) {
case 0:
- _s41_dword_47F2C8 = 0x113;
+ _s41_nextToyVendorSequenceId = 0x113;
break;
case 1:
- _s41_dword_47F2C8 = 0x117;
+ _s41_nextToyVendorSequenceId = 0x117;
break;
case 2:
- _s41_dword_47F2C8 = 0x119;
+ _s41_nextToyVendorSequenceId = 0x119;
break;
}
- if (_s41_dword_47F2C8 == _s41_dword_47F2CC)
- _s41_dword_47F2C8 = -1;
+ if (_s41_nextToyVendorSequenceId == _s41_currToyVendorSequenceId)
+ _s41_nextToyVendorSequenceId = -1;
}
}
if (!_timers[5]) {
_timers[5] = getRandom(30) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_dword_47F2C0 == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
if (isFlag(12))
- _s41_dword_47F2C0 = 0x11B;
+ _s41_nextKidSequenceId = 0x11B;
else if (getRandom(3) != 0)
- _s41_dword_47F2C0 = 0x11D;
+ _s41_nextKidSequenceId = 0x11D;
else
- _s41_dword_47F2C0 = 0x11E;
+ _s41_nextKidSequenceId = 0x11E;
}
}
}
@@ -430,30 +443,30 @@ void GnapEngine::scene41_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
switch (_gnapActionStatus) {
- case 0:
+ case kASLeaveScene:
_gameSys->setAnimation(0, 0, 0);
_sceneDone = true;
_gnapActionStatus = -1;
break;
- case 1:
+ case kASUseQuarterWithToyVendor:
_gameSys->setAnimation(0, 0, 0);
- _s41_dword_47F2C8 = 0x114;
+ _s41_nextToyVendorSequenceId = 0x114;
_gnapActionStatus = -1;
break;
- case 2:
+ case kASTalkToyVendor:
_gameSys->setAnimation(0, 0, 0);
- _s41_dword_47F2C8 = 0x116;
+ _s41_nextToyVendorSequenceId = 0x116;
_gnapActionStatus = -1;
break;
- case 3:
+ case kASUseGumWithToyUfo:
_gameSys->setAnimation(0, 0, 0);
playGnapUseDevice(9, 0);
_gnapActionStatus = -1;
setGrabCursorSprite(-1);
invRemove(kItemGum);
- _toyUfoActionStatus = 9;
+ _toyUfoActionStatus = kASUfoGumAttached;
break;
- case 4:
+ case kASUseChickenBucketWithKid:
if (_gameSys->getAnimationStatus(4) == 2) {
_timers[2] = getRandom(30) + 20;
_timers[3] = getRandom(50) + 200;
@@ -462,11 +475,11 @@ void GnapEngine::scene41_updateAnimations() {
_gnapSequenceId = 0x11F;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x11F, _gnapId, 0);
- _s41_dword_47F2C0 = 0x11A;
- _gameSys->insertSequence(0x11A, 1, _s41_dword_47F2C4, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C0, 1, 4);
- _s41_dword_47F2C4 = _s41_dword_47F2C0;
- _s41_dword_47F2C0 = 0x11B;
+ _s41_nextKidSequenceId = 0x11A;
+ _gameSys->insertSequence(0x11A, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _s41_currKidSequenceId = _s41_nextKidSequenceId;
+ _s41_nextKidSequenceId = 0x11B;
_timers[5] = getRandom(30) + 20;
_gnapActionStatus = -1;
setFlag(12);
@@ -474,7 +487,7 @@ void GnapEngine::scene41_updateAnimations() {
_timers[9] = 600;
}
break;
- case 5:
+ case kASGrabKid:
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
_timers[2] = getRandom(30) + 20;
_timers[3] = getRandom(50) + 200;
@@ -482,22 +495,22 @@ void GnapEngine::scene41_updateAnimations() {
_gnapSequenceId = 0x110;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x110, _gnapId, 0);
- _s41_dword_47F2C8 = 0x111;
- _gameSys->insertSequence(0x111, 1, _s41_dword_47F2CC, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C8, 1, 3);
- _s41_dword_47F2CC = _s41_dword_47F2C8;
- _s41_dword_47F2C8 = -1;
+ _s41_nextToyVendorSequenceId = 0x111;
+ _gameSys->insertSequence(0x111, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
+ _s41_nextToyVendorSequenceId = -1;
_timers[4] = getRandom(100) + 100;
- _s41_dword_47F2C0 = 0x10F;
- _gameSys->insertSequence(0x10F, 1, _s41_dword_47F2C4, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C0, 1, 4);
- _s41_dword_47F2C4 = _s41_dword_47F2C0;
- _s41_dword_47F2C0 = -1;
+ _s41_nextKidSequenceId = 0x10F;
+ _gameSys->insertSequence(0x10F, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _s41_currKidSequenceId = _s41_nextKidSequenceId;
+ _s41_nextKidSequenceId = -1;
_timers[5] = getRandom(30) + 20;
_gnapActionStatus = -1;
}
break;
- case 6:
+ case kASGiveBackToyUfo:
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
_timers[2] = getRandom(30) + 20;
_timers[3] = getRandom(50) + 200;
@@ -507,17 +520,17 @@ void GnapEngine::scene41_updateAnimations() {
_gnapSequenceId = 0x124;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x124, _gnapId, 0);
- _s41_dword_47F2C8 = 0x112;
- _gameSys->insertSequence(0x112, 1, _s41_dword_47F2CC, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C8, 1, 3);
- _s41_dword_47F2CC = _s41_dword_47F2C8;
- _s41_dword_47F2C8 = -1;
+ _s41_nextToyVendorSequenceId = 0x112;
+ _gameSys->insertSequence(0x112, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
+ _s41_nextToyVendorSequenceId = -1;
_timers[4] = getRandom(100) + 100;
- _s41_dword_47F2C0 = 0x11C;
- _gameSys->insertSequence(0x11C, 1, _s41_dword_47F2C4, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C0, 1, 4);
- _s41_dword_47F2C4 = _s41_dword_47F2C0;
- _s41_dword_47F2C0 = -1;
+ _s41_nextKidSequenceId = 0x11C;
+ _gameSys->insertSequence(0x11C, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _s41_currKidSequenceId = _s41_nextKidSequenceId;
+ _s41_nextKidSequenceId = -1;
_timers[5] = getRandom(30) + 20;
_gnapActionStatus = -1;
clearFlag(12);
@@ -529,10 +542,10 @@ void GnapEngine::scene41_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
switch (_toyUfoActionStatus) {
- case 7:
+ case kASToyUfoLeaveScene:
_sceneDone = true;
break;
- case 9:
+ case kASUfoGumAttached:
_toyUfoNextSequenceId = 0x873;
_gameSys->insertSequence(0x10873, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId,
kSeqSyncWait, 0, _toyUfoX - 365, _toyUfoY - 128);
@@ -552,22 +565,22 @@ void GnapEngine::scene41_updateAnimations() {
_toyUfoActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s41_dword_47F2C8 != -1) {
- _gameSys->insertSequence(_s41_dword_47F2C8, 1, _s41_dword_47F2CC, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C8, 1, 3);
- _s41_dword_47F2CC = _s41_dword_47F2C8;
- _s41_dword_47F2C8 = -1;
+ if (_gameSys->getAnimationStatus(3) == 2 && _s41_nextToyVendorSequenceId != -1) {
+ _gameSys->insertSequence(_s41_nextToyVendorSequenceId, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
+ _s41_nextToyVendorSequenceId = -1;
_timers[4] = getRandom(100) + 100;
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s41_dword_47F2C0 != -1) {
- _gameSys->insertSequence(_s41_dword_47F2C0, 1, _s41_dword_47F2C4, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_dword_47F2C0, 1, 4);
- _s41_dword_47F2C4 = _s41_dword_47F2C0;
- _s41_dword_47F2C0 = -1;
+ if (_gameSys->getAnimationStatus(4) == 2 && _s41_nextKidSequenceId != -1) {
+ _gameSys->insertSequence(_s41_nextKidSequenceId, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _s41_currKidSequenceId = _s41_nextKidSequenceId;
+ _s41_nextKidSequenceId = -1;
_timers[5] = getRandom(30) + 20;
- if (_s41_dword_47F2C4 == 0x11E) {
- _toyUfoActionStatus = 8;
+ if (_s41_currKidSequenceId == 0x11E) {
+ _toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(getRandom(300) + 500, getRandom(225) + 75, 0, 799, 0, 300, 2);
}
}
Commit: 9f821cf1e1dab4e572873ad0c19704ba2bfcbd6e
https://github.com/scummvm/scummvm/commit/9f821cf1e1dab4e572873ad0c19704ba2bfcbd6e
Author: johndoe123 (john_doe at techie.com)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Clean up scene 42
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene42.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index aaecbfb..ba8214d 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 41;
+ _newSceneNum = 42;
_newCursorValue = 3;
// < DEBUG END
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b085293..7aeff8c 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -857,8 +857,7 @@ public:
void scene41_updateAnimations();
// Scene 42
- int _s42_dword_47F2B8;
- int _s42_dword_47F2BC;
+ int _s42_currBBQVendorSequenceId, _s42_nextBBQVendorSequenceId;
int scene42_init();
void scene42_updateHotspots();
void scene42_run();
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 2f98a82..33f437b 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -45,6 +45,17 @@ enum {
kHSUfoDevice = 4
};
+enum {
+ kASLeaveScene = 0,
+ kASTalkBBQVendor = 1,
+ kASUseQuarterWithBBQVendor = 2,
+ kASUseQuarterWithBBQVendorDone = 3,
+ kASGrabChickenLeg = 4,
+ kASToyUfoLeaveScene = 5,
+ kASToyUfoRefresh = 6,
+ kASToyUfoPickUpHotSauce = 7
+};
+
int GnapEngine::scene42_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
@@ -82,11 +93,11 @@ void GnapEngine::scene42_run() {
queueInsertDeviceIcon();
- _s42_dword_47F2B8 = 0x14A;
- _s42_dword_47F2BC = -1;
+ _s42_currBBQVendorSequenceId = 0x14A;
+ _s42_nextBBQVendorSequenceId = -1;
_gameSys->setAnimation(0x14A, 1, 2);
- _gameSys->insertSequence(_s42_dword_47F2B8, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s42_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -153,7 +164,7 @@ void GnapEngine::scene42_run() {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
_isLeavingScene = true;
- _toyUfoActionStatus = 5;
+ _toyUfoActionStatus = kASToyUfoLeaveScene;
_newSceneNum = 41;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
}
@@ -162,7 +173,7 @@ void GnapEngine::scene42_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
_isLeavingScene = true;
- _toyUfoActionStatus = 5;
+ _toyUfoActionStatus = kASToyUfoLeaveScene;
_newSceneNum = 43;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
}
@@ -170,11 +181,11 @@ void GnapEngine::scene42_run() {
case kHSUfoHotSauce:
if (isFlag(17)) {
- _toyUfoActionStatus = 7;
+ _toyUfoActionStatus = kASToyUfoPickUpHotSauce;
toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
_timers[9] = 600;
} else {
- _toyUfoActionStatus = 6;
+ _toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
}
break;
@@ -223,7 +234,7 @@ void GnapEngine::scene42_run() {
case kHSExitUfoParty:
_isLeavingScene = true;
gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_platX, _hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
_newSceneNum = 40;
break;
@@ -231,7 +242,7 @@ void GnapEngine::scene42_run() {
case kHSExitToyStand:
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitToyStand].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitToyStand].x, _hotspotsWalkPos[kHSExitToyStand].y, -1, 0x107CF, 1);
_newSceneNum = 41;
break;
@@ -239,7 +250,7 @@ void GnapEngine::scene42_run() {
case kHSExitUfo:
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
+ _gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _hotspotsWalkPos[kHSExitUfo].y, -1, 0x107CD, 1);
_newSceneNum = 43;
break;
@@ -247,7 +258,7 @@ void GnapEngine::scene42_run() {
case kHSBBQVendor:
if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
gnapWalkTo(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, 0, 0x107BB, 1);
- _gnapActionStatus = 2;
+ _gnapActionStatus = kASUseQuarterWithBBQVendor;
if (_platY < 9)
platypusWalkTo(_platX, 9, -1, -1, 1);
} else if (_grabCursorSpriteIndex >= 0) {
@@ -260,7 +271,7 @@ void GnapEngine::scene42_run() {
case TALK_CURSOR:
_gnapIdleFacing = 7;
gnapWalkTo(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 1;
+ _gnapActionStatus = kASTalkBBQVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -280,7 +291,7 @@ void GnapEngine::scene42_run() {
break;
case GRAB_CURSOR:
gnapWalkTo(_hotspotsWalkPos[kHSChickenLeg].x, _hotspotsWalkPos[kHSChickenLeg].y, 0, 0x107BC, 1);
- _gnapActionStatus = 4;
+ _gnapActionStatus = kASGrabChickenLeg;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -303,7 +314,7 @@ void GnapEngine::scene42_run() {
if (_mouseClickState.left && _gnapActionStatus < 0) {
_mouseClickState.left = false;
if (isFlag(12)) {
- _toyUfoActionStatus = 6;
+ _toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
gnapWalkTo(-1, -1, -1, -1, 1);
@@ -321,28 +332,28 @@ void GnapEngine::scene42_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 30;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s42_dword_47F2BC == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
_gnapRandomValue = getRandom(8);
switch (_gnapRandomValue) {
case 0:
- _s42_dword_47F2BC = 0x14C;
+ _s42_nextBBQVendorSequenceId = 0x14C;
break;
case 1:
case 2:
- _s42_dword_47F2BC = 0x149;
+ _s42_nextBBQVendorSequenceId = 0x149;
break;
case 3:
case 4:
case 5:
case 6:
- _s42_dword_47F2BC = 0x14D;
+ _s42_nextBBQVendorSequenceId = 0x14D;
break;
case 7:
- _s42_dword_47F2BC = 0x14A;
+ _s42_nextBBQVendorSequenceId = 0x14A;
break;
}
- if (_s42_dword_47F2BC == _s42_dword_47F2B8 && _s42_dword_47F2BC != 0x14D)
- _s42_dword_47F2BC = -1;
+ if (_s42_nextBBQVendorSequenceId == _s42_currBBQVendorSequenceId && _s42_nextBBQVendorSequenceId != 0x14D)
+ _s42_nextBBQVendorSequenceId = -1;
}
}
}
@@ -367,48 +378,43 @@ void GnapEngine::scene42_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
switch (_gnapActionStatus) {
- case 0:
+ case kASLeaveScene:
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
_sceneDone = true;
break;
- case 1:
+ case kASTalkBBQVendor:
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
- _s42_dword_47F2BC = 0x14B;
+ _s42_nextBBQVendorSequenceId = 0x14B;
break;
- case 3:
- _gameSys->setAnimation(0, 0, 0);
- setGrabCursorSprite(kItemChickenBucket);
- _gnapActionStatus = -1;
- break;
- case 2:
- case 4:
+ case kASUseQuarterWithBBQVendor:
+ case kASGrabChickenLeg:
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_gnapActionStatus == 2) {
+ if (_gnapActionStatus == kASUseQuarterWithBBQVendor) {
invRemove(kItemDiceQuarterHole);
invAdd(kItemChickenBucket);
setGrabCursorSprite(-1);
sequenceId = 0x150;
- _s42_dword_47F2BC = 0x148;
+ _s42_nextBBQVendorSequenceId = 0x148;
} else if (isFlag(27)) {
if (isFlag(28)) {
sequenceId = 0x7B7;
- _s42_dword_47F2BC = 0x145;
+ _s42_nextBBQVendorSequenceId = 0x145;
} else {
setFlag(28);
sequenceId = 0x14F;
- _s42_dword_47F2BC = 0x147;
+ _s42_nextBBQVendorSequenceId = 0x147;
}
} else {
setFlag(27);
sequenceId = 0x14E;
- _s42_dword_47F2BC = 0x146;
+ _s42_nextBBQVendorSequenceId = 0x146;
}
if (sequenceId == 0x7B7) {
_gameSys->insertSequence(0x107B7, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, getSequenceTotalDuration(_s42_dword_47F2BC),
+ kSeqSyncWait, getSequenceTotalDuration(_s42_nextBBQVendorSequenceId),
75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceDatNum = 1;
} else {
@@ -419,22 +425,27 @@ void GnapEngine::scene42_updateAnimations() {
}
_gnapSequenceId = sequenceId;
_gameSys->setAnimation(sequenceId | (_gnapSequenceDatNum << 16), _gnapId, 0);
- if (_gnapActionStatus == 2)
- _gnapActionStatus = 3;
+ if (_gnapActionStatus == kASUseQuarterWithBBQVendor)
+ _gnapActionStatus = kASUseQuarterWithBBQVendorDone;
else
_gnapActionStatus = -1;
- _gameSys->insertSequence(_s42_dword_47F2BC, 1, _s42_dword_47F2B8, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s42_dword_47F2BC, 1, 2);
- _s42_dword_47F2B8 = _s42_dword_47F2BC;
- if (_s42_dword_47F2BC == 0x145)
- _s42_dword_47F2BC = 0x14A;
+ _gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
+ _s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
+ if (_s42_nextBBQVendorSequenceId == 0x145)
+ _s42_nextBBQVendorSequenceId = 0x14A;
else
- _s42_dword_47F2BC = -1;
+ _s42_nextBBQVendorSequenceId = -1;
_timers[4] = getRandom(20) + 30;
_timers[2] = getRandom(30) + 20;
_timers[3] = getRandom(50) + 200;
}
break;
+ case kASUseQuarterWithBBQVendorDone:
+ _gameSys->setAnimation(0, 0, 0);
+ setGrabCursorSprite(kItemChickenBucket);
+ _gnapActionStatus = -1;
+ break;
default:
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
@@ -442,20 +453,20 @@ void GnapEngine::scene42_updateAnimations() {
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s42_dword_47F2BC != -1) {
- _gameSys->insertSequence(_s42_dword_47F2BC, 1, _s42_dword_47F2B8, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s42_dword_47F2BC, 1, 2);
- _s42_dword_47F2B8 = _s42_dword_47F2BC;
- _s42_dword_47F2BC = -1;
+ if (_gameSys->getAnimationStatus(2) == 2 && _s42_nextBBQVendorSequenceId != -1) {
+ _gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
+ _s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
+ _s42_nextBBQVendorSequenceId = -1;
_timers[4] = getRandom(20) + 30;
}
if (_gameSys->getAnimationStatus(3) == 2) {
switch (_toyUfoActionStatus) {
- case 5:
+ case kASToyUfoLeaveScene:
_sceneDone = true;
break;
- case 7:
+ case kASToyUfoPickUpHotSauce:
_gameSys->insertSequence(0x10870, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
setFlag(24);
scene42_updateHotspots();
Commit: 2a23b8d90c8b2c3a56a457a7791775b652876d17
https://github.com/scummvm/scummvm/commit/2a23b8d90c8b2c3a56a457a7791775b652876d17
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Update copyright
Changed paths:
engines/gnap/detection.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 8898d90..8899445 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -63,7 +63,7 @@ public:
}
virtual const char *getOriginalCopyright() const {
- return "Gnap (C) 1999";
+ return "Gnap (C) Artech Digital Entertainment 1997";
}
virtual bool hasFeature(MetaEngineFeature f) const;
Commit: c18c5b047d33f261c003d6196891bae7d6669fd6
https://github.com/scummvm/scummvm/commit/c18c5b047d33f261c003d6196891bae7d6669fd6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce variable scope in fatUpdateFrame, change variable type to boolean
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index d6f8db8..6e0260a 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -1022,7 +1022,7 @@ void GameSys::fatUpdateFrame() {
return;
bool updFlag = true;
- int duration, v20, currFrameNum;
+ int duration, currFrameNum;
// NOTE Skipped avi code (reqAviStart)
@@ -1071,13 +1071,13 @@ void GameSys::fatUpdateFrame() {
duration = clockDelta - gfxItem->delayTicks;
gfxItem->delayTicks = 0;
if (gfxItem->prevFrame.duration <= duration) {
- v20 = 0;
+ bool v20 = false;
if (gfxItem->prevFrame.duration > 0) {
duration -= gfxItem->prevFrame.duration;
gfxItem->prevFrame.duration = -duration;
} else {
gfxItem->prevFrame.duration = 0;
- v20 = 1;
+ v20 = true;
}
currFrameNum = gfxItem->currFrameNum;
if (animation->framesCount > currFrameNum) {
Commit: 9d52140b09ccf1821515bfc4ed92127a5c97c3ce
https://github.com/scummvm/scummvm/commit/9d52140b09ccf1821515bfc4ed92127a5c97c3ce
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming in toyUfoFlyTo
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index ba8214d..57fa625 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2221,12 +2221,7 @@ bool GnapEngine::toyUfoCheckTimer() {
return true;
}
-void GnapEngine::toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a6, int animationIndex) {
- int v21 = 0;
- int v14 = 0;
- int v17 = 36;
- int v15 = 32;
- int i = 0;
+void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex) {
GridStruct v16[34];
if (destX == -1)
@@ -2237,76 +2232,80 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a
//CHECKME
- int v25 = CLIP(destX, a3, a4);
- int v26 = CLIP(destY, a5, a6);
- int v24, v23;
- int v13, v20;
+ int clippedDestX = CLIP(destX, minX, maxX);
+ int clippedDestY = CLIP(destY, minY, maxY);
+ int dirX, dirY; // 0, -1 or 1
- if (v25 == _toyUfoX)
- v24 = 0;
+ if (clippedDestX == _toyUfoX)
+ dirX = 0;
else
- v24 = (v25 - _toyUfoX) / ABS(v25 - _toyUfoX);
+ dirX = (clippedDestX - _toyUfoX) / ABS(clippedDestX - _toyUfoX);
- if (v26 == _toyUfoY)
- v23 = 0;
+ if (clippedDestY == _toyUfoY)
+ dirY = 0;
else
- v23 = (v26 - _toyUfoY) / ABS(v26 - _toyUfoY);
-
- v13 = ABS(v25 - _toyUfoX);
- v20 = ABS(v26 - _toyUfoY);
+ dirY = (clippedDestY - _toyUfoY) / ABS(clippedDestY - _toyUfoY);
- if (v20 > v13) {
- int v22 = v20 / v15;
- while (v14 < v20 && i < 34) {
+ int deltaX = ABS(clippedDestX - _toyUfoX);
+ int deltaY = ABS(clippedDestY - _toyUfoY);
+
+ int i = 0;
+ if (deltaY > deltaX) {
+ int v15 = 32;
+ int v22 = deltaY / v15;
+ int v14 = 0;
+ while (v14 < deltaY && i < 34) {
if (v22 - 5 >= i) {
v15 = MIN(36, 8 * i + 8);
} else {
v15 = MAX(6, v15 - 3);
}
v14 += v15;
- v16[i].gridX1 = _toyUfoX + v24 * v13 * v14 / v20;
- v16[i].gridY1 = _toyUfoY + v23 * v14;
+ v16[i].gridX1 = _toyUfoX + dirX * deltaX * v14 / deltaY;
+ v16[i].gridY1 = _toyUfoY + dirY * v14;
++i;
}
} else {
- int v22 = v13 / v17;
- while (v14 < v13 && i < 34) {
+ int v17 = 36;
+ int v22 = deltaX / v17;
+ int v14 = 0;
+ while (v14 < deltaX && i < 34) {
if (v22 - 5 >= i) {
v17 = MIN(38, 8 * i + 8);
} else {
v17 = MAX(6, v17 - 3);
}
v14 += v17;
- v16[i].gridX1 = _toyUfoX + v24 * v14;
- v16[i].gridY1 = _toyUfoY + v23 * v20 * v14 / v13;
+ v16[i].gridX1 = _toyUfoX + dirX * v14;
+ v16[i].gridY1 = _toyUfoY + dirY * deltaY * v14 / deltaX;
++i;
}
}
- v21 = i - 1;
+ int v21 = i - 1;
- _toyUfoX = v25;
- _toyUfoY = v26;
+ _toyUfoX = clippedDestX;
+ _toyUfoY = clippedDestY;
- debug("v21: %d", v21);
+// debug("v21: %d", v21);
if (i - 1 > 0) {
- int v18;
+ int seqId;
if (isFlag(16))
- v18 = 0x867;
+ seqId = 0x867;
else if (isFlag(17))
- v18 = 0x84F;
+ seqId = 0x84F;
else if (isFlag(18))
- v18 = 0x85F;
+ seqId = 0x85F;
else if (isFlag(19))
- v18 = 0x857;
- v16[0].sequenceId = v18;
+ seqId = 0x857;
+ v16[0].sequenceId = seqId;
v16[0].id = 0;
- _gameSys->insertSequence(v18 | 0x10000, 0,
+ _gameSys->insertSequence(seqId | 0x10000, 0,
_toyUfoSequenceId | 0x10000, _toyUfoId,
8, 0, v16[0].gridX1 - 365, v16[0].gridY1 - 128);
for (i = 1; i < v21; ++i) {
- v16[i].sequenceId = v18 + (i % 8);
+ v16[i].sequenceId = seqId + (i % 8);
v16[i].id = i;
_gameSys->insertSequence(v16[i].sequenceId | 0x10000, v16[i].id,
v16[i - 1].sequenceId | 0x10000, v16[i - 1].id,
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7aeff8c..6b532a0 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -846,7 +846,7 @@ public:
void toyUfoSetStatus(int a1);
int toyUfoGetSequenceId();
bool toyUfoCheckTimer();
- void toyUfoFlyTo(int destX, int destY, int a3, int a4, int a5, int a6, int animationIndex);
+ void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
// Scene 41
int _s41_currKidSequenceId, _s41_nextKidSequenceId;
Commit: 37f84d0bc5626f9b5a406c79ff82ba566e88f4af
https://github.com/scummvm/scummvm/commit/37f84d0bc5626f9b5a406c79ff82ba566e88f4af
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: change 3rd parameter of removeSequence to boolean, adapt calls accordingly
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene51.cpp
engines/gnap/scenes/scene52.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 6e0260a..0037574 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -90,12 +90,12 @@ void GameSys::insertDirtyRect(const Common::Rect &rect) {
_dirtyRects.push_back(rect);
}
-void GameSys::removeSequence(int sequenceId, int a2, int a3) {
+void GameSys::removeSequence(int sequenceId, int id, bool resetFl) {
//WaitForSingleObject(removeSequence2Mutex, INFINITE);
if (_removeSequenceItemsCount < kMaxSequenceItems) {
- _removeSequenceItems[_removeSequenceItemsCount].sequenceId = sequenceId;
- _removeSequenceItems[_removeSequenceItemsCount].id = a2;
- _removeSequenceItems[_removeSequenceItemsCount].a3 = a3;
+ _removeSequenceItems[_removeSequenceItemsCount]._sequenceId = sequenceId;
+ _removeSequenceItems[_removeSequenceItemsCount]._id = id;
+ _removeSequenceItems[_removeSequenceItemsCount]._forceFrameReset = resetFl;
++_removeSequenceItemsCount;
//ResetEvent(removeSequenceItemsEvent);
//ReleaseMutex(removeSequence2Mutex);
@@ -964,16 +964,16 @@ void GameSys::handleReqRemoveSequenceItems() {
if (_removeSequenceItemsCount > 0) {
for (int i = 0; i < _removeSequenceItemsCount; ++i) {
int gfxIndex;
- if (seqFind(_removeSequenceItems[i].sequenceId, _removeSequenceItems[i].id, &gfxIndex))
+ if (seqFind(_removeSequenceItems[i]._sequenceId, _removeSequenceItems[i]._id, &gfxIndex))
_seqItems.remove_at(gfxIndex);
- seqLocateGfx(_removeSequenceItems[i].sequenceId, _removeSequenceItems[i].id, &gfxIndex);
+ seqLocateGfx(_removeSequenceItems[i]._sequenceId, _removeSequenceItems[i]._id, &gfxIndex);
for (GfxItem *gfxItem = &_gfxItems[gfxIndex];
- gfxIndex < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItems[i].sequenceId && gfxItem->id == _removeSequenceItems[i].id;
+ gfxIndex < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItems[i]._sequenceId && gfxItem->id == _removeSequenceItems[i]._id;
gfxItem = &_gfxItems[gfxIndex]) {
gfxItem->sequenceId = -1;
gfxItem->animation = 0;
gfxItem->soundValue = 0;
- if (_removeSequenceItems[i].a3) {
+ if (_removeSequenceItems[i]._forceFrameReset) {
gfxItem->currFrame.duration = 0;
gfxItem->currFrame.spriteId = -1;
gfxItem->currFrame.soundId = -1;
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 5e996bf..5bf92b6 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -65,9 +65,9 @@ struct SpriteDrawItem {
};
struct RemoveSequenceItem {
- int sequenceId;
- int id;
- int a3;
+ int _sequenceId;
+ int _id;
+ bool _forceFrameReset;
};
struct RemoveSpriteDrawItem {
@@ -106,7 +106,7 @@ public:
~GameSys();
void insertSequence(int sequenceId, int a2, int sequenceId2, int a4, int flags, int totalDuration, int16 x, int16 y);
void insertDirtyRect(const Common::Rect &rect);
- void removeSequence(int sequenceId, int a2, int a3);
+ void removeSequence(int sequenceId, int id, bool resetFl);
void invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::Surface *surface1, Graphics::Surface *surface2);
void requestClear2(int a1);
void requestClear1();
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 57fa625..e31c78e 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -613,7 +613,7 @@ void GnapEngine::insertDeviceIconActive() {
}
void GnapEngine::removeDeviceIconActive() {
- _gameSys->removeSequence(0x1084A, 21, 1);
+ _gameSys->removeSequence(0x1084A, 21, true);
}
void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int y2) {
@@ -2337,8 +2337,6 @@ void GnapEngine::cutscene_run() {
int duration = 0;
bool skip = false;
- int v1 = 0;
-
if (_prevSceneNum == 2) {
soundId = 0x36B;
duration = MAX(1, 300 / getSequenceTotalDuration(_s99_dword_47F370[_s99_itemsCount - 1]));//CHECKME
@@ -2362,6 +2360,7 @@ void GnapEngine::cutscene_run() {
_mouseClickState.left = false;
+ int v1 = 0;
while (!_sceneDone) {
gameUpdateTick();
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 0e4695c..e084a54 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -314,7 +314,7 @@ void GnapEngine::scene01_updateAnimations() {
_gnapActionStatus = kASLookSpaceshipDone;
break;
case kASLookSpaceshipDone:
- _gameSys->removeSequence(133, 256, 1);
+ _gameSys->removeSequence(133, 256, true);
_gameSys->removeSpriteDrawItem(_s01_spaceshipSurface, 255);
deleteSurface(&_s01_spaceshipSurface);
_gnapActionStatus = -1;
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 5d740b9..d745b09 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -515,7 +515,7 @@ void GnapEngine::scene02_updateAnimations() {
if (_s02_nextChickenSequenceId == 0x150) {
_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 0);
_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(_s02_currChickenSequenceId, 179, 1);
+ _gameSys->removeSequence(_s02_currChickenSequenceId, 179, true);
_s02_nextChickenSequenceId = -1;
_s02_currChickenSequenceId = -1;
_gnapActionStatus = kASGrabChickenDone;
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index bc5ee85..37ebe34 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -507,8 +507,8 @@ void GnapEngine::scene04_updateAnimations() {
_gnapActionStatus = kASGetKeyAnotherDone;
break;
case kASGetKeyAnotherDone:
- _gameSys->removeSequence(0x1FF, 256, 1);
- _gameSys->removeSequence(0x20A, 256, 1);
+ _gameSys->removeSequence(0x1FF, 256, true);
+ _gameSys->removeSequence(0x20A, 256, true);
_gameSys->insertSequence(0x107B5, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), 255,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index a4ebf92..f7c0b9c8 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -475,17 +475,17 @@ void GnapEngine::scene08_updateAnimations() {
case 0x149:
setFlag(7);
_hotspots[kHSMeat].flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x144, 1, 1);
+ _gameSys->removeSequence(0x144, 1, true);
break;
case 0x14A:
setFlag(8);
_hotspots[kHSBone].flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x145, 1, 1);
+ _gameSys->removeSequence(0x145, 1, true);
break;
case 0x14B:
setFlag(9);
_hotspots[kHSToy].flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x146, 1, 1);
+ _gameSys->removeSequence(0x146, 1, true);
break;
}
_s08_currDogSequenceId = _s08_nextDogSequenceId;
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 4436d1e..3654be5 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -218,7 +218,7 @@ void GnapEngine::scene09_updateAnimations() {
case kASSearchTrash:
_gameSys->setAnimation(0x4C, 120, 0);
_gameSys->insertSequence(0x4C, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x4B, 2, 1);
+ _gameSys->removeSequence(0x4B, 2, true);
_gnapSequenceId = 0x4C;
_gnapId = 120;
_gnapIdleFacing = 5;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index c6faf5a..32162e2 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -392,7 +392,7 @@ void GnapEngine::scene10_updateAnimations() {
_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
kSeqSyncWait, getSequenceTotalDuration(0x109) + getSequenceTotalDuration(0x10A) + getSequenceTotalDuration(0x10843),
75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _gameSys->removeSequence(0x107, 100, 1);
+ _gameSys->removeSequence(0x107, 100, true);
_s10_currCookSequenceId = 0x109;
_s10_nextCookSequenceId = 0x843;
_beaverSequenceId = 0x7C9;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 6bbc542..3a112b9 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -408,8 +408,8 @@ void GnapEngine::scene11_updateAnimations() {
_gnapSequenceId = 0x1F4;
_gnapId = 255;
_gnapSequenceDatNum = 0;
- _gameSys->removeSequence(0x207, 257, 1);
- _gameSys->removeSequence(0x208, 256, 1);
+ _gameSys->removeSequence(0x207, 257, true);
+ _gameSys->removeSequence(0x208, 256, true);
_s11_nextGoggleGuySequenceId = 0x1F8;
_timers[5] = getRandom(100) + 75;
_gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index c9b4d53..729fdeb 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -413,7 +413,7 @@ void GnapEngine::scene13_updateAnimations() {
case kASGrabSink:
_gameSys->setAnimation(0xAB, 160, 0);
_gameSys->insertSequence(0xAB, 160, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0xAA, 256, 1);
+ _gameSys->removeSequence(0xAA, 256, true);
_gnapSequenceId = 0xAB;
_gnapId = 160;
_gnapIdleFacing = 1;
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index 54eb146..578f4fc 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -284,11 +284,11 @@ void GnapEngine::scene15_updateAnimations() {
case 0xD8:
case 0xDA:
if (_s15_currUpperButtonSequenceId != -1) {
- _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, 1);
+ _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
_s15_currUpperButtonSequenceId = -1;
}
if (_s15_currLowerButtonSequenceId != -1) {
- _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, 1);
+ _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
_s15_currLowerButtonSequenceId = -1;
}
break;
@@ -303,9 +303,9 @@ void GnapEngine::scene15_updateAnimations() {
_newSceneNum = 16;
_isLeavingScene = true;
}
- _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, 1);
+ _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
_s15_currUpperButtonSequenceId = -1;
- _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, 1);
+ _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
_s15_currLowerButtonSequenceId = -1;
} else if (_s15_nextUpperButtonSequenceId != -1) {
_gameSys->setAnimation(_s15_nextUpperButtonSequenceId, 1, 0);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 619d50f..ff43a5d 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -267,7 +267,7 @@ void GnapEngine::scene18_platEndPhoning(int a1) {
while (_gameSys->getAnimationStatus(3) != 2)
gameUpdateTick();
}
- _gameSys->removeSequence(0x21F, 254, 1);
+ _gameSys->removeSequence(0x21F, 254, true);
_gameSys->setAnimation(0, 0, 3);
clearFlag(26);
if (a1) {
@@ -796,14 +796,14 @@ void GnapEngine::scene18_updateAnimations() {
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x1FD;
}
- _gameSys->removeSequence(0x1FA, 19, 1);
+ _gameSys->removeSequence(0x1FA, 19, true);
setFlag(10);
scene18_updateHotspots();
_gnapActionStatus = -1;
break;
case kASGrabGarbageCanFromHydrant:
_gameSys->insertSequence(0x1FE, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x1F9, 19, 1);
+ _gameSys->removeSequence(0x1F9, 19, true);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x1FE;
clearFlag(9);
@@ -813,9 +813,9 @@ void GnapEngine::scene18_updateAnimations() {
break;
case kASCloseRightValveNoGarbageCan:
_gameSys->insertSequence(0x205, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20D, 39, 1);
- _gameSys->removeSequence(0x212, 39, 1);
- _gameSys->removeSequence(0x211, 39, 1);
+ _gameSys->removeSequence(0x20D, 39, true);
+ _gameSys->removeSequence(0x212, 39, true);
+ _gameSys->removeSequence(0x211, 39, true);
stopSound(0x22B);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x205;
@@ -840,7 +840,7 @@ void GnapEngine::scene18_updateAnimations() {
setGrabCursorSprite(-1);
_gameSys->insertSequence(0x208, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
- _gameSys->removeSequence(0x20C, 19, 1);
+ _gameSys->removeSequence(0x20C, 19, true);
_gameSys->setAnimation(0x217, 39, 5);
_gameSys->insertSequence(0x217, 39, 0x216, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
@@ -855,9 +855,9 @@ void GnapEngine::scene18_updateAnimations() {
break;
case kASCloseTopValve:
_gameSys->insertSequence(0x206, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20E, 39, 1);
- _gameSys->removeSequence(0x216, 39, 1);
- _gameSys->removeSequence(0x217, 39, 1);
+ _gameSys->removeSequence(0x20E, 39, true);
+ _gameSys->removeSequence(0x216, 39, true);
+ _gameSys->removeSequence(0x217, 39, true);
stopSound(0x22B);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x206;
@@ -942,7 +942,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x207, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
_gameSys->requestRemoveSequence(0x1F9, 19);
- _gameSys->removeSequence(0x20B, 19, 1);
+ _gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x213, 39, 5);
_gameSys->insertSequence(0x214, 39, 0x213, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
@@ -958,7 +958,7 @@ void GnapEngine::scene18_updateAnimations() {
setGrabCursorSprite(-1);
_gameSys->insertSequence(0x207, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
- _gameSys->removeSequence(0x20B, 19, 1);
+ _gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x211, 39, 5);
_gameSys->insertSequence(0x212, 39, 0x211, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
@@ -972,7 +972,7 @@ void GnapEngine::scene18_updateAnimations() {
break;
case kASCloseRightValveWithGarbageCan:
_gameSys->insertSequence(0x205, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20D, 39, 1);
+ _gameSys->removeSequence(0x20D, 39, true);
_gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
stopSound(0x22B);
_gameSys->setAnimation(0x1F9, 19, 0);
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index b2b8455..251e3b4 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -429,7 +429,7 @@ void GnapEngine::scene28_updateAnimations() {
case 0x119:
_gameSys->insertSequence(_s28_nextClownSequenceId, 39, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _gameSys->removeSequence(_s28_currClownSequenceId, 39, 1);
+ _gameSys->removeSequence(_s28_currClownSequenceId, 39, true);
_gnapActionStatus = kASGrabHornFailsDone;
_gnapSequenceId = _s28_nextClownSequenceId;
_gnapSequenceDatNum = 0;
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index f6ec969..85e6614 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -246,7 +246,7 @@ void GnapEngine::scene30_updateAnimations() {
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(0x3F, 255);
- _gameSys->removeSequence(0x105, _gnapId, 1);
+ _gameSys->removeSequence(0x105, _gnapId, true);
_gameSys->setAnimation(0x102, 256, 0);
_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
while (_gameSys->getAnimationStatus(0) != 2)
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index e8c2328..fc66b15 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -307,7 +307,7 @@ void GnapEngine::scene33_updateAnimations() {
if (_s33_nextChickenSequenceId == 0x81) {
_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 0);
_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(_s33_currChickenSequenceId, 179, 1);
+ _gameSys->removeSequence(_s33_currChickenSequenceId, 179, true);
_s33_nextChickenSequenceId = -1;
_s33_currChickenSequenceId = -1;
_gnapActionStatus = kASUseChickenDone;
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index 53768fe..f807728 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -265,7 +265,7 @@ void GnapEngine::scene38_updateAnimations() {
_sceneDone = true;
break;
case kASExitCave:
- _gameSys->removeSequence(_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, 1);
+ _gameSys->removeSequence(_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, true);
_gameSys->insertSequence(0xA3, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA3;
_gnapSequenceDatNum = 0;
@@ -273,7 +273,7 @@ void GnapEngine::scene38_updateAnimations() {
_gnapActionStatus = kASLeaveScene;
break;
case kASUseHuntingTrophy:
- _gameSys->removeSequence(0x9B, 0, 1);
+ _gameSys->removeSequence(0x9B, 0, true);
_gameSys->insertSequence(0x9C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9C;
_gnapSequenceDatNum = 0;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 3510cb4..611e5c9 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -438,7 +438,7 @@ void GnapEngine::scene43_updateAnimations() {
break;
case 6:
_gameSys->insertSequence(0x10871, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x1086F, 1, 1);
+ _gameSys->removeSequence(0x1086F, 1, true);
setFlag(14);
scene43_updateHotspots();
toyUfoSetStatus(18);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index b2c7118..2733695 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -462,7 +462,7 @@ void GnapEngine::scene44_updateAnimations() {
_beaverSequenceId = 0xFE;
_beaverSequenceDatNum = 0;
_gameSys->setAnimation(0xFE, _beaverId, 1);
- _gameSys->removeSequence(_s44_dword_47EB10, 1, 1);
+ _gameSys->removeSequence(_s44_dword_47EB10, 1, true);
_beaverActionStatus = 5;
}
break;
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index 1313c1d..f56f9c9 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -323,7 +323,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
item->y = 0;
}
} else {
- _gameSys->removeSequence(item->currSequenceId, item->id, 1);
+ _gameSys->removeSequence(item->currSequenceId, item->id, true);
_gameSys->setAnimation(0, 0, index + 1);
playSound(218, 0);
if (scene51_incCashAmount(item->currSequenceId) == 1995) {
@@ -370,7 +370,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
case 0xC2:
// Bouncing coin and banknote
_gameSys->setAnimation(0, 0, index + 1);
- _gameSys->removeSequence(item->currSequenceId, item->id, 1);
+ _gameSys->removeSequence(item->currSequenceId, item->id, true);
scene51_clearItem(item);
break;
@@ -393,7 +393,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
break;
case 0xBC:
- _gameSys->removeSequence(item->currSequenceId, item->id, 1);
+ _gameSys->removeSequence(item->currSequenceId, item->id, true);
_gameSys->setAnimation(0, 0, index + 1);
scene51_clearItem(item);
break;
@@ -414,7 +414,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
void GnapEngine::scene51_removeCollidedItems() {
for (int i = 0; i < 6; ++i) {
if (_s51_items[i].isCollision) {
- _gameSys->removeSequence(_s51_items[i].currSequenceId, _s51_items[i].id, 1);
+ _gameSys->removeSequence(_s51_items[i].currSequenceId, _s51_items[i].id, true);
_gameSys->setAnimation(0, 0, i + 1);
scene51_clearItem(&_s51_items[i]);
}
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 62cc2f3..02718ec 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -175,7 +175,7 @@ void GnapEngine::scene52_fireShipCannon(int posX) {
playSound(0x2D, 0);
if (scene52_shipCannonHitShield(cannonNum)) {
_gameSys->setAnimation(0, 0, cannonNum + 8);
- _gameSys->removeSequence(0x23, cannonNum + 256, 1);
+ _gameSys->removeSequence(0x23, cannonNum + 256, true);
} else {
_s52_shipCannonFired = 1;
_s52_shipCannonPosY -= 13;
@@ -226,7 +226,7 @@ void GnapEngine::scene52_updateShipCannon() {
if (_s52_shipCannonPosY - 13 >= 135) {
if (scene52_updateHitAlien()) {
_gameSys->setAnimation(0, 0, 8);
- _gameSys->removeSequence(35, 256, 1);
+ _gameSys->removeSequence(35, 256, true);
_s52_shipCannonFired = 0;
scene52_drawScore(_s52_gameScore);
} else {
@@ -236,7 +236,7 @@ void GnapEngine::scene52_updateShipCannon() {
}
} else {
_gameSys->setAnimation(0, 0, 8);
- _gameSys->removeSequence(35, 256, 1);
+ _gameSys->removeSequence(35, 256, true);
_s52_shipCannonFired = 0;
}
}
@@ -340,7 +340,7 @@ void GnapEngine::scene52_updateAlienRow(int rowNum) {
if (_s52_alienRowIds[rowNum] == -1)
_s52_alienRowIds[rowNum] = i + 256;
} else if (_s52_items[rowNum][i] == -2) {
- _gameSys->removeSequence(_s52_alienRowKind[rowNum], i + 256, 1);
+ _gameSys->removeSequence(_s52_alienRowKind[rowNum], i + 256, true);
_s52_items[rowNum][i] = -1;
--_s52_alienSpeed;
}
@@ -638,7 +638,7 @@ int GnapEngine::scene52_shipCannonHitAlien() {
void GnapEngine::scene52_shipExplode() {
if (!_s52_aliensCount) {
_gameSys->setAnimation(0, 0, 7);
- _gameSys->removeSequence(_s52_ufoSequenceId, 256, 1);
+ _gameSys->removeSequence(_s52_ufoSequenceId, 256, true);
playSound(44, 0);
_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_aliensCount = 1;
@@ -656,7 +656,7 @@ int GnapEngine::scene52_checkAlienRow(int rowNum) {
for (int j = 0; j < 5; ++j)
if (_s52_items[rowNum][j] == -2) {
- _gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, 1);
+ _gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
_s52_items[rowNum][j] = -1;
--_s52_alienSpeed;
v4 = 1;
Commit: ccadc0ab208c9de0c1b56a83c58b81e5002beb6a
https://github.com/scummvm/scummvm/commit/ccadc0ab208c9de0c1b56a83c58b81e5002beb6a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming, change some function parameters to boolean
Changed paths:
engines/gnap/datarchive.cpp
engines/gnap/datarchive.h
engines/gnap/fontdata.h
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index d480d31..7f5dadf 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -44,10 +44,10 @@ DatArchive::DatArchive(const char *filename) {
_fd->skip(4); // Skip unknown
_entries = new DatEntry[_entriesCount];
for (int i = 0; i < _entriesCount; ++i) {
- _entries[i].ofs = _fd->readUint32LE();
- _entries[i].outSize1 = _fd->readUint32LE();
- _entries[i].type = _fd->readUint32LE();
- _entries[i].outSize2 = _fd->readUint32LE();
+ _entries[i]._ofs = _fd->readUint32LE();
+ _entries[i]._outSize1 = _fd->readUint32LE();
+ _entries[i]._type = _fd->readUint32LE();
+ _entries[i]._outSize2 = _fd->readUint32LE();
}
}
@@ -58,10 +58,10 @@ DatArchive::~DatArchive() {
}
byte *DatArchive::load(int index) {
- _fd->seek(_entries[index].ofs);
- debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index].outSize2, _entries[index].outSize1);
- byte *buffer = new byte[_entries[index].outSize1];
- if (!Common::decompressDCL(_fd, buffer, 0, _entries[index].outSize1))
+ _fd->seek(_entries[index]._ofs);
+ debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
+ byte *buffer = new byte[_entries[index]._outSize1];
+ if (!Common::decompressDCL(_fd, buffer, 0, _entries[index]._outSize1))
error("DatArchive::load() Error during decompression of entry %d", index);
return buffer;
}
diff --git a/engines/gnap/datarchive.h b/engines/gnap/datarchive.h
index 2fd431b..28664fe 100644
--- a/engines/gnap/datarchive.h
+++ b/engines/gnap/datarchive.h
@@ -36,10 +36,10 @@
namespace Gnap {
struct DatEntry {
- uint32 ofs;
- uint32 outSize1;
- uint32 type;
- uint32 outSize2;
+ uint32 _ofs;
+ uint32 _outSize1;
+ uint32 _type;
+ uint32 _outSize2;
};
class DatArchive {
@@ -48,8 +48,8 @@ public:
~DatArchive();
byte *load(int index);
int getCount() const { return _entriesCount; }
- uint32 getEntryType(int index) { return _entries[index].type; }
- uint32 getEntrySize(int index) { return _entries[index].outSize1; }
+ uint32 getEntryType(int index) { return _entries[index]._type; }
+ uint32 getEntrySize(int index) { return _entries[index]._outSize1; }
protected:
Common::File *_fd;
int _entriesCount;
diff --git a/engines/gnap/fontdata.h b/engines/gnap/fontdata.h
index 9ad0d23..bb87638 100644
--- a/engines/gnap/fontdata.h
+++ b/engines/gnap/fontdata.h
@@ -26,8 +26,8 @@
namespace Gnap {
struct FONT_CHAR_INFO {
- const byte width; // width, in bits (or pixels), of the character
- const uint16 offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
+ const byte _width; // width, in bits (or pixels), of the character
+ const uint16 _offset; // offset of the character's bitmap, in bytes, into the the FONT_INFO's data array
};
/*
@@ -35,8 +35,7 @@ struct FONT_CHAR_INFO {
*/
/* Character bitmaps for DejaVu Sans 9pt */
-const byte dejaVuSans9ptCharBitmaps[] =
-{
+const byte _dejaVuSans9ptCharBitmaps[] = {
/* @0 ' ' (5 pixels wide) */
0x00, 0x00, /* */
0x00, 0x00, /* */
@@ -747,8 +746,7 @@ const byte dejaVuSans9ptCharBitmaps[] =
/* Character descriptors for DejaVu Sans 9pt */
/* { [Char width in bits], [Offset into dejaVuSans9ptCharBitmaps in bytes] } */
-const FONT_CHAR_INFO dejaVuSans9ptCharDescriptors[] =
-{
+const FONT_CHAR_INFO _dejaVuSans9ptCharDescriptors[] = {
{5, 0}, /* */
{1, 10}, /* ! */
{3, 12}, /* " */
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 0037574..ff60980 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -75,14 +75,14 @@ void GameSys::insertSequence(int sequenceId, int a2, int sequenceId2, int a4, in
Sequence sequence;
SequenceResource *sequenceResource = _vm->_sequenceCache->get(sequenceId);
sequenceResource->_sequenceId = sequenceId;
- sequence.sequenceId = sequenceId;
- sequence.id = a2 != -1 ? a2 : sequenceResource->_field_8;
- sequence.sequenceId2 = sequenceId2 != (int32)0x80000000 ? sequenceId2 : sequenceResource->_sequenceId2;
- sequence.id2 = a4 != -1 ? a4 : sequenceResource->_field_10;
- sequence.flags = flags != -1 ? flags : sequenceResource->_flags;
- sequence.totalDuration = totalDuration != -1 ? totalDuration : sequenceResource->_totalDuration;
- sequence.x = (x < 10000 && x > -10000) ? x : sequenceResource->_xOffs;
- sequence.y = (y < 10000 && y > -10000) ? y : sequenceResource->_yOffs;
+ sequence._sequenceId = sequenceId;
+ sequence._id = a2 != -1 ? a2 : sequenceResource->_field_8;
+ sequence._sequenceId2 = sequenceId2 != (int32)0x80000000 ? sequenceId2 : sequenceResource->_sequenceId2;
+ sequence._id2 = a4 != -1 ? a4 : sequenceResource->_field_10;
+ sequence._flags = flags != -1 ? flags : sequenceResource->_flags;
+ sequence._totalDuration = totalDuration != -1 ? totalDuration : sequenceResource->_totalDuration;
+ sequence._x = (x < 10000 && x > -10000) ? x : sequenceResource->_xOffs;
+ sequence._y = (y < 10000 && y > -10000) ? y : sequenceResource->_yOffs;
_fatSequenceItems.push_back(sequence);
}
@@ -115,7 +115,7 @@ void GameSys::invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::S
//WaitForSingleObject(grabSpriteEvent, INFINITE);
}
-void GameSys::requestClear2(int a1) {
+void GameSys::requestClear2(bool resetFl) {
_fatSequenceItems.clear();
_seqItems.clear();
for (int i = 0; i < _gfxItemsCount; ++i) {
@@ -123,7 +123,7 @@ void GameSys::requestClear2(int a1) {
gfxItem->sequenceId = -1;
gfxItem->animation = 0;
gfxItem->soundValue = 0;
- if (a1) {
+ if (resetFl) {
gfxItem->currFrame.duration = 0;
gfxItem->currFrame.spriteId = -1;
gfxItem->currFrame.soundId = -1;
@@ -145,13 +145,13 @@ void GameSys::requestClear1() {
_gameSysClock = 0;
}
-void GameSys::requestRemoveSequence(int sequenceId, int a2) {
+void GameSys::requestRemoveSequence(int sequenceId, int id) {
//WaitForSingleObject(removeSequence2Mutex, INFINITE);
_reqRemoveSequenceItem = true;
_removeSequenceItemSequenceId = sequenceId;
- _removeSequenceItemValue = a2;
+ _removeSequenceItemValue = id;
- handleReqRemoveSequenceItem();//CHECKME?
+ handleReqRemoveSequenceItem(); //CHECKME?
//ResetEvent(reqClearEvent);
//ReleaseMutex(removeSequence2Mutex);
@@ -163,9 +163,9 @@ void GameSys::waitForUpdate() {
//WaitForSingleObject(updateEvent, INFINITE);
}
-int GameSys::isSequenceActive(int sequenceId, int a2) {
+int GameSys::isSequenceActive(int sequenceId, int id) {
for (uint i = 0; i < _seqItems.size(); ++i)
- if (_seqItems[i].sequenceId == sequenceId && _seqItems[i].id == a2)
+ if (_seqItems[i]._sequenceId == sequenceId && _seqItems[i]._id == id)
return true;
return false;
}
@@ -212,16 +212,16 @@ void GameSys::setScaleValues(int a1, int a2, int a3, int a4) {
void GameSys::insertSpriteDrawItem(Graphics::Surface *surface, int x, int y, int id) {
if (surface && _newSpriteDrawItemsCount < kMaxSpriteDrawItems) {
- _newSpriteDrawItems[_newSpriteDrawItemsCount].id = id;
- _newSpriteDrawItems[_newSpriteDrawItemsCount].rect = Common::Rect(x, y, x + surface->w, y + surface->h);
- _newSpriteDrawItems[_newSpriteDrawItemsCount].surface = surface;
+ _newSpriteDrawItems[_newSpriteDrawItemsCount]._id = id;
+ _newSpriteDrawItems[_newSpriteDrawItemsCount]._rect = Common::Rect(x, y, x + surface->w, y + surface->h);
+ _newSpriteDrawItems[_newSpriteDrawItemsCount]._surface = surface;
++_newSpriteDrawItemsCount;
}
}
-void GameSys::removeSpriteDrawItem(Graphics::Surface *surface, int a2) {
+void GameSys::removeSpriteDrawItem(Graphics::Surface *surface, int id) {
if (surface && _removeSpriteDrawItemsCount < kMaxSpriteDrawItems) {
- _removeSpriteDrawItems[_removeSpriteDrawItemsCount].id = a2;
+ _removeSpriteDrawItems[_removeSpriteDrawItemsCount]._id = id;
_removeSpriteDrawItems[_removeSpriteDrawItemsCount].surface = surface;
++_removeSpriteDrawItemsCount;
}
@@ -288,8 +288,8 @@ void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r
if (c < 32 || c > 127)
c = (byte)'_';
c -= 32;
- int w = dejaVuSans9ptCharDescriptors[c].width;
- const byte *data = dejaVuSans9ptCharBitmaps + dejaVuSans9ptCharDescriptors[c].offset;
+ int w = _dejaVuSans9ptCharDescriptors[c]._width;
+ const byte *data = _dejaVuSans9ptCharBitmaps + _dejaVuSans9ptCharDescriptors[c]._offset;
for (int xc = 0; xc < w; ++xc) {
for (int yc = 15; yc >= 0; --yc) {
byte *dst = (byte*)surface->getBasePtr(x + xc, y + yc);
@@ -314,7 +314,7 @@ int GameSys::getTextWidth(const char *text) {
if (c < 32 || c > 127)
c = (byte)'_';
c -= 32;
- width += dejaVuSans9ptCharDescriptors[c].width + 1;
+ width += _dejaVuSans9ptCharDescriptors[c]._width + 1;
}
return width;
}
@@ -400,9 +400,9 @@ void GameSys::drawBitmap(int resourceId) {
insertDirtyRect(Common::Rect(0, 0, 800, 600));
}
-Sequence *GameSys::seqFind(int sequenceId, int a2, int *outIndex) {
+Sequence *GameSys::seqFind(int sequenceId, int id, int *outIndex) {
for (uint i = 0; i < _seqItems.size(); ++i)
- if (_seqItems[i].sequenceId == sequenceId && _seqItems[i].id == a2) {
+ if (_seqItems[i]._sequenceId == sequenceId && _seqItems[i]._id == id) {
if (outIndex)
*outIndex = i;
return &_seqItems[i];
@@ -430,15 +430,14 @@ int GameSys::seqLocateGfx(int sequenceId, int id, int *outGfxIndex) {
}
void GameSys::seqInsertGfx(int index, int duration) {
-
Sequence *seqItem = &_seqItems[index];
- SequenceResource *sequenceResource = _vm->_sequenceCache->get(seqItem->sequenceId);
+ SequenceResource *sequenceResource = _vm->_sequenceCache->get(seqItem->_sequenceId);
if (sequenceResource->_animationsCount > 50 - _gfxItemsCount)
return;
int gfxIndex;
- seqLocateGfx(seqItem->sequenceId, seqItem->id, &gfxIndex);
+ seqLocateGfx(seqItem->_sequenceId, seqItem->_id, &gfxIndex);
if (gfxIndex != _gfxItemsCount)
memcpy(&_gfxItems[gfxIndex + sequenceResource->_animationsCount], &_gfxItems[gfxIndex], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
@@ -449,14 +448,14 @@ void GameSys::seqInsertGfx(int index, int duration) {
GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
SequenceAnimation *animation = &sequenceResource->_animations[i];
- debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->sequenceId);
+ debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
- gfxItem->sequenceId = seqItem->sequenceId;
- gfxItem->id = seqItem->id;
+ gfxItem->sequenceId = seqItem->_sequenceId;
+ gfxItem->id = seqItem->_id;
gfxItem->animation = animation;
gfxItem->currFrameNum = 0;
gfxItem->flags = 0;
- gfxItem->delayTicks = seqItem->totalDuration + animation->field_4;
+ gfxItem->delayTicks = seqItem->_totalDuration + animation->field_4;
gfxItem->updFlag = false;
gfxItem->updRectsCount = 0;
gfxItem->prevFrame.duration = 0;
@@ -464,7 +463,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->prevFrame.soundId = -1;
gfxItem->prevFrame.unkValue = -1;
totalDuration = duration;
- if ((seqItem->flags & 4) && totalDuration > 0) {
+ if ((seqItem->_flags & 4) && totalDuration > 0) {
gfxItem->prevFrame.duration = 1;
if (gfxItem->delayTicks <= totalDuration)
gfxItem->delayTicks = 0;
@@ -484,15 +483,15 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->currFrame = animation->frames[j++];
else
gfxItem->currFrame = animation->frames[j - 1];
- if (gfxItem->currFrame.spriteId != -1 && (seqItem->x != 0 || seqItem->y != 0))
- gfxItem->currFrame.rect.translate(seqItem->x, seqItem->y);
+ if (gfxItem->currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->currFrame.rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
- int v2 = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
+ if ((seqItem->_flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
+ int scaleValue = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
- gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - v2 * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
- gfxItem->currFrame.rect.right = v2 * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
+ gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - scaleValue * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
+ gfxItem->currFrame.rect.right = scaleValue * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
gfxItem->currFrame.isScaled = 1;
}
gfxItem->currFrame.duration -= totalDuration;
@@ -507,7 +506,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
}
for (int k = 0; k < kMaxAnimations; ++k) {
- if (_animations[k].sequenceId != -1 && _animations[k].sequenceId == seqItem->sequenceId && _animations[k].id == seqItem->id) {
+ if (_animations[k].sequenceId != -1 && _animations[k].sequenceId == seqItem->_sequenceId && _animations[k].id == seqItem->_id) {
_animations[k].status = 1;
break;
}
@@ -569,12 +568,12 @@ bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
return found;
}
-void GameSys::updateAnimationsStatus(int sequenceId, int a2) {
+void GameSys::updateAnimationsStatus(int sequenceId, int id) {
Animation *foundAnimation = 0;
for (int animationIndex = 0; animationIndex < kMaxAnimations; ++animationIndex) {
Animation *animation = &_animations[animationIndex];
- if (animation->sequenceId != -1 && animation->sequenceId == sequenceId && animation->id == a2) {
+ if (animation->sequenceId != -1 && animation->sequenceId == sequenceId && animation->id == id) {
foundAnimation = animation;
break;
}
@@ -587,7 +586,7 @@ void GameSys::updateAnimationsStatus(int sequenceId, int a2) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
SequenceAnimation *animation = gfxItem->animation;
- if (gfxItem->sequenceId == sequenceId && gfxItem->id == a2 && animation) {
+ if (gfxItem->sequenceId == sequenceId && gfxItem->id == id && animation) {
foundSequence = true;
if (animation->framesCount > gfxItem->currFrameNum ||
(gfxItem->updFlag && gfxItem->currFrame.duration > 1) ||
@@ -995,7 +994,7 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
if (gfxItem->sequenceId == -1 && !gfxItem->animation && (gfxItem->flags & 1) &&
- gfxItem->id == _removeSpriteDrawItems[j].id && _removeSpriteDrawItems[j].surface == gfxItem->surface) {
+ gfxItem->id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j].surface == gfxItem->surface) {
gfxItem->flags = 0;
gfxItem->currFrame.duration = 0;
gfxItem->currFrame.spriteId = -1;
@@ -1054,7 +1053,7 @@ void GameSys::fatUpdateFrame() {
gfxItem->currFrame.soundId = -1;
gfxItem->currFrame.unkValue = -1;
gfxItem->updFlag = true;
- } else if ((seqItem->flags & 4) && clockDelta > 1) {
+ } else if ((seqItem->_flags & 4) && clockDelta > 1) {
updFlag = false;
if (gfxItem->delayTicks < clockDelta) {
duration = clockDelta - gfxItem->delayTicks;
@@ -1093,10 +1092,10 @@ void GameSys::fatUpdateFrame() {
gfxItem->currFrame = animation->frames[currFrameNum++];
else
gfxItem->currFrame = animation->frames[currFrameNum - 1];
- if (gfxItem->currFrame.spriteId != -1 && (seqItem->x != 0 || seqItem->y != 0))
- gfxItem->currFrame.rect.translate(seqItem->x, seqItem->y);
+ if (gfxItem->currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->currFrame.rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
+ if ((seqItem->_flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
int v17 = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
@@ -1141,28 +1140,28 @@ void GameSys::fatUpdateFrame() {
for (int k = 0; k < _newSpriteDrawItemsCount; ++k) {
if (_gfxItemsCount < 50) {
int insertIndex;
- seqLocateGfx(-1, _newSpriteDrawItems[k].id, &insertIndex);
+ seqLocateGfx(-1, _newSpriteDrawItems[k]._id, &insertIndex);
if (_gfxItemsCount != insertIndex)
memcpy(&_gfxItems[insertIndex + 1], &_gfxItems[insertIndex], sizeof(GfxItem) * (_gfxItemsCount - insertIndex));
++_gfxItemsCount;
GfxItem *gfxItem = &_gfxItems[insertIndex];
gfxItem->sequenceId = -1;
- gfxItem->id = _newSpriteDrawItems[k].id;
+ gfxItem->id = _newSpriteDrawItems[k]._id;
gfxItem->animation = 0;
gfxItem->currFrameNum = 0;
gfxItem->flags = 1;
gfxItem->delayTicks = 0;
gfxItem->updFlag = true;
gfxItem->updRectsCount = 0;
- gfxItem->surface = _newSpriteDrawItems[k].surface;
+ gfxItem->surface = _newSpriteDrawItems[k]._surface;
gfxItem->prevFrame.duration = 0;
gfxItem->prevFrame.spriteId = -1;
gfxItem->prevFrame.soundId = -1;
gfxItem->prevFrame.unkValue = -1;
gfxItem->currFrame.duration = 0;
gfxItem->currFrame.isScaled = 0;
- gfxItem->currFrame.rect = _newSpriteDrawItems[k].rect;
- gfxItem->currFrame.spriteId = _newSpriteDrawItems[k].surface ? 0xCAFEBABE : -1;// TODO
+ gfxItem->currFrame.rect = _newSpriteDrawItems[k]._rect;
+ gfxItem->currFrame.spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
gfxItem->currFrame.soundId = -1;
gfxItem->currFrame.unkValue = -1;
}
@@ -1195,14 +1194,14 @@ void GameSys::fatUpdateFrame() {
for (uint i = 0; i < _fatSequenceItems.size(); ++i) {
Sequence *seqItem = &_fatSequenceItems[i];
- if (((seqItem->flags & 8) || (seqItem->flags & 0x20)) && seqItem->sequenceId2 != -1) {
+ if (((seqItem->_flags & 8) || (seqItem->_flags & 0x20)) && seqItem->_sequenceId2 != -1) {
duration = 0;
- if (((seqItem->flags & 0x20) && seqLocateGfx(seqItem->sequenceId2, seqItem->id2, 0)) ||
- updateSequenceDuration(seqItem->sequenceId2, seqItem->id2, &duration)) {
- int index;
+ if (((seqItem->_flags & 0x20) && seqLocateGfx(seqItem->_sequenceId2, seqItem->_id2, 0)) ||
+ updateSequenceDuration(seqItem->_sequenceId2, seqItem->_id2, &duration)) {
+ int index = -1;
bool found = false;
- if (seqItem->sequenceId2 == seqItem->sequenceId && seqItem->id == seqItem->id2 &&
- seqFind(seqItem->sequenceId, seqItem->id, &index)) {
+ if (seqItem->_sequenceId2 == seqItem->_sequenceId && seqItem->_id == seqItem->_id2 &&
+ seqFind(seqItem->_sequenceId, seqItem->_id, &index)) {
_seqItems[index] = *seqItem;
found = true;
} else if (_seqItems.size() < 50) {
@@ -1212,8 +1211,8 @@ void GameSys::fatUpdateFrame() {
}
if (found) {
updFlag = false;
- seqRemoveGfx(seqItem->sequenceId2, seqItem->id2);
- seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ seqRemoveGfx(seqItem->_sequenceId2, seqItem->_id2);
+ seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
_fatSequenceItems.remove_at(i);
--i;
seqInsertGfx(index, duration);
@@ -1221,12 +1220,12 @@ void GameSys::fatUpdateFrame() {
}
} else {
updFlag = false;
- if (seqItem->totalDuration < clockDelta) {
+ if (seqItem->_totalDuration < clockDelta) {
int index;
bool found = false;
- duration = clockDelta - seqItem->totalDuration;
- seqItem->totalDuration = 0;
- if (seqFind(seqItem->sequenceId, seqItem->id, &index)) {
+ duration = clockDelta - seqItem->_totalDuration;
+ seqItem->_totalDuration = 0;
+ if (seqFind(seqItem->_sequenceId, seqItem->_id, &index)) {
_seqItems[index] = *seqItem;
found = true;
} else if (_seqItems.size() < 50) {
@@ -1235,13 +1234,13 @@ void GameSys::fatUpdateFrame() {
found = true;
}
if (found) {
- seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
_fatSequenceItems.remove_at(i);
--i;
seqInsertGfx(index, duration - 1);
}
} else {
- seqItem->totalDuration -= clockDelta;
+ seqItem->_totalDuration -= clockDelta;
}
}
}
@@ -1250,13 +1249,13 @@ void GameSys::fatUpdateFrame() {
for (uint i = 0; i < _seqItems.size(); ++i) {
Sequence *seqItem = &_seqItems[i];
- if (seqLocateGfx(seqItem->sequenceId, seqItem->id, 0)) {
- updateAnimationsStatus(seqItem->sequenceId, seqItem->id);
- if (seqItem->flags & 2) {
+ if (seqLocateGfx(seqItem->_sequenceId, seqItem->_id, 0)) {
+ updateAnimationsStatus(seqItem->_sequenceId, seqItem->_id);
+ if (seqItem->_flags & 2) {
int gfxDuration;
updFlag = false;
- if (updateSequenceDuration(seqItem->sequenceId, seqItem->id, &gfxDuration)) {
- seqRemoveGfx(seqItem->sequenceId, seqItem->id);
+ if (updateSequenceDuration(seqItem->_sequenceId, seqItem->_id, &gfxDuration)) {
+ seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
seqInsertGfx(i, gfxDuration);
}
}
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 5bf92b6..76b2afe 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -49,19 +49,19 @@ enum {
};
struct Sequence {
- int32 sequenceId;
- int32 id;
- int32 sequenceId2;
- int32 id2;
- uint32 flags;
- int32 totalDuration;
- int16 x, y;
+ int32 _sequenceId;
+ int32 _id;
+ int32 _sequenceId2;
+ int32 _id2;
+ uint32 _flags;
+ int32 _totalDuration;
+ int16 _x, _y;
};
struct SpriteDrawItem {
- int id;
- Common::Rect rect;
- Graphics::Surface *surface;
+ int _id;
+ Common::Rect _rect;
+ Graphics::Surface *_surface;
};
struct RemoveSequenceItem {
@@ -71,7 +71,7 @@ struct RemoveSequenceItem {
};
struct RemoveSpriteDrawItem {
- int id;
+ int _id;
Graphics::Surface *surface;
};
@@ -108,15 +108,15 @@ public:
void insertDirtyRect(const Common::Rect &rect);
void removeSequence(int sequenceId, int id, bool resetFl);
void invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::Surface *surface1, Graphics::Surface *surface2);
- void requestClear2(int a1);
+ void requestClear2(bool resetFl);
void requestClear1();
- void requestRemoveSequence(int sequenceId, int a2);
+ void requestRemoveSequence(int sequenceId, int id);
void waitForUpdate();
- int isSequenceActive(int sequenceId, int a2);
+ int isSequenceActive(int sequenceId, int id);
void setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7);
void setScaleValues(int a1, int a2, int a3, int a4);
void insertSpriteDrawItem(Graphics::Surface *surface, int x, int y, int id);
- void removeSpriteDrawItem(Graphics::Surface *surface, int a2);
+ void removeSpriteDrawItem(Graphics::Surface *surface, int id);
void drawSpriteToBackground(int x, int y, int resourceId);
Graphics::Surface *allocSurface(int width, int height);
Graphics::Surface *createSurface(int resourceId);
@@ -177,12 +177,12 @@ public:
Graphics::Surface *_frontSurface;
Common::Rect _screenRect;
- Sequence *seqFind(int sequenceId, int a2, int *outIndex);
+ Sequence *seqFind(int sequenceId, int id, int *outIndex);
int seqLocateGfx(int sequenceId, int id, int *outGfxIndex);
void seqInsertGfx(int index, int duration);
void seqRemoveGfx(int sequenceId, int id);
bool updateSequenceDuration(int sequenceId, int id, int *outDuration);
- void updateAnimationsStatus(int sequenceId, int a2);
+ void updateAnimationsStatus(int sequenceId, int id);
void restoreBackgroundRect(const Common::Rect &rect);
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e31c78e..a46b4c6 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -869,11 +869,11 @@ void GnapEngine::afterScene() {
setGrabCursorSprite(-1);
- _gameSys->requestClear2(0);
+ _gameSys->requestClear2(false);
_gameSys->requestClear1();
_gameSys->waitForUpdate();
- _gameSys->requestClear2(0);
+ _gameSys->requestClear2(false);
_gameSys->requestClear1();
_gameSys->waitForUpdate();
@@ -2366,8 +2366,8 @@ void GnapEngine::cutscene_run() {
gameUpdateTick();
if (_gameSys->getAnimationStatus(0) == 2 || skip) {
- skip = 0;
- _gameSys->requestClear2(0);
+ skip = false;
+ _gameSys->requestClear2(false);
_gameSys->requestClear1();
_gameSys->setAnimation(0, 0, 0);
v1 += _s99_dword_47F330[itemIndex++];
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index e6fc073..0b63ce1 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -255,9 +255,6 @@ void GnapEngine::removeInventorySprites() {
}
void GnapEngine::runMenu() {
-
- int v43;
-
_spriteHandle = 0;
_cursorSprite = 0;
_menuSprite1 = 0;
@@ -277,8 +274,6 @@ void GnapEngine::runMenu() {
_savegameSprites[i] = 0;
}
- v43 = 0;
-
if (_menuStatus == 0) {
invAdd(kItemMagazine);
setGrabCursorSprite(-1);
Commit: da2cb981d2d5a71fc9db04404569bfcc92fbfcf3
https://github.com/scummvm/scummvm/commit/da2cb981d2d5a71fc9db04404569bfcc92fbfcf3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming, remove useless variables in GfxItem
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index ff60980..9909139 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -30,9 +30,9 @@ namespace Gnap {
void GfxItem::testUpdRect(const Common::Rect &updRect) {
Common::Rect intersectingRect;
- if (!updFlag && prevFrame.spriteId != -1 &&
- updRectsCount < 20 && intersectRect(intersectingRect, prevFrame.rect, updRect))
- updRects[updRectsCount++] = intersectingRect;
+ if (!_updFlag && _prevFrame.spriteId != -1 &&
+ _updRectsCount < 20 && intersectRect(intersectingRect, _prevFrame.rect, updRect))
+ _updRects[_updRectsCount++] = intersectingRect;
}
// GameSys
@@ -120,17 +120,16 @@ void GameSys::requestClear2(bool resetFl) {
_seqItems.clear();
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- gfxItem->sequenceId = -1;
- gfxItem->animation = 0;
- gfxItem->soundValue = 0;
+ gfxItem->_sequenceId = -1;
+ gfxItem->_animation = nullptr;
if (resetFl) {
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
} else {
- gfxItem->updFlag = false;
+ gfxItem->_updFlag = false;
}
}
_lastUpdateClock = 0;
@@ -222,7 +221,7 @@ void GameSys::insertSpriteDrawItem(Graphics::Surface *surface, int x, int y, int
void GameSys::removeSpriteDrawItem(Graphics::Surface *surface, int id) {
if (surface && _removeSpriteDrawItemsCount < kMaxSpriteDrawItems) {
_removeSpriteDrawItems[_removeSpriteDrawItemsCount]._id = id;
- _removeSpriteDrawItems[_removeSpriteDrawItemsCount].surface = surface;
+ _removeSpriteDrawItems[_removeSpriteDrawItemsCount]._surface = surface;
++_removeSpriteDrawItemsCount;
}
}
@@ -413,12 +412,12 @@ Sequence *GameSys::seqFind(int sequenceId, int id, int *outIndex) {
int GameSys::seqLocateGfx(int sequenceId, int id, int *outGfxIndex) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
+ if (gfxItem->_sequenceId == sequenceId && gfxItem->_id == id) {
if (outGfxIndex)
*outGfxIndex = i;
- return gfxItem->sequenceId;
+ return gfxItem->_sequenceId;
}
- if (gfxItem->id > id) {
+ if (gfxItem->_id > id) {
if (outGfxIndex)
*outGfxIndex = i;
return 0;
@@ -450,58 +449,58 @@ void GameSys::seqInsertGfx(int index, int duration) {
debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
- gfxItem->sequenceId = seqItem->_sequenceId;
- gfxItem->id = seqItem->_id;
- gfxItem->animation = animation;
- gfxItem->currFrameNum = 0;
- gfxItem->flags = 0;
- gfxItem->delayTicks = seqItem->_totalDuration + animation->field_4;
- gfxItem->updFlag = false;
- gfxItem->updRectsCount = 0;
- gfxItem->prevFrame.duration = 0;
- gfxItem->prevFrame.spriteId = -1;
- gfxItem->prevFrame.soundId = -1;
- gfxItem->prevFrame.unkValue = -1;
+ gfxItem->_sequenceId = seqItem->_sequenceId;
+ gfxItem->_id = seqItem->_id;
+ gfxItem->_animation = animation;
+ gfxItem->_currFrameNum = 0;
+ gfxItem->_flags = 0;
+ gfxItem->_delayTicks = seqItem->_totalDuration + animation->field_4;
+ gfxItem->_updFlag = false;
+ gfxItem->_updRectsCount = 0;
+ gfxItem->_prevFrame.duration = 0;
+ gfxItem->_prevFrame.spriteId = -1;
+ gfxItem->_prevFrame.soundId = -1;
+ gfxItem->_prevFrame.unkValue = -1;
totalDuration = duration;
if ((seqItem->_flags & 4) && totalDuration > 0) {
- gfxItem->prevFrame.duration = 1;
- if (gfxItem->delayTicks <= totalDuration)
- gfxItem->delayTicks = 0;
+ gfxItem->_prevFrame.duration = 1;
+ if (gfxItem->_delayTicks <= totalDuration)
+ gfxItem->_delayTicks = 0;
else
- gfxItem->delayTicks -= totalDuration + 1;
- gfxItem->updFlag = false;
- } else if (gfxItem->delayTicks <= totalDuration) {
+ gfxItem->_delayTicks -= totalDuration + 1;
+ gfxItem->_updFlag = false;
+ } else if (gfxItem->_delayTicks <= totalDuration) {
int j;
- totalDuration -= gfxItem->delayTicks;
- gfxItem->delayTicks = 0;
- for (j = gfxItem->currFrameNum; j < animation->framesCount && animation->frames[j].duration <= totalDuration; ++j) {
+ totalDuration -= gfxItem->_delayTicks;
+ gfxItem->_delayTicks = 0;
+ for (j = gfxItem->_currFrameNum; j < animation->framesCount && animation->frames[j].duration <= totalDuration; ++j) {
if (animation->frames[j].soundId != -1)
- _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | animation->frames[j].soundId);
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[j].soundId);
totalDuration -= animation->frames[j].duration;
}
if (animation->framesCount > j)
- gfxItem->currFrame = animation->frames[j++];
+ gfxItem->_currFrame = animation->frames[j++];
else
- gfxItem->currFrame = animation->frames[j - 1];
- if (gfxItem->currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
- gfxItem->currFrame.rect.translate(seqItem->_x, seqItem->_y);
+ gfxItem->_currFrame = animation->frames[j - 1];
+ if (gfxItem->_currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->_currFrame.rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->_flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
- int scaleValue = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
+ if ((seqItem->_flags & 1) && gfxItem->_currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame.rect.bottom <= _backgroundImageValue3) {
+ int scaleValue = _backgroundImageValue2 + (gfxItem->_currFrame.rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
- gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - scaleValue * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
- gfxItem->currFrame.rect.right = scaleValue * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
- gfxItem->currFrame.isScaled = 1;
+ gfxItem->_currFrame.rect.top = gfxItem->_currFrame.rect.bottom - scaleValue * (gfxItem->_currFrame.rect.bottom - gfxItem->_currFrame.rect.top) / 1000;
+ gfxItem->_currFrame.rect.right = scaleValue * (gfxItem->_currFrame.rect.right - gfxItem->_currFrame.rect.left) / 1000 + gfxItem->_currFrame.rect.left;
+ gfxItem->_currFrame.isScaled = 1;
}
- gfxItem->currFrame.duration -= totalDuration;
- if (gfxItem->currFrame.soundId != -1)
- _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | gfxItem->currFrame.soundId);
- gfxItem->currFrameNum = j;
- gfxItem->updFlag = true;
+ gfxItem->_currFrame.duration -= totalDuration;
+ if (gfxItem->_currFrame.soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame.soundId);
+ gfxItem->_currFrameNum = j;
+ gfxItem->_updFlag = true;
} else {
- gfxItem->delayTicks -= totalDuration + 1;
- gfxItem->updFlag = false;
+ gfxItem->_delayTicks -= totalDuration + 1;
+ gfxItem->_updFlag = false;
}
}
@@ -518,19 +517,19 @@ void GameSys::seqRemoveGfx(int sequenceId, int id) {
int gfxIndex;
if (seqLocateGfx(sequenceId, id, &gfxIndex)) {
GfxItem *gfxItem = &_gfxItems[gfxIndex];
- while (gfxIndex < _gfxItemsCount && gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
- if (gfxItem->prevFrame.spriteId == -1) {
+ while (gfxIndex < _gfxItemsCount && gfxItem->_sequenceId == sequenceId && gfxItem->_id == id) {
+ if (gfxItem->_prevFrame.spriteId == -1) {
--_gfxItemsCount;
if (gfxIndex != _gfxItemsCount)
memcpy(&_gfxItems[gfxIndex], &_gfxItems[gfxIndex + 1], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
} else {
- gfxItem->sequenceId = -1;
- gfxItem->animation = 0;
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ gfxItem->_sequenceId = -1;
+ gfxItem->_animation = nullptr;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
++gfxIndex;
gfxItem = &_gfxItems[gfxIndex];
}
@@ -543,22 +542,22 @@ bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
int duration = 0x7FFFFFFF;
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->sequenceId == sequenceId && gfxItem->id == id) {
+ if (gfxItem->_sequenceId == sequenceId && gfxItem->_id == id) {
found = true;
- SequenceAnimation *animation = gfxItem->animation;
+ SequenceAnimation *animation = gfxItem->_animation;
if (animation) {
- if (gfxItem->currFrameNum < animation->framesCount)
+ if (gfxItem->_currFrameNum < animation->framesCount)
return false;
- if (gfxItem->updFlag) {
- if (gfxItem->currFrame.duration > 0)
+ if (gfxItem->_updFlag) {
+ if (gfxItem->_currFrame.duration > 0)
return false;
- if (-gfxItem->currFrame.duration < duration)
- duration = -gfxItem->currFrame.duration;
+ if (-gfxItem->_currFrame.duration < duration)
+ duration = -gfxItem->_currFrame.duration;
} else {
- if (gfxItem->prevFrame.duration > 0)
+ if (gfxItem->_prevFrame.duration > 0)
return false;
- if (-gfxItem->prevFrame.duration < duration)
- duration = -gfxItem->prevFrame.duration;
+ if (-gfxItem->_prevFrame.duration < duration)
+ duration = -gfxItem->_prevFrame.duration;
}
}
}
@@ -585,12 +584,12 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
bool foundSequence = false;
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- SequenceAnimation *animation = gfxItem->animation;
- if (gfxItem->sequenceId == sequenceId && gfxItem->id == id && animation) {
+ SequenceAnimation *animation = gfxItem->_animation;
+ if (gfxItem->_sequenceId == sequenceId && gfxItem->_id == id && animation) {
foundSequence = true;
- if (animation->framesCount > gfxItem->currFrameNum ||
- (gfxItem->updFlag && gfxItem->currFrame.duration > 1) ||
- gfxItem->prevFrame.duration > 1)
+ if (animation->framesCount > gfxItem->_currFrameNum ||
+ (gfxItem->_updFlag && gfxItem->_currFrame.duration > 1) ||
+ gfxItem->_prevFrame.duration > 1)
foundSequence = false;
break;
}
@@ -804,44 +803,44 @@ void GameSys::drawSprites() {
for (int k = 0; k < _gfxItemsCount; ++k) {
GfxItem *gfxItem2 = &_gfxItems[k];
- if (!gfxItem2->updFlag)
+ if (!gfxItem2->_updFlag)
continue;
- if (gfxItem2->prevFrame.spriteId != -1) {
+ if (gfxItem2->_prevFrame.spriteId != -1) {
int transparent = 0;
- if (gfxItem2->currFrame.spriteId != -1 && !(gfxItem2->flags & 2)) {
- if (gfxItem2->flags & 1) {
+ if (gfxItem2->_currFrame.spriteId != -1 && !(gfxItem2->_flags & 2)) {
+ if (gfxItem2->_flags & 1) {
transparent = 1;
} else {
- int resourceId = (gfxItem2->sequenceId & 0xFFFF0000) | gfxItem2->currFrame.spriteId;
+ int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame.spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
transparent = spriteResource->_transparent;
_vm->_spriteCache->release(resourceId);
}
}
- if ((gfxItem2->flags & 8) || gfxItem2->currFrame.spriteId == -1 ||
- (!(gfxItem2->flags & 2) && (!gfxItem2->prevFrame.rect.equals(gfxItem2->currFrame.rect) || !transparent))) {
- restoreBackgroundRect(gfxItem2->prevFrame.rect);
+ if ((gfxItem2->_flags & 8) || gfxItem2->_currFrame.spriteId == -1 ||
+ (!(gfxItem2->_flags & 2) && (!gfxItem2->_prevFrame.rect.equals(gfxItem2->_currFrame.rect) || !transparent))) {
+ restoreBackgroundRect(gfxItem2->_prevFrame.rect);
for (int l = 0; l < _gfxItemsCount; ++l)
- _gfxItems[l].testUpdRect(gfxItem2->prevFrame.rect);
+ _gfxItems[l].testUpdRect(gfxItem2->_prevFrame.rect);
}
}
- if (gfxItem2->currFrame.spriteId != -1) {
+ if (gfxItem2->_currFrame.spriteId != -1) {
int transparent = 0;
- if (gfxItem2->flags & 1) {
+ if (gfxItem2->_flags & 1) {
transparent = 1;
- } else if (!(gfxItem2->flags & 2)) {
- int resourceId = (gfxItem2->sequenceId & 0xFFFF0000) | gfxItem2->currFrame.spriteId;
+ } else if (!(gfxItem2->_flags & 2)) {
+ int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame.spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
transparent = spriteResource->_transparent;
_vm->_spriteCache->release(resourceId);
}
- if (((gfxItem2->flags & 2) && !(gfxItem2->flags & 8)) ||
- gfxItem2->prevFrame.spriteId == -1 ||
- !gfxItem2->prevFrame.rect.equals(gfxItem2->currFrame.rect) || transparent) {
+ if (((gfxItem2->_flags & 2) && !(gfxItem2->_flags & 8)) ||
+ gfxItem2->_prevFrame.spriteId == -1 ||
+ !gfxItem2->_prevFrame.rect.equals(gfxItem2->_currFrame.rect) || transparent) {
for (int l = k; l < _gfxItemsCount; ++l)
- _gfxItems[l].testUpdRect(gfxItem2->currFrame.rect);
+ _gfxItems[l].testUpdRect(gfxItem2->_currFrame.rect);
}
}
@@ -851,37 +850,37 @@ void GameSys::drawSprites() {
GfxItem *gfxItem5 = &_gfxItems[m];
debug(0, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
- m, gfxItem5->updFlag, gfxItem5->currFrame.spriteId, gfxItem5->updRectsCount, gfxItem5->flags, gfxItem5->sequenceId);
+ m, gfxItem5->_updFlag, gfxItem5->_currFrame.spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
- if (gfxItem5->updFlag) {
- if (gfxItem5->currFrame.spriteId != -1) {
- if (gfxItem5->flags & 1) {
- seqDrawStaticFrame(gfxItem5->surface, gfxItem5->currFrame, 0);
+ if (gfxItem5->_updFlag) {
+ if (gfxItem5->_currFrame.spriteId != -1) {
+ if (gfxItem5->_flags & 1) {
+ seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, 0);
//debug("seqDrawStaticFrame");
- } else if (gfxItem5->flags & 2) {
+ } else if (gfxItem5->_flags & 2) {
// TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
} else {
- int resourceId = (gfxItem5->sequenceId & 0xFFFF0000) | gfxItem5->currFrame.spriteId;
+ int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame.spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
- seqDrawSpriteFrame(spriteResource, gfxItem5->currFrame, 0);
+ seqDrawSpriteFrame(spriteResource, gfxItem5->_currFrame, 0);
_vm->_spriteCache->release(resourceId);
}
}
- } else if (gfxItem5->updRectsCount > 0) {
- if (gfxItem5->flags & 1) {
- for (int n = 0; n < gfxItem5->updRectsCount; ++n)
- seqDrawStaticFrame(gfxItem5->surface, gfxItem5->prevFrame, &gfxItem5->updRects[n]);
- } else if (gfxItem5->flags & 2) {
+ } else if (gfxItem5->_updRectsCount > 0) {
+ if (gfxItem5->_flags & 1) {
+ for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
+ seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
+ } else if (gfxItem5->_flags & 2) {
/* TODO
spriteData4 = gfxItem5->prevFrame.spriteId;
for (int n = 0; n < gfxItem5->updRectsCount; ++n)
seqDrawAviFrame(spriteData4, &gfxItem5->prevFrame, &gfxItem5->updRects[n], gfxItem5->flags & 8);
*/
} else {
- int resourceId = (gfxItem5->sequenceId & 0xFFFF0000) | gfxItem5->prevFrame.spriteId;
+ int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_prevFrame.spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
- for (int n = 0; n < gfxItem5->updRectsCount; ++n)
- seqDrawSpriteFrame(spriteResource, gfxItem5->prevFrame, &gfxItem5->updRects[n]);
+ for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
+ seqDrawSpriteFrame(spriteResource, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
_vm->_spriteCache->release(resourceId);
}
}
@@ -919,19 +918,19 @@ void GameSys::updateScreen() {
GfxItem *gfxItem = &_gfxItems[j];
- if (!gfxItem->updFlag)
+ if (!gfxItem->_updFlag)
continue;
- if (gfxItem->prevFrame.spriteId == -1 ||
- !intersectRect(srcRect, _screenRect, gfxItem->prevFrame.rect)) {
- if (gfxItem->currFrame.spriteId != -1 && intersectRect(rcSrc2, _screenRect, gfxItem->currFrame.rect))
+ if (gfxItem->_prevFrame.spriteId == -1 ||
+ !intersectRect(srcRect, _screenRect, gfxItem->_prevFrame.rect)) {
+ if (gfxItem->_currFrame.spriteId != -1 && intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame.rect))
updateRect(rcSrc2);
- } else if (gfxItem->currFrame.spriteId != -1 &&
- intersectRect(rcSrc2, _screenRect, gfxItem->currFrame.rect)) {
+ } else if (gfxItem->_currFrame.spriteId != -1 &&
+ intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame.rect)) {
updateRect(srcRect);
updateRect(rcSrc2);
}
- gfxItem->prevFrame = gfxItem->currFrame;
+ gfxItem->_prevFrame = gfxItem->_currFrame;
}
updateRect(Common::Rect(0, 0, 800, 600));
@@ -949,7 +948,7 @@ void GameSys::handleReqRemoveSequenceItem() {
if (seqLocateGfx(_removeSequenceItemSequenceId, _removeSequenceItemValue, &gfxIndex2)) {
int gfxIndex2a = gfxIndex2;
for (GfxItem *gfxItem = &_gfxItems[gfxIndex2a];
- gfxIndex2a < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItemSequenceId && gfxItem->id == _removeSequenceItemValue;
+ gfxIndex2a < _gfxItemsCount && gfxItem->_sequenceId == _removeSequenceItemSequenceId && gfxItem->_id == _removeSequenceItemValue;
gfxItem = &_gfxItems[gfxIndex2a])
++gfxIndex2a;
_gfxItemsCount -= gfxIndex2a - gfxIndex2;
@@ -967,19 +966,18 @@ void GameSys::handleReqRemoveSequenceItems() {
_seqItems.remove_at(gfxIndex);
seqLocateGfx(_removeSequenceItems[i]._sequenceId, _removeSequenceItems[i]._id, &gfxIndex);
for (GfxItem *gfxItem = &_gfxItems[gfxIndex];
- gfxIndex < _gfxItemsCount && gfxItem->sequenceId == _removeSequenceItems[i]._sequenceId && gfxItem->id == _removeSequenceItems[i]._id;
+ gfxIndex < _gfxItemsCount && gfxItem->_sequenceId == _removeSequenceItems[i]._sequenceId && gfxItem->_id == _removeSequenceItems[i]._id;
gfxItem = &_gfxItems[gfxIndex]) {
- gfxItem->sequenceId = -1;
- gfxItem->animation = 0;
- gfxItem->soundValue = 0;
+ gfxItem->_sequenceId = -1;
+ gfxItem->_animation = nullptr;
if (_removeSequenceItems[i]._forceFrameReset) {
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
} else {
- gfxItem->updFlag = false;
+ gfxItem->_updFlag = false;
}
++gfxIndex;
}
@@ -993,14 +991,14 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
for (int j = 0; j < _removeSpriteDrawItemsCount; ++j) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->sequenceId == -1 && !gfxItem->animation && (gfxItem->flags & 1) &&
- gfxItem->id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j].surface == gfxItem->surface) {
- gfxItem->flags = 0;
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
+ gfxItem->_id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j]._surface == gfxItem->_surface) {
+ gfxItem->_flags = 0;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
}
}
}
@@ -1027,104 +1025,104 @@ void GameSys::fatUpdateFrame() {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- SequenceAnimation *animation = gfxItem->animation;
- if ((gfxItem->sequenceId != -1 && animation) || (gfxItem->flags & 2) ||
- gfxItem->prevFrame.spriteId != -1 || gfxItem->prevFrame.duration > 0) {
- if (gfxItem->sequenceId == -1 || gfxItem->updFlag) {
- if ((gfxItem->flags & 2) && !gfxItem->updFlag) {
+ SequenceAnimation *animation = gfxItem->_animation;
+ if ((gfxItem->_sequenceId != -1 && animation) || (gfxItem->_flags & 2) ||
+ gfxItem->_prevFrame.spriteId != -1 || gfxItem->_prevFrame.duration > 0) {
+ if (gfxItem->_sequenceId == -1 || gfxItem->_updFlag) {
+ if ((gfxItem->_flags & 2) && !gfxItem->_updFlag) {
// NOTE Skipped avi code
}
} else {
- Sequence *seqItem = seqFind(gfxItem->sequenceId, gfxItem->id, 0);
+ Sequence *seqItem = seqFind(gfxItem->_sequenceId, gfxItem->_id, 0);
if (!animation) {
updFlag = false;
- gfxItem->sequenceId = -1;
- gfxItem->animation = 0;
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ gfxItem->_sequenceId = -1;
+ gfxItem->_animation = nullptr;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
} else if (!seqItem) {
updFlag = false;
- gfxItem->animation = 0;
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.spriteId = -1;
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
+ gfxItem->_animation = nullptr;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.spriteId = -1;
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
} else if ((seqItem->_flags & 4) && clockDelta > 1) {
updFlag = false;
- if (gfxItem->delayTicks < clockDelta) {
- duration = clockDelta - gfxItem->delayTicks;
- gfxItem->delayTicks = 0;
- if (gfxItem->prevFrame.duration <= duration)
- gfxItem->prevFrame.duration = 1;
+ if (gfxItem->_delayTicks < clockDelta) {
+ duration = clockDelta - gfxItem->_delayTicks;
+ gfxItem->_delayTicks = 0;
+ if (gfxItem->_prevFrame.duration <= duration)
+ gfxItem->_prevFrame.duration = 1;
else
- gfxItem->prevFrame.duration -= duration;
+ gfxItem->_prevFrame.duration -= duration;
} else {
- gfxItem->delayTicks -= clockDelta;
+ gfxItem->_delayTicks -= clockDelta;
}
- gfxItem->updFlag = false;
- } else if (gfxItem->delayTicks < clockDelta) {
- duration = clockDelta - gfxItem->delayTicks;
- gfxItem->delayTicks = 0;
- if (gfxItem->prevFrame.duration <= duration) {
+ gfxItem->_updFlag = false;
+ } else if (gfxItem->_delayTicks < clockDelta) {
+ duration = clockDelta - gfxItem->_delayTicks;
+ gfxItem->_delayTicks = 0;
+ if (gfxItem->_prevFrame.duration <= duration) {
bool v20 = false;
- if (gfxItem->prevFrame.duration > 0) {
- duration -= gfxItem->prevFrame.duration;
- gfxItem->prevFrame.duration = -duration;
+ if (gfxItem->_prevFrame.duration > 0) {
+ duration -= gfxItem->_prevFrame.duration;
+ gfxItem->_prevFrame.duration = -duration;
} else {
- gfxItem->prevFrame.duration = 0;
+ gfxItem->_prevFrame.duration = 0;
v20 = true;
}
- currFrameNum = gfxItem->currFrameNum;
+ currFrameNum = gfxItem->_currFrameNum;
if (animation->framesCount > currFrameNum) {
updFlag = false;
while (animation->framesCount > currFrameNum &&
animation->frames[currFrameNum].duration <= duration) {
if (animation->frames[currFrameNum].soundId != -1)
- _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | animation->frames[currFrameNum].soundId);
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[currFrameNum].soundId);
duration -= animation->frames[currFrameNum].duration;
++currFrameNum;
}
if (animation->framesCount > currFrameNum)
- gfxItem->currFrame = animation->frames[currFrameNum++];
+ gfxItem->_currFrame = animation->frames[currFrameNum++];
else
- gfxItem->currFrame = animation->frames[currFrameNum - 1];
- if (gfxItem->currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
- gfxItem->currFrame.rect.translate(seqItem->_x, seqItem->_y);
+ gfxItem->_currFrame = animation->frames[currFrameNum - 1];
+ if (gfxItem->_currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->_currFrame.rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->_flags & 1) && gfxItem->currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->currFrame.rect.bottom <= _backgroundImageValue3) {
- int v17 = _backgroundImageValue2 + (gfxItem->currFrame.rect.bottom - _backgroundImageValue1) *
+ if ((seqItem->_flags & 1) && gfxItem->_currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame.rect.bottom <= _backgroundImageValue3) {
+ int v17 = _backgroundImageValue2 + (gfxItem->_currFrame.rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
- gfxItem->currFrame.rect.top = gfxItem->currFrame.rect.bottom - v17 * (gfxItem->currFrame.rect.bottom - gfxItem->currFrame.rect.top) / 1000;
- gfxItem->currFrame.rect.right = v17 * (gfxItem->currFrame.rect.right - gfxItem->currFrame.rect.left) / 1000 + gfxItem->currFrame.rect.left;
- gfxItem->currFrame.isScaled = 1;
+ gfxItem->_currFrame.rect.top = gfxItem->_currFrame.rect.bottom - v17 * (gfxItem->_currFrame.rect.bottom - gfxItem->_currFrame.rect.top) / 1000;
+ gfxItem->_currFrame.rect.right = v17 * (gfxItem->_currFrame.rect.right - gfxItem->_currFrame.rect.left) / 1000 + gfxItem->_currFrame.rect.left;
+ gfxItem->_currFrame.isScaled = 1;
}
- gfxItem->currFrame.duration -= duration;
- if (gfxItem->currFrame.soundId != -1)
- _soundIds.push_back((gfxItem->sequenceId & 0xFFFF0000) | gfxItem->currFrame.soundId);
- gfxItem->currFrameNum = currFrameNum;
- gfxItem->updFlag = true;
- } else if (v20 && gfxItem->prevFrame.spriteId == -1) {
+ gfxItem->_currFrame.duration -= duration;
+ if (gfxItem->_currFrame.soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame.soundId);
+ gfxItem->_currFrameNum = currFrameNum;
+ gfxItem->_updFlag = true;
+ } else if (v20 && gfxItem->_prevFrame.spriteId == -1) {
--_gfxItemsCount;
if (_gfxItemsCount != i)
memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
--i;
} else {
- gfxItem->updFlag = false;
+ gfxItem->_updFlag = false;
}
} else {
updFlag = false;
- gfxItem->prevFrame.duration -= duration;
- gfxItem->updFlag = false;
+ gfxItem->_prevFrame.duration -= duration;
+ gfxItem->_updFlag = false;
}
} else {
updFlag = false;
- gfxItem->delayTicks -= clockDelta;
- gfxItem->updFlag = false;
+ gfxItem->_delayTicks -= clockDelta;
+ gfxItem->_updFlag = false;
}
}
} else {
@@ -1145,25 +1143,25 @@ void GameSys::fatUpdateFrame() {
memcpy(&_gfxItems[insertIndex + 1], &_gfxItems[insertIndex], sizeof(GfxItem) * (_gfxItemsCount - insertIndex));
++_gfxItemsCount;
GfxItem *gfxItem = &_gfxItems[insertIndex];
- gfxItem->sequenceId = -1;
- gfxItem->id = _newSpriteDrawItems[k]._id;
- gfxItem->animation = 0;
- gfxItem->currFrameNum = 0;
- gfxItem->flags = 1;
- gfxItem->delayTicks = 0;
- gfxItem->updFlag = true;
- gfxItem->updRectsCount = 0;
- gfxItem->surface = _newSpriteDrawItems[k]._surface;
- gfxItem->prevFrame.duration = 0;
- gfxItem->prevFrame.spriteId = -1;
- gfxItem->prevFrame.soundId = -1;
- gfxItem->prevFrame.unkValue = -1;
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.isScaled = 0;
- gfxItem->currFrame.rect = _newSpriteDrawItems[k]._rect;
- gfxItem->currFrame.spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
+ gfxItem->_sequenceId = -1;
+ gfxItem->_id = _newSpriteDrawItems[k]._id;
+ gfxItem->_animation = nullptr;
+ gfxItem->_currFrameNum = 0;
+ gfxItem->_flags = 1;
+ gfxItem->_delayTicks = 0;
+ gfxItem->_updFlag = true;
+ gfxItem->_updRectsCount = 0;
+ gfxItem->_surface = _newSpriteDrawItems[k]._surface;
+ gfxItem->_prevFrame.duration = 0;
+ gfxItem->_prevFrame.spriteId = -1;
+ gfxItem->_prevFrame.soundId = -1;
+ gfxItem->_prevFrame.unkValue = -1;
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.isScaled = 0;
+ gfxItem->_currFrame.rect = _newSpriteDrawItems[k]._rect;
+ gfxItem->_currFrame.spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
}
}
_newSpriteDrawItemsCount = 0;
@@ -1172,16 +1170,16 @@ void GameSys::fatUpdateFrame() {
if (_grabSpriteChanged) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->sequenceId == -1 && !gfxItem->animation && (gfxItem->flags & 1) &&
- gfxItem->id == _grabSpriteId && gfxItem->surface == _grabSpriteSurface1) {
- gfxItem->currFrame.duration = 0;
- gfxItem->currFrame.isScaled = 0;
- gfxItem->currFrame.rect = _grabSpriteRect;
- gfxItem->currFrame.spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
- gfxItem->currFrame.soundId = -1;
- gfxItem->currFrame.unkValue = -1;
- gfxItem->updFlag = true;
- gfxItem->surface = _grabSpriteSurface2;
+ if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
+ gfxItem->_id == _grabSpriteId && gfxItem->_surface == _grabSpriteSurface1) {
+ gfxItem->_currFrame.duration = 0;
+ gfxItem->_currFrame.isScaled = 0;
+ gfxItem->_currFrame.rect = _grabSpriteRect;
+ gfxItem->_currFrame.spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
+ gfxItem->_currFrame.soundId = -1;
+ gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_updFlag = true;
+ gfxItem->_surface = _grabSpriteSurface2;
break;
}
}
@@ -1272,8 +1270,8 @@ void GameSys::fatUpdate() {
debug(1, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
for (int i = 0; i < _gfxItemsCount; ++i) {
- _gfxItems[i].updFlag = false;
- _gfxItems[i].updRectsCount = 0;
+ _gfxItems[i]._updFlag = false;
+ _gfxItems[i]._updRectsCount = 0;
}
handleReqRemoveSequenceItem();
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 76b2afe..cb6de00 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -72,25 +72,22 @@ struct RemoveSequenceItem {
struct RemoveSpriteDrawItem {
int _id;
- Graphics::Surface *surface;
+ Graphics::Surface *_surface;
};
struct GfxItem {
- int sequenceId;
- int id;
- int flags;
- SequenceAnimation *animation;
- int soundValue;
- int field_18;
- int field_1C;
- int currFrameNum;
- int delayTicks;
- bool updFlag;
- int updRectsCount;
- Graphics::Surface *surface;
- Common::Rect updRects[kMaxUpdRects];
- SequenceFrame prevFrame;
- SequenceFrame currFrame;
+ int _sequenceId;
+ int _id;
+ int _flags;
+ SequenceAnimation *_animation;
+ int _currFrameNum;
+ int _delayTicks;
+ bool _updFlag;
+ int _updRectsCount;
+ Graphics::Surface *_surface;
+ Common::Rect _updRects[kMaxUpdRects];
+ SequenceFrame _prevFrame;
+ SequenceFrame _currFrame;
void testUpdRect(const Common::Rect &updRect);
};
Commit: 83bc85713bacd3a50daaace0411a3382c855797a
https://github.com/scummvm/scummvm/commit/83bc85713bacd3a50daaace0411a3382c855797a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: More renaming. Remove unused variable in MouseButtonState and Hotspot
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene14.cpp
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 9909139..1612ba2 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -60,9 +60,9 @@ GameSys::GameSys(GnapEngine *vm)
_backgroundSurface = 0;
_frontSurface = 0;
for (int i = 0; i < kMaxAnimations; ++i) {
- _animations[i].sequenceId = -1;
- _animations[i].id = 0;
- _animations[i].status = 0;
+ _animations[i]._sequenceId = -1;
+ _animations[i]._id = 0;
+ _animations[i]._status = 0;
}
_screenRect = Common::Rect(0, 0, 800, 600);
}
@@ -330,16 +330,16 @@ void GameSys::fillSurface(Graphics::Surface *surface, int x, int y, int width, i
void GameSys::setAnimation(int sequenceId, int id, int animationIndex) {
if (animationIndex < kMaxAnimations) {
- _animations[animationIndex].sequenceId = sequenceId;
- _animations[animationIndex].id = id;
- _animations[animationIndex].status = 0;
+ _animations[animationIndex]._sequenceId = sequenceId;
+ _animations[animationIndex]._id = id;
+ _animations[animationIndex]._status = 0;
}
}
int GameSys::getAnimationStatus(int animationIndex) {
int result = -1;
if (animationIndex < kMaxAnimations)
- result = _animations[animationIndex].status;
+ result = _animations[animationIndex]._status;
return result;
}
@@ -505,8 +505,8 @@ void GameSys::seqInsertGfx(int index, int duration) {
}
for (int k = 0; k < kMaxAnimations; ++k) {
- if (_animations[k].sequenceId != -1 && _animations[k].sequenceId == seqItem->_sequenceId && _animations[k].id == seqItem->_id) {
- _animations[k].status = 1;
+ if (_animations[k]._sequenceId != -1 && _animations[k]._sequenceId == seqItem->_sequenceId && _animations[k]._id == seqItem->_id) {
+ _animations[k]._status = 1;
break;
}
}
@@ -572,7 +572,7 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
Animation *foundAnimation = 0;
for (int animationIndex = 0; animationIndex < kMaxAnimations; ++animationIndex) {
Animation *animation = &_animations[animationIndex];
- if (animation->sequenceId != -1 && animation->sequenceId == sequenceId && animation->id == id) {
+ if (animation->_sequenceId != -1 && animation->_sequenceId == sequenceId && animation->_id == id) {
foundAnimation = animation;
break;
}
@@ -596,8 +596,8 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
}
if (foundSequence) {
- foundAnimation->sequenceId = -1;
- foundAnimation->status = 2;
+ foundAnimation->_sequenceId = -1;
+ foundAnimation->_status = 2;
}
}
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index cb6de00..043dec3 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -92,9 +92,9 @@ struct GfxItem {
};
struct Animation {
- int sequenceId;
- int id;
- int status;
+ int _sequenceId;
+ int _id;
+ int _status;
};
class GameSys {
@@ -135,8 +135,6 @@ public:
SpriteDrawItem _newSpriteDrawItems[kMaxSpriteDrawItems];
int _newSpriteDrawItemsCount;
- bool _spriteDrawItems1Changed;
-
RemoveSequenceItem _removeSequenceItems[kMaxSequenceItems];
int _removeSequenceItemsCount;
@@ -166,7 +164,7 @@ public:
int _backgroundImageValue3, _backgroundImageValue1;
int _backgroundImageValue4, _backgroundImageValue2;
- bool _backgroundImageError;
+ bool _backgroundImageError; // CHECKME: Unused
int32 _gameSysClock, _lastUpdateClock;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index a46b4c6..08861f4 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -246,20 +246,20 @@ void GnapEngine::updateEvents() {
_mouseY = event.mouse.y;
break;
case Common::EVENT_LBUTTONUP:
- _mouseButtonState.left = false;
+ _mouseButtonState._left = false;
break;
case Common::EVENT_LBUTTONDOWN:
_leftClickMouseX = event.mouse.x;
_leftClickMouseY = event.mouse.y;
- _mouseButtonState.left = true;
- _mouseClickState.left = true;
+ _mouseButtonState._left = true;
+ _mouseClickState._left = true;
break;
case Common::EVENT_RBUTTONUP:
- _mouseButtonState.right = false;
+ _mouseButtonState._right = false;
break;
case Common::EVENT_RBUTTONDOWN:
- _mouseButtonState.right = true;
- _mouseClickState.right = true;
+ _mouseButtonState._right = true;
+ _mouseClickState._right = true;
break;
case Common::EVENT_QUIT:
quitGame();
@@ -331,8 +331,8 @@ void GnapEngine::resumeGame() {
// TODO stopMidi();
_isPaused = false;
clearAllKeyStatus1();
- _mouseClickState.left = false;
- _mouseClickState.right = false;
+ _mouseClickState._left = false;
+ _mouseClickState._right = false;
showCursor();
_gameSys->_gameSysClock = 0;
_gameSys->_lastUpdateClock = 0;
@@ -375,12 +375,12 @@ void GnapEngine::delayTicksCursor(int a1) {
void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags,
int16 walkX, int16 walkY) {
- _hotspots[index].x1 = x1;
- _hotspots[index].y1 = y1;
- _hotspots[index].x2 = x2;
- _hotspots[index].y2 = y2;
- _hotspots[index].flags = flags;
- _hotspots[index].id = index;
+ _hotspots[index]._x1 = x1;
+ _hotspots[index]._y1 = y1;
+ _hotspots[index]._x2 = x2;
+ _hotspots[index]._y2 = y2;
+ _hotspots[index]._flags = flags;
+ _hotspots[index]._id = index;
_hotspotsWalkPos[index].x = walkX;
_hotspotsWalkPos[index].y = walkY;
}
@@ -406,44 +406,44 @@ void GnapEngine::updateCursorByHotspot() {
if (hotspotIndex < 0)
setCursor(kDisabledCursors[_verbCursor]);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_L_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_L_CURSOR)
setCursor(EXIT_L_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_R_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_R_CURSOR)
setCursor(EXIT_R_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_U_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_U_CURSOR)
setCursor(EXIT_U_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_D_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_D_CURSOR)
setCursor(EXIT_D_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_NE_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_NE_CURSOR)
setCursor(EXIT_NE_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_NW_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_NW_CURSOR)
setCursor(EXIT_NW_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_SE_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_SE_CURSOR)
setCursor(EXIT_SE_CURSOR);
- else if (_hotspots[hotspotIndex].flags & SF_EXIT_SW_CURSOR)
+ else if (_hotspots[hotspotIndex]._flags & SF_EXIT_SW_CURSOR)
setCursor(EXIT_SW_CURSOR);
- else if (_hotspots[hotspotIndex].flags & (1 << _verbCursor))
+ else if (_hotspots[hotspotIndex]._flags & (1 << _verbCursor))
setCursor(kCursors[_verbCursor]);
else
setCursor(kDisabledCursors[_verbCursor]);
}
// Update platypus hotspot
- _hotspots[0].x1 = _gridMinX + 75 * _platX - 30;
- _hotspots[0].y1 = _gridMinY + 48 * _platY - 100;
- _hotspots[0].x2 = _gridMinX + 75 * _platX + 30;
- _hotspots[0].y2 = _gridMinY + 48 * _platY;
+ _hotspots[0]._x1 = _gridMinX + 75 * _platX - 30;
+ _hotspots[0]._y1 = _gridMinY + 48 * _platY - 100;
+ _hotspots[0]._x2 = _gridMinX + 75 * _platX + 30;
+ _hotspots[0]._y2 = _gridMinY + 48 * _platY;
}
int GnapEngine::getClickedHotspotId() {
int result = -1;
if (_isWaiting)
- _mouseClickState.left = false;
- else if (_mouseClickState.left) {
+ _mouseClickState._left = false;
+ else if (_mouseClickState._left) {
int hotspotIndex = getHotspotIndexAtPos(_leftClickMouseX, _leftClickMouseY);
if (hotspotIndex >= 0) {
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
_timers[3] = 300;
- result = _hotspots[hotspotIndex].id;
+ result = _hotspots[hotspotIndex]._id;
}
}
return result;
@@ -454,9 +454,9 @@ int GnapEngine::getInventoryItemSpriteNum(int index) {
}
void GnapEngine::updateMouseCursor() {
- if (_mouseClickState.right) {
+ if (_mouseClickState._right) {
// Switch through the verb cursors
- _mouseClickState.right = false;
+ _mouseClickState._right = false;
_timers[3] = 300;
_verbCursor = (_verbCursor + 1) % 4;
if (!isFlag(0) && _verbCursor == PLAT_CURSOR && _cursorValue == 1)
@@ -592,11 +592,11 @@ void GnapEngine::showFullScreenSprite(int resourceId) {
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(resourceId, 256);
- while (!_mouseClickState.left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
+ while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
!isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29)) {
gameUpdateTick();
}
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(29);
clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -629,12 +629,12 @@ void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int
_deviceY1 = 14;
if (y2 == -1)
_deviceY2 = 79;
- _hotspots[hotspotIndex].x1 = _deviceX1;
- _hotspots[hotspotIndex].y1 = _deviceY1;
- _hotspots[hotspotIndex].x2 = _deviceX2;
- _hotspots[hotspotIndex].y2 = _deviceY2;
- _hotspots[hotspotIndex].flags = SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspots[hotspotIndex].id = hotspotIndex;
+ _hotspots[hotspotIndex]._x1 = _deviceX1;
+ _hotspots[hotspotIndex]._y1 = _deviceY1;
+ _hotspots[hotspotIndex]._x2 = _deviceX2;
+ _hotspots[hotspotIndex]._y2 = _deviceY2;
+ _hotspots[hotspotIndex]._flags = SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[hotspotIndex]._id = hotspotIndex;
}
int GnapEngine::getSequenceTotalDuration(int resourceId) {
@@ -819,8 +819,8 @@ void GnapEngine::initScene() {
gnapInitBrainPulseRndValue();
hideCursor();
clearAllKeyStatus1();
- _mouseClickState.left = false;
- _mouseClickState.right = false;
+ _mouseClickState._left = false;
+ _mouseClickState._right = false;
_sceneClickedHotspot = -1;
datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
@@ -886,8 +886,8 @@ void GnapEngine::afterScene() {
clearKeyStatus1(Common::KEYCODE_p);
- _mouseClickState.left = false;
- _mouseClickState.right = false;
+ _mouseClickState._left = false;
+ _mouseClickState._right = false;
}
@@ -1720,14 +1720,14 @@ void GnapEngine::updateGnapIdleSequence2() {
}
bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2) {
- if (_mouseClickState.left && someStatus == _gnapActionStatus) {
+ if (_mouseClickState._left && someStatus == _gnapActionStatus) {
_isLeavingScene = false;
_gameSys->setAnimation(0, 0, animationIndex);
_gnapActionStatus = -1;
_beaverActionStatus = -1;
gnapWalkTo(gridX1, gridY1, -1, -1, 1);
platypusWalkTo(gridX2, gridY2, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
return true;
}
return false;
@@ -2358,7 +2358,7 @@ void GnapEngine::cutscene_run() {
clearKeyStatus1(Common::KEYCODE_SPACE);
clearKeyStatus1(29);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
int v1 = 0;
while (!_sceneDone) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 6b532a0..7894ebd 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -50,24 +50,21 @@ class GameSys;
class SoundMan;
struct MouseButtonState {
- bool left;
- bool right;
- bool middle;
- MouseButtonState() : left(false), right(false), middle(false) {
+ bool _left;
+ bool _right;
+ MouseButtonState() : _left(false), _right(false) {
}
};
struct Hotspot {
- int16 x1, y1, x2, y2;
- int16 field_10;
- int16 field_12;
- uint16 flags;
- int id;
+ int16 _x1, _y1, _x2, _y2;
+ uint16 _flags;
+ int _id;
bool isPointInside(int16 x, int16 y) const {
- return x >= x1 && x <= x2 && y >= y1 && y <= y2;
+ return x >= _x1 && x <= _x2 && y >= _y1 && y <= _y2;
}
bool isFlag(uint16 flag) const {
- return (flags & flag) != 0;
+ return (_flags & flag) != 0;
}
};
@@ -82,6 +79,7 @@ const int kMaxGridStructs = 30;
const int kMaxTimers = 10;
enum {
+ SF_NONE = 0x0000,
SF_LOOK_CURSOR = 0x0001,
SF_GRAB_CURSOR = 0x0002,
SF_TALK_CURSOR = 0x0004,
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 522c72c..baf1a67 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -80,9 +80,9 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
const int y = _gridMinY + 48 * gridY;
for (int i = 0; i < _hotspotsCount; ++i) {
- if (x >= _hotspots[i].x1 && x <= _hotspots[i].x2 &&
- y >= _hotspots[i].y1 && y <= _hotspots[i].y2 &&
- !(_hotspots[i].flags & SF_WALKABLE))
+ if (x >= _hotspots[i]._x1 && x <= _hotspots[i]._x2 &&
+ y >= _hotspots[i]._y1 && y <= _hotspots[i]._y2 &&
+ !(_hotspots[i]._flags & SF_WALKABLE))
return true;
}
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 0b63ce1..1a618fd 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -44,39 +44,39 @@ void GnapEngine::initMenuHotspots1() {
for (int i = 0; i < 3; ++i) {
int v1 = 0;
while (v1 < 3) {
- _hotspots[v2].x1 = 87 * v1 + 262;
- _hotspots[v2].y1 = 74 * i + 69;
- _hotspots[v2].x2 = _hotspots[v2].x1 + 79;
- _hotspots[v2].y2 = _hotspots[v2].y1 + 66;
- _hotspots[v2].flags = 0;
- _hotspots[v2].id = v2;
+ _hotspots[v2]._x1 = 87 * v1 + 262;
+ _hotspots[v2]._y1 = 74 * i + 69;
+ _hotspots[v2]._x2 = _hotspots[v2]._x1 + 79;
+ _hotspots[v2]._y2 = _hotspots[v2]._y1 + 66;
+ _hotspots[v2]._flags = SF_NONE;
+ _hotspots[v2]._id = v2;
++v1;
++v2;
}
}
- _hotspots[v2].x1 = 330;
- _hotspots[v2].y1 = 350;
- _hotspots[v2].x2 = 430;
- _hotspots[v2].y2 = 460;
- _hotspots[v2].flags = 2;
- _hotspots[v2].id = v2;
+ _hotspots[v2]._x1 = 330;
+ _hotspots[v2]._y1 = 350;
+ _hotspots[v2]._x2 = 430;
+ _hotspots[v2]._y2 = 460;
+ _hotspots[v2]._flags = SF_GRAB_CURSOR;
+ _hotspots[v2]._id = v2;
v0 = v2 + 1;
- _hotspots[v0].x1 = 180;
- _hotspots[v0].y1 = 15;
- _hotspots[v0].x2 = 620;
- _hotspots[v0].y2 = 580;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 180;
+ _hotspots[v0]._y1 = 15;
+ _hotspots[v0]._x2 = 620;
+ _hotspots[v0]._y2 = 580;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
++v0;
- _hotspots[v0].x1 = 0;
- _hotspots[v0].y1 = 0;
- _hotspots[v0].x2 = 799;
- _hotspots[v0].y2 = 599;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 0;
+ _hotspots[v0]._y1 = 0;
+ _hotspots[v0]._x2 = 799;
+ _hotspots[v0]._y2 = 599;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
_hotspotsCount = v0 + 1;
}
@@ -85,129 +85,129 @@ void GnapEngine::initMenuHotspots2() {
int i, v0;
for (i = 0; i < 4; ++i) {
- _hotspots[i].x1 = 312;
- _hotspots[i].y1 = 48 * i + 85;
- _hotspots[i].x2 = _hotspots[i].x1 + 153;
- _hotspots[i].y2 = _hotspots[i].y1 + 37;
- _hotspots[i].flags = SF_GRAB_CURSOR;
- _hotspots[i].id = i;
- }
- _hotspots[i].x1 = 500;
- _hotspots[i].y1 = 72;
- _hotspots[i].x2 = 527;
- _hotspots[i].y2 = 99;
- _hotspots[i].flags = SF_DISABLED;
- _hotspots[i].id = i;
+ _hotspots[i]._x1 = 312;
+ _hotspots[i]._y1 = 48 * i + 85;
+ _hotspots[i]._x2 = _hotspots[i]._x1 + 153;
+ _hotspots[i]._y2 = _hotspots[i]._y1 + 37;
+ _hotspots[i]._flags = SF_GRAB_CURSOR;
+ _hotspots[i]._id = i;
+ }
+ _hotspots[i]._x1 = 500;
+ _hotspots[i]._y1 = 72;
+ _hotspots[i]._x2 = 527;
+ _hotspots[i]._y2 = 99;
+ _hotspots[i]._flags = SF_DISABLED;
+ _hotspots[i]._id = i;
v0 = i + 1;
- _hotspots[v0].x1 = 330;
- _hotspots[v0].y1 = 350;
- _hotspots[v0].x2 = 430;
- _hotspots[v0].y2 = 460;
- _hotspots[v0].flags = SF_GRAB_CURSOR;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 330;
+ _hotspots[v0]._y1 = 350;
+ _hotspots[v0]._x2 = 430;
+ _hotspots[v0]._y2 = 460;
+ _hotspots[v0]._flags = SF_GRAB_CURSOR;
+ _hotspots[v0]._id = v0;
++v0;
- _hotspots[v0].x1 = 180;
- _hotspots[v0].y1 = 15;
- _hotspots[v0].x2 = 620;
- _hotspots[v0].y2 = 580;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 180;
+ _hotspots[v0]._y1 = 15;
+ _hotspots[v0]._x2 = 620;
+ _hotspots[v0]._y2 = 580;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
++v0;
- _hotspots[v0].x1 = 0;
- _hotspots[v0].y1 = 0;
- _hotspots[v0].x2 = 799;
- _hotspots[v0].y2 = 599;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 0;
+ _hotspots[v0]._y1 = 0;
+ _hotspots[v0]._x2 = 799;
+ _hotspots[v0]._y2 = 599;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
_hotspotsCount = v0 + 1;
}
void GnapEngine::initMenuQuitQueryHotspots() {
- _hotspots[0].x1 = 311;
- _hotspots[0].y1 = 197;
- _hotspots[0].x2 = 377;
- _hotspots[0].y2 = 237;
- _hotspots[0].flags = SF_GRAB_CURSOR;
- _hotspots[0].id = 0;
- _hotspots[1].x1 = 403;
- _hotspots[1].y1 = 197;
- _hotspots[1].x2 = 469;
- _hotspots[1].y2 = 237;
- _hotspots[1].flags = SF_GRAB_CURSOR;
- _hotspots[1].id = 1;
- _hotspots[2].x1 = 330;
- _hotspots[2].y1 = 350;
- _hotspots[2].x2 = 430;
- _hotspots[2].y2 = 460;
- _hotspots[2].flags = SF_GRAB_CURSOR;
- _hotspots[2].id = 2;
- _hotspots[3].x1 = 180;
- _hotspots[3].y1 = 15;
- _hotspots[3].x2 = 620;
- _hotspots[3].y2 = 580;
- _hotspots[3].flags = 0;
- _hotspots[3].id = 3;
- _hotspots[4].x1 = 0;
- _hotspots[4].y1 = 0;
- _hotspots[4].x2 = 799;
- _hotspots[4].y2 = 599;
- _hotspots[4].flags = 0;
- _hotspots[4].id = 4;
+ _hotspots[0]._x1 = 311;
+ _hotspots[0]._y1 = 197;
+ _hotspots[0]._x2 = 377;
+ _hotspots[0]._y2 = 237;
+ _hotspots[0]._flags = SF_GRAB_CURSOR;
+ _hotspots[0]._id = 0;
+ _hotspots[1]._x1 = 403;
+ _hotspots[1]._y1 = 197;
+ _hotspots[1]._x2 = 469;
+ _hotspots[1]._y2 = 237;
+ _hotspots[1]._flags = SF_GRAB_CURSOR;
+ _hotspots[1]._id = 1;
+ _hotspots[2]._x1 = 330;
+ _hotspots[2]._y1 = 350;
+ _hotspots[2]._x2 = 430;
+ _hotspots[2]._y2 = 460;
+ _hotspots[2]._flags = SF_GRAB_CURSOR;
+ _hotspots[2]._id = 2;
+ _hotspots[3]._x1 = 180;
+ _hotspots[3]._y1 = 15;
+ _hotspots[3]._x2 = 620;
+ _hotspots[3]._y2 = 580;
+ _hotspots[3]._flags = SF_NONE;
+ _hotspots[3]._id = 3;
+ _hotspots[4]._x1 = 0;
+ _hotspots[4]._y1 = 0;
+ _hotspots[4]._x2 = 799;
+ _hotspots[4]._y2 = 599;
+ _hotspots[4]._flags = SF_NONE;
+ _hotspots[4]._id = 4;
_hotspotsCount = 5;
}
void GnapEngine::initSaveLoadHotspots() {
int i, v0;
for (i = 0; i < 7; ++i ) {
- _hotspots[i].x1 = 288;
- _hotspots[i].y1 = 31 * i + 74;
- _hotspots[i].x2 = _hotspots[i].x1 + 91;
- _hotspots[i].y2 = _hotspots[i].y1 + 22;
- _hotspots[i].flags = SF_GRAB_CURSOR;
- _hotspots[i].id = i;
+ _hotspots[i]._x1 = 288;
+ _hotspots[i]._y1 = 31 * i + 74;
+ _hotspots[i]._x2 = _hotspots[i]._x1 + 91;
+ _hotspots[i]._y2 = _hotspots[i]._y1 + 22;
+ _hotspots[i]._flags = SF_GRAB_CURSOR;
+ _hotspots[i]._id = i;
}
if (_menuStatus == 2) {
- _hotspots[i].x1 = 416;
- _hotspots[i].y1 = 160;
- _hotspots[i].x2 = 499;
- _hotspots[i].y2 = 188;
- _hotspots[i].flags = SF_GRAB_CURSOR;
- _hotspots[i].id = i;
+ _hotspots[i]._x1 = 416;
+ _hotspots[i]._y1 = 160;
+ _hotspots[i]._x2 = 499;
+ _hotspots[i]._y2 = 188;
+ _hotspots[i]._flags = SF_GRAB_CURSOR;
+ _hotspots[i]._id = i;
++i;
}
- _hotspots[i].x1 = 416;
- _hotspots[i].y1 = 213;
- _hotspots[i].x2 = 499;
- _hotspots[i].y2 = 241;
- _hotspots[i].flags = SF_GRAB_CURSOR;
- _hotspots[i].id = i;
+ _hotspots[i]._x1 = 416;
+ _hotspots[i]._y1 = 213;
+ _hotspots[i]._x2 = 499;
+ _hotspots[i]._y2 = 241;
+ _hotspots[i]._flags = SF_GRAB_CURSOR;
+ _hotspots[i]._id = i;
v0 = i + 1;
- _hotspots[v0].x1 = 330;
- _hotspots[v0].y1 = 350;
- _hotspots[v0].x2 = 430;
- _hotspots[v0].y2 = 460;
- _hotspots[v0].flags = SF_GRAB_CURSOR;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 330;
+ _hotspots[v0]._y1 = 350;
+ _hotspots[v0]._x2 = 430;
+ _hotspots[v0]._y2 = 460;
+ _hotspots[v0]._flags = SF_GRAB_CURSOR;
+ _hotspots[v0]._id = v0;
++v0;
- _hotspots[v0].x1 = 180;
- _hotspots[v0].y1 = 15;
- _hotspots[v0].x2 = 620;
- _hotspots[v0].y2 = 580;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 180;
+ _hotspots[v0]._y1 = 15;
+ _hotspots[v0]._x2 = 620;
+ _hotspots[v0]._y2 = 580;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
++v0;
- _hotspots[v0].x1 = 0;
- _hotspots[v0].y1 = 0;
- _hotspots[v0].x2 = 799;
- _hotspots[v0].y2 = 599;
- _hotspots[v0].flags = 0;
- _hotspots[v0].id = v0;
+ _hotspots[v0]._x1 = 0;
+ _hotspots[v0]._y1 = 0;
+ _hotspots[v0]._x2 = 799;
+ _hotspots[v0]._y2 = 599;
+ _hotspots[v0]._flags = SF_NONE;
+ _hotspots[v0]._id = v0;
_hotspotsCount = v0 + 1;
}
void GnapEngine::drawInventoryFrames() {
for (int i = 0; i < 9; ++i)
- _gameSys->drawSpriteToSurface(_menuBackgroundSurface, _hotspots[i].x1 - 93, _hotspots[i].y1, 0x10001);
+ _gameSys->drawSpriteToSurface(_menuBackgroundSurface, _hotspots[i]._x1 - 93, _hotspots[i]._y1, 0x10001);
}
void GnapEngine::insertInventorySprites() {
@@ -223,16 +223,16 @@ void GnapEngine::insertInventorySprites() {
for (int index = 0; index < 30 && _menuSpritesIndex < 9; ++index) {
if (invHas(index)) {
_gameSys->drawSpriteToSurface(_menuBackgroundSurface,
- _hotspots[_menuSpritesIndex].x1 - 93, _hotspots[_menuSpritesIndex].y1, 0x10000);
+ _hotspots[_menuSpritesIndex]._x1 - 93, _hotspots[_menuSpritesIndex]._y1, 0x10000);
_menuInventorySprites[_menuSpritesIndex] = _gameSys->createSurface(getInventoryItemSpriteNum(index) | 0x10000);
if (index != _grabCursorSpriteIndex) {
_menuInventoryIndices[_menuSpritesIndex] = index;
_gameSys->insertSpriteDrawItem(_menuInventorySprites[_menuSpritesIndex],
- _hotspots[_menuSpritesIndex].x1 + ((79 - _menuInventorySprites[_menuSpritesIndex]->w) / 2),
- _hotspots[_menuSpritesIndex].y1 + ((66 - _menuInventorySprites[_menuSpritesIndex]->h) / 2),
+ _hotspots[_menuSpritesIndex]._x1 + ((79 - _menuInventorySprites[_menuSpritesIndex]->w) / 2),
+ _hotspots[_menuSpritesIndex]._y1 + ((66 - _menuInventorySprites[_menuSpritesIndex]->h) / 2),
261);
}
- _hotspots[_menuSpritesIndex].flags = SF_GRAB_CURSOR;
+ _hotspots[_menuSpritesIndex]._flags = SF_GRAB_CURSOR;
++_menuSpritesIndex;
}
}
@@ -355,7 +355,7 @@ void GnapEngine::runMenu() {
clearAllKeyStatus1();
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
removeDeviceIconActive();
@@ -373,10 +373,10 @@ void GnapEngine::updateMenuStatusInventory() {
};
updateGrabCursorSprite(0, 0);
- _hotspots[0].x1 = 262;
- _hotspots[0].y1 = 69;
- _hotspots[0].x2 = 341;
- _hotspots[0].y2 = 135;
+ _hotspots[0]._x1 = 262;
+ _hotspots[0]._y1 = 69;
+ _hotspots[0]._x2 = 341;
+ _hotspots[0]._y2 = 135;
_sceneClickedHotspot = -1;
if (_timers[2] == 0)
_sceneClickedHotspot = getClickedHotspotId();
@@ -386,7 +386,7 @@ void GnapEngine::updateMenuStatusInventory() {
_timers[2] = 10;
playSound(0x108F4, 0);
_menuStatus = 1;
- Common::Rect dirtyRect(_hotspots[0].x1, _hotspots[0].y1, _hotspots[2].x2, _hotspots[_hotspotsCount - 4].y2);
+ Common::Rect dirtyRect(_hotspots[0]._x1, _hotspots[0]._y1, _hotspots[2]._x2, _hotspots[_hotspotsCount - 4]._y2);
drawInventoryFrames();
initMenuHotspots2();
removeInventorySprites();
@@ -409,8 +409,8 @@ void GnapEngine::updateMenuStatusInventory() {
} else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] == -1 && _grabCursorSpriteIndex != -1) {
_menuInventoryIndices[_sceneClickedHotspot] = _grabCursorSpriteIndex;
_gameSys->insertSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot],
- _hotspots[_sceneClickedHotspot].x1 + ((79 - _menuInventorySprites[_sceneClickedHotspot]->w) / 2),
- _hotspots[_sceneClickedHotspot].y1 + (66 - _menuInventorySprites[_sceneClickedHotspot]->h) / 2,
+ _hotspots[_sceneClickedHotspot]._x1 + ((79 - _menuInventorySprites[_sceneClickedHotspot]->w) / 2),
+ _hotspots[_sceneClickedHotspot]._y1 + (66 - _menuInventorySprites[_sceneClickedHotspot]->h) / 2,
261);
setGrabCursorSprite(-1);
} else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] != -1 && _grabCursorSpriteIndex != -1) {
@@ -429,7 +429,7 @@ void GnapEngine::updateMenuStatusInventory() {
playSound(0x108AE, 0);
deleteSurface(&_spriteHandle); // CHECKME
_spriteHandle = _gameSys->createSurface(0x10001);
- _gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1].x1, _hotspots[_menuSpritesIndex - 1].y1, 261);
+ _gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1]._x1, _hotspots[_menuSpritesIndex - 1]._y1, 261);
setGrabCursorSprite(kCombineItems[combineIndex].resultItem);
removeInventorySprites();
insertInventorySprites();
@@ -441,10 +441,10 @@ void GnapEngine::updateMenuStatusInventory() {
}
void GnapEngine::updateMenuStatusMainMenu() {
- _hotspots[0].x1 = 312;
- _hotspots[0].y1 = 85;
- _hotspots[0].x2 = 465;
- _hotspots[0].y2 = 122;
+ _hotspots[0]._x1 = 312;
+ _hotspots[0]._y1 = 85;
+ _hotspots[0]._x2 = 465;
+ _hotspots[0]._y2 = 122;
_sceneClickedHotspot = -1;
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
@@ -486,12 +486,12 @@ void GnapEngine::updateMenuStatusMainMenu() {
_gameSys->insertDirtyRect(dirtyRect);
}
- while (!_mouseClickState.left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2]) {
+ while (!_mouseClickState._left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2]) {
gameUpdateTick();
}
playSound(0x108F5, 0);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
clearKeyStatus1(28);
clearKeyStatus1(29);
clearKeyStatus1(30);
@@ -513,7 +513,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (_menuSprite1)
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
insertInventorySprites();
- Common::Rect dirtyRect(_hotspots[0].x1, _hotspots[0].y1, _hotspots[2].x2, _hotspots[_hotspotsCount - 4].y2);
+ Common::Rect dirtyRect(_hotspots[0]._x1, _hotspots[0]._y1, _hotspots[2]._x2, _hotspots[_hotspotsCount - 4]._y2);
_gameSys->insertDirtyRect(dirtyRect);
}
} else {
@@ -546,7 +546,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (readSavegameDescription(i + 1, savegameDescription) == 0)
strncpy(_savegameFilenames[i], savegameDescription.c_str(), 40);
_gameSys->drawTextToSurface(_savegameSprites[i], 0, 0, 255, 0, 0, _savegameFilenames[i]);
- _gameSys->insertSpriteDrawItem(_savegameSprites[i], 288, _hotspots[i].y1, 263);
+ _gameSys->insertSpriteDrawItem(_savegameSprites[i], 288, _hotspots[i]._y1, 263);
}
_savegameIndex = -1;
}
@@ -729,10 +729,10 @@ void GnapEngine::updateMenuStatusSaveGame() {
}
void GnapEngine::updateMenuStatusLoadGame() {
- _hotspots[0].x1 = 288;
- _hotspots[0].y1 = 74;
- _hotspots[0].x2 = 379;
- _hotspots[0].y2 = 96;
+ _hotspots[0]._x1 = 288;
+ _hotspots[0]._y1 = 74;
+ _hotspots[0]._x2 = 379;
+ _hotspots[0]._y2 = 96;
_sceneClickedHotspot = -1;
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
@@ -762,10 +762,10 @@ void GnapEngine::updateMenuStatusLoadGame() {
void GnapEngine::updateMenuStatusQueryQuit() {
- _hotspots[0].x1 = 311;
- _hotspots[0].y1 = 197;
- _hotspots[0].x2 = 377;
- _hotspots[0].y2 = 237;
+ _hotspots[0]._x1 = 311;
+ _hotspots[0]._y1 = 197;
+ _hotspots[0]._x2 = 377;
+ _hotspots[0]._y2 = 237;
_sceneClickedHotspot = -1;
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index e084a54..9efe45d 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -74,9 +74,9 @@ void GnapEngine::scene01_updateHotspots() {
setHotspot(kHSWalkArea8, 0, 546, 300, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (isFlag(1))
- _hotspots[kHSMud].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSMud]._flags = SF_WALKABLE | SF_DISABLED;
_hotspotsCount = 14;
}
@@ -259,9 +259,9 @@ void GnapEngine::scene01_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index d745b09..a4d62c8 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -79,7 +79,7 @@ void GnapEngine::scene02_updateHotspots() {
setHotspot(kHSWalkArea4, 386, 0, 509, 410);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 14;
}
@@ -238,10 +238,10 @@ void GnapEngine::scene02_run() {
_gnapActionStatus = kASUseTruckNoGas;
}
} else if (_grabCursorSpriteIndex == kItemGas) {
- _hotspots[kHSWalkArea4].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea4]._flags |= SF_WALKABLE;
if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
_gnapActionStatus = kASUseGasWithTruck;
- _hotspots[kHSWalkArea4].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea4]._flags &= ~SF_WALKABLE;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 2, 2);
} else {
@@ -350,9 +350,9 @@ void GnapEngine::scene02_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 6f191dc..7ca1c4a 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -70,13 +70,13 @@ void GnapEngine::scene03_updateHotspots() {
setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (isFlag(6))
- _hotspots[kHSGrass].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSGrass]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(0))
- _hotspots[kHSTrappedPlatypus].flags = SF_DISABLED;
+ _hotspots[kHSTrappedPlatypus]._flags = SF_DISABLED;
if (isFlag(0) || _s03_platypusHypnotized)
- _hotspots[kHSPlatypusWalkArea].flags |= SF_WALKABLE;
+ _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
_hotspotsCount = 10;
}
@@ -181,7 +181,7 @@ void GnapEngine::scene03_run() {
playGnapUseDevice(0, 0);
_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(0x1B3, 253, 5);
- _hotspots[kHSGrass].flags |= SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSGrass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -195,12 +195,12 @@ void GnapEngine::scene03_run() {
case kHSExitTruck:
if (_gnapActionStatus < 0) {
_isLeavingScene = 1;
- _hotspots[kHSPlatypusWalkArea].flags |= SF_WALKABLE;
+ _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107AD, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(0))
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, -1, 0x107C2, 1);
- _hotspots[kHSPlatypusWalkArea].flags &= ~SF_WALKABLE;
+ _hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_cursorValue == 1)
_newSceneNum = 2;
else
@@ -219,11 +219,11 @@ void GnapEngine::scene03_run() {
break;
case GRAB_CURSOR:
if (!isFlag(0))
- _hotspots[kHSPlatypusWalkArea].flags |= SF_WALKABLE;
+ _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[3].x + 1, _hotspotsWalkPos[3].y + 1) | 0x10000, 1))
_gnapActionStatus = kASGrabCreek;
if (!isFlag(0))
- _hotspots[kHSPlatypusWalkArea].flags &= ~SF_WALKABLE;
+ _hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -306,9 +306,9 @@ void GnapEngine::scene03_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 37ebe34..52fdb39 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -74,11 +74,11 @@ void GnapEngine::scene04_updateHotspots() {
setHotspot(kHSWalkArea2, 562, 0, 800, 500);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (isFlag(3))
- _hotspots[kHSTwig].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(26) || _cursorValue == 1)
- _hotspots[kHSAxe].flags = SF_DISABLED;
+ _hotspots[kHSAxe]._flags = SF_DISABLED;
_hotspotsCount = 11;
}
@@ -385,9 +385,9 @@ void GnapEngine::scene04_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index fdc6ba1..fea0dc1 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -70,9 +70,9 @@ void GnapEngine::scene05_updateHotspots() {
setHotspot(kHSWalkArea3, 0, 0, 104, 499);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (isFlag(7))
- _hotspots[kHSPadlock].flags = SF_EXIT_U_CURSOR;
+ _hotspots[kHSPadlock]._flags = SF_EXIT_U_CURSOR;
_hotspotsCount = 10;
}
@@ -306,9 +306,9 @@ void GnapEngine::scene05_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 3878d35..7df09a1 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -73,10 +73,10 @@ void GnapEngine::scene06_updateHotspots() {
setHotspot(kHSWalkArea5, 0, 0, 800, 504);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(29))
- _hotspots[kHSLadder].flags = SF_DISABLED;
+ _hotspots[kHSLadder]._flags = SF_DISABLED;
if (_cursorValue == 4) {
- _hotspots[kHSLadder].flags = SF_DISABLED;
- _hotspots[kHSGas].flags = SF_DISABLED;
+ _hotspots[kHSLadder]._flags = SF_DISABLED;
+ _hotspots[kHSGas]._flags = SF_DISABLED;
}
_hotspotsCount = 11;
}
@@ -174,9 +174,9 @@ void GnapEngine::scene06_run() {
if (isFlag(4)) {
playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
- _hotspots[kHSWalkArea5].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea5].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASTryToGetGas;
} else {
triedDeviceOnGas = true;
@@ -225,9 +225,9 @@ void GnapEngine::scene06_run() {
case kHSHorse:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemTwig && _s06_horseTurnedBack) {
- _hotspots[kHSWalkArea5].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea5].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
_gnapIdleFacing = 5;
platypusWalkTo(6, 8, 1, 0x107C2, 1);
_beaverFacing = 0;
@@ -245,9 +245,9 @@ void GnapEngine::scene06_run() {
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
_gnapIdleFacing = 3;
- _hotspots[kHSWalkArea5].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _hotspots[kHSWalkArea5].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASTalkToHorse;
}
break;
@@ -282,9 +282,9 @@ void GnapEngine::scene06_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -383,7 +383,7 @@ void GnapEngine::scene06_updateAnimations() {
_gameSys->setAnimation(0, 0, 1);
invAdd(kItemGas);
setFlag(29);
- _hotspots[kHSLadder].flags = SF_DISABLED;
+ _hotspots[kHSLadder]._flags = SF_DISABLED;
setGrabCursorSprite(kItemGas);
_beaverActionStatus = -1;
_platX = 6;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 9b8ee29..aa486b6 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -54,7 +54,7 @@ void GnapEngine::scene07_updateHotspots() {
setHotspot(kHSWalkArea3, 160, 0, 325, 495);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(0))
- _hotspots[kHSDice].flags = SF_DISABLED;
+ _hotspots[kHSDice]._flags = SF_DISABLED;
_hotspotsCount = 7;
}
@@ -185,9 +185,9 @@ void GnapEngine::scene07_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index f7c0b9c8..2943725 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -68,11 +68,11 @@ void GnapEngine::scene08_updateHotspots() {
setHotspot(kHSWalkArea2, 0, 0, 799, 420);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(7))
- _hotspots[kHSMeat].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(8))
- _hotspots[kHSBone].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(9))
- _hotspots[kHSToy].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSToy]._flags = SF_WALKABLE | SF_DISABLED;
_hotspotsCount = 11;
}
@@ -346,10 +346,10 @@ void GnapEngine::scene08_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapActionIdle(0x14D);
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -474,17 +474,17 @@ void GnapEngine::scene08_updateAnimations() {
switch (_s08_nextDogSequenceId) {
case 0x149:
setFlag(7);
- _hotspots[kHSMeat].flags = SF_DISABLED | SF_WALKABLE;
+ _hotspots[kHSMeat]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x144, 1, true);
break;
case 0x14A:
setFlag(8);
- _hotspots[kHSBone].flags = SF_DISABLED | SF_WALKABLE;
+ _hotspots[kHSBone]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x145, 1, true);
break;
case 0x14B:
setFlag(9);
- _hotspots[kHSToy].flags = SF_DISABLED | SF_WALKABLE;
+ _hotspots[kHSToy]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x146, 1, true);
break;
}
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 3654be5..69165ce 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -167,9 +167,9 @@ void GnapEngine::scene09_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 32162e2..54cf5b5 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -309,10 +309,10 @@ void GnapEngine::scene10_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapActionIdle(0x10C);
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 3a112b9..8097b23 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -85,7 +85,7 @@ void GnapEngine::scene11_run() {
_timers[7] = 50;
- _hotspots[kHSBillard].flags |= SF_DISABLED;
+ _hotspots[kHSBillard]._flags |= SF_DISABLED;
_s11_currGoggleGuySequenceId = 0x1F9;
@@ -290,9 +290,9 @@ void GnapEngine::scene11_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -434,7 +434,7 @@ void GnapEngine::scene11_updateAnimations() {
_s11_nextHookGuySequenceId = -1;
_timers[4] = getRandom(40) + 20;
_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, getSequenceTotalDuration(0x1F4) - 5, 0, 0);
- _hotspots[kHSBillard].flags |= SF_DISABLED;
+ _hotspots[kHSBillard]._flags |= SF_DISABLED;
_gameSys->setAnimation(0x207, 257, 4);
_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, getSequenceTotalDuration(0x1FE), 0, 0);
_gnapActionStatus = -1;
@@ -480,7 +480,7 @@ void GnapEngine::scene11_updateAnimations() {
if (_gameSys->getAnimationStatus(4) == 2) {
_gameSys->setAnimation(0, 0, 4);
- _hotspots[kHSBillard].flags &= ~SF_DISABLED;
+ _hotspots[kHSBillard]._flags &= ~SF_DISABLED;
}
}
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index 076fa04..4bc10fc 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -296,9 +296,9 @@ void GnapEngine::scene12_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 729fdeb..233b754 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -87,10 +87,10 @@ void GnapEngine::scene13_showScribble() {
hideCursor();
_largeSprite = _gameSys->createSurface(0x6F);
_gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- while (!_mouseClickState.left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
+ while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
!isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29))
gameUpdateTick();
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(29);
clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -305,9 +305,9 @@ void GnapEngine::scene13_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 4f799db..b4e68a8 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -47,7 +47,7 @@ void GnapEngine::scene14_updateHotspots() {
setHotspot(kHSToilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(2))
- _hotspots[kHSCoin].flags = SF_DISABLED;
+ _hotspots[kHSCoin]._flags = SF_DISABLED;
_hotspotsCount = 5;
}
@@ -143,7 +143,7 @@ void GnapEngine::scene14_run() {
break;
default:
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
break;
}
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index 578f4fc..f9fb3ef 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -94,10 +94,10 @@ void GnapEngine::scene15_run() {
updateMouseCursor();
updateCursorByHotspot();
- _hotspots[kHSPlatypus].x1 = 0;
- _hotspots[kHSPlatypus].y1 = 0;
- _hotspots[kHSPlatypus].x2 = 0;
- _hotspots[kHSPlatypus].y2 = 0;
+ _hotspots[kHSPlatypus]._x1 = 0;
+ _hotspots[kHSPlatypus]._y1 = 0;
+ _hotspots[kHSPlatypus]._x2 = 0;
+ _hotspots[kHSPlatypus]._y2 = 0;
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
@@ -222,7 +222,7 @@ void GnapEngine::scene15_run() {
break;
default:
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
break;
}
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 5b7c54c..c86df4c 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -73,10 +73,10 @@ void GnapEngine::scene17_updateHotspots() {
setHotspot(kHSWalkArea3, 0, 204, 173, 468);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(6))
- _hotspots[kHSWrench].flags = 0;
+ _hotspots[kHSWrench]._flags = SF_NONE;
if (isFlag(26)) {
- _hotspots[kHSDevice].flags = SF_DISABLED;
- _hotspots[kHSPlatypus].flags = SF_DISABLED;
+ _hotspots[kHSDevice]._flags = SF_DISABLED;
+ _hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
_hotspotsCount = 10;
}
@@ -85,9 +85,9 @@ void GnapEngine::scene17_update() {
gameUpdateTick();
updateMouseCursor();
updateGrabCursorSprite(0, 0);
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
}
@@ -476,9 +476,9 @@ void GnapEngine::scene17_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = 0;
+ _mouseClickState._left = 0;
}
break;
}
@@ -742,9 +742,9 @@ void GnapEngine::scene17_updateAnimations() {
case 0x22E:
case 0x235:
if (_s17_nextWrenchSequenceId == 0x235)
- _hotspots[kHSWrench].flags &= ~SF_DISABLED;
+ _hotspots[kHSWrench]._flags &= ~SF_DISABLED;
else
- _hotspots[kHSWrench].flags |= SF_DISABLED;
+ _hotspots[kHSWrench]._flags |= SF_DISABLED;
_s17_canTryGetWrench = !_s17_canTryGetWrench;
_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index ff43a5d..7363468 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -88,39 +88,39 @@ void GnapEngine::scene18_updateHotspots() {
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(8)) {
if (isFlag(9)) {
- _hotspots[kHSHydrantTopValve].flags = SF_DISABLED;
- _hotspots[kHSHydrantRightValve].x1 = 148;
- _hotspots[kHSHydrantRightValve].y1 = 403;
- _hotspots[kHSGarbageCan].flags = SF_DISABLED;
+ _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _hotspots[kHSHydrantRightValve]._x1 = 148;
+ _hotspots[kHSHydrantRightValve]._y1 = 403;
+ _hotspots[kHSGarbageCan]._flags = SF_DISABLED;
_hotspotsWalkPos[kHSGarbageCan].x = 3;
_hotspotsWalkPos[kHSGarbageCan].y = 7;
} else {
- _hotspots[kHSHydrantTopValve].y1 = 246;
+ _hotspots[kHSHydrantTopValve]._y1 = 246;
}
} else if (isFlag(7)) {
- _hotspots[kHSHydrantRightValve].flags = SF_DISABLED;
- _hotspots[kHSHydrantTopValve].x1 = 105;
- _hotspots[kHSHydrantTopValve].x2 = 192;
+ _hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
+ _hotspots[kHSHydrantTopValve]._x1 = 105;
+ _hotspots[kHSHydrantTopValve]._x2 = 192;
} else if (isFlag(9)) {
- _hotspots[kHSGarbageCan].x1 = 115;
- _hotspots[kHSGarbageCan].y1 = 365;
- _hotspots[kHSGarbageCan].x2 = 168;
- _hotspots[kHSGarbageCan].y2 = 470;
- _hotspots[kHSGarbageCan].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSGarbageCan]._x1 = 115;
+ _hotspots[kHSGarbageCan]._y1 = 365;
+ _hotspots[kHSGarbageCan]._x2 = 168;
+ _hotspots[kHSGarbageCan]._y2 = 470;
+ _hotspots[kHSGarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsWalkPos[kHSGarbageCan].x = 3;
_hotspotsWalkPos[kHSGarbageCan].y = 7;
}
if (isFlag(10))
- _hotspots[kHSGarbageCan].flags = SF_DISABLED;
+ _hotspots[kHSGarbageCan]._flags = SF_DISABLED;
if (isFlag(26)) {
- _hotspots[kHSDevice].flags = SF_DISABLED;
- _hotspots[kHSHydrantTopValve].flags = SF_DISABLED;
- _hotspots[kHSHydrantRightValve].flags = SF_DISABLED;
- _hotspots[kHSPlatypus].flags = SF_DISABLED;
+ _hotspots[kHSDevice]._flags = SF_DISABLED;
+ _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
+ _hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
if (isFlag(14)) {
- _hotspots[kHSHydrantTopValve].flags = SF_DISABLED;
- _hotspots[kHSCowboyHat].flags = SF_DISABLED;
+ _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _hotspots[kHSCowboyHat]._flags = SF_DISABLED;
}
_hotspotsCount = 11;
}
@@ -571,9 +571,9 @@ void GnapEngine::scene18_run() {
break;
case GRAB_CURSOR:
if (isFlag(7)) {
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASCloseTopValve;
} else
playGnapImpossible(0, 0);
@@ -679,14 +679,14 @@ void GnapEngine::scene18_run() {
scene18_closeHydrantValve();
_isLeavingScene = 1;
_newSceneNum = 20;
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(26))
scene18_platEndPhoning(0);
else
platypusWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -699,19 +699,19 @@ void GnapEngine::scene18_run() {
} else {
gnapWalkTo(-1, -1, -1, -1, 1);
}
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
default:
- if (_gnapActionStatus != kASStandingOnHydrant && _mouseClickState.left) {
+ if (_gnapActionStatus != kASStandingOnHydrant && _mouseClickState._left) {
if (isFlag(10)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
} else {
gnapWalkTo(-1, -1, -1, -1, 1);
}
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -739,11 +739,11 @@ void GnapEngine::scene18_run() {
clearFlag(26);
}
} else {
- _hotspots[kHSWalkArea1].y2 += 48;
- _hotspots[kHSWalkArea2].x1 += 75;
+ _hotspots[kHSWalkArea1]._y2 += 48;
+ _hotspots[kHSWalkArea2]._x1 += 75;
updateBeaverIdleSequence();
- _hotspots[kHSWalkArea2].x1 -= 75;
- _hotspots[kHSWalkArea1].y2 -= 48;
+ _hotspots[kHSWalkArea2]._x1 -= 75;
+ _hotspots[kHSWalkArea1]._y2 -= 48;
}
if (!_timers[5]) {
_timers[5] = getRandom(100) + 100;
@@ -831,9 +831,9 @@ void GnapEngine::scene18_updateAnimations() {
playGnapPullOutDevice(2, 7);
playGnapUseDevice(0, 0);
_gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASOpenTopValveDone;
break;
case kASOpenTopValveDone:
@@ -929,9 +929,9 @@ void GnapEngine::scene18_updateAnimations() {
playGnapPullOutDevice(2, 7);
playGnapUseDevice(0, 0);
_gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
if (_gnapActionStatus == kASOpenRightValveNoGarbageCan)
_gnapActionStatus = kASOpenRightValveNoGarbageCanDone;
else
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index ebfdd72..60208bc 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -81,17 +81,17 @@ void GnapEngine::scene19_updateHotspots() {
setHotspot(kHSWalkArea3, 0, 0, 800, 437);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(26)) {
- _hotspots[kHSToy1].flags = SF_DISABLED;
- _hotspots[kHSToy2].flags = SF_DISABLED;
- _hotspots[kHSToy3].flags = SF_DISABLED;
- _hotspots[kHSToy4].flags = SF_DISABLED;
- _hotspots[kHSToy5].flags = SF_DISABLED;
- _hotspots[kHSToy6].flags = SF_DISABLED;
- _hotspots[kHSToy7].flags = SF_DISABLED;
- _hotspots[kHSShopAssistant].flags = SF_DISABLED;
- _hotspots[kHSPhone].flags = SF_DISABLED;
- _hotspots[kHSPlatypus].flags = SF_DISABLED;
- _hotspots[kHSPicture].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSToy1]._flags = SF_DISABLED;
+ _hotspots[kHSToy2]._flags = SF_DISABLED;
+ _hotspots[kHSToy3]._flags = SF_DISABLED;
+ _hotspots[kHSToy4]._flags = SF_DISABLED;
+ _hotspots[kHSToy5]._flags = SF_DISABLED;
+ _hotspots[kHSToy6]._flags = SF_DISABLED;
+ _hotspots[kHSToy7]._flags = SF_DISABLED;
+ _hotspots[kHSShopAssistant]._flags = SF_DISABLED;
+ _hotspots[kHSPhone]._flags = SF_DISABLED;
+ _hotspots[kHSPlatypus]._flags = SF_DISABLED;
+ _hotspots[kHSPicture]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
}
_hotspotsCount = 16;
}
@@ -182,14 +182,14 @@ void GnapEngine::scene19_run() {
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
_newSceneNum = 18;
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107B2, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(26))
setFlag(27);
else
platypusWalkTo(_hotspotsWalkPos[1].x + 1, _hotspotsWalkPos[1].y, -1, 0x107C5, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
}
break;
@@ -300,9 +300,9 @@ void GnapEngine::scene19_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = 0;
+ _mouseClickState._left = 0;
}
}
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 136f234..41a0cc4 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -266,10 +266,10 @@ void GnapEngine::scene20_run() {
initGnapPos(8, 6, 3);
initBeaverPos(9, 6, 4);
endSceneInit();
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 9, -1, 0x107C2, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
break;
}
}
@@ -351,11 +351,11 @@ void GnapEngine::scene20_run() {
_timers[4] = 0;
_isLeavingScene = 1;
_newSceneNum = 18;
- _hotspots[kHSWalkArea2].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideToyStore].x, _hotspotsWalkPos[kHSExitOutsideToyStore].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideToyStore].x, _hotspotsWalkPos[kHSExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
- _hotspots[kHSWalkArea2].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -479,9 +479,9 @@ void GnapEngine::scene20_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -494,9 +494,9 @@ void GnapEngine::scene20_run() {
if (!_isLeavingScene) {
if (_beaverActionStatus < 0) {
- _hotspots[kHSWalkArea1].y2 += 48;
+ _hotspots[kHSWalkArea1]._y2 += 48;
updateBeaverIdleSequence();
- _hotspots[kHSWalkArea1].y2 -= 48;
+ _hotspots[kHSWalkArea1]._y2 -= 48;
}
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index 56da904..6f1f406 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -60,9 +60,9 @@ void GnapEngine::scene21_updateHotspots() {
setHotspot(kHSWalkArea2, 698, 0, 800, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(4) || !isFlag(3))
- _hotspots[kHSBanana].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSBanana]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(3))
- _hotspots[kHSOldLady].flags = SF_DISABLED;
+ _hotspots[kHSOldLady]._flags = SF_DISABLED;
_hotspotsCount = 7;
}
@@ -187,10 +187,10 @@ void GnapEngine::scene21_run() {
break;
case GRAB_CURSOR:
_gnapIdleFacing = 5;
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(7, 6, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabOldLady;
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
_gnapIdleFacing = 7;
@@ -221,9 +221,9 @@ void GnapEngine::scene21_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 0290666..5c390d6 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -212,9 +212,9 @@ void GnapEngine::scene22_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index cafeb71..7257ab1 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -185,9 +185,9 @@ void GnapEngine::scene23_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index 236ee7d..b7660a3 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -171,9 +171,9 @@ void GnapEngine::scene24_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index cb82658..1539b31 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -91,11 +91,11 @@ void GnapEngine::scene25_playAnims(int index) {
}
_gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
delayTicksCursor(5);
- while (!_mouseClickState.left && !isKeyStatus1(Common::KEYCODE_ESCAPE) && !isKeyStatus1(Common::KEYCODE_SPACE) &&
+ while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) && !isKeyStatus1(Common::KEYCODE_SPACE) &&
!isKeyStatus1(29)) {
gameUpdateTick();
}
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(29);
clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -223,16 +223,16 @@ void GnapEngine::scene25_run() {
if (isFlag(2)) {
_isLeavingScene = true;
_newSceneNum = 26;
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitInsideCircusWorld].x, _hotspotsWalkPos[kHSExitInsideCircusWorld].y, 0, 0x107B1, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitInsideCircusWorld].x + 1, _hotspotsWalkPos[kHSExitInsideCircusWorld].y, -1, 0x107C2, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
} else {
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(4, 5, 0, 0x107BB, 1);
_gnapActionStatus = kASEnterCircusWihoutTicket;
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
}
}
break;
@@ -274,9 +274,9 @@ void GnapEngine::scene25_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -356,10 +356,10 @@ void GnapEngine::scene25_updateAnimations() {
_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
_s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
_s25_nextTicketVendorSequenceId = -1;
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
playGnapIdle(0, 0);
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, -1, 0x107BB, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASEnterCircusWihoutTicketDone;
break;
case kASEnterCircusWihoutTicketDone:
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index 644db6b..974525d 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -187,9 +187,9 @@ void GnapEngine::scene26_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 000a942..720080d 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -64,7 +64,7 @@ void GnapEngine::scene27_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 507);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(13))
- _hotspots[kHSBucket].flags = SF_DISABLED;
+ _hotspots[kHSBucket]._flags = SF_DISABLED;
_hotspotsCount = 9;
}
@@ -252,9 +252,9 @@ void GnapEngine::scene27_run() {
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitClown].x + 1, _hotspotsWalkPos[kHSExitClown].y, -1, 0x107C4, 1);
} else {
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitClown].x, 7, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea1].flags &= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= SF_WALKABLE;
_gnapActionStatus = kASTryEnterClownTent;
}
}
@@ -266,9 +266,9 @@ void GnapEngine::scene27_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
@@ -337,7 +337,7 @@ void GnapEngine::scene27_updateAnimations() {
case kASGrabBucket:
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
- _hotspots[kHSBucket].flags = SF_DISABLED;
+ _hotspots[kHSBucket]._flags = SF_DISABLED;
invAdd(kItemEmptyBucket);
setFlag(13);
_gameSys->setAnimation(0xD2, 39, 0);
@@ -361,9 +361,9 @@ void GnapEngine::scene27_updateAnimations() {
_gnapActionStatus = kASTryEnterClownTentDone;
break;
case kASTryEnterClownTentDone:
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_gnapActionStatus = -1;
break;
case kASEnterClownTent:
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 251e3b4..e39bb8d 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -65,9 +65,9 @@ void GnapEngine::scene28_updateHotspots() {
setHotspot(kHSWalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (invHas(kItemHorn))
- _hotspots[kHSHorn].flags = SF_DISABLED;
+ _hotspots[kHSHorn]._flags = SF_DISABLED;
if (isFlag(22))
- _hotspots[kHSEmptyBucket].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSEmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 8;
}
@@ -178,9 +178,9 @@ void GnapEngine::scene28_run() {
} else {
_gnapIdleFacing = 5;
gnapWalkTo(2, 8, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASGrabHornFails;
}
break;
@@ -237,10 +237,10 @@ void GnapEngine::scene28_run() {
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
_newSceneNum = 27;
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BF, 1);
_gnapActionStatus = kASLeaveScene;
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x - 1, _hotspotsWalkPos[kHSExitOutsideClown].y, -1, 0x107C2, 1);
}
break;
@@ -276,9 +276,9 @@ void GnapEngine::scene28_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 4433c0a..666ec9e 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -54,7 +54,7 @@ void GnapEngine::scene29_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 478);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (invHas(kItemHorn))
- _hotspots[kHSMonkey].flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSMonkey]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 7;
}
@@ -221,9 +221,9 @@ void GnapEngine::scene29_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
}
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 85e6614..48b97bd 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -127,9 +127,9 @@ void GnapEngine::scene30_run() {
case kHSPillMachine:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemDiceQuarterHole && !isFlag(23)) {
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASUsePillMachine;
hasTakenPill = true;
} else if (_grabCursorSpriteIndex >= 0) {
@@ -171,9 +171,9 @@ void GnapEngine::scene30_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 39bb1bb..17cde86 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -151,9 +151,9 @@ void GnapEngine::scene31_run() {
break;
case GRAB_CURSOR:
gnapWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, -1, -1, 1);
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 0, 0x107B9, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_gnapActionStatus = kASUseMeasuringClown;
_timers[4] = 300;
break;
@@ -164,9 +164,9 @@ void GnapEngine::scene31_run() {
if (!invHas(kItemBucketWithBeer)) {
gnapUseDeviceOnBeaver();
platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, 1, 0x107C2, 1);
- _hotspots[kHSWalkArea1].flags |= SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
- _hotspots[kHSWalkArea1].flags &= ~SF_WALKABLE;
+ _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
_beaverActionStatus = kASPlatMeasuringClown;
_gnapActionStatus = kASPlatMeasuringClown;
_timers[4] = 300;
@@ -241,9 +241,9 @@ void GnapEngine::scene31_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
}
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 9eaf4d2..fca05ee 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -150,9 +150,9 @@ void GnapEngine::scene32_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = 0;
+ _mouseClickState._left = 0;
}
scene32_updateAnimations();
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index fc66b15..b601d5f 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -222,9 +222,9 @@ void GnapEngine::scene33_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index f807728..a53d5b0 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -73,21 +73,21 @@ void GnapEngine::scene38_updateHotspots() {
setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
- _hotspots[kHSPlatypus].flags = SF_WALKABLE | SF_DISABLED;
+ _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
- _hotspots[kHSExitCave].flags = SF_EXIT_D_CURSOR;
+ _hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSExitCave].flags = SF_EXIT_D_CURSOR;
+ _hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
- _hotspots[kHSTrapDoorLid1].flags = SF_DISABLED;
+ _hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSTrapDoorLid1].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
- _hotspots[kHSTrapDoorLid2].flags = SF_DISABLED;
+ _hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSTrapDoorLid2].flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
- _hotspots[kHSWalkArea6].flags = 0;
+ _hotspots[kHSWalkArea6]._flags = SF_NONE;
_hotspotsCount = 13;
}
@@ -224,12 +224,12 @@ void GnapEngine::scene38_run() {
break;
default:
- if (_mouseClickState.left) {
+ if (_mouseClickState._left) {
if (_gnapActionStatus == kASHoldingHuntingTrophy)
_gnapActionStatus = kASReleaseHuntingTrophy;
else if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index 4ba8e16..b8a5f1e 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -172,9 +172,9 @@ void GnapEngine::scene39_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0) {
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState.left = false;
+ _mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index fe91dbf..99b62f6 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -156,8 +156,8 @@ void GnapEngine::scene40_run() {
break;
default:
- if (_mouseClickState.left && _gnapActionStatus < 0)
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0)
+ _mouseClickState._left = false;
break;
}
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index ff90193..b84c4ba 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -168,10 +168,10 @@ void GnapEngine::scene41_run() {
playSound(0x1094B, 1);
if (!isFlag(12)) {
- _hotspots[kHSToyUfo].x1 = _toyUfoX - 25;
- _hotspots[kHSToyUfo].y1 = _toyUfoY - 20;
- _hotspots[kHSToyUfo].x2 = _toyUfoX + 25;
- _hotspots[kHSToyUfo].y2 = _toyUfoY + 20;
+ _hotspots[kHSToyUfo]._x1 = _toyUfoX - 25;
+ _hotspots[kHSToyUfo]._y1 = _toyUfoY - 20;
+ _hotspots[kHSToyUfo]._x2 = _toyUfoX + 25;
+ _hotspots[kHSToyUfo]._y2 = _toyUfoY + 20;
}
updateMouseCursor();
@@ -354,8 +354,8 @@ void GnapEngine::scene41_run() {
}
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12)) {
int sequenceId;
if (_leftClickMouseX >= 400) {
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 33f437b..c15919a 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -73,7 +73,7 @@ void GnapEngine::scene42_updateHotspots() {
setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
if ((isFlag(20) || isFlag(18)) && isFlag(23) && !isFlag(24))
- _hotspots[kHSUfoHotSauce].flags = SF_GRAB_CURSOR;
+ _hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
_hotspotsCount = 5;
} else {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
@@ -311,8 +311,8 @@ void GnapEngine::scene42_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12)) {
_toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 611e5c9..f7ba272 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -63,10 +63,10 @@ void GnapEngine::scene43_updateHotspots() {
setHotspot(kHSUfoBucket, 475, 290, 545, 365, SF_DISABLED);
setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
if (isFlag(19))
- _hotspots[kHSUfoBucket].flags = SF_GRAB_CURSOR;
+ _hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
// NOTE Bug in the original. Key hotspot wasn't disabled.
if (isFlag(14))
- _hotspots[kHSUfoKey].flags = SF_DISABLED;
+ _hotspots[kHSUfoKey]._flags = SF_DISABLED;
_hotspotsCount = 6;
} else {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
@@ -80,7 +80,7 @@ void GnapEngine::scene43_updateHotspots() {
setHotspot(kHSWalkArea2, 465, 0, 800, 493);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(14))
- _hotspots[kHSKey].flags = SF_DISABLED;
+ _hotspots[kHSKey]._flags = SF_DISABLED;
_hotspotsCount = 10;
}
}
@@ -311,8 +311,8 @@ void GnapEngine::scene43_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12) && (_toyUfoActionStatus == 5 || _toyUfoActionStatus == -1)) {
_toyUfoActionStatus = 5;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 2733695..bcc435e 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -72,9 +72,9 @@ void GnapEngine::scene44_updateHotspots() {
setHotspot(kHSWalkArea2, 617, 0, 800, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(13))
- _hotspots[kHSKissingLady].flags = SF_DISABLED;
+ _hotspots[kHSKissingLady]._flags = SF_DISABLED;
if (isFlag(15))
- _hotspots[kHSSpring].flags = SF_DISABLED;
+ _hotspots[kHSSpring]._flags = SF_DISABLED;
_hotspotsCount = 10;
}
}
@@ -356,8 +356,8 @@ void GnapEngine::scene44_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12)) {
_toyUfoActionStatus = 7;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index ba58304..3e1b529 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -70,14 +70,14 @@ void GnapEngine::scene45_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 472);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(22)) {
- _hotspots[kHSPlatypus].flags = SF_DISABLED;
- _hotspots[kHSExitUfoParty].flags = SF_DISABLED;
- _hotspots[kHSExitShoe].flags = SF_DISABLED;
- _hotspots[kHSExitRight].flags = SF_DISABLED;
- _hotspots[kHSExitDiscoBall].flags = SF_EXIT_U_CURSOR;
+ _hotspots[kHSPlatypus]._flags = SF_DISABLED;
+ _hotspots[kHSExitUfoParty]._flags = SF_DISABLED;
+ _hotspots[kHSExitShoe]._flags = SF_DISABLED;
+ _hotspots[kHSExitRight]._flags = SF_DISABLED;
+ _hotspots[kHSExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
}
if (isFlag(23) || isFlag(22))
- _hotspots[kHSDiscoBall].flags = SF_DISABLED;
+ _hotspots[kHSDiscoBall]._flags = SF_DISABLED;
_hotspotsCount = 8;
}
}
@@ -327,8 +327,8 @@ void GnapEngine::scene45_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12)) {
_toyUfoActionStatus = 3;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 86855bb..ec06113 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -271,8 +271,8 @@ void GnapEngine::scene46_run() {
}
- if (_mouseClickState.left && _gnapActionStatus < 0) {
- _mouseClickState.left = false;
+ if (_mouseClickState._left && _gnapActionStatus < 0) {
+ _mouseClickState._left = false;
if (isFlag(12)) {
_toyUfoActionStatus = 4;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index 20486eb..cc7b791 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -159,7 +159,7 @@ void GnapEngine::scene53_runChitChatLine() {
_s53_currHandSequenceId = 0x5E;
}
- _hotspots[1].flags = SF_DISABLED;
+ _hotspots[1]._flags = SF_DISABLED;
while (!flag) {
Commit: e7e585fd9b0279272b9d966a5b1bf36c52baa49d
https://github.com/scummvm/scummvm/commit/e7e585fd9b0279272b9d966a5b1bf36c52baa49d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce variable scope, some renaming
Changed paths:
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene18.cpp
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 54cf5b5..e2da08e 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -328,10 +328,10 @@ void GnapEngine::scene10_run() {
playSound(0x12B, 0);
}
if (!_timers[5]) {
- int sequenceId;
_timers[5] = getRandom(100) + 100;
_gnapRandomValue = getRandom(4);
if (_gnapRandomValue) {
+ int sequenceId;
if (_gnapRandomValue == 1) {
sequenceId = 0x8A5;
} else if (_gnapRandomValue == 2) {
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 7363468..e00b525 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -134,7 +134,7 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
};
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
- int v13, v12, v5, v10, v11, v15, v16, a2;
+ int v13, v12, v5, v10, v11, direction;
if (x >= 0)
v13 = x;
@@ -161,9 +161,9 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
gnapDatNum = _gnapSequenceDatNum;
gnapGridX = _gnapX;
if (_gnapX <= v13)
- v15 = 1;
+ direction = 1;
else
- v15 = -1;
+ direction = -1;
} else {
if (_gnapY == _platY) {
if (v12 >= _gnapX) {
@@ -177,23 +177,24 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
gnapId = _gnapId;
gnapDatNum = _gnapSequenceDatNum;
gnapGridX = _gnapX;
- if (v12 < _gnapX)
- v15 = -1;
- else
- v15 = 1;
- v16 = v15 == -1;
- a2 = 20 * _gnapY + 1;
+ int seqId = 0;
+ if (v12 < _gnapX) {
+ direction = -1;
+ seqId = 1;
+ } else
+ direction = 1;
+ int a2 = 20 * _gnapY + 1;
do {
- if (isPointBlocked(gnapGridX + v15, _gnapY))
+ if (isPointBlocked(gnapGridX + direction, _gnapY))
break;
- a2 += v15;
- _gameSys->insertSequence(kSequenceIds[v16], a2,
+ a2 += direction;
+ _gameSys->insertSequence(kSequenceIds[seqId], a2,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqSyncWait, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- gnapSeqId = kSequenceIds[v16];
+ gnapSeqId = kSequenceIds[seqId];
gnapId = a2;
gnapDatNum = 0;
- gnapGridX += v15;
+ gnapGridX += direction;
} while (v12 != gnapGridX);
}
@@ -201,14 +202,14 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
_gnapSequenceId = ridToEntryIndex(argC);
_gnapSequenceDatNum = ridToDatIndex(argC);
} else {
- if (v15 == 1)
+ if (direction == 1)
_gnapSequenceId = 0x20A;
else
_gnapSequenceId = 0x209;
_gnapSequenceDatNum = 0;
}
- if (v15 == 1)
+ if (direction == 1)
_gnapIdleFacing = 1;
else
_gnapIdleFacing = 3;
Commit: cfaa49f5fd8be46ca448b09aec2869a49ba7e197
https://github.com/scummvm/scummvm/commit/cfaa49f5fd8be46ca448b09aec2869a49ba7e197
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce variable scope, some renaming. Change the type of parameter to boolean
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene42.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7894ebd..c05706d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -690,9 +690,9 @@ public:
Graphics::Surface *_s18_cowboyHatSurface;
int scene18_init();
void scene18_updateHotspots();
- void scene18_gnapCarryGarbageCanTo(int a1, int arg4, int animationIndex, int argC, int a5);
+ void scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
void scene18_putDownGarbageCan(int animationIndex);
- void scene18_platEndPhoning(int a1);
+ void scene18_platEndPhoning(bool platFl);
void scene18_closeHydrantValve();
void scene18_waitForGnapAction();
void scene18_run();
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index e00b525..4d16486 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -126,24 +126,24 @@ void GnapEngine::scene18_updateHotspots() {
}
void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
+ // CHECKME: (x, y) is always set to (-1, -1)
- // TODO Cleanup
-
+ // TODO Cleanup
static const int kSequenceIds[] = {
0x203, 0x204
};
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
- int v13, v12, v5, v10, v11, direction;
+ int clippedX, v12, v5, v10, v11, direction;
if (x >= 0)
- v13 = x;
+ clippedX = x;
else
- v13 = (_leftClickMouseX - _gridMinX + 37) / 75;
- if (v13 >= _gnapX)
- v10 = v13 - 1;
+ clippedX = (_leftClickMouseX - _gridMinX + 37) / 75;
+ if (clippedX >= _gnapX)
+ v10 = clippedX - 1;
else
- v10 = v13 + 1;
+ v10 = clippedX + 1;
if (a5 < 0)
a5 = 4;
@@ -160,7 +160,7 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
gnapId = _gnapId;
gnapDatNum = _gnapSequenceDatNum;
gnapGridX = _gnapX;
- if (_gnapX <= v13)
+ if (_gnapX <= clippedX)
direction = 1;
else
direction = -1;
@@ -257,7 +257,7 @@ void GnapEngine::scene18_putDownGarbageCan(int animationIndex) {
gameUpdateTick();
}
-void GnapEngine::scene18_platEndPhoning(int a1) {
+void GnapEngine::scene18_platEndPhoning(bool platFl) {
if (isFlag(26)) {
_s18_platPhoneIter = 0;
_s18_platPhoneCtr = 0;
@@ -271,7 +271,7 @@ void GnapEngine::scene18_platEndPhoning(int a1) {
_gameSys->removeSequence(0x21F, 254, true);
_gameSys->setAnimation(0, 0, 3);
clearFlag(26);
- if (a1) {
+ if (platFl) {
_beaverActionStatus = kASPlatComesHere;
_timers[6] = 50;
_sceneWaiting = true;
@@ -355,7 +355,7 @@ void GnapEngine::scene18_run() {
_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
_s18_currPhoneSequenceId = -1;
- scene18_platEndPhoning(1);
+ scene18_platEndPhoning(true);
clearFlag(27);
} else {
_s18_currPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr];
@@ -365,7 +365,7 @@ void GnapEngine::scene18_run() {
endSceneInit();
}
if (isFlag(27)) {
- scene18_platEndPhoning(1);
+ scene18_platEndPhoning(true);
clearFlag(27);
} else {
_gameSys->setAnimation(_s18_currPhoneSequenceId, 254, 3);
@@ -487,7 +487,7 @@ void GnapEngine::scene18_run() {
playGnapImpossible(0, 0);
} else {
if (isFlag(26))
- scene18_platEndPhoning(1);
+ scene18_platEndPhoning(true);
if (_grabCursorSpriteIndex >= 0) {
if (!isFlag(9))
playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1),
@@ -684,7 +684,7 @@ void GnapEngine::scene18_run() {
gnapWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(26))
- scene18_platEndPhoning(0);
+ scene18_platEndPhoning(false);
else
platypusWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
@@ -1018,7 +1018,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
_s18_currPhoneSequenceId = _s18_nextPhoneSequenceId;
} else {
- scene18_platEndPhoning(1);
+ scene18_platEndPhoning(true);
}
}
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index c15919a..1399cbe 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -374,8 +374,6 @@ void GnapEngine::scene42_run() {
}
void GnapEngine::scene42_updateAnimations() {
- int sequenceId;
-
if (_gameSys->getAnimationStatus(0) == 2) {
switch (_gnapActionStatus) {
case kASLeaveScene:
@@ -391,6 +389,7 @@ void GnapEngine::scene42_updateAnimations() {
case kASUseQuarterWithBBQVendor:
case kASGrabChickenLeg:
if (_gameSys->getAnimationStatus(2) == 2) {
+ int sequenceId;
if (_gnapActionStatus == kASUseQuarterWithBBQVendor) {
invRemove(kItemDiceQuarterHole);
invAdd(kItemChickenBucket);
Commit: b6ba5cfd89bed28dfab39f5af7b445b0041c2c7e
https://github.com/scummvm/scummvm/commit/b6ba5cfd89bed28dfab39f5af7b445b0041c2c7e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce the scope of a couple of variables, make use of enum values in calls to InsertSequence
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/grid.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene50.cpp
engines/gnap/scenes/scene51.cpp
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 08861f4..e6a789a 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -165,7 +165,7 @@ Common::Error GnapEngine::run() {
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
- _gameSys->insertSequence(0x11b, 100, -1, -1, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x11b, 100, -1, -1, kSeqNone, 0, 0, 0);
CursorMan.showMouse(true);
@@ -1559,7 +1559,7 @@ void GnapEngine::gnapIdle() {
_gnapSequenceId == 0x831 || _gnapSequenceId == 0x89A)) {
_gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 32, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncExists, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
_gnapSequenceDatNum = 1;
}
@@ -1570,7 +1570,7 @@ void GnapEngine::gnapActionIdle(int sequenceId) {
ridToEntryIndex(sequenceId) == _gnapSequenceId) {
_gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 32, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncExists, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
_gnapSequenceDatNum = 1;
}
@@ -1580,6 +1580,7 @@ void GnapEngine::playGnapSequence(int sequenceId) {
_timers[2] = getRandom(30) + 20;
_timers[3] = 300;
gnapIdle();
+ // CHECKME: Check the value of the flag
_gameSys->insertSequence(sequenceId, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
9, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -1668,13 +1669,13 @@ void GnapEngine::updateGnapIdleSequence() {
if (_gnapIdleFacing == 1) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
} else if (_gnapIdleFacing == 3) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BE;
_gnapSequenceDatNum = 1;
}
@@ -1702,13 +1703,13 @@ void GnapEngine::updateGnapIdleSequence2() {
if (_gnapIdleFacing == 1) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
} else if (_gnapIdleFacing == 3) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BE;
_gnapSequenceDatNum = 1;
}
@@ -1752,7 +1753,7 @@ void GnapEngine::initGnapPos(int gridX, int gridY, int facing) {
_gnapSequenceDatNum = 1;
_gameSys->insertSequence(makeRid(1, _gnapSequenceId), 20 * _gnapY,
0, 0,
- 1, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
}
void GnapEngine::gnapInitBrainPulseRndValue() {
@@ -1766,13 +1767,13 @@ void GnapEngine::gnapUseDeviceOnBeaver() {
if (_beaverFacing != 0) {
_gameSys->insertSequence(makeRid(1, 0x7D5), _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
- 8, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_beaverSequenceId = 0x7D5;
_beaverSequenceDatNum = 1;
} else {
_gameSys->insertSequence(makeRid(1, 0x7D4), _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
- 8, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_beaverSequenceId = 0x7D4;
_beaverSequenceDatNum = 1;
}
@@ -1780,7 +1781,7 @@ void GnapEngine::gnapUseDeviceOnBeaver() {
int newSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
_gameSys->insertSequence(makeRid(1, newSequenceId), _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = newSequenceId;
_gnapSequenceDatNum = 1;
@@ -1838,12 +1839,12 @@ void GnapEngine::gnapKissPlatypus(int callback) {
_gameSys->setAnimation(0x10847, _gnapId, 0);
_gameSys->insertSequence(0x10847, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 15 * (5 * _gnapX - 20) - (21 - _gridMinX), 48 * (_gnapY - 6) - (146 - _gridMinY));
+ kSeqSyncWait, 0, 15 * (5 * _gnapX - 20) - (21 - _gridMinX), 48 * (_gnapY - 6) - (146 - _gridMinY));
_gnapSequenceDatNum = 1;
_gnapSequenceId = 0x847;
_gameSys->insertSequence(0x107CB, _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
- 8, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_beaverSequenceDatNum = 1;
_beaverSequenceId = 0x7CB;
_beaverFacing = 0;
@@ -1868,12 +1869,12 @@ void GnapEngine::gnapUseJointOnPlatypus() {
_gameSys->setAnimation(0x10876, _beaverId, 0);
_gameSys->insertSequence(0x10875, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 15 * (5 * _gnapX - 30), 48 * (_gnapY - 7));
+ kSeqSyncWait, 0, 15 * (5 * _gnapX - 30), 48 * (_gnapY - 7));
_gnapSequenceDatNum = 1;
_gnapSequenceId = 0x875;
_gameSys->insertSequence(0x10876, _beaverId,
_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
- 8, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
+ kSeqSyncWait, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
_beaverSequenceDatNum = 1;
_beaverSequenceId = 0x876;
_beaverFacing = 0;
@@ -1927,6 +1928,7 @@ int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
}
void GnapEngine::playBeaverSequence(int sequenceId) {
+ // CHECKME: Check the value of the flag
_gameSys->insertSequence(sequenceId, _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
9, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
@@ -2020,7 +2022,7 @@ void GnapEngine::initBeaverPos(int gridX, int gridY, int facing) {
_beaverSequenceDatNum = 1;
_gameSys->insertSequence(makeRid(1, _beaverSequenceId), 20 * _platY,
0, 0,
- 1, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqScale, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
}
////////////////////////////////////////////////////////////////////////////////
@@ -2166,7 +2168,7 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gameSys->setAnimation(sequenceId2, _gnapId, 0);
_gameSys->insertSequence(sequenceId2, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ kSeqSyncWait, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
_gnapSequenceId = sequenceId2;
_gnapSequenceDatNum = 0;
while (_gameSys->getAnimationStatus(0) != 2)
@@ -2180,7 +2182,7 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gameSys->setAnimation(sequenceId3, _gnapId, 0);
_gameSys->insertSequence(sequenceId3, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 8, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ kSeqSyncWait, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
removeFullScreenSprite();
showCursor();
_gnapSequenceId = sequenceId3;
@@ -2303,13 +2305,13 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
v16[0].id = 0;
_gameSys->insertSequence(seqId | 0x10000, 0,
_toyUfoSequenceId | 0x10000, _toyUfoId,
- 8, 0, v16[0].gridX1 - 365, v16[0].gridY1 - 128);
+ kSeqSyncWait, 0, v16[0].gridX1 - 365, v16[0].gridY1 - 128);
for (i = 1; i < v21; ++i) {
v16[i].sequenceId = seqId + (i % 8);
v16[i].id = i;
_gameSys->insertSequence(v16[i].sequenceId | 0x10000, v16[i].id,
v16[i - 1].sequenceId | 0x10000, v16[i - 1].id,
- 8, 0,
+ kSeqSyncWait, 0,
v16[i].gridX1 - 365, v16[i].gridY1 - 128);
}
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index baf1a67..5b2f5aa 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -581,12 +581,14 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;
if (_gnapWalkNodes[index].deltaX == 1 && _gnapWalkNodes[index].deltaY == 0) {
if (index % 2) {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7AB;
gnapSequenceId = 0x7AB;
} else {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
@@ -595,12 +597,14 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
} else if (_gnapWalkNodes[index].deltaX == -1 && _gnapWalkNodes[index].deltaY == 0) {
if (index % 2) {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7AF;
gnapSequenceId = 0x7AF;
} else {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
@@ -613,6 +617,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
else
_gnapWalkNodes[index].id += 10;
int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index].deltaX, _gnapWalkNodes[index].deltaY);
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
@@ -633,7 +638,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
} else if (animationIndex >= 0) {
_gameSys->setAnimation(0x107D3, 1, animationIndex);
- _gameSys->insertSequence(0x107D3, 1, 0, 0, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
if (sequenceId >= 0 && sequenceId != -1) {
@@ -694,10 +699,12 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
if (flags & 4) {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 0, 0);
} else {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
9, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
@@ -1234,12 +1241,14 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platWalkNodes[index].id = index + 20 * _platWalkNodes[index].gridY1;
if (_platWalkNodes[index].deltaX == 1 && _platWalkNodes[index].deltaY == 0) {
if (index % 2) {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7CD;
platSequenceId = 0x7CD;
} else {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
@@ -1248,12 +1257,14 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
}
} else if (_platWalkNodes[index].deltaX == -1 && _platWalkNodes[index].deltaY == 0) {
if (index % 2) {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7CF;
platSequenceId = 0x7CF;
} else {
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
@@ -1266,6 +1277,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
else
_platWalkNodes[index].id += 10;
int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index].deltaX, _platWalkNodes[index].deltaY);
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
@@ -1294,7 +1306,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId, animationIndex);
} else if (animationIndex >= 0) {
_gameSys->setAnimation(0x107D3, 1, animationIndex);
- _gameSys->insertSequence(0x107D3, 1, 0, 0, 0, 0, 0, 0);
+ _gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
if (sequenceId >= 0 && sequenceId != -1) {
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index a4d62c8..cd72020 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -498,7 +498,7 @@ void GnapEngine::scene02_updateAnimations() {
break;
case kASUseTwigWithChicken:
playGnapShowItem(5, 0, 0);
- _gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_s02_currChickenSequenceId = 0x155;
_s02_nextChickenSequenceId = -1;
_gnapActionStatus = -1;
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 7ca1c4a..95449f5 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -406,7 +406,7 @@ void GnapEngine::scene03_updateAnimations() {
gameUpdateTick();
removeFullScreenSprite();
_gameSys->setAnimation(0x1BA, 99, 1);
- _gameSys->insertSequence(0x1BA, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x1BA, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_beaverSequenceDatNum = 0;
_beaverSequenceId = 0x1BA;
_gnapActionStatus = -1;
@@ -415,7 +415,7 @@ void GnapEngine::scene03_updateAnimations() {
break;
case kASHypnotizeScaredPlat:
playGnapBrainPulsating(0, 0);
- _gameSys->insertSequence(0x1BF, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x1BF, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_gameSys->setAnimation(0x1BF, 99, 1);
while (_gameSys->getAnimationStatus(1) != 2)
gameUpdateTick();
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 233b754..2897f68 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -184,6 +184,7 @@ void GnapEngine::scene13_run() {
if (_gnapX == 5 && _gnapY == 5) {
_s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
_gameSys->setAnimation(_s13_backToiletCtr + 0xA3, _gnapId, 0);
+ // CHECKME: Check the value of the flag
_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
9, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index c86df4c..322cdd6 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -100,7 +100,7 @@ void GnapEngine::scene17_platHangUpPhone() {
_s17_platPhoneCtr = 0;
_beaverActionStatus = -1;
_gameSys->setAnimation(0x257, 254, 4);
- _gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (_gameSys->getAnimationStatus(4) != 2)
gameUpdateTick();
_gameSys->setAnimation(0x25B, _beaverId, 1);
@@ -265,6 +265,7 @@ void GnapEngine::scene17_run() {
_platY = 8;
_beaverId = 160;
_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
+ // CHECKME: Check the value of the flag
_gameSys->insertSequence(0x107C1, _beaverId, 0x241, _beaverId,
9, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 4d16486..5466360 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -219,6 +219,7 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
+ // CHECKME: Check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
9, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -264,7 +265,7 @@ void GnapEngine::scene18_platEndPhoning(bool platFl) {
_beaverActionStatus = -1;
if (_s18_currPhoneSequenceId != -1) {
_gameSys->setAnimation(0x21E, 254, 3);
- _gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (_gameSys->getAnimationStatus(3) != 2)
gameUpdateTick();
}
@@ -843,6 +844,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
_gameSys->removeSequence(0x20C, 19, true);
_gameSys->setAnimation(0x217, 39, 5);
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(0x217, 39, 0x216, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
@@ -945,6 +947,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->requestRemoveSequence(0x1F9, 19);
_gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x213, 39, 5);
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(0x214, 39, 0x213, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
@@ -961,6 +964,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
_gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x211, 39, 5);
+ // CHECKME: check the value of the flag
_gameSys->insertSequence(0x212, 39, 0x211, 39, 10, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 41a0cc4..788a7fa 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -551,8 +551,8 @@ void GnapEngine::scene20_updateAnimations() {
case kASTalkStonerGuyNoJoint:
_gameSys->setAnimation(0x170, 21, 2);
_gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, 32, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
stopSound(0x1A1);
scene20_stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
@@ -565,8 +565,8 @@ void GnapEngine::scene20_updateAnimations() {
case kASTalkStonerGuyHasJoint:
_gameSys->setAnimation(0x168, 21, 2);
_gameSys->setAnimation(379, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, 32, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
stopSound(0x1A1);
scene20_stopSounds();
@@ -589,8 +589,8 @@ void GnapEngine::scene20_updateAnimations() {
case kASTalkGroceryStoreGuy:
_gameSys->setAnimation(0x170, 21, 2);
_gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, 32, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
stopSound(0x1A1);
scene20_stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
@@ -606,8 +606,8 @@ void GnapEngine::scene20_updateAnimations() {
case kASGrabGroceryStoreGuy:
_gameSys->setAnimation(0x170, 21, 2);
_gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, 32, 0, 0, 0);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
stopSound(0x1A1);
scene20_stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
@@ -619,8 +619,8 @@ void GnapEngine::scene20_updateAnimations() {
case kASGrabGroceryStoreHat:
_gameSys->setAnimation(0x170, 21, 2);
_gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, 32, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, 32, 0, 0, 0);
+ _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
stopSound(0x1A1);
scene20_stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index 1539b31..b1bbfb4 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -352,7 +352,7 @@ void GnapEngine::scene25_updateAnimations() {
_s25_nextTicketVendorSequenceId = 0x5E;
_gameSys->setAnimation(0x5E, 39, 0);
_gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
- _gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, 32, 0, 0, 0);
+ _gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
_s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
_s25_nextTicketVendorSequenceId = -1;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 720080d..d241daf 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -353,7 +353,7 @@ void GnapEngine::scene27_updateAnimations() {
break;
case kASTryEnterClownTent:
_s27_nextJanitorSequenceId = 0xD1;
- _gameSys->insertSequence(0xD1, 39, _s27_currJanitorSequenceId, 39, 32, 0, 0, 0);
+ _gameSys->insertSequence(0xD1, 39, _s27_currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index 2e735e3..f4aa91f 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -123,13 +123,13 @@ void GnapEngine::scene47_initCutscene6() {
}
void GnapEngine::scene47_initCutscene7() {
- int v1 = 4, v0, v4, v2, v3;
+ int v0, v4, v2, v3;
_s99_dword_47F370[0] = 0x316;
_s99_dword_47F370[1] = 0x31A;
_s99_dword_47F370[2] = 0x314;
_s99_dword_47F370[3] = 0x31B;
- v1 = 4;
+ int v1 = 4;
if (!isFlag(3)) {
_s99_dword_47F370[4] = 0x31C;
v1 = 5;
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index e8415bb..e3683be 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -190,7 +190,7 @@ void GnapEngine::scene49_updateObstacle(int i) {
kSeqSyncWait, 0, 0, -50);
_gameSys->insertSequence(obstacle.collisionSequenceId, 256,
_s49_truckSequenceId, _s49_truckId,
- 32, 0, 0, -50);
+ kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = obstacle.collisionSequenceId;
_s49_truckId = 256;
obstacle.currSequenceId = obstacle.passedSequenceId;
@@ -460,7 +460,7 @@ void GnapEngine::scene49_run() {
int steerSequenceId = (_s49_truckLaneNum == 3) ? 0xB3 : 0xB1;
if (_s49_truckSequenceId == 0xAE || _s49_truckSequenceId == 0xAF) {
_gameSys->setAnimation(steerSequenceId, 256, 0);
- _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, 32, 0, 0, -50);
+ _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = steerSequenceId;
_s49_truckId = 256;
}
@@ -478,7 +478,7 @@ void GnapEngine::scene49_run() {
int steerSequenceId = (_s49_truckLaneNum == 1) ? 0xB0 : 0xB2;
if (_s49_truckSequenceId == 0xAD || _s49_truckSequenceId == 0xAE) {
_gameSys->setAnimation(steerSequenceId, 256, 0);
- _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, 32, 0, 0, -50);
+ _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = steerSequenceId;
_s49_truckId = 256;
}
diff --git a/engines/gnap/scenes/scene50.cpp b/engines/gnap/scenes/scene50.cpp
index ce24354..cd5b700 100644
--- a/engines/gnap/scenes/scene50.cpp
+++ b/engines/gnap/scenes/scene50.cpp
@@ -281,7 +281,7 @@ void GnapEngine::scene50_updateAnimations() {
_gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
_gameSys->setAnimation(0xB9, _s50_leftTongueNextId, 6);
_gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xB9, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, 32, 0, 0, 0);
+ _gameSys->insertSequence(0xB9, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncExists, 0, 0, 0);
_s50_rightTongueSequenceId = _s50_rightTongueNextSequenceId;
_s50_rightTongueNextSequenceId = -1;
_s50_leftTongueSequenceId = 0xB9;
@@ -323,7 +323,7 @@ void GnapEngine::scene50_updateAnimations() {
_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
_gameSys->setAnimation(0xC1, _s50_rightTongueNextId, 5);
_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xC1, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, 32, 0, 0, 0);
+ _gameSys->insertSequence(0xC1, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
_s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
_s50_leftTongueNextSequenceId = -1;
_s50_rightTongueSequenceId = 0xC1;
@@ -344,7 +344,7 @@ void GnapEngine::scene50_updateAnimations() {
_gameSys->setAnimation(0xBB, _s50_rightTongueNextId, 5);
_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBB, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, 32, 0, 0, 0);
+ _gameSys->insertSequence(0xBB, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
_s50_rightTongueSequenceId = 0xBB;
_s50_rightTongueId = _s50_rightTongueNextId;
_s50_rightTongueNextSequenceId = -1;
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index f56f9c9..1610e36 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -236,7 +236,6 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
bool jumpingLeft = false, jumpingRight = false;
int v6 = 0;
int v2 = 0;
- int v5 = 0;
int v8, v4;
int result = 0;
@@ -260,18 +259,19 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
}
if (jumpingRight || jumpingLeft) {
+ int v5 = 0;
int i;
for (i = 0; i < 6; ++i) {
if (_s51_items[i].isCollision) {
if (jumpingRight && _s51_items[i].x2 > v8 && _s51_items[i].x2 < v4) {
v5 = v8 - 359;
- if (v8 == 359)
+ if (v5 == 0)
v5 = 1;
_s51_platypusNextSequenceId = 0xB6;
break;
} else if (jumpingLeft && _s51_items[i].x2 < v4 && _s51_items[i].x2 > v8) {
v5 = v8 - 344;
- if (v8 == 344)
+ if (v5 == 0)
v5 = 1;
_s51_platypusNextSequenceId = 0xB7;
break;
@@ -294,7 +294,6 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
switch (item->currSequenceId) {
-
case 0xBD:
case 0xC0:
case 0xC1:
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index cc7b791..76dc6d7 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -110,11 +110,11 @@ void GnapEngine::scene53_runRandomCall() {
0x6A, 0x6B, 0x6C, 0x6D, 0x71
};
- int index;
-
++_s53_callsMadeCtr;
if (_s53_callsMadeCtr <= 10) {
+ int index;
+
do {
index = scene53_getRandomCallIndex();
} while (!_s53_isGnapPhoning && (index == 0 || index == 3 || index == 4 || index == 11));
Commit: db527374b78d75673b20d6a91e08b7c95a067d33
https://github.com/scummvm/scummvm/commit/db527374b78d75673b20d6a91e08b7c95a067d33
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene52.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e6a789a..ce81f36 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2194,12 +2194,12 @@ int GnapEngine::scene00_init() {
return 0x37C;
}
-void GnapEngine::toyUfoSetStatus(int a1) {
+void GnapEngine::toyUfoSetStatus(int flagNum) {
clearFlag(16);
clearFlag(17);
clearFlag(18);
clearFlag(19);
- setFlag(a1);
+ setFlag(flagNum);
}
int GnapEngine::toyUfoGetSequenceId() {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index c05706d..44d6e2e 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -841,7 +841,7 @@ public:
void scene40_updateAnimations();
// Scene 4x
- void toyUfoSetStatus(int a1);
+ void toyUfoSetStatus(int flagNum);
int toyUfoGetSequenceId();
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
@@ -917,7 +917,7 @@ public:
int scene49_init();
void scene49_updateHotspots();
void scene49_checkObstacles();
- void scene49_updateObstacle(int i);
+ void scene49_updateObstacle(int id);
void scene49_increaseScore(int amount);
void scene49_decreaseScore(int amount);
void scene49_refreshScoreBar();
@@ -1057,7 +1057,7 @@ public:
int scene52_shipCannonHitShield(int cannonNum);
int scene52_shipCannonHitAlien();
void scene52_shipExplode();
- int scene52_checkAlienRow(int a1);
+ int scene52_checkAlienRow(int rowNum);
void scene52_updateAlienRowXOfs();
void scene52_initAlienSize();
void scene52_playSound();
@@ -1066,7 +1066,7 @@ public:
void scene52_loseShip();
void scene52_initShields();
void scene52_initAnims();
- void scene52_drawScore(int a1);
+ void scene52_drawScore(int score);
void scene52_run();
// Scene 53
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index e3683be..19da920 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -140,9 +140,9 @@ void GnapEngine::scene49_checkObstacles() {
}
-void GnapEngine::scene49_updateObstacle(int i) {
+void GnapEngine::scene49_updateObstacle(int id) {
- Scene49Obstacle &obstacle = _s49_obstacles[i];
+ Scene49Obstacle &obstacle = _s49_obstacles[id];
obstacle.currId = obstacle.prevId;
@@ -167,7 +167,7 @@ void GnapEngine::scene49_updateObstacle(int i) {
if (obstacle.currSequenceId == obstacle.closerSequenceId) {
if (_s49_truckLaneNum == obstacle.laneNum) {
if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.collisionSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
@@ -177,14 +177,14 @@ void GnapEngine::scene49_updateObstacle(int i) {
} else if ((obstacle.laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
(obstacle.laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
(obstacle.laneNum == 3 && _s49_truckSequenceId == 0xB3)) {
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
obstacle.currSequenceId = obstacle.passedSequenceId;
} else {
_gameSys->setAnimation(obstacle.collisionSequenceId, 256, 0);
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
@@ -198,7 +198,7 @@ void GnapEngine::scene49_updateObstacle(int i) {
scene49_decreaseScore(30);
}
} else {
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
@@ -207,7 +207,7 @@ void GnapEngine::scene49_updateObstacle(int i) {
} else if (obstacle.currSequenceId == obstacle.passedSequenceId) {
if (_s49_truckLaneNum == obstacle.laneNum) {
if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.collisionSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
@@ -216,15 +216,15 @@ void GnapEngine::scene49_updateObstacle(int i) {
scene49_increaseScore(30);
}
} else if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.splashSequenceId, obstacle.prevId, i + 2);
+ _gameSys->setAnimation(obstacle.splashSequenceId, obstacle.prevId, id + 2);
_gameSys->insertSequence(obstacle.splashSequenceId, obstacle.prevId,
obstacle.currSequenceId, obstacle.currId,
kSeqSyncWait, 0, 0, -50);
obstacle.currSequenceId = obstacle.splashSequenceId;
}
} else {
- _gameSys->setAnimation(0, 0, i + 2);
- scene49_clearObstacle(i);
+ _gameSys->setAnimation(0, 0, id + 2);
+ scene49_clearObstacle(id);
}
}
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 02718ec..3696685 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -647,13 +647,11 @@ void GnapEngine::scene52_shipExplode() {
}
int GnapEngine::scene52_checkAlienRow(int rowNum) {
-
- int v4 = 0;
-
for (int i = 0; i < 5; ++i)
if (_s52_items[rowNum][i] >= 0)
return 0;
+ int v4 = 0;
for (int j = 0; j < 5; ++j)
if (_s52_items[rowNum][j] == -2) {
_gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
@@ -785,9 +783,9 @@ void GnapEngine::scene52_initAnims() {
_gameSys->setAnimation(0, 0, k + 9);
}
-void GnapEngine::scene52_drawScore(int a1) {
+void GnapEngine::scene52_drawScore(int score) {
char str[4];
- sprintf(str, "%03d", a1);
+ sprintf(str, "%03d", score);
_gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
_gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
}
Commit: deb1199c1da740ad1441a8deacc8cf5d40c81db6
https://github.com/scummvm/scummvm/commit/deb1199c1da740ad1441a8deacc8cf5d40c81db6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename SequenceFrame members
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 1612ba2..d18d102 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -30,8 +30,8 @@ namespace Gnap {
void GfxItem::testUpdRect(const Common::Rect &updRect) {
Common::Rect intersectingRect;
- if (!_updFlag && _prevFrame.spriteId != -1 &&
- _updRectsCount < 20 && intersectRect(intersectingRect, _prevFrame.rect, updRect))
+ if (!_updFlag && _prevFrame._spriteId != -1 &&
+ _updRectsCount < 20 && intersectRect(intersectingRect, _prevFrame._rect, updRect))
_updRects[_updRectsCount++] = intersectingRect;
}
@@ -123,10 +123,10 @@ void GameSys::requestClear2(bool resetFl) {
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
if (resetFl) {
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else {
gfxItem->_updFlag = false;
@@ -457,13 +457,13 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->_delayTicks = seqItem->_totalDuration + animation->field_4;
gfxItem->_updFlag = false;
gfxItem->_updRectsCount = 0;
- gfxItem->_prevFrame.duration = 0;
- gfxItem->_prevFrame.spriteId = -1;
- gfxItem->_prevFrame.soundId = -1;
- gfxItem->_prevFrame.unkValue = -1;
+ gfxItem->_prevFrame._duration = 0;
+ gfxItem->_prevFrame._spriteId = -1;
+ gfxItem->_prevFrame._soundId = -1;
+ gfxItem->_prevFrame._unusedVal = -1;
totalDuration = duration;
if ((seqItem->_flags & 4) && totalDuration > 0) {
- gfxItem->_prevFrame.duration = 1;
+ gfxItem->_prevFrame._duration = 1;
if (gfxItem->_delayTicks <= totalDuration)
gfxItem->_delayTicks = 0;
else
@@ -473,29 +473,29 @@ void GameSys::seqInsertGfx(int index, int duration) {
int j;
totalDuration -= gfxItem->_delayTicks;
gfxItem->_delayTicks = 0;
- for (j = gfxItem->_currFrameNum; j < animation->framesCount && animation->frames[j].duration <= totalDuration; ++j) {
- if (animation->frames[j].soundId != -1)
- _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[j].soundId);
- totalDuration -= animation->frames[j].duration;
+ for (j = gfxItem->_currFrameNum; j < animation->framesCount && animation->frames[j]._duration <= totalDuration; ++j) {
+ if (animation->frames[j]._soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[j]._soundId);
+ totalDuration -= animation->frames[j]._duration;
}
if (animation->framesCount > j)
gfxItem->_currFrame = animation->frames[j++];
else
gfxItem->_currFrame = animation->frames[j - 1];
- if (gfxItem->_currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
- gfxItem->_currFrame.rect.translate(seqItem->_x, seqItem->_y);
+ if (gfxItem->_currFrame._spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->_currFrame._rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->_flags & 1) && gfxItem->_currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame.rect.bottom <= _backgroundImageValue3) {
- int scaleValue = _backgroundImageValue2 + (gfxItem->_currFrame.rect.bottom - _backgroundImageValue1) *
+ if ((seqItem->_flags & 1) && gfxItem->_currFrame._rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame._rect.bottom <= _backgroundImageValue3) {
+ int scaleValue = _backgroundImageValue2 + (gfxItem->_currFrame._rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
- gfxItem->_currFrame.rect.top = gfxItem->_currFrame.rect.bottom - scaleValue * (gfxItem->_currFrame.rect.bottom - gfxItem->_currFrame.rect.top) / 1000;
- gfxItem->_currFrame.rect.right = scaleValue * (gfxItem->_currFrame.rect.right - gfxItem->_currFrame.rect.left) / 1000 + gfxItem->_currFrame.rect.left;
- gfxItem->_currFrame.isScaled = 1;
+ gfxItem->_currFrame._rect.top = gfxItem->_currFrame._rect.bottom - scaleValue * (gfxItem->_currFrame._rect.bottom - gfxItem->_currFrame._rect.top) / 1000;
+ gfxItem->_currFrame._rect.right = scaleValue * (gfxItem->_currFrame._rect.right - gfxItem->_currFrame._rect.left) / 1000 + gfxItem->_currFrame._rect.left;
+ gfxItem->_currFrame._isScaled = 1;
}
- gfxItem->_currFrame.duration -= totalDuration;
- if (gfxItem->_currFrame.soundId != -1)
- _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame.soundId);
+ gfxItem->_currFrame._duration -= totalDuration;
+ if (gfxItem->_currFrame._soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame._soundId);
gfxItem->_currFrameNum = j;
gfxItem->_updFlag = true;
} else {
@@ -518,17 +518,17 @@ void GameSys::seqRemoveGfx(int sequenceId, int id) {
if (seqLocateGfx(sequenceId, id, &gfxIndex)) {
GfxItem *gfxItem = &_gfxItems[gfxIndex];
while (gfxIndex < _gfxItemsCount && gfxItem->_sequenceId == sequenceId && gfxItem->_id == id) {
- if (gfxItem->_prevFrame.spriteId == -1) {
+ if (gfxItem->_prevFrame._spriteId == -1) {
--_gfxItemsCount;
if (gfxIndex != _gfxItemsCount)
memcpy(&_gfxItems[gfxIndex], &_gfxItems[gfxIndex + 1], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
} else {
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
++gfxIndex;
gfxItem = &_gfxItems[gfxIndex];
@@ -549,15 +549,15 @@ bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
if (gfxItem->_currFrameNum < animation->framesCount)
return false;
if (gfxItem->_updFlag) {
- if (gfxItem->_currFrame.duration > 0)
+ if (gfxItem->_currFrame._duration > 0)
return false;
- if (-gfxItem->_currFrame.duration < duration)
- duration = -gfxItem->_currFrame.duration;
+ if (-gfxItem->_currFrame._duration < duration)
+ duration = -gfxItem->_currFrame._duration;
} else {
- if (gfxItem->_prevFrame.duration > 0)
+ if (gfxItem->_prevFrame._duration > 0)
return false;
- if (-gfxItem->_prevFrame.duration < duration)
- duration = -gfxItem->_prevFrame.duration;
+ if (-gfxItem->_prevFrame._duration < duration)
+ duration = -gfxItem->_prevFrame._duration;
}
}
}
@@ -588,8 +588,8 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
if (gfxItem->_sequenceId == sequenceId && gfxItem->_id == id && animation) {
foundSequence = true;
if (animation->framesCount > gfxItem->_currFrameNum ||
- (gfxItem->_updFlag && gfxItem->_currFrame.duration > 1) ||
- gfxItem->_prevFrame.duration > 1)
+ (gfxItem->_updFlag && gfxItem->_currFrame._duration > 1) ||
+ gfxItem->_prevFrame._duration > 1)
foundSequence = false;
break;
}
@@ -736,9 +736,9 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect) {
debug(1, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
- frame.rect.left, frame.rect.top, frame.rect.right, frame.rect.bottom);
+ frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
- Common::Rect srcRect = subRect ? *subRect : frame.rect;
+ Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
@@ -748,7 +748,7 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
const int x = clipRect.left, y = clipRect.top;
- clipRect.translate(-frame.rect.left, -frame.rect.top);
+ clipRect.translate(-frame._rect.left, -frame._rect.top);
// TODO Save transparent flag somewhere
blitSurface32(_frontSurface, x, y, surface, clipRect, true);
@@ -757,9 +757,9 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
debug(1, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
- frame.spriteId, frame.rect.left, frame.rect.top, frame.rect.right, frame.rect.bottom);
+ frame._spriteId, frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
- Common::Rect srcRect = subRect ? *subRect : frame.rect;
+ Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
@@ -772,14 +772,14 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
const int x = clipRect.left, y = clipRect.top;
- debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame.isScaled);
+ debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled);
// 32bit sprite drawing
- if (frame.isScaled) {
+ if (frame._isScaled) {
Common::Rect sourceRect(0, 0, spriteResource->_width, spriteResource->_height);
- blitSpriteScaled32(_frontSurface, frame.rect, clipRect, sourcePixels, spriteResource->_width, sourceRect, sourcePalette);
+ blitSpriteScaled32(_frontSurface, frame._rect, clipRect, sourcePixels, spriteResource->_width, sourceRect, sourcePalette);
} else {
- clipRect.translate(-frame.rect.left, -frame.rect.top);
+ clipRect.translate(-frame._rect.left, -frame._rect.top);
blitSprite32(_frontSurface, x, y, sourcePixels, spriteResource->_width, clipRect, sourcePalette, true);//spriteResource->_transparent != 0);
}
@@ -806,41 +806,41 @@ void GameSys::drawSprites() {
if (!gfxItem2->_updFlag)
continue;
- if (gfxItem2->_prevFrame.spriteId != -1) {
+ if (gfxItem2->_prevFrame._spriteId != -1) {
int transparent = 0;
- if (gfxItem2->_currFrame.spriteId != -1 && !(gfxItem2->_flags & 2)) {
+ if (gfxItem2->_currFrame._spriteId != -1 && !(gfxItem2->_flags & 2)) {
if (gfxItem2->_flags & 1) {
transparent = 1;
} else {
- int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame.spriteId;
+ int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
transparent = spriteResource->_transparent;
_vm->_spriteCache->release(resourceId);
}
}
- if ((gfxItem2->_flags & 8) || gfxItem2->_currFrame.spriteId == -1 ||
- (!(gfxItem2->_flags & 2) && (!gfxItem2->_prevFrame.rect.equals(gfxItem2->_currFrame.rect) || !transparent))) {
- restoreBackgroundRect(gfxItem2->_prevFrame.rect);
+ if ((gfxItem2->_flags & 8) || gfxItem2->_currFrame._spriteId == -1 ||
+ (!(gfxItem2->_flags & 2) && (!gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || !transparent))) {
+ restoreBackgroundRect(gfxItem2->_prevFrame._rect);
for (int l = 0; l < _gfxItemsCount; ++l)
- _gfxItems[l].testUpdRect(gfxItem2->_prevFrame.rect);
+ _gfxItems[l].testUpdRect(gfxItem2->_prevFrame._rect);
}
}
- if (gfxItem2->_currFrame.spriteId != -1) {
+ if (gfxItem2->_currFrame._spriteId != -1) {
int transparent = 0;
if (gfxItem2->_flags & 1) {
transparent = 1;
} else if (!(gfxItem2->_flags & 2)) {
- int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame.spriteId;
+ int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
transparent = spriteResource->_transparent;
_vm->_spriteCache->release(resourceId);
}
if (((gfxItem2->_flags & 2) && !(gfxItem2->_flags & 8)) ||
- gfxItem2->_prevFrame.spriteId == -1 ||
- !gfxItem2->_prevFrame.rect.equals(gfxItem2->_currFrame.rect) || transparent) {
+ gfxItem2->_prevFrame._spriteId == -1 ||
+ !gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || transparent) {
for (int l = k; l < _gfxItemsCount; ++l)
- _gfxItems[l].testUpdRect(gfxItem2->_currFrame.rect);
+ _gfxItems[l].testUpdRect(gfxItem2->_currFrame._rect);
}
}
@@ -850,17 +850,17 @@ void GameSys::drawSprites() {
GfxItem *gfxItem5 = &_gfxItems[m];
debug(0, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
- m, gfxItem5->_updFlag, gfxItem5->_currFrame.spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
+ m, gfxItem5->_updFlag, gfxItem5->_currFrame._spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
if (gfxItem5->_updFlag) {
- if (gfxItem5->_currFrame.spriteId != -1) {
+ if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, 0);
//debug("seqDrawStaticFrame");
} else if (gfxItem5->_flags & 2) {
// TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
} else {
- int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame.spriteId;
+ int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
seqDrawSpriteFrame(spriteResource, gfxItem5->_currFrame, 0);
_vm->_spriteCache->release(resourceId);
@@ -877,7 +877,7 @@ void GameSys::drawSprites() {
seqDrawAviFrame(spriteData4, &gfxItem5->prevFrame, &gfxItem5->updRects[n], gfxItem5->flags & 8);
*/
} else {
- int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_prevFrame.spriteId;
+ int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_prevFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
seqDrawSpriteFrame(spriteResource, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
@@ -921,12 +921,12 @@ void GameSys::updateScreen() {
if (!gfxItem->_updFlag)
continue;
- if (gfxItem->_prevFrame.spriteId == -1 ||
- !intersectRect(srcRect, _screenRect, gfxItem->_prevFrame.rect)) {
- if (gfxItem->_currFrame.spriteId != -1 && intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame.rect))
+ if (gfxItem->_prevFrame._spriteId == -1 ||
+ !intersectRect(srcRect, _screenRect, gfxItem->_prevFrame._rect)) {
+ if (gfxItem->_currFrame._spriteId != -1 && intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame._rect))
updateRect(rcSrc2);
- } else if (gfxItem->_currFrame.spriteId != -1 &&
- intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame.rect)) {
+ } else if (gfxItem->_currFrame._spriteId != -1 &&
+ intersectRect(rcSrc2, _screenRect, gfxItem->_currFrame._rect)) {
updateRect(srcRect);
updateRect(rcSrc2);
}
@@ -971,10 +971,10 @@ void GameSys::handleReqRemoveSequenceItems() {
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
if (_removeSequenceItems[i]._forceFrameReset) {
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else {
gfxItem->_updFlag = false;
@@ -994,10 +994,10 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
gfxItem->_id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j]._surface == gfxItem->_surface) {
gfxItem->_flags = 0;
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
}
}
@@ -1027,7 +1027,7 @@ void GameSys::fatUpdateFrame() {
GfxItem *gfxItem = &_gfxItems[i];
SequenceAnimation *animation = gfxItem->_animation;
if ((gfxItem->_sequenceId != -1 && animation) || (gfxItem->_flags & 2) ||
- gfxItem->_prevFrame.spriteId != -1 || gfxItem->_prevFrame.duration > 0) {
+ gfxItem->_prevFrame._spriteId != -1 || gfxItem->_prevFrame._duration > 0) {
if (gfxItem->_sequenceId == -1 || gfxItem->_updFlag) {
if ((gfxItem->_flags & 2) && !gfxItem->_updFlag) {
// NOTE Skipped avi code
@@ -1038,28 +1038,28 @@ void GameSys::fatUpdateFrame() {
updFlag = false;
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if (!seqItem) {
updFlag = false;
gfxItem->_animation = nullptr;
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.spriteId = -1;
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._spriteId = -1;
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if ((seqItem->_flags & 4) && clockDelta > 1) {
updFlag = false;
if (gfxItem->_delayTicks < clockDelta) {
duration = clockDelta - gfxItem->_delayTicks;
gfxItem->_delayTicks = 0;
- if (gfxItem->_prevFrame.duration <= duration)
- gfxItem->_prevFrame.duration = 1;
+ if (gfxItem->_prevFrame._duration <= duration)
+ gfxItem->_prevFrame._duration = 1;
else
- gfxItem->_prevFrame.duration -= duration;
+ gfxItem->_prevFrame._duration -= duration;
} else {
gfxItem->_delayTicks -= clockDelta;
}
@@ -1067,46 +1067,46 @@ void GameSys::fatUpdateFrame() {
} else if (gfxItem->_delayTicks < clockDelta) {
duration = clockDelta - gfxItem->_delayTicks;
gfxItem->_delayTicks = 0;
- if (gfxItem->_prevFrame.duration <= duration) {
+ if (gfxItem->_prevFrame._duration <= duration) {
bool v20 = false;
- if (gfxItem->_prevFrame.duration > 0) {
- duration -= gfxItem->_prevFrame.duration;
- gfxItem->_prevFrame.duration = -duration;
+ if (gfxItem->_prevFrame._duration > 0) {
+ duration -= gfxItem->_prevFrame._duration;
+ gfxItem->_prevFrame._duration = -duration;
} else {
- gfxItem->_prevFrame.duration = 0;
+ gfxItem->_prevFrame._duration = 0;
v20 = true;
}
currFrameNum = gfxItem->_currFrameNum;
if (animation->framesCount > currFrameNum) {
updFlag = false;
while (animation->framesCount > currFrameNum &&
- animation->frames[currFrameNum].duration <= duration) {
- if (animation->frames[currFrameNum].soundId != -1)
- _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[currFrameNum].soundId);
- duration -= animation->frames[currFrameNum].duration;
+ animation->frames[currFrameNum]._duration <= duration) {
+ if (animation->frames[currFrameNum]._soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[currFrameNum]._soundId);
+ duration -= animation->frames[currFrameNum]._duration;
++currFrameNum;
}
if (animation->framesCount > currFrameNum)
gfxItem->_currFrame = animation->frames[currFrameNum++];
else
gfxItem->_currFrame = animation->frames[currFrameNum - 1];
- if (gfxItem->_currFrame.spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
- gfxItem->_currFrame.rect.translate(seqItem->_x, seqItem->_y);
+ if (gfxItem->_currFrame._spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
+ gfxItem->_currFrame._rect.translate(seqItem->_x, seqItem->_y);
// Update sprite scaling
- if ((seqItem->_flags & 1) && gfxItem->_currFrame.rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame.rect.bottom <= _backgroundImageValue3) {
- int v17 = _backgroundImageValue2 + (gfxItem->_currFrame.rect.bottom - _backgroundImageValue1) *
+ if ((seqItem->_flags & 1) && gfxItem->_currFrame._rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame._rect.bottom <= _backgroundImageValue3) {
+ int v17 = _backgroundImageValue2 + (gfxItem->_currFrame._rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
(_backgroundImageValue3 - _backgroundImageValue1);
- gfxItem->_currFrame.rect.top = gfxItem->_currFrame.rect.bottom - v17 * (gfxItem->_currFrame.rect.bottom - gfxItem->_currFrame.rect.top) / 1000;
- gfxItem->_currFrame.rect.right = v17 * (gfxItem->_currFrame.rect.right - gfxItem->_currFrame.rect.left) / 1000 + gfxItem->_currFrame.rect.left;
- gfxItem->_currFrame.isScaled = 1;
+ gfxItem->_currFrame._rect.top = gfxItem->_currFrame._rect.bottom - v17 * (gfxItem->_currFrame._rect.bottom - gfxItem->_currFrame._rect.top) / 1000;
+ gfxItem->_currFrame._rect.right = v17 * (gfxItem->_currFrame._rect.right - gfxItem->_currFrame._rect.left) / 1000 + gfxItem->_currFrame._rect.left;
+ gfxItem->_currFrame._isScaled = 1;
}
- gfxItem->_currFrame.duration -= duration;
- if (gfxItem->_currFrame.soundId != -1)
- _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame.soundId);
+ gfxItem->_currFrame._duration -= duration;
+ if (gfxItem->_currFrame._soundId != -1)
+ _soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | gfxItem->_currFrame._soundId);
gfxItem->_currFrameNum = currFrameNum;
gfxItem->_updFlag = true;
- } else if (v20 && gfxItem->_prevFrame.spriteId == -1) {
+ } else if (v20 && gfxItem->_prevFrame._spriteId == -1) {
--_gfxItemsCount;
if (_gfxItemsCount != i)
memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
@@ -1116,7 +1116,7 @@ void GameSys::fatUpdateFrame() {
}
} else {
updFlag = false;
- gfxItem->_prevFrame.duration -= duration;
+ gfxItem->_prevFrame._duration -= duration;
gfxItem->_updFlag = false;
}
} else {
@@ -1152,16 +1152,16 @@ void GameSys::fatUpdateFrame() {
gfxItem->_updFlag = true;
gfxItem->_updRectsCount = 0;
gfxItem->_surface = _newSpriteDrawItems[k]._surface;
- gfxItem->_prevFrame.duration = 0;
- gfxItem->_prevFrame.spriteId = -1;
- gfxItem->_prevFrame.soundId = -1;
- gfxItem->_prevFrame.unkValue = -1;
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.isScaled = 0;
- gfxItem->_currFrame.rect = _newSpriteDrawItems[k]._rect;
- gfxItem->_currFrame.spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_prevFrame._duration = 0;
+ gfxItem->_prevFrame._spriteId = -1;
+ gfxItem->_prevFrame._soundId = -1;
+ gfxItem->_prevFrame._unusedVal = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._isScaled = 0;
+ gfxItem->_currFrame._rect = _newSpriteDrawItems[k]._rect;
+ gfxItem->_currFrame._spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
}
}
_newSpriteDrawItemsCount = 0;
@@ -1172,12 +1172,12 @@ void GameSys::fatUpdateFrame() {
GfxItem *gfxItem = &_gfxItems[i];
if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
gfxItem->_id == _grabSpriteId && gfxItem->_surface == _grabSpriteSurface1) {
- gfxItem->_currFrame.duration = 0;
- gfxItem->_currFrame.isScaled = 0;
- gfxItem->_currFrame.rect = _grabSpriteRect;
- gfxItem->_currFrame.spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
- gfxItem->_currFrame.soundId = -1;
- gfxItem->_currFrame.unkValue = -1;
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._isScaled = 0;
+ gfxItem->_currFrame._rect = _grabSpriteRect;
+ gfxItem->_currFrame._spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
gfxItem->_surface = _grabSpriteSurface2;
break;
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index ab83b13..e1d991a 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -27,17 +27,17 @@ namespace Gnap {
// SequenceFrame
void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
- duration = stream.readUint16LE();
- isScaled = stream.readUint16LE();
- rect.left = stream.readUint32LE();
- rect.top = stream.readUint32LE();
- rect.right = stream.readUint32LE();
- rect.bottom = stream.readUint32LE();
- spriteId = stream.readUint32LE();
- soundId = stream.readUint32LE();
- unkValue = stream.readUint32LE();
+ _duration = stream.readUint16LE();
+ _isScaled = stream.readUint16LE();
+ _rect.left = stream.readUint32LE();
+ _rect.top = stream.readUint32LE();
+ _rect.right = stream.readUint32LE();
+ _rect.bottom = stream.readUint32LE();
+ _spriteId = stream.readUint32LE();
+ _soundId = stream.readUint32LE();
+ _unusedVal = stream.readUint32LE();
//isScaled = 0;//DEBUG
- debug(1, "SequenceFrame() spriteId: %d; soundId: %d", spriteId, soundId);
+ debug(1, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
}
// SequenceAnimation
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index b0f6a61..8e0c591 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -46,12 +46,12 @@ enum {
};
struct SequenceFrame {
- int16 duration;
- int16 isScaled;
- Common::Rect rect;
- int32 spriteId;
- int32 soundId;
- int32 unkValue;
+ int16 _duration;
+ int16 _isScaled;
+ Common::Rect _rect;
+ int32 _spriteId;
+ int32 _soundId;
+ int32 _unusedVal;
void loadFromStream(Common::MemoryReadStream &stream);
};
Commit: d546847b5a02f020f816d556ca16ee0df8a04756
https://github.com/scummvm/scummvm/commit/d546847b5a02f020f816d556ca16ee0df8a04756
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: More renaming in resource.h
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index d18d102..cced8f3 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -70,15 +70,15 @@ GameSys::GameSys(GnapEngine *vm)
GameSys::~GameSys() {
}
-void GameSys::insertSequence(int sequenceId, int a2, int sequenceId2, int a4, int flags, int totalDuration, int16 x, int16 y) {
- debug(0, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, a2, sequenceId2, a4, x, y);
+void GameSys::insertSequence(int sequenceId, int id, int sequenceId2, int id2, int flags, int totalDuration, int16 x, int16 y) {
+ debug(0, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, id, sequenceId2, id2, x, y);
Sequence sequence;
SequenceResource *sequenceResource = _vm->_sequenceCache->get(sequenceId);
sequenceResource->_sequenceId = sequenceId;
sequence._sequenceId = sequenceId;
- sequence._id = a2 != -1 ? a2 : sequenceResource->_field_8;
+ sequence._id = id != -1 ? id : sequenceResource->_defaultId;
sequence._sequenceId2 = sequenceId2 != (int32)0x80000000 ? sequenceId2 : sequenceResource->_sequenceId2;
- sequence._id2 = a4 != -1 ? a4 : sequenceResource->_field_10;
+ sequence._id2 = id2 != -1 ? id2 : sequenceResource->_defaultId2;
sequence._flags = flags != -1 ? flags : sequenceResource->_flags;
sequence._totalDuration = totalDuration != -1 ? totalDuration : sequenceResource->_totalDuration;
sequence._x = (x < 10000 && x > -10000) ? x : sequenceResource->_xOffs;
@@ -454,7 +454,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->_animation = animation;
gfxItem->_currFrameNum = 0;
gfxItem->_flags = 0;
- gfxItem->_delayTicks = seqItem->_totalDuration + animation->field_4;
+ gfxItem->_delayTicks = seqItem->_totalDuration + animation->_additionalDelay;
gfxItem->_updFlag = false;
gfxItem->_updRectsCount = 0;
gfxItem->_prevFrame._duration = 0;
@@ -473,12 +473,12 @@ void GameSys::seqInsertGfx(int index, int duration) {
int j;
totalDuration -= gfxItem->_delayTicks;
gfxItem->_delayTicks = 0;
- for (j = gfxItem->_currFrameNum; j < animation->framesCount && animation->frames[j]._duration <= totalDuration; ++j) {
+ for (j = gfxItem->_currFrameNum; j < animation->_framesCount && animation->frames[j]._duration <= totalDuration; ++j) {
if (animation->frames[j]._soundId != -1)
_soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[j]._soundId);
totalDuration -= animation->frames[j]._duration;
}
- if (animation->framesCount > j)
+ if (animation->_framesCount > j)
gfxItem->_currFrame = animation->frames[j++];
else
gfxItem->_currFrame = animation->frames[j - 1];
@@ -546,7 +546,7 @@ bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
found = true;
SequenceAnimation *animation = gfxItem->_animation;
if (animation) {
- if (gfxItem->_currFrameNum < animation->framesCount)
+ if (gfxItem->_currFrameNum < animation->_framesCount)
return false;
if (gfxItem->_updFlag) {
if (gfxItem->_currFrame._duration > 0)
@@ -587,7 +587,7 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
SequenceAnimation *animation = gfxItem->_animation;
if (gfxItem->_sequenceId == sequenceId && gfxItem->_id == id && animation) {
foundSequence = true;
- if (animation->framesCount > gfxItem->_currFrameNum ||
+ if (animation->_framesCount > gfxItem->_currFrameNum ||
(gfxItem->_updFlag && gfxItem->_currFrame._duration > 1) ||
gfxItem->_prevFrame._duration > 1)
foundSequence = false;
@@ -1077,16 +1077,16 @@ void GameSys::fatUpdateFrame() {
v20 = true;
}
currFrameNum = gfxItem->_currFrameNum;
- if (animation->framesCount > currFrameNum) {
+ if (animation->_framesCount > currFrameNum) {
updFlag = false;
- while (animation->framesCount > currFrameNum &&
+ while (animation->_framesCount > currFrameNum &&
animation->frames[currFrameNum]._duration <= duration) {
if (animation->frames[currFrameNum]._soundId != -1)
_soundIds.push_back((gfxItem->_sequenceId & 0xFFFF0000) | animation->frames[currFrameNum]._soundId);
duration -= animation->frames[currFrameNum]._duration;
++currFrameNum;
}
- if (animation->framesCount > currFrameNum)
+ if (animation->_framesCount > currFrameNum)
gfxItem->_currFrame = animation->frames[currFrameNum++];
else
gfxItem->_currFrame = animation->frames[currFrameNum - 1];
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 043dec3..fc137eb 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -101,7 +101,7 @@ class GameSys {
public:
GameSys(GnapEngine *vm);
~GameSys();
- void insertSequence(int sequenceId, int a2, int sequenceId2, int a4, int flags, int totalDuration, int16 x, int16 y);
+ void insertSequence(int sequenceId, int id, int sequenceId2, int id2, int flags, int totalDuration, int16 x, int16 y);
void insertDirtyRect(const Common::Rect &rect);
void removeSequence(int sequenceId, int id, bool resetFl);
void invalidateGrabCursorSprite(int id, Common::Rect &rect, Graphics::Surface *surface1, Graphics::Surface *surface2);
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index ce81f36..2edfcac 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -642,8 +642,8 @@ int GnapEngine::getSequenceTotalDuration(int resourceId) {
int maxValue = 0;
for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
SequenceAnimation *animation = &sequenceResource->_animations[i];
- if (animation->field_4 + animation->field_A > maxValue)
- maxValue = animation->field_4 + animation->field_A;
+ if (animation->_additionalDelay + animation->_maxTotalDuration > maxValue)
+ maxValue = animation->_additionalDelay + animation->_maxTotalDuration;
}
int totalDuration = maxValue + sequenceResource->_totalDuration;
_sequenceCache->release(resourceId);
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index e1d991a..17fe8f9 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -43,14 +43,14 @@ void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
// SequenceAnimation
void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
- field_0 = stream.readUint16LE();
- field_2 = stream.readUint16LE();
- field_4 = stream.readUint32LE();
- framesCount = stream.readUint16LE();
- field_A = stream.readUint16LE();
- debug(1, "SequenceAnimation() framesCount: %d", framesCount);
- frames = new SequenceFrame[framesCount];
- for (int i = 0; i < framesCount; ++i)
+ _unusedVal1 = stream.readUint16LE();
+ _unusedVal2 = stream.readUint16LE();
+ _additionalDelay = stream.readUint32LE();
+ _framesCount = stream.readUint16LE();
+ _maxTotalDuration = stream.readUint16LE();
+ debug(1, "SequenceAnimation() framesCount: %d", _framesCount);
+ frames = new SequenceFrame[_framesCount];
+ for (int i = 0; i < _framesCount; ++i)
frames[i].loadFromStream(stream);
}
@@ -58,11 +58,11 @@ void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
Common::MemoryReadStream stream(data, size, DisposeAfterUse::NO);
- _field_0 = stream.readUint32LE();
+ _unusedVal1 = stream.readUint32LE();
_sequenceId = stream.readUint32LE();
- _field_8 = stream.readUint32LE();
+ _defaultId = stream.readUint32LE();
_sequenceId2 = stream.readUint32LE();
- _field_10 = stream.readUint32LE();
+ _defaultId2 = stream.readUint32LE();
_flags = stream.readUint32LE();
_totalDuration = stream.readUint32LE();
_xOffs = stream.readUint16LE();
@@ -91,8 +91,8 @@ SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
_data = data;
_width = READ_LE_UINT16(_data);
_height = READ_LE_UINT16(_data + 2);
- _unk1 = READ_LE_UINT16(_data + 4);
- _unk2 = READ_LE_UINT16(_data + 6);
+ _unknownVal1 = READ_LE_UINT16(_data + 4);
+ _unknownVal2 = READ_LE_UINT16(_data + 6);
_transparent = READ_LE_UINT16(_data + 8);
_colorsCount = READ_LE_UINT16(_data + 10);
_palette = (uint32*)(_data + 12);
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 8e0c591..2ae933f 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -56,13 +56,13 @@ struct SequenceFrame {
};
struct SequenceAnimation {
- int16 field_0;
- int16 field_2;
- int32 field_4;
- int16 framesCount;
- int16 field_A;
+ int16 _unusedVal1;
+ int16 _unusedVal2;
+ int32 _additionalDelay;
+ int16 _framesCount;
+ int16 _maxTotalDuration;
SequenceFrame *frames;
- SequenceAnimation() : frames(0) {}
+ SequenceAnimation() : frames(nullptr) {}
~SequenceAnimation() { delete[] frames; }
void loadFromStream(Common::MemoryReadStream &stream);
};
@@ -72,11 +72,11 @@ public:
SequenceResource(int resourceId, byte *data, uint32 size);
~SequenceResource();
public:
- uint32 _field_0;
+ uint32 _unusedVal1;
int32 _sequenceId;
- int32 _field_8;
+ int32 _defaultId;
int32 _sequenceId2;
- uint32 _field_10;
+ uint32 _defaultId2;
uint32 _flags;
int32 _totalDuration;
int16 _xOffs;
@@ -94,8 +94,8 @@ public:
byte *_pixels;
uint32 *_palette;
int16 _width, _height;
- uint16 _unk1;
- uint16 _unk2;
+ uint16 _unknownVal1;
+ uint16 _unknownVal2;
uint16 _transparent;
uint16 _colorsCount;
};
Commit: 6b1a2f36498341ad409cdb8a9e0419e17ae0781c
https://github.com/scummvm/scummvm/commit/6b1a2f36498341ad409cdb8a9e0419e17ae0781c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: rename SoundItem members
Changed paths:
engines/gnap/sound.cpp
engines/gnap/sound.h
diff --git a/engines/gnap/sound.cpp b/engines/gnap/sound.cpp
index 9471d12..8fc216a 100644
--- a/engines/gnap/sound.cpp
+++ b/engines/gnap/sound.cpp
@@ -35,13 +35,13 @@ SoundMan::~SoundMan() {
void SoundMan::playSound(int resourceId, bool looping) {
SoundItem soundItem;
- soundItem.resourceId = resourceId;
+ soundItem._resourceId = resourceId;
SoundResource *soundResource = _vm->_soundCache->get(resourceId);
Common::MemoryReadStream *stream = new Common::MemoryReadStream(soundResource->_data, soundResource->_size, DisposeAfterUse::NO);
Audio::AudioStream *audioStream = Audio::makeLoopingAudioStream(Audio::makeWAVStream(stream, DisposeAfterUse::YES), looping ? 0 : 1);
- _vm->_mixer->playStream(Audio::Mixer::kPlainSoundType, &soundItem.handle, audioStream);
+ _vm->_mixer->playStream(Audio::Mixer::kPlainSoundType, &soundItem._handle, audioStream);
_items.push_back(soundItem);
@@ -50,8 +50,8 @@ void SoundMan::playSound(int resourceId, bool looping) {
void SoundMan::stopSound(int resourceId) {
const int index = find(resourceId);
if (index >= 0) {
- _vm->_soundCache->release(_items[index].resourceId);
- _vm->_mixer->stopHandle(_items[index].handle);
+ _vm->_soundCache->release(_items[index]._resourceId);
+ _vm->_mixer->stopHandle(_items[index]._handle);
_items.remove_at(index);
}
}
@@ -62,20 +62,20 @@ void SoundMan::setSoundVolume(int resourceId, int volume) {
bool SoundMan::isSoundPlaying(int resourceId) {
const int index = find(resourceId);
- return index >= 0 && _vm->_mixer->isSoundHandleActive(_items[index].handle);
+ return index >= 0 && _vm->_mixer->isSoundHandleActive(_items[index]._handle);
}
void SoundMan::stopAll() {
for (int index = 0; index < (int)_items.size(); ++index) {
- _vm->_soundCache->release(_items[index].resourceId);
- _vm->_mixer->stopHandle(_items[index].handle);
+ _vm->_soundCache->release(_items[index]._resourceId);
+ _vm->_mixer->stopHandle(_items[index]._handle);
}
}
void SoundMan::update() {
for (int index = 0; index < (int)_items.size(); ++index)
- if (!_vm->_mixer->isSoundHandleActive(_items[index].handle)) {
- _vm->_soundCache->release(_items[index].resourceId);
+ if (!_vm->_mixer->isSoundHandleActive(_items[index]._handle)) {
+ _vm->_soundCache->release(_items[index]._resourceId);
_items.remove_at(index);
--index;
}
@@ -83,7 +83,7 @@ void SoundMan::update() {
int SoundMan::find(int resourceId) {
for (int index = 0; index < (int)_items.size(); ++index)
- if (_items[index].resourceId == resourceId)
+ if (_items[index]._resourceId == resourceId)
return index;
return -1;
}
diff --git a/engines/gnap/sound.h b/engines/gnap/sound.h
index ec5888e..ced3ded 100644
--- a/engines/gnap/sound.h
+++ b/engines/gnap/sound.h
@@ -31,8 +31,8 @@
namespace Gnap {
struct SoundItem {
- int resourceId;
- Audio::SoundHandle handle;
+ int _resourceId;
+ Audio::SoundHandle _handle;
};
class SoundMan {
@@ -48,6 +48,7 @@ public:
protected:
GnapEngine *_vm;
Common::Array<SoundItem> _items;
+
int find(int resourceId);
};
Commit: e1debd6e26720e168815872bfe2b4fec0444f98b
https://github.com/scummvm/scummvm/commit/e1debd6e26720e168815872bfe2b4fec0444f98b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming in scene 43
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 44d6e2e..9f670f3 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -855,15 +855,18 @@ public:
void scene41_updateAnimations();
// Scene 42
- int _s42_currBBQVendorSequenceId, _s42_nextBBQVendorSequenceId;
+ int _s42_currBBQVendorSequenceId;
+ int _s42_nextBBQVendorSequenceId;
+
int scene42_init();
void scene42_updateHotspots();
void scene42_run();
void scene42_updateAnimations();
// Scene 43
- int _s43_dword_47F2B0;
- int _s43_dword_47F2B4;
+ int _currTwoHeadedGuySequenceId;
+ int _nextTwoHeadedGuySequenceId;
+
int scene43_init();
void scene43_updateHotspots();
void scene43_run();
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 1399cbe..8de3a69 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -196,11 +196,8 @@ void GnapEngine::scene42_run() {
break;
}
-
} else {
-
switch (_sceneClickedHotspot) {
-
case kHSDevice:
runMenu();
scene42_updateHotspots();
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index f7ba272..e0cc8ad 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -92,11 +92,11 @@ void GnapEngine::scene43_run() {
if (!isFlag(14))
_gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s43_dword_47F2B0 = 0x13C;
- _s43_dword_47F2B4 = -1;
+ _currTwoHeadedGuySequenceId = 0x13C;
+ _nextTwoHeadedGuySequenceId = -1;
_gameSys->setAnimation(0x13C, 1, 2);
- _gameSys->insertSequence(_s43_dword_47F2B0, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -332,27 +332,27 @@ void GnapEngine::scene43_run() {
updateGnapIdleSequence();
if (!_timers[4] && (!isFlag(12) || !isFlag(19))) {
_timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_dword_47F2B4 == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
_gnapRandomValue = getRandom(5);
switch (_gnapRandomValue) {
case 0:
- _s43_dword_47F2B4 = 0x13C;
+ _nextTwoHeadedGuySequenceId = 0x13C;
break;
case 1:
- _s43_dword_47F2B4 = 0x134;
+ _nextTwoHeadedGuySequenceId = 0x134;
break;
case 2:
- _s43_dword_47F2B4 = 0x135;
+ _nextTwoHeadedGuySequenceId = 0x135;
break;
case 3:
- _s43_dword_47F2B4 = 0x136;
+ _nextTwoHeadedGuySequenceId = 0x136;
break;
case 4:
- _s43_dword_47F2B4 = 0x13A;
+ _nextTwoHeadedGuySequenceId = 0x13A;
break;
}
- if (_s43_dword_47F2B4 == _s43_dword_47F2B0)
- _s43_dword_47F2B4 = -1;
+ if (_nextTwoHeadedGuySequenceId == _currTwoHeadedGuySequenceId)
+ _nextTwoHeadedGuySequenceId = -1;
}
}
}
@@ -376,13 +376,13 @@ void GnapEngine::scene43_run() {
}
void GnapEngine::scene43_updateAnimations() {
-
if (_gameSys->getAnimationStatus(0) == 2) {
switch (_gnapActionStatus) {
case 0:
_gameSys->setAnimation(0, 0, 0);
_sceneDone = true;
break;
+
case 1:
if (_gameSys->getAnimationStatus(2) == 2) {
_timers[2] = getRandom(30) + 20;
@@ -391,15 +391,16 @@ void GnapEngine::scene43_updateAnimations() {
_gnapSequenceId = 0x13D;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x13D, _gnapId, 0);
- _s43_dword_47F2B4 = 0x13B;
- _gameSys->insertSequence(0x13B, 1, _s43_dword_47F2B0, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s43_dword_47F2B4, 1, 2);
- _s43_dword_47F2B0 = _s43_dword_47F2B4;
- _s43_dword_47F2B4 = -1;
+ _nextTwoHeadedGuySequenceId = 0x13B;
+ _gameSys->insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
_timers[4] = getRandom(100) + 100;
_gnapActionStatus = -1;
}
break;
+
default:
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
@@ -408,24 +409,24 @@ void GnapEngine::scene43_updateAnimations() {
}
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_s43_dword_47F2B0 == 0x13A) {
+ if (_currTwoHeadedGuySequenceId == 0x13A) {
if (isFlag(19)) {
- _s43_dword_47F2B4 = 0x13E;
+ _nextTwoHeadedGuySequenceId = 0x13E;
stopSound(0x108F6);
} else if (getRandom(2) != 0) {
- _s43_dword_47F2B4 = 0x137;
+ _nextTwoHeadedGuySequenceId = 0x137;
} else {
- _s43_dword_47F2B4 = 0x138;
+ _nextTwoHeadedGuySequenceId = 0x138;
}
- } else if (_s43_dword_47F2B0 == 0x13E) {
+ } else if (_currTwoHeadedGuySequenceId == 0x13E) {
_sceneDone = true;
_newSceneNum = 54;
}
- if (_s43_dword_47F2B4 != -1) {
- _gameSys->insertSequence(_s43_dword_47F2B4, 1, _s43_dword_47F2B0, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s43_dword_47F2B4, 1, 2);
- _s43_dword_47F2B0 = _s43_dword_47F2B4;
- _s43_dword_47F2B4 = -1;
+ if (_nextTwoHeadedGuySequenceId != -1) {
+ _gameSys->insertSequence(_nextTwoHeadedGuySequenceId, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
_timers[4] = getRandom(100) + 100;
}
}
@@ -457,7 +458,7 @@ void GnapEngine::scene43_updateAnimations() {
_gnapActionStatus = 3;
break;
case 8:
- _s43_dword_47F2B4 = 0x13A;
+ _nextTwoHeadedGuySequenceId = 0x13A;
_toyUfoX = 514;
_toyUfoY = 125;
toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
Commit: 7eb67ad8517cc5f623f258ec5f83fd7cd9d1756d
https://github.com/scummvm/scummvm/commit/7eb67ad8517cc5f623f258ec5f83fd7cd9d1756d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Renaming in scene 44
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene44.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 9f670f3..f124897 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -873,10 +873,10 @@ public:
void scene43_updateAnimations();
// Scene 44
- int _s44_dword_47EB04;
- int _s44_dword_47EB08;
- int _s44_dword_47EB0C;
- int _s44_dword_47EB10;
+ int _nextSpringGuySequenceId;
+ int _nextKissingLadySequenceId;
+ int _currSpringGuySequenceId;
+ int _currKissingLadySequenceId;
int scene44_init();
void scene44_updateHotspots();
void scene44_run();
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index bcc435e..1041734 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -80,38 +80,37 @@ void GnapEngine::scene44_updateHotspots() {
}
void GnapEngine::scene44_run() {
-
queueInsertDeviceIcon();
_gameSys->insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(15))
- _s44_dword_47EB0C = 0xF8;
+ _currSpringGuySequenceId = 0xF8;
else
- _s44_dword_47EB0C = 0xF9;
+ _currSpringGuySequenceId = 0xF9;
- _s44_dword_47EB04 = -1;
- _gameSys->setAnimation(_s44_dword_47EB0C, 1, 4);
- _gameSys->insertSequence(_s44_dword_47EB0C, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _nextSpringGuySequenceId = -1;
+ _gameSys->setAnimation(_currSpringGuySequenceId, 1, 4);
+ _gameSys->insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(13)) {
if (_prevSceneNum != 50 || _sceneSavegameLoaded) {
- _s44_dword_47EB10 = 0xF6;
- _s44_dword_47EB08 = -1;
+ _currKissingLadySequenceId = 0xF6;
+ _nextKissingLadySequenceId = -1;
} else {
setGrabCursorSprite(kItemGum);
- _s44_dword_47EB10 = 0xF5;
- _s44_dword_47EB08 = 0xF6;
+ _currKissingLadySequenceId = 0xF5;
+ _nextKissingLadySequenceId = 0xF6;
_gameSys->setAnimation(0xF5, 1, 2);
}
} else {
- _s44_dword_47EB10 = 0xEC;
- _s44_dword_47EB08 = -1;
+ _currKissingLadySequenceId = 0xEC;
+ _nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0xEC, 1, 2);
}
- _gameSys->insertSequence(_s44_dword_47EB10, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -169,7 +168,6 @@ void GnapEngine::scene44_run() {
}
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094B))
playSound(0x1094B, 1);
@@ -308,7 +306,7 @@ void GnapEngine::scene44_run() {
case GRAB_CURSOR:
playGnapPullOutDevice(8, 0);
playGnapUseDevice(8, 0);
- _s44_dword_47EB04 = 0xFB;
+ _nextSpringGuySequenceId = 0xFB;
invAdd(kItemSpring);
setFlag(15);
scene44_updateHotspots();
@@ -371,50 +369,50 @@ void GnapEngine::scene44_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12) && _s44_dword_47EB10 != 0xF5)
+ if (_beaverActionStatus < 0 && !isFlag(12) && _currKissingLadySequenceId != 0xF5)
updateBeaverIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(12))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_dword_47EB08 == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextKissingLadySequenceId == -1) {
_gnapRandomValue = getRandom(20);
switch (_gnapRandomValue) {
case 0:
- _s44_dword_47EB08 = 0xED;
+ _nextKissingLadySequenceId = 0xED;
break;
case 1:
- _s44_dword_47EB08 = 0xEE;
+ _nextKissingLadySequenceId = 0xEE;
break;
case 2:
- _s44_dword_47EB08 = 0xF0;
+ _nextKissingLadySequenceId = 0xF0;
break;
case 3:
- _s44_dword_47EB08 = 0xF3;
+ _nextKissingLadySequenceId = 0xF3;
break;
case 4:
- _s44_dword_47EB08 = 0xF4;
+ _nextKissingLadySequenceId = 0xF4;
break;
default:
- _s44_dword_47EB08 = 0xEC;
+ _nextKissingLadySequenceId = 0xEC;
break;
}
- if (_s44_dword_47EB08 != 0xEC && _s44_dword_47EB08 == _s44_dword_47EB10)
- _s44_dword_47EB08 = -1;
+ if (_nextKissingLadySequenceId != 0xEC && _nextKissingLadySequenceId == _currKissingLadySequenceId)
+ _nextKissingLadySequenceId = -1;
}
}
if (!_timers[5]) {
_timers[5] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_dword_47EB04 == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextSpringGuySequenceId == -1) {
_gnapRandomValue = getRandom(5);
if (_gnapRandomValue != 0) {
if (!isFlag(15))
- _s44_dword_47EB04 = 0xF9;
+ _nextSpringGuySequenceId = 0xF9;
} else {
if (isFlag(15))
- _s44_dword_47EB04 = 0xF8;
+ _nextSpringGuySequenceId = 0xF8;
else
- _s44_dword_47EB04 = 0xFA;
+ _nextSpringGuySequenceId = 0xFA;
}
}
}
@@ -429,14 +427,11 @@ void GnapEngine::scene44_run() {
_timers[4] = getRandom(20) + 20;
}
- gameUpdateTick();
-
+ gameUpdateTick();
}
-
}
void GnapEngine::scene44_updateAnimations() {
-
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
@@ -444,10 +439,10 @@ void GnapEngine::scene44_updateAnimations() {
_sceneDone = true;
break;
case 1:
- _s44_dword_47EB08 = 0xEF;
+ _nextKissingLadySequenceId = 0xEF;
break;
case 2:
- _s44_dword_47EB08 = 0xF2;
+ _nextKissingLadySequenceId = 0xF2;
break;
}
_gnapActionStatus = -1;
@@ -462,7 +457,7 @@ void GnapEngine::scene44_updateAnimations() {
_beaverSequenceId = 0xFE;
_beaverSequenceDatNum = 0;
_gameSys->setAnimation(0xFE, _beaverId, 1);
- _gameSys->removeSequence(_s44_dword_47EB10, 1, true);
+ _gameSys->removeSequence(_currKissingLadySequenceId, 1, true);
_beaverActionStatus = 5;
}
break;
@@ -477,31 +472,31 @@ void GnapEngine::scene44_updateAnimations() {
}
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_s44_dword_47EB08 == 0xF6) {
- _gameSys->insertSequence(_s44_dword_47EB08, 1, _s44_dword_47EB10, 1, kSeqSyncWait, 0, 0, 0);
+ if (_nextKissingLadySequenceId == 0xF6) {
+ _gameSys->insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
initBeaverPos(5, 8, 0);
- _s44_dword_47EB10 = _s44_dword_47EB08;
- _s44_dword_47EB08 = -1;
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0, 0, 2);
- } else if (_s44_dword_47EB08 != -1) {
- _gameSys->insertSequence(_s44_dword_47EB08, 1, _s44_dword_47EB10, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s44_dword_47EB08, 1, 2);
- _s44_dword_47EB10 = _s44_dword_47EB08;
- _s44_dword_47EB08 = -1;
+ } else if (_nextKissingLadySequenceId != -1) {
+ _gameSys->insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_nextKissingLadySequenceId, 1, 2);
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
_timers[4] = getRandom(20) + 20;
}
}
if (_gameSys->getAnimationStatus(4) == 2) {
- if (_s44_dword_47EB0C == 0xFB) {
+ if (_currSpringGuySequenceId == 0xFB) {
setGrabCursorSprite(kItemSpring);
- _s44_dword_47EB04 = 0xF8;
+ _nextSpringGuySequenceId = 0xF8;
}
- if (_s44_dword_47EB04 != -1) {
- _gameSys->insertSequence(_s44_dword_47EB04, 1, _s44_dword_47EB0C, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s44_dword_47EB04, 1, 4);
- _s44_dword_47EB0C = _s44_dword_47EB04;
- _s44_dword_47EB04 = -1;
+ if (_nextSpringGuySequenceId != -1) {
+ _gameSys->insertSequence(_nextSpringGuySequenceId, 1, _currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_nextSpringGuySequenceId, 1, 4);
+ _currSpringGuySequenceId = _nextSpringGuySequenceId;
+ _nextSpringGuySequenceId = -1;
_timers[5] = getRandom(20) + 20;
}
}
@@ -523,7 +518,6 @@ void GnapEngine::scene44_updateAnimations() {
}
_toyUfoActionStatus = -1;
}
-
}
} // End of namespace Gnap
Commit: 8cb4bd830c7acb921f1f8abc062d76f8a2da1ea1
https://github.com/scummvm/scummvm/commit/8cb4bd830c7acb921f1f8abc062d76f8a2da1ea1
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Silence a false positive uninitialized variable
Changed paths:
engines/gnap/scenes/scene22.cpp
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 5c390d6..65b7bc6 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -94,7 +94,7 @@ void GnapEngine::scene22_run() {
case 1:
storeDetectiveSeqId = 0x56;
break;
- case 2:
+ default:
storeDetectiveSeqId = 0x57;
break;
}
Commit: 6d1a6738f49e195276089666db166b17285bcce3
https://github.com/scummvm/scummvm/commit/6d1a6738f49e195276089666db166b17285bcce3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming in scene 45, change a global variable to local
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene45.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index f124897..873255b 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -883,8 +883,7 @@ public:
void scene44_updateAnimations();
// Scene 45
- int _s45_dword_4749BC;
- int _s45_dword_4749C0;
+ int _currDancerSequenceId;
int scene45_init();
void scene45_updateHotspots();
void scene45_run();
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 3e1b529..a3dd758 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -93,9 +93,9 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(0x96, 1, 3);
_gameSys->insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(0x99, 1, 4);
- _s45_dword_4749BC = 0x8F;
- _gameSys->setAnimation(0x8F, 1, 2);
- _gameSys->insertSequence(_s45_dword_4749BC, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _currDancerSequenceId = 0x8F;
+ _gameSys->setAnimation(_currDancerSequenceId, 1, 2);
+ _gameSys->insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -148,10 +148,10 @@ void GnapEngine::scene45_run() {
if (_gameSys->getAnimationStatus(2) == 2) {
_gameSys->setAnimation(0, 0, 2);
_gnapRandomValue = getRandom(7);
- _s45_dword_4749C0 = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_dword_4749BC, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s45_dword_4749C0, 1, 2);
- _s45_dword_4749BC = _s45_dword_4749C0;
+ int newSeqId = _gnapRandomValue + 0x8F;
+ _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
}
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
@@ -394,10 +394,10 @@ void GnapEngine::scene45_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
_gameSys->setAnimation(0, 0, 2);
_gnapRandomValue = getRandom(7);
- _s45_dword_4749C0 = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_dword_4749BC, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s45_dword_4749C0, 1, 2);
- _s45_dword_4749BC = _s45_dword_4749C0;
+ int newSeqId = _gnapRandomValue + 0x8F;
+ _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
}
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
Commit: e6496188f71dcb0435471bf82bab71cafabc73f3
https://github.com/scummvm/scummvm/commit/e6496188f71dcb0435471bf82bab71cafabc73f3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename scene 43, 44 and 45 variables for consistency
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 873255b..a440f4a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -864,8 +864,8 @@ public:
void scene42_updateAnimations();
// Scene 43
- int _currTwoHeadedGuySequenceId;
- int _nextTwoHeadedGuySequenceId;
+ int _s43_currTwoHeadedGuySequenceId;
+ int _s43_nextTwoHeadedGuySequenceId;
int scene43_init();
void scene43_updateHotspots();
@@ -873,17 +873,17 @@ public:
void scene43_updateAnimations();
// Scene 44
- int _nextSpringGuySequenceId;
- int _nextKissingLadySequenceId;
- int _currSpringGuySequenceId;
- int _currKissingLadySequenceId;
+ int _s44_nextSpringGuySequenceId;
+ int _s44_nextKissingLadySequenceId;
+ int _s44_currSpringGuySequenceId;
+ int _s44_currKissingLadySequenceId;
int scene44_init();
void scene44_updateHotspots();
void scene44_run();
void scene44_updateAnimations();
// Scene 45
- int _currDancerSequenceId;
+ int _s45_currDancerSequenceId;
int scene45_init();
void scene45_updateHotspots();
void scene45_run();
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index e0cc8ad..51917d5 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -92,11 +92,11 @@ void GnapEngine::scene43_run() {
if (!isFlag(14))
_gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
- _currTwoHeadedGuySequenceId = 0x13C;
- _nextTwoHeadedGuySequenceId = -1;
+ _s43_currTwoHeadedGuySequenceId = 0x13C;
+ _s43_nextTwoHeadedGuySequenceId = -1;
_gameSys->setAnimation(0x13C, 1, 2);
- _gameSys->insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s43_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -332,27 +332,27 @@ void GnapEngine::scene43_run() {
updateGnapIdleSequence();
if (!_timers[4] && (!isFlag(12) || !isFlag(19))) {
_timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
_gnapRandomValue = getRandom(5);
switch (_gnapRandomValue) {
case 0:
- _nextTwoHeadedGuySequenceId = 0x13C;
+ _s43_nextTwoHeadedGuySequenceId = 0x13C;
break;
case 1:
- _nextTwoHeadedGuySequenceId = 0x134;
+ _s43_nextTwoHeadedGuySequenceId = 0x134;
break;
case 2:
- _nextTwoHeadedGuySequenceId = 0x135;
+ _s43_nextTwoHeadedGuySequenceId = 0x135;
break;
case 3:
- _nextTwoHeadedGuySequenceId = 0x136;
+ _s43_nextTwoHeadedGuySequenceId = 0x136;
break;
case 4:
- _nextTwoHeadedGuySequenceId = 0x13A;
+ _s43_nextTwoHeadedGuySequenceId = 0x13A;
break;
}
- if (_nextTwoHeadedGuySequenceId == _currTwoHeadedGuySequenceId)
- _nextTwoHeadedGuySequenceId = -1;
+ if (_s43_nextTwoHeadedGuySequenceId == _s43_currTwoHeadedGuySequenceId)
+ _s43_nextTwoHeadedGuySequenceId = -1;
}
}
}
@@ -391,11 +391,11 @@ void GnapEngine::scene43_updateAnimations() {
_gnapSequenceId = 0x13D;
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x13D, _gnapId, 0);
- _nextTwoHeadedGuySequenceId = 0x13B;
- _gameSys->insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
- _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
- _nextTwoHeadedGuySequenceId = -1;
+ _s43_nextTwoHeadedGuySequenceId = 0x13B;
+ _gameSys->insertSequence(0x13B, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
+ _s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
+ _s43_nextTwoHeadedGuySequenceId = -1;
_timers[4] = getRandom(100) + 100;
_gnapActionStatus = -1;
}
@@ -409,24 +409,24 @@ void GnapEngine::scene43_updateAnimations() {
}
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_currTwoHeadedGuySequenceId == 0x13A) {
+ if (_s43_currTwoHeadedGuySequenceId == 0x13A) {
if (isFlag(19)) {
- _nextTwoHeadedGuySequenceId = 0x13E;
+ _s43_nextTwoHeadedGuySequenceId = 0x13E;
stopSound(0x108F6);
} else if (getRandom(2) != 0) {
- _nextTwoHeadedGuySequenceId = 0x137;
+ _s43_nextTwoHeadedGuySequenceId = 0x137;
} else {
- _nextTwoHeadedGuySequenceId = 0x138;
+ _s43_nextTwoHeadedGuySequenceId = 0x138;
}
- } else if (_currTwoHeadedGuySequenceId == 0x13E) {
+ } else if (_s43_currTwoHeadedGuySequenceId == 0x13E) {
_sceneDone = true;
_newSceneNum = 54;
}
- if (_nextTwoHeadedGuySequenceId != -1) {
- _gameSys->insertSequence(_nextTwoHeadedGuySequenceId, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
- _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
- _nextTwoHeadedGuySequenceId = -1;
+ if (_s43_nextTwoHeadedGuySequenceId != -1) {
+ _gameSys->insertSequence(_s43_nextTwoHeadedGuySequenceId, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
+ _s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
+ _s43_nextTwoHeadedGuySequenceId = -1;
_timers[4] = getRandom(100) + 100;
}
}
@@ -458,7 +458,7 @@ void GnapEngine::scene43_updateAnimations() {
_gnapActionStatus = 3;
break;
case 8:
- _nextTwoHeadedGuySequenceId = 0x13A;
+ _s43_nextTwoHeadedGuySequenceId = 0x13A;
_toyUfoX = 514;
_toyUfoY = 125;
toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 1041734..c0905c7 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -86,31 +86,31 @@ void GnapEngine::scene44_run() {
_gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(15))
- _currSpringGuySequenceId = 0xF8;
+ _s44_currSpringGuySequenceId = 0xF8;
else
- _currSpringGuySequenceId = 0xF9;
+ _s44_currSpringGuySequenceId = 0xF9;
- _nextSpringGuySequenceId = -1;
- _gameSys->setAnimation(_currSpringGuySequenceId, 1, 4);
- _gameSys->insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _s44_nextSpringGuySequenceId = -1;
+ _gameSys->setAnimation(_s44_currSpringGuySequenceId, 1, 4);
+ _gameSys->insertSequence(_s44_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(13)) {
if (_prevSceneNum != 50 || _sceneSavegameLoaded) {
- _currKissingLadySequenceId = 0xF6;
- _nextKissingLadySequenceId = -1;
+ _s44_currKissingLadySequenceId = 0xF6;
+ _s44_nextKissingLadySequenceId = -1;
} else {
setGrabCursorSprite(kItemGum);
- _currKissingLadySequenceId = 0xF5;
- _nextKissingLadySequenceId = 0xF6;
+ _s44_currKissingLadySequenceId = 0xF5;
+ _s44_nextKissingLadySequenceId = 0xF6;
_gameSys->setAnimation(0xF5, 1, 2);
}
} else {
- _currKissingLadySequenceId = 0xEC;
- _nextKissingLadySequenceId = -1;
+ _s44_currKissingLadySequenceId = 0xEC;
+ _s44_nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0xEC, 1, 2);
}
- _gameSys->insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s44_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -306,7 +306,7 @@ void GnapEngine::scene44_run() {
case GRAB_CURSOR:
playGnapPullOutDevice(8, 0);
playGnapUseDevice(8, 0);
- _nextSpringGuySequenceId = 0xFB;
+ _s44_nextSpringGuySequenceId = 0xFB;
invAdd(kItemSpring);
setFlag(15);
scene44_updateHotspots();
@@ -369,50 +369,50 @@ void GnapEngine::scene44_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12) && _currKissingLadySequenceId != 0xF5)
+ if (_beaverActionStatus < 0 && !isFlag(12) && _s44_currKissingLadySequenceId != 0xF5)
updateBeaverIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(12))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextKissingLadySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
_gnapRandomValue = getRandom(20);
switch (_gnapRandomValue) {
case 0:
- _nextKissingLadySequenceId = 0xED;
+ _s44_nextKissingLadySequenceId = 0xED;
break;
case 1:
- _nextKissingLadySequenceId = 0xEE;
+ _s44_nextKissingLadySequenceId = 0xEE;
break;
case 2:
- _nextKissingLadySequenceId = 0xF0;
+ _s44_nextKissingLadySequenceId = 0xF0;
break;
case 3:
- _nextKissingLadySequenceId = 0xF3;
+ _s44_nextKissingLadySequenceId = 0xF3;
break;
case 4:
- _nextKissingLadySequenceId = 0xF4;
+ _s44_nextKissingLadySequenceId = 0xF4;
break;
default:
- _nextKissingLadySequenceId = 0xEC;
+ _s44_nextKissingLadySequenceId = 0xEC;
break;
}
- if (_nextKissingLadySequenceId != 0xEC && _nextKissingLadySequenceId == _currKissingLadySequenceId)
- _nextKissingLadySequenceId = -1;
+ if (_s44_nextKissingLadySequenceId != 0xEC && _s44_nextKissingLadySequenceId == _s44_currKissingLadySequenceId)
+ _s44_nextKissingLadySequenceId = -1;
}
}
if (!_timers[5]) {
_timers[5] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _nextSpringGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
_gnapRandomValue = getRandom(5);
if (_gnapRandomValue != 0) {
if (!isFlag(15))
- _nextSpringGuySequenceId = 0xF9;
+ _s44_nextSpringGuySequenceId = 0xF9;
} else {
if (isFlag(15))
- _nextSpringGuySequenceId = 0xF8;
+ _s44_nextSpringGuySequenceId = 0xF8;
else
- _nextSpringGuySequenceId = 0xFA;
+ _s44_nextSpringGuySequenceId = 0xFA;
}
}
}
@@ -439,10 +439,10 @@ void GnapEngine::scene44_updateAnimations() {
_sceneDone = true;
break;
case 1:
- _nextKissingLadySequenceId = 0xEF;
+ _s44_nextKissingLadySequenceId = 0xEF;
break;
case 2:
- _nextKissingLadySequenceId = 0xF2;
+ _s44_nextKissingLadySequenceId = 0xF2;
break;
}
_gnapActionStatus = -1;
@@ -457,7 +457,7 @@ void GnapEngine::scene44_updateAnimations() {
_beaverSequenceId = 0xFE;
_beaverSequenceDatNum = 0;
_gameSys->setAnimation(0xFE, _beaverId, 1);
- _gameSys->removeSequence(_currKissingLadySequenceId, 1, true);
+ _gameSys->removeSequence(_s44_currKissingLadySequenceId, 1, true);
_beaverActionStatus = 5;
}
break;
@@ -472,31 +472,31 @@ void GnapEngine::scene44_updateAnimations() {
}
if (_gameSys->getAnimationStatus(2) == 2) {
- if (_nextKissingLadySequenceId == 0xF6) {
- _gameSys->insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ if (_s44_nextKissingLadySequenceId == 0xF6) {
+ _gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
initBeaverPos(5, 8, 0);
- _currKissingLadySequenceId = _nextKissingLadySequenceId;
- _nextKissingLadySequenceId = -1;
+ _s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
+ _s44_nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0, 0, 2);
- } else if (_nextKissingLadySequenceId != -1) {
- _gameSys->insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_nextKissingLadySequenceId, 1, 2);
- _currKissingLadySequenceId = _nextKissingLadySequenceId;
- _nextKissingLadySequenceId = -1;
+ } else if (_s44_nextKissingLadySequenceId != -1) {
+ _gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s44_nextKissingLadySequenceId, 1, 2);
+ _s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
+ _s44_nextKissingLadySequenceId = -1;
_timers[4] = getRandom(20) + 20;
}
}
if (_gameSys->getAnimationStatus(4) == 2) {
- if (_currSpringGuySequenceId == 0xFB) {
+ if (_s44_currSpringGuySequenceId == 0xFB) {
setGrabCursorSprite(kItemSpring);
- _nextSpringGuySequenceId = 0xF8;
+ _s44_nextSpringGuySequenceId = 0xF8;
}
- if (_nextSpringGuySequenceId != -1) {
- _gameSys->insertSequence(_nextSpringGuySequenceId, 1, _currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_nextSpringGuySequenceId, 1, 4);
- _currSpringGuySequenceId = _nextSpringGuySequenceId;
- _nextSpringGuySequenceId = -1;
+ if (_s44_nextSpringGuySequenceId != -1) {
+ _gameSys->insertSequence(_s44_nextSpringGuySequenceId, 1, _s44_currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s44_nextSpringGuySequenceId, 1, 4);
+ _s44_currSpringGuySequenceId = _s44_nextSpringGuySequenceId;
+ _s44_nextSpringGuySequenceId = -1;
_timers[5] = getRandom(20) + 20;
}
}
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index a3dd758..b25216d 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -93,9 +93,9 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(0x96, 1, 3);
_gameSys->insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(0x99, 1, 4);
- _currDancerSequenceId = 0x8F;
- _gameSys->setAnimation(_currDancerSequenceId, 1, 2);
- _gameSys->insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _s45_currDancerSequenceId = 0x8F;
+ _gameSys->setAnimation(_s45_currDancerSequenceId, 1, 2);
+ _gameSys->insertSequence(_s45_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -149,9 +149,9 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(0, 0, 2);
_gnapRandomValue = getRandom(7);
int newSeqId = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(newSeqId, 1, 2);
- _currDancerSequenceId = newSeqId;
+ _s45_currDancerSequenceId = newSeqId;
}
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
@@ -395,9 +395,9 @@ void GnapEngine::scene45_updateAnimations() {
_gameSys->setAnimation(0, 0, 2);
_gnapRandomValue = getRandom(7);
int newSeqId = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(newSeqId, 1, 2);
- _currDancerSequenceId = newSeqId;
+ _s45_currDancerSequenceId = newSeqId;
}
if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
Commit: b357844bde5e805aaca53ee51adcaee016e53d7c
https://github.com/scummvm/scummvm/commit/b357844bde5e805aaca53ee51adcaee016e53d7c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Renaming in scene 46
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index a440f4a..c17ae72 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -890,10 +890,10 @@ public:
void scene45_updateAnimations();
// Scene 46
- int _s46_dword_47EB18;
- int _s46_dword_47EB1C;
- int _s46_dword_47EB20;
- int _s46_dword_47EB24;
+ int _s46_currSackGuySequenceId;
+ int _s46_nextItchyGuySequenceId;
+ int _s46_nextSackGuySequenceId;
+ int _s46_currItchyGuySequenceId;
int scene46_init();
void scene46_updateHotspots();
void scene46_run();
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index ec06113..864f341 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -78,15 +78,15 @@ void GnapEngine::scene46_run() {
_gameSys->insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
- _s46_dword_47EB18 = 0x4B;
- _s46_dword_47EB20 = -1;
+ _s46_currSackGuySequenceId = 0x4B;
+ _s46_nextSackGuySequenceId = -1;
_gameSys->setAnimation(0x4B, 1, 3);
- _gameSys->insertSequence(_s46_dword_47EB18, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s46_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s46_dword_47EB24 = 0x47;
- _s46_dword_47EB1C = -1;
+ _s46_currItchyGuySequenceId = 0x47;
+ _s46_nextItchyGuySequenceId = -1;
_gameSys->setAnimation(0x47, 1, 4);
- _gameSys->insertSequence(_s46_dword_47EB24, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->insertSequence(_s46_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(12)) {
_toyUfoId = 0;
@@ -163,11 +163,8 @@ void GnapEngine::scene46_run() {
scene46_updateHotspots();
break;
}
-
} else {
-
switch (_sceneClickedHotspot) {
-
case kHSDevice:
runMenu();
scene46_updateHotspots();
@@ -266,9 +263,7 @@ void GnapEngine::scene46_run() {
if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
}
-
}
if (_mouseClickState._left && _gnapActionStatus < 0) {
@@ -292,18 +287,18 @@ void GnapEngine::scene46_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_dword_47EB1C == -1) {
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
_gnapRandomValue = getRandom(2);
if (_gnapRandomValue != 0)
- _s46_dword_47EB1C = 0x49;
+ _s46_nextItchyGuySequenceId = 0x49;
else
- _s46_dword_47EB1C = 0x48;
+ _s46_nextItchyGuySequenceId = 0x48;
}
}
if (!_timers[5]) {
_timers[5] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_dword_47EB20 == -1)
- _s46_dword_47EB20 = 0x4C;
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
+ _s46_nextSackGuySequenceId = 0x4C;
}
}
@@ -316,13 +311,10 @@ void GnapEngine::scene46_run() {
}
gameUpdateTick();
-
}
-
}
void GnapEngine::scene46_updateAnimations() {
-
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
@@ -330,28 +322,28 @@ void GnapEngine::scene46_updateAnimations() {
_sceneDone = true;
break;
case 1:
- _s46_dword_47EB1C = 0x46;
+ _s46_nextItchyGuySequenceId = 0x46;
break;
case 2:
- _s46_dword_47EB20 = 0x4A;
+ _s46_nextSackGuySequenceId = 0x4A;
break;
}
_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s46_dword_47EB20 != -1) {
- _gameSys->insertSequence(_s46_dword_47EB20, 1, _s46_dword_47EB18, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s46_dword_47EB20, 1, 3);
- _s46_dword_47EB18 = _s46_dword_47EB20;
- _s46_dword_47EB20 = -1;
+ if (_gameSys->getAnimationStatus(3) == 2 && _s46_nextSackGuySequenceId != -1) {
+ _gameSys->insertSequence(_s46_nextSackGuySequenceId, 1, _s46_currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s46_nextSackGuySequenceId, 1, 3);
+ _s46_currSackGuySequenceId = _s46_nextSackGuySequenceId;
+ _s46_nextSackGuySequenceId = -1;
_timers[5] = getRandom(50) + 80;
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s46_dword_47EB1C != -1) {
- _gameSys->insertSequence(_s46_dword_47EB1C, 1, _s46_dword_47EB24, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s46_dword_47EB1C, 1, 4);
- _s46_dword_47EB24 = _s46_dword_47EB1C;
- _s46_dword_47EB1C = -1;
+ if (_gameSys->getAnimationStatus(4) == 2 && _s46_nextItchyGuySequenceId != -1) {
+ _gameSys->insertSequence(_s46_nextItchyGuySequenceId, 1, _s46_currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->setAnimation(_s46_nextItchyGuySequenceId, 1, 4);
+ _s46_currItchyGuySequenceId = _s46_nextItchyGuySequenceId;
+ _s46_nextItchyGuySequenceId = -1;
_timers[4] = getRandom(50) + 80;
}
@@ -372,7 +364,6 @@ void GnapEngine::scene46_updateAnimations() {
}
_toyUfoActionStatus = -1;
}
-
}
} // End of namespace Gnap
Commit: cb69189a50abb8771fc7196c07b8bcfa93c06547
https://github.com/scummvm/scummvm/commit/cb69189a50abb8771fc7196c07b8bcfa93c06547
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Renaming in cutscenes
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene16.cpp
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene48.cpp
engines/gnap/scenes/scene54.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2edfcac..30311ea 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -751,7 +751,7 @@ void GnapEngine::mainLoop() {
// > DEBUG BEGIN
_currentSceneNum = 53;
- _newSceneNum = 42;
+ _newSceneNum = 48;
_newCursorValue = 3;
// < DEBUG END
@@ -2341,7 +2341,7 @@ void GnapEngine::cutscene_run() {
if (_prevSceneNum == 2) {
soundId = 0x36B;
- duration = MAX(1, 300 / getSequenceTotalDuration(_s99_dword_47F370[_s99_itemsCount - 1]));//CHECKME
+ duration = MAX(1, 300 / getSequenceTotalDuration(_s99_sequenceIdArr[_s99_itemsCount - 1]));//CHECKME
_timers[0] = 0;
}
@@ -2350,11 +2350,11 @@ void GnapEngine::cutscene_run() {
hideCursor();
- _gameSys->drawSpriteToBackground(0, 0, _s99_dword_47F2F0[0]);
+ _gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[0]);
- for (int j = 0; j < _s99_dword_47F330[0]; ++j)
- _gameSys->insertSequence(_s99_dword_47F370[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(_s99_dword_47F370[0], 2, 0);
+ for (int j = 0; j < _s99_sequenceCountArr[0]; ++j)
+ _gameSys->insertSequence(_s99_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->setAnimation(_s99_sequenceIdArr[0], 2, 0);
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -2362,9 +2362,8 @@ void GnapEngine::cutscene_run() {
_mouseClickState._left = false;
- int v1 = 0;
+ int firstSequenceIndex = 0;
while (!_sceneDone) {
-
gameUpdateTick();
if (_gameSys->getAnimationStatus(0) == 2 || skip) {
@@ -2372,14 +2371,14 @@ void GnapEngine::cutscene_run() {
_gameSys->requestClear2(false);
_gameSys->requestClear1();
_gameSys->setAnimation(0, 0, 0);
- v1 += _s99_dword_47F330[itemIndex++];
+ firstSequenceIndex += _s99_sequenceCountArr[itemIndex++];
if (itemIndex >= _s99_itemsCount) {
_sceneDone = true;
} else {
- for (int m = 0; m < _s99_dword_47F330[itemIndex]; ++m)
- _gameSys->insertSequence(_s99_dword_47F370[v1 + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->drawSpriteToBackground(0, 0, _s99_dword_47F2F0[itemIndex]);
- _gameSys->setAnimation(_s99_dword_47F370[v1], 2, 0);
+ for (int m = 0; m < _s99_sequenceCountArr[itemIndex]; ++m)
+ _gameSys->insertSequence(_s99_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[itemIndex]);
+ _gameSys->setAnimation(_s99_sequenceIdArr[firstSequenceIndex], 2, 0);
}
}
@@ -2398,12 +2397,10 @@ void GnapEngine::cutscene_run() {
volume = MAX(1, volume - duration);
setSoundVolume(soundId, volume);
}
-
}
if (soundId != -1)
- stopSound(soundId);
-
+ stopSound(soundId);
}
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index c17ae72..8e23990 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -1090,13 +1090,12 @@ public:
// Scene 99
int _s99_itemsCount;
- int _s99_dword_47F2F0[16];
- int _s99_dword_47F330[16];
- int _s99_dword_47F370[50];
+ int _s99_resourceIdArr[16];
+ int _s99_sequenceCountArr[16];
+ int _s99_sequenceIdArr[50];
byte _s99_canSkip[16];
int cutscene_init();
void cutscene_run();
-
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene16.cpp b/engines/gnap/scenes/scene16.cpp
index dfc8522..64db758 100644
--- a/engines/gnap/scenes/scene16.cpp
+++ b/engines/gnap/scenes/scene16.cpp
@@ -27,55 +27,55 @@
namespace Gnap {
void GnapEngine::scene16_initCutscene() {
- _s99_dword_47F370[0] = 0x1F2;
- _s99_dword_47F370[1] = 0x201;
- _s99_dword_47F370[2] = 0x1FC;
- _s99_dword_47F370[3] = 0x1F4;
- _s99_dword_47F370[4] = 0x1FB;
- _s99_dword_47F370[5] = 0x1F0;
- _s99_dword_47F370[6] = 0x1FD;
- _s99_dword_47F370[7] = 0x1FE;
- _s99_dword_47F370[8] = 0x1F7;
- _s99_dword_47F370[9] = 0x1F9;
- _s99_dword_47F370[10] = 0x1F8;
- _s99_dword_47F370[11] = 0x1F1;
- _s99_dword_47F370[12] = 0x202;
- _s99_dword_47F370[13] = 0x1F6;
- _s99_dword_47F370[14] = 0x1F3;
- _s99_dword_47F370[15] = 0x1FA;
- _s99_dword_47F370[16] = 0x1FF;
- _s99_dword_47F370[17] = 0x200;
- _s99_dword_47F370[18] = 0x203;
- _s99_dword_47F370[19] = 0x206;
- _s99_dword_47F370[20] = 0x207;
- _s99_dword_47F370[21] = 0x204;
- _s99_dword_47F370[22] = 0x205;
- _s99_dword_47F2F0[0] = 0x1C;
- _s99_dword_47F2F0[1] = 2;
- _s99_dword_47F2F0[2] = 0x1B;
- _s99_dword_47F2F0[3] = 0;
- _s99_dword_47F2F0[4] = 0x167;
- _s99_dword_47F2F0[5] = 1;
- _s99_dword_47F2F0[6] = 0x15B;
- _s99_dword_47F2F0[7] = 0x15A;
- _s99_dword_47F2F0[8] = 0x170;
- _s99_dword_47F2F0[9] = 0x1EB;
- _s99_dword_47F2F0[10] = 0x1EC;
- _s99_dword_47F2F0[11] = 0x1BE;
- _s99_dword_47F2F0[12] = 0x1BF;
- _s99_dword_47F330[0] = 4;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
- _s99_dword_47F330[3] = 6;
- _s99_dword_47F330[4] = 1;
- _s99_dword_47F330[5] = 3;
- _s99_dword_47F330[6] = 1;
- _s99_dword_47F330[7] = 1;
- _s99_dword_47F330[8] = 1;
- _s99_dword_47F330[9] = 1;
- _s99_dword_47F330[10] = 1;
- _s99_dword_47F330[11] = 1;
- _s99_dword_47F330[12] = 1;
+ _s99_sequenceIdArr[0] = 0x1F2;
+ _s99_sequenceIdArr[1] = 0x201;
+ _s99_sequenceIdArr[2] = 0x1FC;
+ _s99_sequenceIdArr[3] = 0x1F4;
+ _s99_sequenceIdArr[4] = 0x1FB;
+ _s99_sequenceIdArr[5] = 0x1F0;
+ _s99_sequenceIdArr[6] = 0x1FD;
+ _s99_sequenceIdArr[7] = 0x1FE;
+ _s99_sequenceIdArr[8] = 0x1F7;
+ _s99_sequenceIdArr[9] = 0x1F9;
+ _s99_sequenceIdArr[10] = 0x1F8;
+ _s99_sequenceIdArr[11] = 0x1F1;
+ _s99_sequenceIdArr[12] = 0x202;
+ _s99_sequenceIdArr[13] = 0x1F6;
+ _s99_sequenceIdArr[14] = 0x1F3;
+ _s99_sequenceIdArr[15] = 0x1FA;
+ _s99_sequenceIdArr[16] = 0x1FF;
+ _s99_sequenceIdArr[17] = 0x200;
+ _s99_sequenceIdArr[18] = 0x203;
+ _s99_sequenceIdArr[19] = 0x206;
+ _s99_sequenceIdArr[20] = 0x207;
+ _s99_sequenceIdArr[21] = 0x204;
+ _s99_sequenceIdArr[22] = 0x205;
+ _s99_resourceIdArr[0] = 0x1C;
+ _s99_resourceIdArr[1] = 2;
+ _s99_resourceIdArr[2] = 0x1B;
+ _s99_resourceIdArr[3] = 0;
+ _s99_resourceIdArr[4] = 0x167;
+ _s99_resourceIdArr[5] = 1;
+ _s99_resourceIdArr[6] = 0x15B;
+ _s99_resourceIdArr[7] = 0x15A;
+ _s99_resourceIdArr[8] = 0x170;
+ _s99_resourceIdArr[9] = 0x1EB;
+ _s99_resourceIdArr[10] = 0x1EC;
+ _s99_resourceIdArr[11] = 0x1BE;
+ _s99_resourceIdArr[12] = 0x1BF;
+ _s99_sequenceCountArr[0] = 4;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
+ _s99_sequenceCountArr[3] = 6;
+ _s99_sequenceCountArr[4] = 1;
+ _s99_sequenceCountArr[5] = 3;
+ _s99_sequenceCountArr[6] = 1;
+ _s99_sequenceCountArr[7] = 1;
+ _s99_sequenceCountArr[8] = 1;
+ _s99_sequenceCountArr[9] = 1;
+ _s99_sequenceCountArr[10] = 1;
+ _s99_sequenceCountArr[11] = 1;
+ _s99_sequenceCountArr[12] = 1;
_s99_itemsCount = 13;
}
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index f4aa91f..bb5f532 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -27,21 +27,21 @@
namespace Gnap {
void GnapEngine::scene47_initCutscene1() {
- _s99_dword_47F370[0] = 0x301;
- _s99_dword_47F370[1] = 0x305;
- _s99_dword_47F370[2] = 0x302;
- _s99_dword_47F370[3] = 0x304;
- _s99_dword_47F370[4] = 0x300;
- _s99_dword_47F2F0[0] = 3;
- _s99_dword_47F2F0[1] = 0;
- _s99_dword_47F2F0[2] = 1;
- _s99_dword_47F2F0[3] = 0;
- _s99_dword_47F2F0[4] = 2;
- _s99_dword_47F330[0] = 1;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
- _s99_dword_47F330[3] = 1;
- _s99_dword_47F330[4] = 1;
+ _s99_sequenceIdArr[0] = 0x301;
+ _s99_sequenceIdArr[1] = 0x305;
+ _s99_sequenceIdArr[2] = 0x302;
+ _s99_sequenceIdArr[3] = 0x304;
+ _s99_sequenceIdArr[4] = 0x300;
+ _s99_resourceIdArr[0] = 3;
+ _s99_resourceIdArr[1] = 0;
+ _s99_resourceIdArr[2] = 1;
+ _s99_resourceIdArr[3] = 0;
+ _s99_resourceIdArr[4] = 2;
+ _s99_sequenceCountArr[0] = 1;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
+ _s99_sequenceCountArr[3] = 1;
+ _s99_sequenceCountArr[4] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
@@ -51,19 +51,19 @@ void GnapEngine::scene47_initCutscene1() {
}
void GnapEngine::scene47_initCutscene2() {
- _s99_dword_47F370[0] = 0x306;
- _s99_dword_47F370[1] = 0x309;
- _s99_dword_47F370[2] = 0x307;
- _s99_dword_47F370[3] = 0x308;
- _s99_dword_47F370[4] = 0x30A;
- _s99_dword_47F2F0[0] = 0x8E;
- _s99_dword_47F2F0[1] = 0x90;
- _s99_dword_47F2F0[2] = 0x8F;
- _s99_dword_47F2F0[3] = 0x91;
- _s99_dword_47F330[0] = 2;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
- _s99_dword_47F330[3] = 1;
+ _s99_sequenceIdArr[0] = 0x306;
+ _s99_sequenceIdArr[1] = 0x309;
+ _s99_sequenceIdArr[2] = 0x307;
+ _s99_sequenceIdArr[3] = 0x308;
+ _s99_sequenceIdArr[4] = 0x30A;
+ _s99_resourceIdArr[0] = 0x8E;
+ _s99_resourceIdArr[1] = 0x90;
+ _s99_resourceIdArr[2] = 0x8F;
+ _s99_resourceIdArr[3] = 0x91;
+ _s99_sequenceCountArr[0] = 2;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
+ _s99_sequenceCountArr[3] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
@@ -72,27 +72,27 @@ void GnapEngine::scene47_initCutscene2() {
}
void GnapEngine::scene47_initCutscene3() {
- _s99_dword_47F370[0] = 0x320;
- _s99_dword_47F370[1] = 0x321;
- _s99_dword_47F2F0[0] = 0x142;
- _s99_dword_47F2F0[1] = 0x143;
- _s99_dword_47F330[0] = 1;
- _s99_dword_47F330[1] = 1;
+ _s99_sequenceIdArr[0] = 0x320;
+ _s99_sequenceIdArr[1] = 0x321;
+ _s99_resourceIdArr[0] = 0x142;
+ _s99_resourceIdArr[1] = 0x143;
+ _s99_sequenceCountArr[0] = 1;
+ _s99_sequenceCountArr[1] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_itemsCount = 2;
}
void GnapEngine::scene47_initCutscene4() {
- _s99_dword_47F370[0] = 0x30C;
- _s99_dword_47F370[1] = 0x30D;
- _s99_dword_47F370[2] = 0x30B;
- _s99_dword_47F2F0[0] = 0x142;
- _s99_dword_47F2F0[1] = 0x141;
- _s99_dword_47F2F0[2] = 0x177;
- _s99_dword_47F330[0] = 1;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
+ _s99_sequenceIdArr[0] = 0x30C;
+ _s99_sequenceIdArr[1] = 0x30D;
+ _s99_sequenceIdArr[2] = 0x30B;
+ _s99_resourceIdArr[0] = 0x142;
+ _s99_resourceIdArr[1] = 0x141;
+ _s99_resourceIdArr[2] = 0x177;
+ _s99_sequenceCountArr[0] = 1;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
@@ -100,24 +100,24 @@ void GnapEngine::scene47_initCutscene4() {
}
void GnapEngine::scene47_initCutscene5() {
- _s99_dword_47F370[0] = 0x30E;
- _s99_dword_47F370[1] = 0x30F;
- _s99_dword_47F370[2] = 0x310;
- _s99_dword_47F370[3] = 0x311;
- _s99_dword_47F2F0[0] = 0x206;
- _s99_dword_47F2F0[1] = 0x207;
- _s99_dword_47F330[0] = 3;
- _s99_dword_47F330[1] = 1;
+ _s99_sequenceIdArr[0] = 0x30E;
+ _s99_sequenceIdArr[1] = 0x30F;
+ _s99_sequenceIdArr[2] = 0x310;
+ _s99_sequenceIdArr[3] = 0x311;
+ _s99_resourceIdArr[0] = 0x206;
+ _s99_resourceIdArr[1] = 0x207;
+ _s99_sequenceCountArr[0] = 3;
+ _s99_sequenceCountArr[1] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_itemsCount = 2;
}
void GnapEngine::scene47_initCutscene6() {
- _s99_dword_47F370[0] = 0x31E;
- _s99_dword_47F370[1] = 0x31F;
- _s99_dword_47F2F0[0] = 0x2FA;
- _s99_dword_47F330[0] = 2;
+ _s99_sequenceIdArr[0] = 0x31E;
+ _s99_sequenceIdArr[1] = 0x31F;
+ _s99_resourceIdArr[0] = 0x2FA;
+ _s99_sequenceCountArr[0] = 2;
_s99_canSkip[0] = 0;
_s99_itemsCount = 1;
}
@@ -125,41 +125,41 @@ void GnapEngine::scene47_initCutscene6() {
void GnapEngine::scene47_initCutscene7() {
int v0, v4, v2, v3;
- _s99_dword_47F370[0] = 0x316;
- _s99_dword_47F370[1] = 0x31A;
- _s99_dword_47F370[2] = 0x314;
- _s99_dword_47F370[3] = 0x31B;
+ _s99_sequenceIdArr[0] = 0x316;
+ _s99_sequenceIdArr[1] = 0x31A;
+ _s99_sequenceIdArr[2] = 0x314;
+ _s99_sequenceIdArr[3] = 0x31B;
int v1 = 4;
if (!isFlag(3)) {
- _s99_dword_47F370[4] = 0x31C;
+ _s99_sequenceIdArr[4] = 0x31C;
v1 = 5;
}
if (!isFlag(26))
- _s99_dword_47F370[v1++] = 0x31D;
+ _s99_sequenceIdArr[v1++] = 0x31D;
v4 = v1;
- _s99_dword_47F370[v1] = 0x319;
+ _s99_sequenceIdArr[v1] = 0x319;
v0 = v1 + 1;
v3 = v0;
- _s99_dword_47F370[v0++] = 0x317;
- _s99_dword_47F370[v0++] = 0x312;
- _s99_dword_47F370[v0] = 0x31A;
+ _s99_sequenceIdArr[v0++] = 0x317;
+ _s99_sequenceIdArr[v0++] = 0x312;
+ _s99_sequenceIdArr[v0] = 0x31A;
v2 = v0 + 1;
if (!isFlag(3))
- _s99_dword_47F370[v2++] = 0x31C;
+ _s99_sequenceIdArr[v2++] = 0x31C;
if (!isFlag(26))
- _s99_dword_47F370[v2++] = 0x31D;
- _s99_dword_47F370[v2] = 0x313;
- _s99_dword_47F370[v2 + 1] = 0x315;
- _s99_dword_47F2F0[0] = 0x2B8;
- _s99_dword_47F2F0[1] = 0x20C;
- _s99_dword_47F2F0[2] = 0x2B8;
- _s99_dword_47F2F0[3] = 0x20B;
- _s99_dword_47F2F0[4] = 0x20B;
- _s99_dword_47F330[0] = v4;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = v2 - v3;
- _s99_dword_47F330[3] = 1;
- _s99_dword_47F330[4] = 1;
+ _s99_sequenceIdArr[v2++] = 0x31D;
+ _s99_sequenceIdArr[v2] = 0x313;
+ _s99_sequenceIdArr[v2 + 1] = 0x315;
+ _s99_resourceIdArr[0] = 0x2B8;
+ _s99_resourceIdArr[1] = 0x20C;
+ _s99_resourceIdArr[2] = 0x2B8;
+ _s99_resourceIdArr[3] = 0x20B;
+ _s99_resourceIdArr[4] = 0x20B;
+ _s99_sequenceCountArr[0] = v4;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = v2 - v3;
+ _s99_sequenceCountArr[3] = 1;
+ _s99_sequenceCountArr[4] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
diff --git a/engines/gnap/scenes/scene48.cpp b/engines/gnap/scenes/scene48.cpp
index 3b24d57..3ea0f32 100644
--- a/engines/gnap/scenes/scene48.cpp
+++ b/engines/gnap/scenes/scene48.cpp
@@ -27,45 +27,45 @@
namespace Gnap {
void GnapEngine::scene48_initCutscene() {
- _s99_dword_47F370[0] = 390;
- _s99_dword_47F370[1] = 391;
- _s99_dword_47F370[2] = 392;
- _s99_dword_47F370[3] = 393;
- _s99_dword_47F370[4] = 394;
- _s99_dword_47F370[5] = 395;
- _s99_dword_47F370[6] = 396;
- _s99_dword_47F370[7] = 397;
- _s99_dword_47F370[8] = 398;
- _s99_dword_47F370[9] = 399;
- _s99_dword_47F370[10] = 400;
- _s99_dword_47F370[11] = 401;
- _s99_dword_47F370[12] = 402;
- _s99_dword_47F2F0[0] = 238;
- _s99_dword_47F2F0[1] = 42;
- _s99_dword_47F2F0[2] = 2;
- _s99_dword_47F2F0[3] = 37;
- _s99_dword_47F2F0[4] = 35;
- _s99_dword_47F2F0[5] = 38;
- _s99_dword_47F2F0[6] = 39;
- _s99_dword_47F2F0[7] = 40;
- _s99_dword_47F2F0[8] = 41;
- _s99_dword_47F2F0[9] = 36;
- _s99_dword_47F2F0[10] = 41;
- _s99_dword_47F2F0[11] = 388;
- _s99_dword_47F2F0[12] = 387;
- _s99_dword_47F330[0] = 1;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
- _s99_dword_47F330[3] = 1;
- _s99_dword_47F330[4] = 1;
- _s99_dword_47F330[5] = 1;
- _s99_dword_47F330[6] = 1;
- _s99_dword_47F330[7] = 1;
- _s99_dword_47F330[8] = 1;
- _s99_dword_47F330[9] = 1;
- _s99_dword_47F330[10] = 1;
- _s99_dword_47F330[11] = 1;
- _s99_dword_47F330[12] = 1;
+ _s99_sequenceIdArr[0] = 390;
+ _s99_sequenceIdArr[1] = 391;
+ _s99_sequenceIdArr[2] = 392;
+ _s99_sequenceIdArr[3] = 393;
+ _s99_sequenceIdArr[4] = 394;
+ _s99_sequenceIdArr[5] = 395;
+ _s99_sequenceIdArr[6] = 396;
+ _s99_sequenceIdArr[7] = 397;
+ _s99_sequenceIdArr[8] = 398;
+ _s99_sequenceIdArr[9] = 399;
+ _s99_sequenceIdArr[10] = 400;
+ _s99_sequenceIdArr[11] = 401;
+ _s99_sequenceIdArr[12] = 402;
+ _s99_resourceIdArr[0] = 238;
+ _s99_resourceIdArr[1] = 42;
+ _s99_resourceIdArr[2] = 2;
+ _s99_resourceIdArr[3] = 37;
+ _s99_resourceIdArr[4] = 35;
+ _s99_resourceIdArr[5] = 38;
+ _s99_resourceIdArr[6] = 39;
+ _s99_resourceIdArr[7] = 40;
+ _s99_resourceIdArr[8] = 41;
+ _s99_resourceIdArr[9] = 36;
+ _s99_resourceIdArr[10] = 41;
+ _s99_resourceIdArr[11] = 388;
+ _s99_resourceIdArr[12] = 387;
+ _s99_sequenceCountArr[0] = 1;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
+ _s99_sequenceCountArr[3] = 1;
+ _s99_sequenceCountArr[4] = 1;
+ _s99_sequenceCountArr[5] = 1;
+ _s99_sequenceCountArr[6] = 1;
+ _s99_sequenceCountArr[7] = 1;
+ _s99_sequenceCountArr[8] = 1;
+ _s99_sequenceCountArr[9] = 1;
+ _s99_sequenceCountArr[10] = 1;
+ _s99_sequenceCountArr[11] = 1;
+ _s99_sequenceCountArr[12] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
index 76bc66b..6feb445 100644
--- a/engines/gnap/scenes/scene54.cpp
+++ b/engines/gnap/scenes/scene54.cpp
@@ -27,25 +27,25 @@
namespace Gnap {
void GnapEngine::scene54_initCutscene1() {
- _s99_dword_47F370[0] = 0x1BE;
- _s99_dword_47F370[1] = 0x1BF;
- _s99_dword_47F370[2] = 0x1BA;
- _s99_dword_47F370[3] = 0x1BB;
- _s99_dword_47F370[4] = 0x1BD;
- _s99_dword_47F370[5] = 0x1BC;
- _s99_dword_47F2F0[0] = 0x3C;
- _s99_dword_47F2F0[1] = 0x43;
- _s99_dword_47F2F0[2] = 0x44;
+ _s99_sequenceIdArr[0] = 0x1BE;
+ _s99_sequenceIdArr[1] = 0x1BF;
+ _s99_sequenceIdArr[2] = 0x1BA;
+ _s99_sequenceIdArr[3] = 0x1BB;
+ _s99_sequenceIdArr[4] = 0x1BD;
+ _s99_sequenceIdArr[5] = 0x1BC;
+ _s99_resourceIdArr[0] = 0x3C;
+ _s99_resourceIdArr[1] = 0x43;
+ _s99_resourceIdArr[2] = 0x44;
if (isFlag(20))
- _s99_dword_47F2F0[3] = 0x47;
+ _s99_resourceIdArr[3] = 0x47;
else
- _s99_dword_47F2F0[3] = 0x46;
- _s99_dword_47F2F0[4] = 0x45;
- _s99_dword_47F330[0] = 1;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 1;
- _s99_dword_47F330[3] = 2;
- _s99_dword_47F330[4] = 1;
+ _s99_resourceIdArr[3] = 0x46;
+ _s99_resourceIdArr[4] = 0x45;
+ _s99_sequenceCountArr[0] = 1;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 1;
+ _s99_sequenceCountArr[3] = 2;
+ _s99_sequenceCountArr[4] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
@@ -55,56 +55,56 @@ void GnapEngine::scene54_initCutscene1() {
}
void GnapEngine::scene54_initCutscene2() {
- _s99_dword_47F370[0] = 0x1C9;
- _s99_dword_47F370[1] = 0x1C7;
- _s99_dword_47F370[2] = 0x1CC;
- _s99_dword_47F370[3] = 0x1C8;
- _s99_dword_47F370[4] = 0x1CB;
- _s99_dword_47F370[5] = 0x1C0;
- _s99_dword_47F370[6] = 0x1CA;
- _s99_dword_47F370[7] = 0x1CE;
- _s99_dword_47F370[8] = 0x1CD;
- _s99_dword_47F370[9] = 0x1C1;
- _s99_dword_47F370[10] = 0x1C2;
- _s99_dword_47F370[11] = 0x1C3;
- _s99_dword_47F370[12] = 0x1C4;
- _s99_dword_47F370[13] = 0x1C6;
- _s99_dword_47F370[14] = 0x1C5;
- _s99_dword_47F370[15] = 0x1D0;
- _s99_dword_47F370[16] = 0x1D0;
- _s99_dword_47F370[17] = 0x1D0;
- _s99_dword_47F2F0[0] = 0xD5;
- _s99_dword_47F2F0[1] = 0x14C;
- _s99_dword_47F2F0[2] = 0xD5;
- _s99_dword_47F2F0[3] = 0xBF;
- _s99_dword_47F2F0[4] = 0xD6;
- _s99_dword_47F2F0[5] = 0x154;
- _s99_dword_47F2F0[6] = 0x155;
- _s99_dword_47F2F0[7] = 0xB9;
- _s99_dword_47F2F0[8] = 0xBA;
- _s99_dword_47F2F0[9] = 0x17B;
- _s99_dword_47F2F0[10] = 0x17A;
- _s99_dword_47F2F0[11] = 0x17C;
- _s99_dword_47F2F0[12] = 0x17A;
- _s99_dword_47F2F0[13] = 0x1B7;
- _s99_dword_47F2F0[14] = 0x1B8;
- _s99_dword_47F2F0[15] = 0x1B9;
- _s99_dword_47F330[0] = 2;
- _s99_dword_47F330[1] = 1;
- _s99_dword_47F330[2] = 2;
- _s99_dword_47F330[3] = 1;
- _s99_dword_47F330[4] = 1;
- _s99_dword_47F330[5] = 1;
- _s99_dword_47F330[6] = 1;
- _s99_dword_47F330[7] = 1;
- _s99_dword_47F330[8] = 1;
- _s99_dword_47F330[9] = 1;
- _s99_dword_47F330[10] = 1;
- _s99_dword_47F330[11] = 1;
- _s99_dword_47F330[12] = 1;
- _s99_dword_47F330[13] = 1;
- _s99_dword_47F330[14] = 1;
- _s99_dword_47F330[15] = 1;
+ _s99_sequenceIdArr[0] = 0x1C9;
+ _s99_sequenceIdArr[1] = 0x1C7;
+ _s99_sequenceIdArr[2] = 0x1CC;
+ _s99_sequenceIdArr[3] = 0x1C8;
+ _s99_sequenceIdArr[4] = 0x1CB;
+ _s99_sequenceIdArr[5] = 0x1C0;
+ _s99_sequenceIdArr[6] = 0x1CA;
+ _s99_sequenceIdArr[7] = 0x1CE;
+ _s99_sequenceIdArr[8] = 0x1CD;
+ _s99_sequenceIdArr[9] = 0x1C1;
+ _s99_sequenceIdArr[10] = 0x1C2;
+ _s99_sequenceIdArr[11] = 0x1C3;
+ _s99_sequenceIdArr[12] = 0x1C4;
+ _s99_sequenceIdArr[13] = 0x1C6;
+ _s99_sequenceIdArr[14] = 0x1C5;
+ _s99_sequenceIdArr[15] = 0x1D0;
+ _s99_sequenceIdArr[16] = 0x1D0;
+ _s99_sequenceIdArr[17] = 0x1D0;
+ _s99_resourceIdArr[0] = 0xD5;
+ _s99_resourceIdArr[1] = 0x14C;
+ _s99_resourceIdArr[2] = 0xD5;
+ _s99_resourceIdArr[3] = 0xBF;
+ _s99_resourceIdArr[4] = 0xD6;
+ _s99_resourceIdArr[5] = 0x154;
+ _s99_resourceIdArr[6] = 0x155;
+ _s99_resourceIdArr[7] = 0xB9;
+ _s99_resourceIdArr[8] = 0xBA;
+ _s99_resourceIdArr[9] = 0x17B;
+ _s99_resourceIdArr[10] = 0x17A;
+ _s99_resourceIdArr[11] = 0x17C;
+ _s99_resourceIdArr[12] = 0x17A;
+ _s99_resourceIdArr[13] = 0x1B7;
+ _s99_resourceIdArr[14] = 0x1B8;
+ _s99_resourceIdArr[15] = 0x1B9;
+ _s99_sequenceCountArr[0] = 2;
+ _s99_sequenceCountArr[1] = 1;
+ _s99_sequenceCountArr[2] = 2;
+ _s99_sequenceCountArr[3] = 1;
+ _s99_sequenceCountArr[4] = 1;
+ _s99_sequenceCountArr[5] = 1;
+ _s99_sequenceCountArr[6] = 1;
+ _s99_sequenceCountArr[7] = 1;
+ _s99_sequenceCountArr[8] = 1;
+ _s99_sequenceCountArr[9] = 1;
+ _s99_sequenceCountArr[10] = 1;
+ _s99_sequenceCountArr[11] = 1;
+ _s99_sequenceCountArr[12] = 1;
+ _s99_sequenceCountArr[13] = 1;
+ _s99_sequenceCountArr[14] = 1;
+ _s99_sequenceCountArr[15] = 1;
_s99_canSkip[0] = 0;
_s99_canSkip[1] = 0;
_s99_canSkip[2] = 0;
Commit: c4f5dd0209a42ef5d3f6cfe81a83c98f0d9853f5
https://github.com/scummvm/scummvm/commit/c4f5dd0209a42ef5d3f6cfe81a83c98f0d9853f5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix compilation
Changed paths:
A engines/gnap/configure.engine
engines/gnap/detection.cpp
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/configure.engine b/engines/gnap/configure.engine
new file mode 100644
index 0000000..7aa538f
--- /dev/null
+++ b/engines/gnap/configure.engine
@@ -0,0 +1,3 @@
+# This file is included from the main "configure" script
+# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
+add_engine gnap "UFOs" no
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 8899445..ecd07a6 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -54,7 +54,7 @@ static const ADGameDescription gameDescriptions[] = {
class GnapMetaEngine : public AdvancedMetaEngine {
public:
GnapMetaEngine() : AdvancedMetaEngine(Gnap::gameDescriptions, sizeof(ADGameDescription), gnapGames) {
- _singleid = "gnap";
+ _singleId = "gnap";
_maxScanDepth = 3;
}
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index cced8f3..5a72428 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -24,7 +24,7 @@
#include "gnap/fontdata.h"
#include "graphics/fontman.h"
#include "graphics/font.h"
-#include "graphics/decoders/bmp.h"
+#include "image/bmp.h"
namespace Gnap {
@@ -365,7 +365,7 @@ Graphics::Surface *GameSys::loadBitmap(int resourceId) {
uint32 resourceSize = _vm->_dat->getResourceSize(resourceId);
Common::MemoryReadStream stream(resourceData, resourceSize, DisposeAfterUse::NO);
Graphics::Surface *bmpSurface;
- Graphics::BitmapDecoder bmp;
+ Image::BitmapDecoder bmp;
if (!bmp.loadStream(stream))
error("GameSys::loadBitmap() Could not load bitmap resource %08X", resourceId);
bmpSurface = bmp.getSurface()->convertTo(_vm->_system->getScreenFormat());
Commit: 5ecf00826028b4d3ee6d64f1a4fe67839b34bc43
https://github.com/scummvm/scummvm/commit/5ecf00826028b4d3ee6d64f1a4fe67839b34bc43
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Use nullptr instead of 0 for some pointers
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 5a72428..d3e1195 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -360,7 +360,7 @@ int GameSys::getSpriteHeightById(int resourceId) {
Graphics::Surface *GameSys::loadBitmap(int resourceId) {
debug("GameSys::loadBitmap() resourceId: %08X", resourceId);
if (_vm->_dat->getResourceType(resourceId) != 1)
- return 0;
+ return nullptr;
byte *resourceData = _vm->_dat->loadResource(resourceId);
uint32 resourceSize = _vm->_dat->getResourceSize(resourceId);
Common::MemoryReadStream stream(resourceData, resourceSize, DisposeAfterUse::NO);
@@ -406,7 +406,7 @@ Sequence *GameSys::seqFind(int sequenceId, int id, int *outIndex) {
*outIndex = i;
return &_seqItems[i];
}
- return 0;
+ return nullptr;
}
int GameSys::seqLocateGfx(int sequenceId, int id, int *outGfxIndex) {
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 2ae933f..20dd8d4 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -169,13 +169,13 @@ protected:
CacheMapIterator it = _cache.find(resourceId);
if (it != _cache.end())
return it->_value;
- return 0;
+ return nullptr;
}
ResourceClass *load(int resourceId) {
if (_dat->getResourceType(resourceId) != ResourceType) {
error("ResourceCache::load() Wrong resource type: Expected %d, got %d", ResourceType, _dat->getResourceType(resourceId));
- return 0;
+ return nullptr;
}
byte *resourceData = _dat->loadResource(resourceId);
uint32 resourceSize = _dat->getResourceSize(resourceId);
Commit: bec37164f840d47bd16b5c094d35f4345eb1d38c
https://github.com/scummvm/scummvm/commit/bec37164f840d47bd16b5c094d35f4345eb1d38c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Change a couple of variables to boolean, soft refactoring
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene51.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 30311ea..e0d2f18 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -294,7 +294,6 @@ void GnapEngine::gameUpdateTick() {
_soundMan->update();
_system->updateScreen();
_system->delayMillis(5);
-
}
void GnapEngine::saveTimers() {
@@ -793,7 +792,6 @@ void GnapEngine::mainLoop() {
if (_debugLevel == 4)
_gameDone = true;
}
-
}
if (_backgroundSurface)
@@ -804,11 +802,9 @@ void GnapEngine::mainLoop() {
// TODO freeFont();
debug("MainLoop #XXX2");
-
}
void GnapEngine::initScene() {
-
Common::String datFilename;
_isLeavingScene = false;
@@ -856,7 +852,6 @@ void GnapEngine::endSceneInit() {
}
void GnapEngine::afterScene() {
-
if (_gameDone)
return;
@@ -906,7 +901,6 @@ void GnapEngine::startSoundTimerA(int timerIndex) {
}
int GnapEngine::playSoundA() {
-
static const int kSoundIdsA[] = {
0x93E, 0x93F, 0x941, 0x942, 0x943, 0x944,
0x945, 0x946, 0x947, 0x948, 0x949
@@ -1030,7 +1024,6 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
int sequenceId = 0;
switch (kind) {
-
case gskPullOutDevice:
if (gridX > 0 && gridY > 0) {
if (_gnapY > gridY) {
@@ -1364,14 +1357,12 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
_gnapIdleFacing = 1;
}
break;
-
}
return sequenceId | 0x10000;
}
int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
-
int sequenceId;
int facing = _gnapIdleFacing;
@@ -1761,7 +1752,6 @@ void GnapEngine::gnapInitBrainPulseRndValue() {
}
void GnapEngine::gnapUseDeviceOnBeaver() {
-
playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
if (_beaverFacing != 0) {
@@ -1902,6 +1892,7 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(10);
}
+// CHECKME: The 3 parameters are always 0
int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
int sequenceId;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 8e23990..e13158c 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -214,25 +214,25 @@ enum {
// 0x7B0 Gnap walks to the left 2
struct Scene49Obstacle {
- int currSequenceId;
- int closerSequenceId;
- int passedSequenceId;
- int splashSequenceId;
- int collisionSequenceId;
- int prevId;
- int currId;
- int laneNum;
+ int _currSequenceId;
+ int _closerSequenceId;
+ int _passedSequenceId;
+ int _splashSequenceId;
+ int _collisionSequenceId;
+ int _prevId;
+ int _currId;
+ int _laneNum;
};
struct Scene51Item {
- int currSequenceId;
- int droppedSequenceId;
- int x, y;
- int collisionX;
- int canCatch;
- int isCollision;
- int x2;
- int id;
+ int _currSequenceId;
+ int _droppedSequenceId;
+ int _x, _y;
+ int _collisionX;
+ bool _canCatch;
+ bool _isCollision;
+ int _x2;
+ int _id;
};
class GnapEngine : public Engine {
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index 19da920..9a47145 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -70,64 +70,64 @@ void GnapEngine::scene49_checkObstacles() {
scene49_clearObstacle(i);
for (int j = 0; j < 5; ++j) {
- if (_s49_obstacles[j].currSequenceId == 0) {
+ if (_s49_obstacles[j]._currSequenceId == 0) {
_timers[3] = 35;
- _s49_obstacles[j].currSequenceId = kObstacleDefs[_s49_obstacleIndex].sequenceId;
- switch (_s49_obstacles[j].currSequenceId) {
+ _s49_obstacles[j]._currSequenceId = kObstacleDefs[_s49_obstacleIndex].sequenceId;
+ switch (_s49_obstacles[j]._currSequenceId) {
case 0xB4:
- _s49_obstacles[j].laneNum = 1;
- _s49_obstacles[j].closerSequenceId = 180;
- _s49_obstacles[j].passedSequenceId = 181;
- _s49_obstacles[j].splashSequenceId = 182;
- _s49_obstacles[j].collisionSequenceId = 192;
+ _s49_obstacles[j]._laneNum = 1;
+ _s49_obstacles[j]._closerSequenceId = 180;
+ _s49_obstacles[j]._passedSequenceId = 181;
+ _s49_obstacles[j]._splashSequenceId = 182;
+ _s49_obstacles[j]._collisionSequenceId = 192;
break;
case 0xB7:
- _s49_obstacles[j].laneNum = 2;
- _s49_obstacles[j].closerSequenceId = 183;
- _s49_obstacles[j].passedSequenceId = 184;
- _s49_obstacles[j].splashSequenceId = 185;
- _s49_obstacles[j].collisionSequenceId = 193;
+ _s49_obstacles[j]._laneNum = 2;
+ _s49_obstacles[j]._closerSequenceId = 183;
+ _s49_obstacles[j]._passedSequenceId = 184;
+ _s49_obstacles[j]._splashSequenceId = 185;
+ _s49_obstacles[j]._collisionSequenceId = 193;
break;
case 0xBD:
- _s49_obstacles[j].laneNum = 3;
- _s49_obstacles[j].closerSequenceId = 189;
- _s49_obstacles[j].passedSequenceId = 190;
- _s49_obstacles[j].splashSequenceId = 191;
- _s49_obstacles[j].collisionSequenceId = 195;
+ _s49_obstacles[j]._laneNum = 3;
+ _s49_obstacles[j]._closerSequenceId = 189;
+ _s49_obstacles[j]._passedSequenceId = 190;
+ _s49_obstacles[j]._splashSequenceId = 191;
+ _s49_obstacles[j]._collisionSequenceId = 195;
break;
case 0xBA:
- _s49_obstacles[j].laneNum = 2;
- _s49_obstacles[j].closerSequenceId = 186;
- _s49_obstacles[j].passedSequenceId = 187;
- _s49_obstacles[j].splashSequenceId = 188;
- _s49_obstacles[j].collisionSequenceId = 194;
+ _s49_obstacles[j]._laneNum = 2;
+ _s49_obstacles[j]._closerSequenceId = 186;
+ _s49_obstacles[j]._passedSequenceId = 187;
+ _s49_obstacles[j]._splashSequenceId = 188;
+ _s49_obstacles[j]._collisionSequenceId = 194;
break;
case 0xCB:
- _s49_obstacles[j].laneNum = 1;
- _s49_obstacles[j].closerSequenceId = 203;
- _s49_obstacles[j].passedSequenceId = 204;
- _s49_obstacles[j].splashSequenceId = 0;
- _s49_obstacles[j].collisionSequenceId = 209;
+ _s49_obstacles[j]._laneNum = 1;
+ _s49_obstacles[j]._closerSequenceId = 203;
+ _s49_obstacles[j]._passedSequenceId = 204;
+ _s49_obstacles[j]._splashSequenceId = 0;
+ _s49_obstacles[j]._collisionSequenceId = 209;
break;
case 0xCD:
- _s49_obstacles[j].laneNum = 2;
- _s49_obstacles[j].closerSequenceId = 205;
- _s49_obstacles[j].passedSequenceId = 206;
- _s49_obstacles[j].splashSequenceId = 0;
- _s49_obstacles[j].collisionSequenceId = 210;
+ _s49_obstacles[j]._laneNum = 2;
+ _s49_obstacles[j]._closerSequenceId = 205;
+ _s49_obstacles[j]._passedSequenceId = 206;
+ _s49_obstacles[j]._splashSequenceId = 0;
+ _s49_obstacles[j]._collisionSequenceId = 210;
break;
case 0xCF:
- _s49_obstacles[j].laneNum = 3;
- _s49_obstacles[j].closerSequenceId = 207;
- _s49_obstacles[j].passedSequenceId = 208;
- _s49_obstacles[j].splashSequenceId = 0;
- _s49_obstacles[j].collisionSequenceId = 211;
+ _s49_obstacles[j]._laneNum = 3;
+ _s49_obstacles[j]._closerSequenceId = 207;
+ _s49_obstacles[j]._passedSequenceId = 208;
+ _s49_obstacles[j]._splashSequenceId = 0;
+ _s49_obstacles[j]._collisionSequenceId = 211;
break;
}
- _s49_obstacles[j].prevId = _s49_truckId;
- _s49_obstacles[j].currId = _s49_obstacles[j].prevId;
- _gameSys->setAnimation(_s49_obstacles[j].currSequenceId, _s49_obstacles[j].currId, j + 2);
- _gameSys->insertSequence(_s49_obstacles[j].currSequenceId, _s49_obstacles[j].currId, 0, 0, kSeqNone, 0, 0, -50);
+ _s49_obstacles[j]._prevId = _s49_truckId;
+ _s49_obstacles[j]._currId = _s49_obstacles[j]._prevId;
+ _gameSys->setAnimation(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, j + 2);
+ _gameSys->insertSequence(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
_timers[2] = kObstacleDefs[_s49_obstacleIndex].ticks;
++_s49_obstacleIndex;
if (_s49_obstacleIndex == 50)
@@ -144,83 +144,83 @@ void GnapEngine::scene49_updateObstacle(int id) {
Scene49Obstacle &obstacle = _s49_obstacles[id];
- obstacle.currId = obstacle.prevId;
+ obstacle._currId = obstacle._prevId;
- switch (obstacle.laneNum) {
+ switch (obstacle._laneNum) {
case 1:
- obstacle.prevId = _s49_truckId + 1;
+ obstacle._prevId = _s49_truckId + 1;
break;
case 2:
if (_s49_truckLaneNum != 2 && _s49_truckLaneNum != 3)
- obstacle.prevId = _s49_truckId - 1;
+ obstacle._prevId = _s49_truckId - 1;
else
- obstacle.prevId = _s49_truckId + 1;
+ obstacle._prevId = _s49_truckId + 1;
break;
case 3:
if (_s49_truckLaneNum != 1 && _s49_truckLaneNum != 2)
- obstacle.prevId = _s49_truckId;
+ obstacle._prevId = _s49_truckId;
else
- obstacle.prevId = _s49_truckId - 1;
+ obstacle._prevId = _s49_truckId - 1;
break;
}
- if (obstacle.currSequenceId == obstacle.closerSequenceId) {
- if (_s49_truckLaneNum == obstacle.laneNum) {
- if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.collisionSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ if (obstacle._currSequenceId == obstacle._closerSequenceId) {
+ if (_s49_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ _gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- obstacle.currSequenceId = obstacle.collisionSequenceId;
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
playSound(224, 0);
scene49_increaseScore(30);
- } else if ((obstacle.laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
- (obstacle.laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
- (obstacle.laneNum == 3 && _s49_truckSequenceId == 0xB3)) {
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ } else if ((obstacle._laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
+ (obstacle._laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
+ (obstacle._laneNum == 3 && _s49_truckSequenceId == 0xB3)) {
+ _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- obstacle.currSequenceId = obstacle.passedSequenceId;
+ obstacle._currSequenceId = obstacle._passedSequenceId;
} else {
- _gameSys->setAnimation(obstacle.collisionSequenceId, 256, 0);
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ _gameSys->setAnimation(obstacle._collisionSequenceId, 256, 0);
+ _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- _gameSys->insertSequence(obstacle.collisionSequenceId, 256,
+ _gameSys->insertSequence(obstacle._collisionSequenceId, 256,
_s49_truckSequenceId, _s49_truckId,
kSeqSyncExists, 0, 0, -50);
- _s49_truckSequenceId = obstacle.collisionSequenceId;
+ _s49_truckSequenceId = obstacle._collisionSequenceId;
_s49_truckId = 256;
- obstacle.currSequenceId = obstacle.passedSequenceId;
+ obstacle._currSequenceId = obstacle._passedSequenceId;
playSound(225, 0);
scene49_decreaseScore(30);
}
} else {
- _gameSys->setAnimation(obstacle.passedSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.passedSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- obstacle.currSequenceId = obstacle.passedSequenceId;
+ obstacle._currSequenceId = obstacle._passedSequenceId;
}
- } else if (obstacle.currSequenceId == obstacle.passedSequenceId) {
- if (_s49_truckLaneNum == obstacle.laneNum) {
- if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.collisionSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.collisionSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ } else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
+ if (_s49_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ _gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- obstacle.currSequenceId = obstacle.collisionSequenceId;
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
playSound(224, 0);
scene49_increaseScore(30);
}
- } else if (obstacle.splashSequenceId) {
- _gameSys->setAnimation(obstacle.splashSequenceId, obstacle.prevId, id + 2);
- _gameSys->insertSequence(obstacle.splashSequenceId, obstacle.prevId,
- obstacle.currSequenceId, obstacle.currId,
+ } else if (obstacle._splashSequenceId) {
+ _gameSys->setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
+ _gameSys->insertSequence(obstacle._splashSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- obstacle.currSequenceId = obstacle.splashSequenceId;
+ obstacle._currSequenceId = obstacle._splashSequenceId;
}
} else {
_gameSys->setAnimation(0, 0, id + 2);
@@ -256,14 +256,14 @@ void GnapEngine::scene49_refreshScoreBar() {
}
void GnapEngine::scene49_clearObstacle(int index) {
- _s49_obstacles[index].currSequenceId = 0;
- _s49_obstacles[index].closerSequenceId = 0;
- _s49_obstacles[index].passedSequenceId = 0;
- _s49_obstacles[index].splashSequenceId = 0;
- _s49_obstacles[index].collisionSequenceId = 0;
- _s49_obstacles[index].prevId = 0;
- _s49_obstacles[index].currId = 0;
- _s49_obstacles[index].laneNum = 0;
+ _s49_obstacles[index]._currSequenceId = 0;
+ _s49_obstacles[index]._closerSequenceId = 0;
+ _s49_obstacles[index]._passedSequenceId = 0;
+ _s49_obstacles[index]._splashSequenceId = 0;
+ _s49_obstacles[index]._collisionSequenceId = 0;
+ _s49_obstacles[index]._prevId = 0;
+ _s49_obstacles[index]._currId = 0;
+ _s49_obstacles[index]._laneNum = 0;
}
void GnapEngine::scene49_run() {
@@ -498,7 +498,7 @@ void GnapEngine::scene49_updateAnimations() {
for (int i = 0; i < 5; ++i) {
if (_gameSys->getAnimationStatus(i + 2) == 2) {
- if (_s49_obstacles[i].currSequenceId)
+ if (_s49_obstacles[i]._currSequenceId)
scene49_updateObstacle(i);
}
}
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index 1610e36..d93506f 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -58,13 +58,13 @@ void GnapEngine::scene51_updateHotspots() {
}
void GnapEngine::scene51_clearItem(Scene51Item *item) {
- item->currSequenceId = 0;
- item->droppedSequenceId = 0;
- item->x = 0;
- item->y = 0;
- item->x2 = 0;
- item->collisionX = 0;
- item->canCatch = 0;
+ item->_currSequenceId = 0;
+ item->_droppedSequenceId = 0;
+ item->_x = 0;
+ item->_y = 0;
+ item->_x2 = 0;
+ item->_collisionX = 0;
+ item->_canCatch = false;
}
void GnapEngine::scene51_dropNextItem() {
@@ -74,7 +74,7 @@ void GnapEngine::scene51_dropNextItem() {
int index = 0;
- while (index < 6 && _s51_items[index].currSequenceId)
+ while (index < 6 && _s51_items[index]._currSequenceId)
++index;
if (index == 6)
@@ -84,10 +84,10 @@ void GnapEngine::scene51_dropNextItem() {
case 0:
if (getRandom(10) != 0 || _s51_itemsCtr2 >= 2) {
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
@@ -100,20 +100,20 @@ void GnapEngine::scene51_dropNextItem() {
else
_s51_itemInsertX += 70;
}
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
case 2:
if (getRandom(6) != 0 || _s51_itemsCtr2 >= 2) {
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
@@ -122,19 +122,19 @@ void GnapEngine::scene51_dropNextItem() {
case 4:
if (_s51_itemsCtr == 0)
_s51_itemsCtr1 = 3;
- _s51_items[index].currSequenceId = 0xC0;
+ _s51_items[index]._currSequenceId = 0xC0;
break;
case 5:
case 6:
if (getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
if (getRandom(5) != 0)
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
else
- _s51_items[index].currSequenceId = 0xC0;
+ _s51_items[index]._currSequenceId = 0xC0;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
@@ -148,12 +148,12 @@ void GnapEngine::scene51_dropNextItem() {
_s51_itemInsertX += 40;
}
if (getRandom(9) != 0)
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
else
- _s51_items[index].currSequenceId = 0xC0;
+ _s51_items[index]._currSequenceId = 0xC0;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
@@ -161,12 +161,12 @@ void GnapEngine::scene51_dropNextItem() {
default:
if (getRandom(4) != 0 || _s51_itemsCtr2 >= 2) {
if (getRandom(9) != 0)
- _s51_items[index].currSequenceId = 0xBD;
+ _s51_items[index]._currSequenceId = 0xBD;
else
- _s51_items[index].currSequenceId = 0xC0;
+ _s51_items[index]._currSequenceId = 0xC0;
} else {
--_s51_itemsCtr1;
- _s51_items[index].currSequenceId = 0xBA;
+ _s51_items[index]._currSequenceId = 0xBA;
++_s51_itemsCtr2;
}
break;
@@ -193,23 +193,23 @@ void GnapEngine::scene51_dropNextItem() {
if (_s51_itemInsertX < 129)
_s51_itemInsertX = 129;
- if (_s51_items[index].currSequenceId == 0xBA) {
- _s51_items[index].x2 = getRandom(350) + 200;
- _s51_items[index].x = _s51_items[index].x2 - 362;
- _s51_items[index].y = 15;
- _s51_items[index].id = 249 - index;
+ if (_s51_items[index]._currSequenceId == 0xBA) {
+ _s51_items[index]._x2 = getRandom(350) + 200;
+ _s51_items[index]._x = _s51_items[index]._x2 - 362;
+ _s51_items[index]._y = 15;
+ _s51_items[index]._id = 249 - index;
} else {
- _s51_items[index].collisionX = _s51_itemInsertX;
- _s51_items[index].x = _s51_items[index].collisionX - 395;
- if (_s51_items[index].currSequenceId == 0xC0)
- _s51_items[index].x -= 65;
- _s51_items[index].id = index + 250;
- _s51_items[index].canCatch = 1;
+ _s51_items[index]._collisionX = _s51_itemInsertX;
+ _s51_items[index]._x = _s51_items[index]._collisionX - 395;
+ if (_s51_items[index]._currSequenceId == 0xC0)
+ _s51_items[index]._x -= 65;
+ _s51_items[index]._id = index + 250;
+ _s51_items[index]._canCatch = true;
}
- _gameSys->setAnimation(_s51_items[index].currSequenceId, _s51_items[index].id, index + 1);
- _gameSys->insertSequence(_s51_items[index].currSequenceId, _s51_items[index].id, 0, 0,
- kSeqNone, 0, _s51_items[index].x, _s51_items[index].y);
+ _gameSys->setAnimation(_s51_items[index]._currSequenceId, _s51_items[index]._id, index + 1);
+ _gameSys->insertSequence(_s51_items[index]._currSequenceId, _s51_items[index]._id, 0, 0,
+ kSeqNone, 0, _s51_items[index]._x, _s51_items[index]._y);
_timers[0] = _s51_dropSpeedTicks;
@@ -234,18 +234,17 @@ void GnapEngine::scene51_updateItemAnimations() {
int GnapEngine::scene51_checkCollision(int sequenceId) {
bool jumpingLeft = false, jumpingRight = false;
- int v6 = 0;
- int v2 = 0;
int v8, v4;
int result = 0;
if (!scene51_isJumping(sequenceId))
return false;
- while (v6 < 6)
- v2 += _s51_items[v6++].isCollision;
+ bool checkFl = false;
+ for (int i = 0; i < 6; i++)
+ checkFl |= _s51_items[i]._isCollision;
- if (!v2)
+ if (!checkFl)
return false;
if (scene51_isJumpingRight(sequenceId)) {
@@ -262,14 +261,14 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
int v5 = 0;
int i;
for (i = 0; i < 6; ++i) {
- if (_s51_items[i].isCollision) {
- if (jumpingRight && _s51_items[i].x2 > v8 && _s51_items[i].x2 < v4) {
+ if (_s51_items[i]._isCollision) {
+ if (jumpingRight && _s51_items[i]._x2 > v8 && _s51_items[i]._x2 < v4) {
v5 = v8 - 359;
if (v5 == 0)
v5 = 1;
_s51_platypusNextSequenceId = 0xB6;
break;
- } else if (jumpingLeft && _s51_items[i].x2 < v4 && _s51_items[i].x2 > v8) {
+ } else if (jumpingLeft && _s51_items[i]._x2 < v4 && _s51_items[i]._x2 > v8) {
v5 = v8 - 344;
if (v5 == 0)
v5 = 1;
@@ -279,10 +278,10 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
}
}
if (v5) {
- _gameSys->setAnimation(0xBC, _s51_items[i].id, i + 1);
- _gameSys->insertSequence(0xBC, _s51_items[i].id, _s51_items[i].currSequenceId, _s51_items[i].id, kSeqSyncWait, 0, _s51_items[i].x, 15);
- _s51_items[i].isCollision = 0;
- _s51_items[i].currSequenceId = 0xBC;
+ _gameSys->setAnimation(0xBC, _s51_items[i]._id, i + 1);
+ _gameSys->insertSequence(0xBC, _s51_items[i]._id, _s51_items[i]._currSequenceId, _s51_items[i]._id, kSeqSyncWait, 0, _s51_items[i]._x, 15);
+ _s51_items[i]._isCollision = false;
+ _s51_items[i]._currSequenceId = 0xBC;
--_s51_itemsCtr2;
}
result = v5;
@@ -293,14 +292,14 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
- switch (item->currSequenceId) {
+ switch (item->_currSequenceId) {
case 0xBD:
case 0xC0:
case 0xC1:
// Falling coin and banknote
if (!scene51_itemIsCaught(item)) {
if (_s51_dropLoseCash) {
- if (item->currSequenceId == 0xBD)
+ if (item->_currSequenceId == 0xBD)
_s51_cashAmount -= 2;
else
_s51_cashAmount -= 25;
@@ -308,24 +307,24 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
_s51_cashAmount = 0;
scene51_updateCash(_s51_cashAmount);
}
- item->droppedSequenceId = item->currSequenceId + 1;
- if (item->currSequenceId != 0xC0) {
- item->canCatch = 0;
+ item->_droppedSequenceId = item->_currSequenceId + 1;
+ if (item->_currSequenceId != 0xC0) {
+ item->_canCatch = false;
_s51_dropLoseCash = true;
_s51_itemsCtr = 0;
_timers[0] = 10;
}
- if (item->droppedSequenceId) {
- _gameSys->setAnimation(item->droppedSequenceId, item->id, index + 1);
- _gameSys->insertSequence(item->droppedSequenceId, item->id, item->currSequenceId, item->id, kSeqSyncWait, 0, item->x, item->y);
- item->currSequenceId = item->droppedSequenceId;
- item->y = 0;
+ if (item->_droppedSequenceId) {
+ _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
}
} else {
- _gameSys->removeSequence(item->currSequenceId, item->id, true);
+ _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
_gameSys->setAnimation(0, 0, index + 1);
playSound(218, 0);
- if (scene51_incCashAmount(item->currSequenceId) == 1995) {
+ if (scene51_incCashAmount(item->_currSequenceId) == 1995) {
scene51_winMinigame();
_sceneDone = true;
} else {
@@ -356,12 +355,12 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
case 0xBE:
// Fallen coin
- item->droppedSequenceId = item->currSequenceId + 1;
- if (item->droppedSequenceId) {
- _gameSys->setAnimation(item->droppedSequenceId, item->id, index + 1);
- _gameSys->insertSequence(item->droppedSequenceId, item->id, item->currSequenceId, item->id, kSeqSyncWait, 0, item->x, item->y);
- item->currSequenceId = item->droppedSequenceId;
- item->y = 0;
+ item->_droppedSequenceId = item->_currSequenceId + 1;
+ if (item->_droppedSequenceId) {
+ _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
}
break;
@@ -369,40 +368,40 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
case 0xC2:
// Bouncing coin and banknote
_gameSys->setAnimation(0, 0, index + 1);
- _gameSys->removeSequence(item->currSequenceId, item->id, true);
+ _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
scene51_clearItem(item);
break;
case 0xBA:
// Falling banana peel
- item->droppedSequenceId = 0xBB;
- item->y = 15;
- if (item->droppedSequenceId) {
- _gameSys->setAnimation(item->droppedSequenceId, item->id, index + 1);
- _gameSys->insertSequence(item->droppedSequenceId, item->id, item->currSequenceId, item->id, kSeqSyncWait, 0, item->x, item->y);
- item->currSequenceId = item->droppedSequenceId;
- item->y = 0;
+ item->_droppedSequenceId = 0xBB;
+ item->_y = 15;
+ if (item->_droppedSequenceId) {
+ _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
}
break;
case 0xBB:
- item->isCollision = 1;
- item->droppedSequenceId = 0;
+ item->_isCollision = true;
+ item->_droppedSequenceId = 0;
_gameSys->setAnimation(0, 0, index + 1);
break;
case 0xBC:
- _gameSys->removeSequence(item->currSequenceId, item->id, true);
+ _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
_gameSys->setAnimation(0, 0, index + 1);
scene51_clearItem(item);
break;
default:
- if (item->droppedSequenceId) {
- _gameSys->setAnimation(item->droppedSequenceId, item->id, index + 1);
- _gameSys->insertSequence(item->droppedSequenceId, item->id, item->currSequenceId, item->id, kSeqSyncWait, 0, item->x, item->y);
- item->currSequenceId = item->droppedSequenceId;
- item->y = 0;
+ if (item->_droppedSequenceId) {
+ _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
}
break;
@@ -412,8 +411,8 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
void GnapEngine::scene51_removeCollidedItems() {
for (int i = 0; i < 6; ++i) {
- if (_s51_items[i].isCollision) {
- _gameSys->removeSequence(_s51_items[i].currSequenceId, _s51_items[i].id, true);
+ if (_s51_items[i]._isCollision) {
+ _gameSys->removeSequence(_s51_items[i]._currSequenceId, _s51_items[i]._id, true);
_gameSys->setAnimation(0, 0, i + 1);
scene51_clearItem(&_s51_items[i]);
}
@@ -423,21 +422,21 @@ void GnapEngine::scene51_removeCollidedItems() {
int GnapEngine::scene51_itemIsCaught(Scene51Item *item) {
- if (!item->canCatch)
+ if (!item->_canCatch)
return 0;
if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
int v4 = scene51_getPosRight(_s51_platypusJumpSequenceId) + 97;
- if (item->collisionX < v4 && v4 - item->collisionX < 56)
+ if (item->_collisionX < v4 && v4 - item->_collisionX < 56)
return 1;
} else {
int v2 = scene51_getPosLeft(_s51_platypusJumpSequenceId);
- if (item->collisionX > v2 && item->collisionX - v2 < 56)
+ if (item->_collisionX > v2 && item->_collisionX - v2 < 56)
return 1;
}
- if (item->currSequenceId == 0xC1) {
- int v3 = item->collisionX + 100;
+ if (item->_currSequenceId == 0xC1) {
+ int v3 = item->_collisionX + 100;
if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
if (ABS(scene51_getPosRight(_s51_platypusJumpSequenceId) + 46 - v3) < 56)
return 1;
@@ -504,15 +503,15 @@ void GnapEngine::scene51_playIntroAnim() {
for (int i = 0; i < 6; ++i)
scene51_clearItem(&_s51_items[i]);
- _s51_items[0].currSequenceId = 0xBA;
- _s51_items[0].x2 = 320;
- _s51_items[0].x = -42;
- _s51_items[0].y = 15;
- _s51_items[0].id = 249;
- _s51_items[0].isCollision = 1;
+ _s51_items[0]._currSequenceId = 0xBA;
+ _s51_items[0]._x2 = 320;
+ _s51_items[0]._x = -42;
+ _s51_items[0]._y = 15;
+ _s51_items[0]._id = 249;
+ _s51_items[0]._isCollision = true;
_gameSys->insertSequence(_s51_platypusSequenceId, 256, 0, 0, kSeqNone, 0, -179, 0);
- _gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _s51_items[0].x, _s51_items[0].y);
+ _gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _s51_items[0]._x, _s51_items[0]._y);
_gameSys->setAnimation(0xBA, 249, 1);
_gameSys->setAnimation(_s51_platypusSequenceId, 256, 0);
Commit: ecc3e2a786629d06fbcf17e4d74605215efdc1ef
https://github.com/scummvm/scummvm/commit/ecc3e2a786629d06fbcf17e4d74605215efdc1ef
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Change the type of some variables to boolean
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene48.cpp
engines/gnap/scenes/scene52.cpp
engines/gnap/scenes/scene54.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e0d2f18..1a3bcf4 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2377,7 +2377,7 @@ void GnapEngine::cutscene_run() {
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(Common::KEYCODE_SPACE);
clearKeyStatus1(29);
- if (_s99_canSkip[itemIndex] & 1)
+ if (_s99_canSkip[itemIndex])
skip = true;
else
_sceneDone = true;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index e13158c..5eaa25d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -912,7 +912,8 @@ public:
void scene48_initCutscene();
// Scene 49
- int _s49_scoreBarPos, _s49_scoreLevel, _s49_scoreBarFlash;
+ int _s49_scoreBarPos, _s49_scoreLevel;
+ bool _s49_scoreBarFlash;
int _s49_obstacleIndex;
Scene49Obstacle _s49_obstacles[5];
int _s49_truckSequenceId, _s49_truckId, _s49_truckLaneNum;
@@ -1009,8 +1010,9 @@ public:
int _s52_shieldSpriteIds[3];
int _s52_shieldPosX[3];
int _s52_shipPosX;
- int _s52_shipCannonFired, _s52_shipCannonPosX, _s52_shipCannonPosY;
- int _s52_shipCannonFiring;
+ int _s52_shipCannonPosX, _s52_shipCannonPosY;
+ bool _s52_shipCannonFiring;
+ bool _s52_shipCannonFired;
int _s52_shipCannonWidth, _s52_shipCannonHeight;
int _s52_shipCannonTopY;
int _s52_shipMidX, _s52_shipMidY;
@@ -1093,7 +1095,7 @@ public:
int _s99_resourceIdArr[16];
int _s99_sequenceCountArr[16];
int _s99_sequenceIdArr[50];
- byte _s99_canSkip[16];
+ bool _s99_canSkip[16];
int cutscene_init();
void cutscene_run();
};
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index bb5f532..d692e1d 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -42,11 +42,11 @@ void GnapEngine::scene47_initCutscene1() {
_s99_sequenceCountArr[2] = 1;
_s99_sequenceCountArr[3] = 1;
_s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
- _s99_canSkip[4] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
+ _s99_canSkip[4] = false;
_s99_itemsCount = 5;
}
@@ -64,10 +64,10 @@ void GnapEngine::scene47_initCutscene2() {
_s99_sequenceCountArr[1] = 1;
_s99_sequenceCountArr[2] = 1;
_s99_sequenceCountArr[3] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
_s99_itemsCount = 4;
}
@@ -78,8 +78,8 @@ void GnapEngine::scene47_initCutscene3() {
_s99_resourceIdArr[1] = 0x143;
_s99_sequenceCountArr[0] = 1;
_s99_sequenceCountArr[1] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
_s99_itemsCount = 2;
}
@@ -93,9 +93,9 @@ void GnapEngine::scene47_initCutscene4() {
_s99_sequenceCountArr[0] = 1;
_s99_sequenceCountArr[1] = 1;
_s99_sequenceCountArr[2] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
_s99_itemsCount = 3;
}
@@ -108,8 +108,8 @@ void GnapEngine::scene47_initCutscene5() {
_s99_resourceIdArr[1] = 0x207;
_s99_sequenceCountArr[0] = 3;
_s99_sequenceCountArr[1] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
_s99_itemsCount = 2;
}
@@ -118,7 +118,7 @@ void GnapEngine::scene47_initCutscene6() {
_s99_sequenceIdArr[1] = 0x31F;
_s99_resourceIdArr[0] = 0x2FA;
_s99_sequenceCountArr[0] = 2;
- _s99_canSkip[0] = 0;
+ _s99_canSkip[0] = false;
_s99_itemsCount = 1;
}
@@ -160,11 +160,11 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceCountArr[2] = v2 - v3;
_s99_sequenceCountArr[3] = 1;
_s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
- _s99_canSkip[4] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
+ _s99_canSkip[4] = false;
_s99_itemsCount = 5;
}
diff --git a/engines/gnap/scenes/scene48.cpp b/engines/gnap/scenes/scene48.cpp
index 3ea0f32..a614ca4 100644
--- a/engines/gnap/scenes/scene48.cpp
+++ b/engines/gnap/scenes/scene48.cpp
@@ -66,19 +66,19 @@ void GnapEngine::scene48_initCutscene() {
_s99_sequenceCountArr[10] = 1;
_s99_sequenceCountArr[11] = 1;
_s99_sequenceCountArr[12] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
- _s99_canSkip[4] = 0;
- _s99_canSkip[5] = 0;
- _s99_canSkip[6] = 0;
- _s99_canSkip[7] = 0;
- _s99_canSkip[8] = 0;
- _s99_canSkip[9] = 0;
- _s99_canSkip[10] = 0;
- _s99_canSkip[11] = 0;
- _s99_canSkip[12] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
+ _s99_canSkip[4] = false;
+ _s99_canSkip[5] = false;
+ _s99_canSkip[6] = false;
+ _s99_canSkip[7] = false;
+ _s99_canSkip[8] = false;
+ _s99_canSkip[9] = false;
+ _s99_canSkip[10] = false;
+ _s99_canSkip[11] = false;
+ _s99_canSkip[12] = false;
_s99_itemsCount = 13;
}
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 3696685..0b00b42 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -144,11 +144,11 @@ void GnapEngine::scene52_update() {
}
void GnapEngine::scene52_initShipCannon(int bottomY) {
- _s52_shipCannonFired = 0;
+ _s52_shipCannonFired = false;
_s52_shipCannonWidth = MAX(_gameSys->getSpriteWidthById(14), _gameSys->getSpriteWidthById(16));
_s52_shipCannonHeight = MAX(_gameSys->getSpriteHeightById(14), _gameSys->getSpriteHeightById(16));
_s52_shipCannonTopY = bottomY - _s52_shipCannonHeight;
- _s52_shipCannonFiring = 0;
+ _s52_shipCannonFiring = false;
}
void GnapEngine::scene52_initAlienCannons() {
@@ -177,9 +177,9 @@ void GnapEngine::scene52_fireShipCannon(int posX) {
_gameSys->setAnimation(0, 0, cannonNum + 8);
_gameSys->removeSequence(0x23, cannonNum + 256, true);
} else {
- _s52_shipCannonFired = 1;
+ _s52_shipCannonFired = true;
_s52_shipCannonPosY -= 13;
- _s52_shipCannonFiring = 1;
+ _s52_shipCannonFiring = true;
}
_timers[1] = 5;
}
@@ -227,7 +227,7 @@ void GnapEngine::scene52_updateShipCannon() {
if (scene52_updateHitAlien()) {
_gameSys->setAnimation(0, 0, 8);
_gameSys->removeSequence(35, 256, true);
- _s52_shipCannonFired = 0;
+ _s52_shipCannonFired = false;
scene52_drawScore(_s52_gameScore);
} else {
_gameSys->setAnimation(35, 256, 8);
@@ -237,7 +237,7 @@ void GnapEngine::scene52_updateShipCannon() {
} else {
_gameSys->setAnimation(0, 0, 8);
_gameSys->removeSequence(35, 256, true);
- _s52_shipCannonFired = 0;
+ _s52_shipCannonFired = false;
}
}
}
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
index 6feb445..387b17c 100644
--- a/engines/gnap/scenes/scene54.cpp
+++ b/engines/gnap/scenes/scene54.cpp
@@ -46,11 +46,11 @@ void GnapEngine::scene54_initCutscene1() {
_s99_sequenceCountArr[2] = 1;
_s99_sequenceCountArr[3] = 2;
_s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
- _s99_canSkip[4] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
+ _s99_canSkip[4] = false;
_s99_itemsCount = 5;
}
@@ -105,22 +105,22 @@ void GnapEngine::scene54_initCutscene2() {
_s99_sequenceCountArr[13] = 1;
_s99_sequenceCountArr[14] = 1;
_s99_sequenceCountArr[15] = 1;
- _s99_canSkip[0] = 0;
- _s99_canSkip[1] = 0;
- _s99_canSkip[2] = 0;
- _s99_canSkip[3] = 0;
- _s99_canSkip[4] = 0;
- _s99_canSkip[5] = 0;
- _s99_canSkip[6] = 0;
- _s99_canSkip[7] = 0;
- _s99_canSkip[8] = 0;
- _s99_canSkip[9] = 0;
- _s99_canSkip[10] = 0;
- _s99_canSkip[11] = 0;
- _s99_canSkip[12] = 0;
- _s99_canSkip[13] = 1;
- _s99_canSkip[14] = 1;
- _s99_canSkip[15] = 0;
+ _s99_canSkip[0] = false;
+ _s99_canSkip[1] = false;
+ _s99_canSkip[2] = false;
+ _s99_canSkip[3] = false;
+ _s99_canSkip[4] = false;
+ _s99_canSkip[5] = false;
+ _s99_canSkip[6] = false;
+ _s99_canSkip[7] = false;
+ _s99_canSkip[8] = false;
+ _s99_canSkip[9] = false;
+ _s99_canSkip[10] = false;
+ _s99_canSkip[11] = false;
+ _s99_canSkip[12] = false;
+ _s99_canSkip[13] = true;
+ _s99_canSkip[14] = true;
+ _s99_canSkip[15] = false;
_s99_itemsCount = 16;
}
Commit: f3a164342b4f62c3bdf02c226880e6d2d6316a66
https://github.com/scummvm/scummvm/commit/f3a164342b4f62c3bdf02c226880e6d2d6316a66
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Remove a global variable used for randomization
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 1a3bcf4..5077568 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1632,9 +1632,8 @@ void GnapEngine::updateGnapIdleSequence() {
if (_timers[3] == 0) {
_timers[2] = 60;
_timers[3] = 300;
- _gnapRandomValue = getRandom(5);
if (_gnapIdleFacing == 1) {
- switch (_gnapRandomValue) {
+ switch (getRandom(5)) {
case 0:
playGnapSequence(0x107A6);
break;
@@ -1649,7 +1648,7 @@ void GnapEngine::updateGnapIdleSequence() {
break;
}
} else if (_gnapIdleFacing == 3) {
- if (_gnapRandomValue > 2)
+ if (getRandom(5) > 2)
playGnapSequence(0x10832);
else
playGnapSequence(0x10842);
@@ -1932,19 +1931,19 @@ void GnapEngine::updateBeaverIdleSequence() {
if (_timers[0] > 0) {
if (_timers[1] == 0) {
_timers[1] = getRandom(20) + 30;
- _gnapRandomValue = getRandom(10);
+ int rnd = getRandom(10);
if (_beaverFacing != 0) {
- if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7CA) {
- if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7CA)
+ if (rnd != 0 || _beaverSequenceId != 0x7CA) {
+ if (rnd != 1 || _beaverSequenceId != 0x7CA)
playBeaverSequence(0x107CA);
else
playBeaverSequence(0x10845);
} else {
playBeaverSequence(0x107CC);
}
- } else if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7C9) {
- if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7C9) {
- if (_gnapRandomValue != 2 || _beaverSequenceId != 0x7C9)
+ } else if (rnd != 0 || _beaverSequenceId != 0x7C9) {
+ if (rnd != 1 || _beaverSequenceId != 0x7C9) {
+ if (rnd != 2 || _beaverSequenceId != 0x7C9)
playBeaverSequence(0x107C9);
else
playBeaverSequence(0x108A4);
@@ -1970,14 +1969,13 @@ void GnapEngine::beaverSub426234() {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
- _gnapRandomValue = getRandom(10);
if (_beaverFacing != 0) {
- if (_gnapRandomValue >= 2 || _beaverSequenceId != 0x7CA)
+ if (getRandom(10) >= 2 || _beaverSequenceId != 0x7CA)
playBeaverSequence(0x107CA);
else
playBeaverSequence(0x107CC);
} else {
- if (_gnapRandomValue >= 2 || _beaverSequenceId != 0x7C9) {
+ if (getRandom(10) >= 2 || _beaverSequenceId != 0x7C9) {
playBeaverSequence(0x107C9);
} else {
playBeaverSequence(0x107CB);
@@ -2136,8 +2134,7 @@ bool GnapEngine::sceneXX_sub_4466B1() {
void GnapEngine::sceneXX_playRandomSound(int timerIndex) {
if (!_timers[timerIndex]) {
_timers[timerIndex] = getRandom(40) + 50;
- _gnapRandomValue = getRandom(4);
- switch (_gnapRandomValue) {
+ switch (getRandom(4)) {
case 0:
playSound(0x1091B, 0);
break;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 5eaa25d..d376ffd 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -487,7 +487,6 @@ public:
int _gnapActionStatus;
int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
- int _gnapRandomValue;
int getGnapSequenceId(int kind, int gridX, int gridY);
int getGnapShowSequenceId(int index, int gridX, int gridY);
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index aa486b6..c6eda8f 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -201,7 +201,7 @@ void GnapEngine::scene07_run() {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
- _gnapRandomValue = getRandom(20);
+ int _gnapRandomValue = getRandom(20);
// TODO Cleanup
if (_beaverFacing != 0) {
if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7CA) {
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index 2943725..01e7708 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -364,7 +364,7 @@ void GnapEngine::scene08_run() {
_timers[4] = getRandom(50) + 125;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s08_nextManSequenceId == -1 &&
(_s08_currDogSequenceId == 0x134 || _s08_currDogSequenceId == 0x135)) {
- _gnapRandomValue = getRandom(4);
+ int _gnapRandomValue = getRandom(4);
switch (_gnapRandomValue) {
case 0:
_s08_nextManSequenceId = 0x138;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index e2da08e..aea4a34 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -329,7 +329,7 @@ void GnapEngine::scene10_run() {
}
if (!_timers[5]) {
_timers[5] = getRandom(100) + 100;
- _gnapRandomValue = getRandom(4);
+ int _gnapRandomValue = getRandom(4);
if (_gnapRandomValue) {
int sequenceId;
if (_gnapRandomValue == 1) {
@@ -428,45 +428,46 @@ void GnapEngine::scene10_updateAnimations() {
}
switch (_s10_currCookSequenceId) {
- case 0x106:
- _gnapRandomValue = getRandom(7);
+ case 0x106: {
+ // TODO: Refactor into a if + a switch
+ int rnd = getRandom(7);
if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (_gnapRandomValue == 0)
+ else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
- else if (_gnapRandomValue == 1)
+ else if (rnd == 1)
_s10_nextCookSequenceId = 0x103;
- else if (_gnapRandomValue == 2) {
+ else if (rnd == 2) {
_s10_nextCookSequenceId = 0x106;
_gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
} else
_s10_nextCookSequenceId = 0x106;
+ }
break;
case 0x103:
- _gnapRandomValue = getRandom(7);
if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (_gnapRandomValue == 0)
+ else if (getRandom(7) == 0)
_s10_nextCookSequenceId = 0x104;
else
_s10_nextCookSequenceId = 0x106;
break;
case 0x104:
- _gnapRandomValue = getRandom(7);
if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (_gnapRandomValue == 0)
+ else if (getRandom(7) == 0)
_s10_nextCookSequenceId = 0x103;
else
_s10_nextCookSequenceId = 0x106;
break;
- case 0x105:
- _gnapRandomValue = getRandom(7);
+ case 0x105: {
+ // TODO: Refactor into a if + a switch
+ int rnd = getRandom(7);
if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (_gnapRandomValue == 0)
+ else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
- else if (_gnapRandomValue == 1)
+ else if (rnd == 1)
_s10_nextCookSequenceId = 0x103;
else
_s10_nextCookSequenceId = 0x106;
@@ -478,6 +479,7 @@ void GnapEngine::scene10_updateAnimations() {
_gnapSequenceDatNum = 0;
_gnapActionStatus = -1;
_beaverActionStatus = -1;
+ }
break;
}
if (_s10_currCookSequenceId == 0x843)
@@ -485,7 +487,6 @@ void GnapEngine::scene10_updateAnimations() {
else
_gameSys->setAnimation(_s10_currCookSequenceId, 100, 2);
}
-
}
void GnapEngine::scene10_updateAnimationsCb() {
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 8097b23..04509ee 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -311,8 +311,7 @@ void GnapEngine::scene11_run() {
if (!_timers[5]) {
_timers[5] = getRandom(100) + 75;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
- _gnapRandomValue = getRandom(2);
- if (_gnapRandomValue)
+ if (getRandom(2))
_s11_nextGoggleGuySequenceId = 0x1F6;
else
_s11_nextGoggleGuySequenceId = 0x1F9;
@@ -322,8 +321,7 @@ void GnapEngine::scene11_run() {
_timers[4] = getRandom(40) + 20;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
if (_s11_currHookGuySequenceId == 0x201) {
- _gnapRandomValue = getRandom(7);
- switch (_gnapRandomValue) {
+ switch (getRandom(7)) {
case 0:
_s11_nextHookGuySequenceId = 0x200;
break;
@@ -344,7 +342,7 @@ void GnapEngine::scene11_run() {
}
if (!_timers[6]) {
_timers[6] = getRandom(100) + 100;
- _gnapRandomValue = getRandom(3);
+ int _gnapRandomValue = getRandom(3);
switch (_gnapRandomValue) {
case 0:
_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index 4bc10fc..f26bb30 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -347,7 +347,7 @@ void GnapEngine::scene12_run() {
}
if (!_timers[7]) {
_timers[7] = getRandom(100) + 100;
- _gnapRandomValue = getRandom(3);
+ int _gnapRandomValue = getRandom(3);
switch (_gnapRandomValue) {
case 0:
_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
@@ -450,8 +450,7 @@ void GnapEngine::scene12_updateAnimations() {
_s12_nextBeardGuySequenceId = 0x1F0;
break;
case kASTalkBarkeeper:
- _gnapRandomValue = getRandom(2);
- if (_gnapRandomValue != 0)
+ if (getRandom(2) != 0)
_s12_nextBarkeeperSequenceId = 0x1FD;
else
_s12_nextBarkeeperSequenceId = 0x1FF;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 2897f68..4d7b6d0 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -324,8 +324,7 @@ void GnapEngine::scene13_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
- _gnapRandomValue = getRandom(5);
- switch (_gnapRandomValue) {
+ switch (getRandom(5)) {
case 0:
playSound(0xD2, 0);
break;
@@ -346,8 +345,7 @@ void GnapEngine::scene13_run() {
if (!_timers[5]) {
int newSoundId;
_timers[5] = getRandom(50) + 50;
- _gnapRandomValue = getRandom(7);
- switch (_gnapRandomValue) {
+ switch (getRandom(7)) {
case 0:
newSoundId = 0xD7;
_timers[5] = 2 * getRandom(50) + 100;
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index b84c4ba..ca5c677 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -394,8 +394,7 @@ void GnapEngine::scene41_run() {
if (!_timers[4]) {
_timers[4] = getRandom(100) + 100;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
- _gnapRandomValue = getRandom(3);
- switch (_gnapRandomValue) {
+ switch (getRandom(3)) {
case 0:
_s41_nextToyVendorSequenceId = 0x113;
break;
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 8de3a69..3826f7b 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -330,8 +330,7 @@ void GnapEngine::scene42_run() {
if (!_timers[4]) {
_timers[4] = getRandom(20) + 30;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
- _gnapRandomValue = getRandom(8);
- switch (_gnapRandomValue) {
+ switch (getRandom(8)) {
case 0:
_s42_nextBBQVendorSequenceId = 0x14C;
break;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 51917d5..957aea3 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -333,8 +333,7 @@ void GnapEngine::scene43_run() {
if (!_timers[4] && (!isFlag(12) || !isFlag(19))) {
_timers[4] = getRandom(100) + 100;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
- _gnapRandomValue = getRandom(5);
- switch (_gnapRandomValue) {
+ switch (getRandom(5)) {
case 0:
_s43_nextTwoHeadedGuySequenceId = 0x13C;
break;
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index c0905c7..3bcde76 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -376,8 +376,7 @@ void GnapEngine::scene44_run() {
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
- _gnapRandomValue = getRandom(20);
- switch (_gnapRandomValue) {
+ switch (getRandom(20)) {
case 0:
_s44_nextKissingLadySequenceId = 0xED;
break;
@@ -404,8 +403,7 @@ void GnapEngine::scene44_run() {
if (!_timers[5]) {
_timers[5] = getRandom(20) + 20;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
- _gnapRandomValue = getRandom(5);
- if (_gnapRandomValue != 0) {
+ if (getRandom(5) != 0) {
if (!isFlag(15))
_s44_nextSpringGuySequenceId = 0xF9;
} else {
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index b25216d..87d52be 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -147,9 +147,8 @@ void GnapEngine::scene45_run() {
gameUpdateTick();
if (_gameSys->getAnimationStatus(2) == 2) {
_gameSys->setAnimation(0, 0, 2);
- _gnapRandomValue = getRandom(7);
- int newSeqId = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ int newSeqId = getRandom(7) + 0x8F;
+ _gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(newSeqId, 1, 2);
_s45_currDancerSequenceId = newSeqId;
}
@@ -393,9 +392,8 @@ void GnapEngine::scene45_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
_gameSys->setAnimation(0, 0, 2);
- _gnapRandomValue = getRandom(7);
- int newSeqId = _gnapRandomValue + 0x8F;
- _gameSys->insertSequence(_gnapRandomValue + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ int newSeqId = getRandom(7) + 0x8F;
+ _gameSys->insertSequence(newSeqId + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(newSeqId, 1, 2);
_s45_currDancerSequenceId = newSeqId;
}
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 864f341..5448292 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -288,8 +288,7 @@ void GnapEngine::scene46_run() {
if (!_timers[4]) {
_timers[4] = getRandom(50) + 80;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
- _gnapRandomValue = getRandom(2);
- if (_gnapRandomValue != 0)
+ if (getRandom(2) != 0)
_s46_nextItchyGuySequenceId = 0x49;
else
_s46_nextItchyGuySequenceId = 0x48;
Commit: dca374efcde85472676a67e2af3decfeee51589e
https://github.com/scummvm/scummvm/commit/dca374efcde85472676a67e2af3decfeee51589e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Change another variable to boolean
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index d3e1195..88b5ea2 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -491,7 +491,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
(_backgroundImageValue3 - _backgroundImageValue1);
gfxItem->_currFrame._rect.top = gfxItem->_currFrame._rect.bottom - scaleValue * (gfxItem->_currFrame._rect.bottom - gfxItem->_currFrame._rect.top) / 1000;
gfxItem->_currFrame._rect.right = scaleValue * (gfxItem->_currFrame._rect.right - gfxItem->_currFrame._rect.left) / 1000 + gfxItem->_currFrame._rect.left;
- gfxItem->_currFrame._isScaled = 1;
+ gfxItem->_currFrame._isScaled = true;
}
gfxItem->_currFrame._duration -= totalDuration;
if (gfxItem->_currFrame._soundId != -1)
@@ -772,7 +772,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
const int x = clipRect.left, y = clipRect.top;
- debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled);
+ debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
// 32bit sprite drawing
if (frame._isScaled) {
@@ -1099,7 +1099,7 @@ void GameSys::fatUpdateFrame() {
(_backgroundImageValue3 - _backgroundImageValue1);
gfxItem->_currFrame._rect.top = gfxItem->_currFrame._rect.bottom - v17 * (gfxItem->_currFrame._rect.bottom - gfxItem->_currFrame._rect.top) / 1000;
gfxItem->_currFrame._rect.right = v17 * (gfxItem->_currFrame._rect.right - gfxItem->_currFrame._rect.left) / 1000 + gfxItem->_currFrame._rect.left;
- gfxItem->_currFrame._isScaled = 1;
+ gfxItem->_currFrame._isScaled = true;
}
gfxItem->_currFrame._duration -= duration;
if (gfxItem->_currFrame._soundId != -1)
@@ -1157,7 +1157,7 @@ void GameSys::fatUpdateFrame() {
gfxItem->_prevFrame._soundId = -1;
gfxItem->_prevFrame._unusedVal = -1;
gfxItem->_currFrame._duration = 0;
- gfxItem->_currFrame._isScaled = 0;
+ gfxItem->_currFrame._isScaled = false;
gfxItem->_currFrame._rect = _newSpriteDrawItems[k]._rect;
gfxItem->_currFrame._spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
gfxItem->_currFrame._soundId = -1;
@@ -1173,7 +1173,7 @@ void GameSys::fatUpdateFrame() {
if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
gfxItem->_id == _grabSpriteId && gfxItem->_surface == _grabSpriteSurface1) {
gfxItem->_currFrame._duration = 0;
- gfxItem->_currFrame._isScaled = 0;
+ gfxItem->_currFrame._isScaled = false;
gfxItem->_currFrame._rect = _grabSpriteRect;
gfxItem->_currFrame._spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
gfxItem->_currFrame._soundId = -1;
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index 17fe8f9..d83598b 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -28,7 +28,7 @@ namespace Gnap {
void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
_duration = stream.readUint16LE();
- _isScaled = stream.readUint16LE();
+ _isScaled = (stream.readUint16LE() != 0);
_rect.left = stream.readUint32LE();
_rect.top = stream.readUint32LE();
_rect.right = stream.readUint32LE();
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 20dd8d4..52acdc5 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -47,7 +47,7 @@ enum {
struct SequenceFrame {
int16 _duration;
- int16 _isScaled;
+ bool _isScaled;
Common::Rect _rect;
int32 _spriteId;
int32 _soundId;
Commit: 29d989ac0e75cfb59173141851ad8f2131a58461
https://github.com/scummvm/scummvm/commit/29d989ac0e75cfb59173141851ad8f2131a58461
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Change the initial values of backGroundImageValue2&4, change transparent to boolean, use nullptr in several places
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
engines/gnap/scenes/scene14.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 88b5ea2..6bdeb81 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -37,9 +37,7 @@ void GfxItem::testUpdRect(const Common::Rect &updRect) {
// GameSys
-GameSys::GameSys(GnapEngine *vm)
- : _vm(vm) {
-
+GameSys::GameSys(GnapEngine *vm) : _vm(vm) {
_newSpriteDrawItemsCount = 0;
_removeSequenceItemsCount = 0;
_removeSpriteDrawItemsCount = 0;
@@ -52,13 +50,13 @@ GameSys::GameSys(GnapEngine *vm)
_animationsCount = 0;
_backgroundImageValue3 = 0;
_backgroundImageValue1 = 0;
- _backgroundImageValue4 = 0;
- _backgroundImageValue2 = 0;
+ _backgroundImageValue4 = 1000;
+ _backgroundImageValue2 = 1000;
_backgroundImageError = true;
_gameSysClock = 0;
_lastUpdateClock = 0;
- _backgroundSurface = 0;
- _frontSurface = 0;
+ _backgroundSurface = nullptr;
+ _frontSurface = nullptr;
for (int i = 0; i < kMaxAnimations; ++i) {
_animations[i]._sequenceId = -1;
_animations[i]._id = 0;
@@ -170,7 +168,6 @@ int GameSys::isSequenceActive(int sequenceId, int id) {
}
void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7) {
-
debug(1, "GameSys::setBackgroundSurface() Setting background image");
_backgroundSurface = surface;
@@ -199,7 +196,6 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
_backgroundImageValue4 = a7;
_lastUpdateClock = 0;
_gameSysClock = 0;
-
}
void GameSys::setScaleValues(int a1, int a2, int a3, int a4) {
@@ -227,7 +223,6 @@ void GameSys::removeSpriteDrawItem(Graphics::Surface *surface, int id) {
}
void GameSys::drawSpriteToBackground(int x, int y, int resourceId) {
-
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
uint32 *sourcePalette = spriteResource->_palette;
byte *sourcePixels = spriteResource->_pixels;
@@ -270,7 +265,6 @@ void GameSys::drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int
}
void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text) {
-
// NOTE Not that nice but will have to do for now
bool doDirty = false;
@@ -443,7 +437,6 @@ void GameSys::seqInsertGfx(int index, int duration) {
_gfxItemsCount += sequenceResource->_animationsCount;
for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
- int totalDuration;
GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
SequenceAnimation *animation = &sequenceResource->_animations[i];
@@ -461,7 +454,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->_prevFrame._spriteId = -1;
gfxItem->_prevFrame._soundId = -1;
gfxItem->_prevFrame._unusedVal = -1;
- totalDuration = duration;
+ int totalDuration = duration;
if ((seqItem->_flags & 4) && totalDuration > 0) {
gfxItem->_prevFrame._duration = 1;
if (gfxItem->_delayTicks <= totalDuration)
@@ -510,7 +503,6 @@ void GameSys::seqInsertGfx(int index, int duration) {
break;
}
}
-
}
void GameSys::seqRemoveGfx(int sequenceId, int id) {
@@ -568,8 +560,7 @@ bool GameSys::updateSequenceDuration(int sequenceId, int id, int *outDuration) {
}
void GameSys::updateAnimationsStatus(int sequenceId, int id) {
-
- Animation *foundAnimation = 0;
+ Animation *foundAnimation = nullptr;
for (int animationIndex = 0; animationIndex < kMaxAnimations; ++animationIndex) {
Animation *animation = &_animations[animationIndex];
if (animation->_sequenceId != -1 && animation->_sequenceId == sequenceId && animation->_id == id) {
@@ -599,7 +590,6 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
foundAnimation->_sequenceId = -1;
foundAnimation->_status = 2;
}
-
}
void GameSys::restoreBackgroundRect(const Common::Rect &rect) {
@@ -752,7 +742,6 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
// TODO Save transparent flag somewhere
blitSurface32(_frontSurface, x, y, surface, clipRect, true);
-
}
void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
@@ -782,11 +771,9 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
clipRect.translate(-frame._rect.left, -frame._rect.top);
blitSprite32(_frontSurface, x, y, sourcePixels, spriteResource->_width, clipRect, sourcePalette, true);//spriteResource->_transparent != 0);
}
-
}
void GameSys::drawSprites() {
-
debug(1, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
// TODO Split into multiple functions for clarity
@@ -807,10 +794,10 @@ void GameSys::drawSprites() {
continue;
if (gfxItem2->_prevFrame._spriteId != -1) {
- int transparent = 0;
+ bool transparent = false;
if (gfxItem2->_currFrame._spriteId != -1 && !(gfxItem2->_flags & 2)) {
if (gfxItem2->_flags & 1) {
- transparent = 1;
+ transparent = true;
} else {
int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
@@ -827,9 +814,9 @@ void GameSys::drawSprites() {
}
if (gfxItem2->_currFrame._spriteId != -1) {
- int transparent = 0;
+ bool transparent = false;
if (gfxItem2->_flags & 1) {
- transparent = 1;
+ transparent = true;
} else if (!(gfxItem2->_flags & 2)) {
int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
@@ -843,7 +830,6 @@ void GameSys::drawSprites() {
_gfxItems[l].testUpdRect(gfxItem2->_currFrame._rect);
}
}
-
}
for (int m = 0; m < _gfxItemsCount; ++m) {
@@ -855,7 +841,7 @@ void GameSys::drawSprites() {
if (gfxItem5->_updFlag) {
if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
- seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, 0);
+ seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
//debug("seqDrawStaticFrame");
} else if (gfxItem5->_flags & 2) {
// TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
@@ -887,7 +873,6 @@ void GameSys::drawSprites() {
}
debug(1, "GameSys::drawSprites() OK");
-
}
void GameSys::updateRect(const Common::Rect &r) {
@@ -900,7 +885,6 @@ void GameSys::updateRect(const Common::Rect &r) {
}
void GameSys::updateScreen() {
-
debug(1, "GameSys::updateScreen()");
for (uint i = 0; i < _dirtyRects.size(); ++i)
@@ -936,7 +920,6 @@ void GameSys::updateScreen() {
updateRect(Common::Rect(0, 0, 800, 600));
debug(1, "GameSys::updateScreen() OK");
-
}
void GameSys::handleReqRemoveSequenceItem() {
@@ -1262,11 +1245,9 @@ void GameSys::fatUpdateFrame() {
--i;
}
}
-
}
void GameSys::fatUpdate() {
-
debug(1, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
for (int i = 0; i < _gfxItemsCount; ++i) {
@@ -1280,7 +1261,6 @@ void GameSys::fatUpdate() {
// NOTE Skipped avi stuff (reqAviStop)
fatUpdateFrame();
-
}
void GameSys::updatePlaySounds() {
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 5077568..548a436 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -97,13 +97,10 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
_random = new Common::RandomSource("gnap");
Engine::syncSoundSettings();
-
}
GnapEngine::~GnapEngine() {
-
delete _random;
-
}
Common::Error GnapEngine::run() {
@@ -122,13 +119,13 @@ Common::Error GnapEngine::run() {
_verbCursor = 1;
invClear();
clearFlags();
- _grabCursorSprite = 0;
+ _grabCursorSprite = nullptr;
_newGrabCursorSpriteIndex = -1;
- _backgroundSurface = 0;
+ _backgroundSurface = nullptr;
_isStockDatLoaded = false;
_gameDone = false;
_isPaused = false;
- _pauseSprite = 0;
+ _pauseSprite = nullptr;
////////////////////////////////////////////////////////////////////////////
@@ -143,7 +140,7 @@ Common::Error GnapEngine::run() {
_gameSys = new GameSys(this);
_soundMan = new SoundMan(this);
- _menuBackgroundSurface = 0;
+ _menuBackgroundSurface = nullptr;
initGlobalSceneVars();
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 1a618fd..1f0fbea 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -255,12 +255,12 @@ void GnapEngine::removeInventorySprites() {
}
void GnapEngine::runMenu() {
- _spriteHandle = 0;
- _cursorSprite = 0;
- _menuSprite1 = 0;
- _menuSprite2 = 0;
- _menuSaveLoadSprite = 0;
- _menuQuitQuerySprite = 0;
+ _spriteHandle = nullptr;
+ _cursorSprite = nullptr;
+ _menuSprite1 = nullptr;
+ _menuSprite2 = nullptr;
+ _menuSaveLoadSprite = nullptr;
+ _menuQuitQuerySprite = nullptr;
_menuStatus = 0;
_menuDone = false;
@@ -271,7 +271,7 @@ void GnapEngine::runMenu() {
for (int i = 0; i < 7; ++i) {
_savegameFilenames[i][0] = 0;
- _savegameSprites[i] = 0;
+ _savegameSprites[i] = nullptr;
}
if (_menuStatus == 0) {
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index d83598b..eb07d96 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -93,7 +93,7 @@ SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
_height = READ_LE_UINT16(_data + 2);
_unknownVal1 = READ_LE_UINT16(_data + 4);
_unknownVal2 = READ_LE_UINT16(_data + 6);
- _transparent = READ_LE_UINT16(_data + 8);
+ _transparent = (READ_LE_UINT16(_data + 8) != 0);
_colorsCount = READ_LE_UINT16(_data + 10);
_palette = (uint32*)(_data + 12);
_pixels = _data + 12 + _colorsCount * 4;
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 52acdc5..b689869 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -96,7 +96,7 @@ public:
int16 _width, _height;
uint16 _unknownVal1;
uint16 _unknownVal2;
- uint16 _transparent;
+ bool _transparent;
uint16 _colorsCount;
};
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index b4e68a8..893b850 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -53,7 +53,7 @@ void GnapEngine::scene14_updateHotspots() {
void GnapEngine::scene14_run() {
- _largeSprite = 0;
+ _largeSprite = nullptr;
queueInsertDeviceIcon();
Commit: 158726abf5889a3a6b761adae37c8e56623af11d
https://github.com/scummvm/scummvm/commit/158726abf5889a3a6b761adae37c8e56623af11d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix crash in DCL decompression
Changed paths:
engines/gnap/datarchive.cpp
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index 7f5dadf..a0423c1 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -61,7 +61,7 @@ byte *DatArchive::load(int index) {
_fd->seek(_entries[index]._ofs);
debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
byte *buffer = new byte[_entries[index]._outSize1];
- if (!Common::decompressDCL(_fd, buffer, 0, _entries[index]._outSize1))
+ if (!Common::decompressDCL(_fd, buffer, _entries[index]._outSize2, _entries[index]._outSize1))
error("DatArchive::load() Error during decompression of entry %d", index);
return buffer;
}
Commit: c0369a421b361a5e4ccfab3e7857d1c7ecd27cf7
https://github.com/scummvm/scummvm/commit/c0369a421b361a5e4ccfab3e7857d1c7ecd27cf7
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactoring - Use an enum for Facing (Alien)
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 548a436..c845839 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -890,6 +890,7 @@ void GnapEngine::checkGameKeys() {
updatePause();
}
// TODO? Debug input
+ debug("facing %d", _gnapIdleFacing);
}
void GnapEngine::startSoundTimerA(int timerIndex) {
@@ -1026,29 +1027,29 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x83F;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
sequenceId = 0x83D;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x83B;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x839;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x839;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x83B;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x83D;
break;
default:
@@ -1063,29 +1064,29 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x829;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
sequenceId = 0x828;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x827;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x826;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x826;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x827;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x828;
break;
default:
@@ -1100,37 +1101,37 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x834;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x885;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x834;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x833;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x833;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x834;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x885;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
break;
default:
sequenceId = 0x834;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
break;
}
}
@@ -1141,29 +1142,29 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x7BC;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
sequenceId = 0x7BB;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x7BA;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7B9;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x7B9;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x7BA;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x7BB;
break;
default:
@@ -1179,29 +1180,29 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
break;
- case 7:
+ case kDirUpRight:
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
break;
default:
@@ -1216,32 +1217,32 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x831;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7A8;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x831;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
if (_gnapX % 2)
sequenceId = 0x7A8;
else
sequenceId = 0x89A;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
sequenceId = 0x831;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
if (_currentSceneNum % 2)
sequenceId = 0x7A8;
else
sequenceId = 0x89A;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
break;
@@ -1250,32 +1251,32 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x830;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
sequenceId = 0x82F;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x82E;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7A7;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
} else {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x7A7;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x82E;
break;
- case 5:
+ case kDirUpLeft:
sequenceId = 0x830;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x82F;
break;
}
@@ -1284,16 +1285,16 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskUseDevice:
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
sequenceId = 0x83A;
break;
- case 3:
+ case kDirBottomLeft:
sequenceId = 0x83C;
break;
- case 5:
+ case kDirUpLeft:
sequenceId = 0x840;
break;
- case 7:
+ case kDirUpRight:
sequenceId = 0x83E;
break;
}
@@ -1304,26 +1305,26 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
break;
@@ -1332,26 +1333,26 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
if (_gnapY > gridY) {
if (_gnapX > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
} else {
if (_gnapX > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
sequenceId = 0x832;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
break;
}
@@ -1361,120 +1362,120 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
int sequenceId;
- int facing = _gnapIdleFacing;
+ Facing facing = _gnapIdleFacing;
if (gridY > 0 && gridX > 0) {
if (_gnapY > gridY) {
if (_gnapX > gridX)
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
else
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
} else {
if (_gnapX > gridX)
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
else
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
- } else if (_gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
- _gnapIdleFacing = 5;
+ } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
+ _gnapIdleFacing = kDirUpLeft;
} else {
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
switch (index) {
case 0:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x8A0;
else
sequenceId = 0x8A1;
break;
case 1:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x880;
else
sequenceId = 0x895;
break;
case 2:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x884;
else
sequenceId = 0x899;
break;
//Skip 3
case 4:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x881;
else
sequenceId = 0x896;
break;
case 5:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x883;
else
sequenceId = 0x898;
break;
case 6:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87E;
else
sequenceId = 0x893;
break;
case 7:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x848;
else
sequenceId = 0x890;
break;
case 8:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87D;
else
sequenceId = 0x892;
break;
case 9:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x882;
else
sequenceId = 0x897;
break;
case 10:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87C;
else
sequenceId = 0x891;
break;
case 11:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87C;
else
sequenceId = 0x891;
break;
case 12:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87D;
else
sequenceId = 0x892;
break;
case 13:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x888;
else
sequenceId = 0x89D;
break;
case 14:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87F;
else
sequenceId = 0x894;
break;
case 15:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87B;
else
sequenceId = 0x8A3;
break;
case 16:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x877;
else
sequenceId = 0x88C;
@@ -1484,43 +1485,43 @@ int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
sequenceId = 0x887;
break;
case 19:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87A;
else
sequenceId = 0x88F;
break;
case 20:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x878;
else
sequenceId = 0x88D;
break;
case 21:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x879;
else
sequenceId = 0x88E;
break;
case 22:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x88A;
else
sequenceId = 0x89F;
break;
case 23:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x889;
else
sequenceId = 0x89E;
break;
case 24:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x886;
else
sequenceId = 0x89B;
break;
case 25:
- if (_gnapIdleFacing == 7)
+ if (_gnapIdleFacing == kDirUpRight)
sequenceId = 0x87A;
else
sequenceId = 0x88F;
@@ -1629,7 +1630,7 @@ void GnapEngine::updateGnapIdleSequence() {
if (_timers[3] == 0) {
_timers[2] = 60;
_timers[3] = 300;
- if (_gnapIdleFacing == 1) {
+ if (_gnapIdleFacing == kDirBottomRight) {
switch (getRandom(5)) {
case 0:
playGnapSequence(0x107A6);
@@ -1644,7 +1645,7 @@ void GnapEngine::updateGnapIdleSequence() {
playGnapSequence(0x108A2);
break;
}
- } else if (_gnapIdleFacing == 3) {
+ } else if (_gnapIdleFacing == kDirBottomLeft) {
if (getRandom(5) > 2)
playGnapSequence(0x10832);
else
@@ -1653,13 +1654,13 @@ void GnapEngine::updateGnapIdleSequence() {
}
} else {
_timers[2] = getRandom(30) + 20;
- if (_gnapIdleFacing == 1) {
+ if (_gnapIdleFacing == kDirBottomRight) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
- } else if (_gnapIdleFacing == 3) {
+ } else if (_gnapIdleFacing == kDirBottomLeft) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -1679,21 +1680,21 @@ void GnapEngine::updateGnapIdleSequence2() {
if (_timers[3] == 0) {
_timers[2] = 60;
_timers[3] = 300;
- if (_gnapIdleFacing == 1) {
+ if (_gnapIdleFacing == kDirBottomRight) {
playGnapSequence(0x107AA);
- } else if (_gnapIdleFacing == 3) {
+ } else if (_gnapIdleFacing == kDirBottomLeft) {
playGnapSequence(0x10832);
}
}
} else {
_timers[2] = getRandom(30) + 20;
- if (_gnapIdleFacing == 1) {
+ if (_gnapIdleFacing == kDirBottomRight) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
- } else if (_gnapIdleFacing == 3) {
+ } else if (_gnapIdleFacing == kDirBottomLeft) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -1721,20 +1722,20 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
return false;
}
-void GnapEngine::initGnapPos(int gridX, int gridY, int facing) {
+void GnapEngine::initGnapPos(int gridX, int gridY, Facing facing) {
_timers[2] = 30;
_timers[3] = 300;
_gnapX = gridX;
_gnapY = gridY;
- if (facing <= 0)
- _gnapIdleFacing = 1;
+ if (facing == kDirNone)
+ _gnapIdleFacing = kDirBottomRight;
else
_gnapIdleFacing = facing;
- if (_gnapIdleFacing == 3) {
+ if (_gnapIdleFacing == kDirBottomLeft) {
_gnapSequenceId = 0x7B8;
} else {
_gnapSequenceId = 0x7B5;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
}
_gnapId = 20 * _gnapY;
_gnapSequenceDatNum = 1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d376ffd..2872f69 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -235,6 +235,15 @@ struct Scene51Item {
int _id;
};
+enum Facing {
+ kDirNone = 0,
+ kDirBottomRight = 1,
+ kDirBottomLeft = 3,
+ kDirUnk4 = 4,
+ kDirUpLeft = 5,
+ kDirUpRight = 7
+};
+
class GnapEngine : public Engine {
protected:
Common::Error run();
@@ -458,7 +467,7 @@ public:
int getGnapWalkSequenceId(int deltaX, int deltaY);
int getGnapWalkStopSequenceId(int deltaX, int deltaY);
- int getGnapWalkFacing(int deltaX, int deltaY);
+ Facing getGnapWalkFacing(int deltaX, int deltaY);
bool gridSub41F08B(int gridX, int gridY);
bool gridSub41F5FC(int gridX, int gridY, int index);
bool gridSub41FAD5(int gridX, int gridY, int index);
@@ -483,7 +492,7 @@ public:
void beaverMakeRoom();
// Gnap
- int _gnapIdleFacing;
+ Facing _gnapIdleFacing;
int _gnapActionStatus;
int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
@@ -506,7 +515,7 @@ public:
void playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
void updateGnapIdleSequence();
void updateGnapIdleSequence2();
- void initGnapPos(int gridX, int gridY, int facing);
+ void initGnapPos(int gridX, int gridY, Facing facing);
void gnapInitBrainPulseRndValue();
void gnapUseDeviceOnBeaver();
void doCallback(int callback);
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 5b2f5aa..136e8d4 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -58,11 +58,11 @@ int GnapEngine::getGnapWalkStopSequenceId(int deltaX, int deltaY) {
return _gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
}
-int GnapEngine::getGnapWalkFacing(int deltaX, int deltaY) {
- static const int _gnapWalkFacings[9] = {
- 5, 3, 3,
- 5, 0, 3,
- 7, 1, 1
+Facing GnapEngine::getGnapWalkFacing(int deltaX, int deltaY) {
+ static const Facing _gnapWalkFacings[9] = {
+ kDirUpLeft, kDirBottomLeft, kDirBottomLeft,
+ kDirUpLeft, kDirNone, kDirBottomLeft,
+ kDirUpRight, kDirBottomRight, kDirBottomRight
};
// CHECKME This is a little weird
return _gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
@@ -645,17 +645,17 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapSequenceId = ridToEntryIndex(sequenceId);
_gnapSequenceDatNum = ridToDatIndex(sequenceId);
if (_gnapSequenceId == 0x7B9) {
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
} else {
switch (_gnapSequenceId) {
case 0x7BA:
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
break;
case 0x7BB:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
break;
case 0x7BC:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
break;
}
}
@@ -665,13 +665,13 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
} else if (gridX >= 0 || gridY >= 0) {
switch (_gnapIdleFacing) {
- case 1:
+ case kDirBottomRight:
_gnapSequenceId = 0x7B9;
break;
- case 3:
+ case kDirBottomLeft:
_gnapSequenceId = 0x7BA;
break;
- case 7:
+ case kDirUpRight:
_gnapSequenceId = 0x7BB;
break;
default:
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 9efe45d..ba906b6 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -102,7 +102,7 @@ void GnapEngine::scene01_run() {
queueInsertDeviceIcon();
if (_prevSceneNum == 2) {
- initGnapPos(11, 6, 3);
+ initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(0))
initBeaverPos(12, 6, 4);
endSceneInit();
@@ -110,7 +110,7 @@ void GnapEngine::scene01_run() {
platypusWalkTo(9, 6, -1, 0x107C2, 1);
gnapWalkTo(8, 6, -1, 0x107B9, 1);
} else {
- initGnapPos(1, 6, 1);
+ initGnapPos(1, 6, kDirBottomRight);
if (isFlag(0))
initBeaverPos(1, 7, 0);
endSceneInit();
@@ -170,7 +170,7 @@ void GnapEngine::scene01_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
if (gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_gnapActionStatus = kASLookSpaceship;
break;
@@ -213,17 +213,17 @@ void GnapEngine::scene01_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_gnapActionStatus = kASLookPigs;
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_gnapActionStatus = kASUsePigs;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
_gnapActionStatus = kASLookPigs;
break;
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index cd72020..5d25487 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -84,7 +84,6 @@ void GnapEngine::scene02_updateHotspots() {
}
void GnapEngine::scene02_run() {
-
playSound(0x1091C, 1);
startSoundTimerC(6);
@@ -100,7 +99,7 @@ void GnapEngine::scene02_run() {
switch (_prevSceneNum) {
case 3:
- initGnapPos(11, 6, 3);
+ initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(0))
initBeaverPos(12, 6, 4);
endSceneInit();
@@ -109,7 +108,7 @@ void GnapEngine::scene02_run() {
gnapWalkTo(8, 6, -1, 0x107BA, 1);
break;
case 4:
- initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 3);
+ initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, kDirBottomLeft);
if (isFlag(0))
initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 4);
endSceneInit();
@@ -121,18 +120,18 @@ void GnapEngine::scene02_run() {
break;
case 47:
clearFlag(25);
- initGnapPos(5, 6, 3);
+ initGnapPos(5, 6, kDirBottomLeft);
initBeaverPos(6, 7, 4);
endSceneInit();
break;
case 49:
- initGnapPos(5, 6, 1);
+ initGnapPos(5, 6, kDirBottomRight);
if (isFlag(0))
initBeaverPos(6, 7, 0);
endSceneInit();
break;
default:
- initGnapPos(-1, 6, 1);
+ initGnapPos(-1, 6, kDirBottomRight);
if (isFlag(0))
initBeaverPos(-1, 7, 0);
endSceneInit();
@@ -194,7 +193,7 @@ void GnapEngine::scene02_run() {
case kHSChicken:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemTwig) {
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1,
0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASUseTwigWithChicken;
@@ -206,14 +205,14 @@ void GnapEngine::scene02_run() {
playGnapMoan2(9, 8);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
if (gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_gnapActionStatus = kASGrabChicken;
else
_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkChicken;
break;
@@ -258,7 +257,7 @@ void GnapEngine::scene02_run() {
_gnapActionStatus = kASUseTruckNoGas;
}
} else {
- _gnapIdleFacing = 4;
+ _gnapIdleFacing = kDirUnk4;
if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
_gnapActionStatus = kASUseTruckNoKeys;
}
@@ -282,7 +281,7 @@ void GnapEngine::scene02_run() {
playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabTruckGrill;
break;
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 95449f5..c760013 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -91,7 +91,7 @@ void GnapEngine::scene03_run() {
_s03_platypusHypnotized = false;
- initGnapPos(3, 4, 1);
+ initGnapPos(3, 4, kDirBottomRight);
_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -261,7 +261,7 @@ void GnapEngine::scene03_run() {
if (_s03_platypusHypnotized) {
playGnapBrainPulsating(8, 4);
} else {
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_s03_platypusScared)
_gnapActionStatus = kASHypnotizeScaredPlat;
@@ -462,7 +462,7 @@ void GnapEngine::scene03_updateAnimations() {
_gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x1B5;
_gnapSequenceDatNum = 0;
- _gnapIdleFacing = 0;
+ _gnapIdleFacing = kDirNone;
_beaverSequenceId = _s03_nextPlatSequenceId;
_beaverSequenceDatNum = 0;
_gameSys->setAnimation(_s03_nextPlatSequenceId, 99, 1);
@@ -477,7 +477,7 @@ void GnapEngine::scene03_updateAnimations() {
_gnapId = 20 * _gnapY;
_gnapSequenceId = 0x1B6;
_gnapSequenceDatNum = 0;
- _gnapIdleFacing = 0;
+ _gnapIdleFacing = kDirNone;
_gnapActionStatus = kASFreePlatypusDone;
_s03_nextPlatSequenceId = -1;
} else if (_s03_nextPlatSequenceId == 0x1C2 && !_s03_platypusScared) {
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 52fdb39..164a53f 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -135,7 +135,7 @@ void GnapEngine::scene04_run() {
} else {
_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 2) {
- initGnapPos(5, 11, 7);
+ initGnapPos(5, 11, kDirUpRight);
if (isFlag(0))
initBeaverPos(6, 11, 5);
endSceneInit();
@@ -143,11 +143,11 @@ void GnapEngine::scene04_run() {
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 9, -1, 0x107BA, 1);
} else if (_prevSceneNum == 38) {
- initGnapPos(5, 7, 1);
+ initGnapPos(5, 7, kDirBottomRight);
initBeaverPos(4, 7, 0);
endSceneInit();
} else {
- initGnapPos(12, 9, 1);
+ initGnapPos(12, 9, kDirBottomRight);
if (isFlag(0))
initBeaverPos(12, 8, 0);
endSceneInit();
@@ -242,7 +242,7 @@ void GnapEngine::scene04_run() {
playGnapMoan2(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabAxe;
setFlag(26);
@@ -270,12 +270,12 @@ void GnapEngine::scene04_run() {
}
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_gnapActionStatus = kASGrabDog;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
if (gnapWalkTo(_gnapX, _gnapY, 0, -1, 1)) {
playGnapBrainPulsating(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y);
_s04_nextDogSequenceId = 0x20E;
@@ -304,7 +304,7 @@ void GnapEngine::scene04_run() {
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107BC, 1);
_gnapActionStatus = kASOpenDoor;
_timers[5] = 300;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
} else {
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107BC, 1);
@@ -485,7 +485,7 @@ void GnapEngine::scene04_updateAnimations() {
_gameSys->insertSequence(0x107B5, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), 255,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
_gnapActionStatus = -1;
@@ -514,7 +514,7 @@ void GnapEngine::scene04_updateAnimations() {
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gnapActionStatus = -1;
break;
case kASGrabDog:
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index fea0dc1..f13a2a3 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -96,7 +96,7 @@ void GnapEngine::scene05_run() {
queueInsertDeviceIcon();
if (_prevSceneNum != 6 && _prevSceneNum != 36) {
- initGnapPos(-1, 8, 1);
+ initGnapPos(-1, 8, kDirBottomRight);
if (isFlag(0))
initBeaverPos(-1, 9, 0);
endSceneInit();
@@ -104,7 +104,7 @@ void GnapEngine::scene05_run() {
platypusWalkTo(2, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 9, -1, 0x107B9, 1);
} else {
- initGnapPos(6, 8, 1);
+ initGnapPos(6, 8, kDirBottomRight);
if (isFlag(0))
initBeaverPos(7, 9, 0);
endSceneInit();
@@ -193,7 +193,7 @@ void GnapEngine::scene05_run() {
case kHSChicken:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemTwig) {
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1,
0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASUseTwigWithChicken;
@@ -205,12 +205,12 @@ void GnapEngine::scene05_run() {
playGnapMoan2(9, 7);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabChicken;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkChicken;
break;
@@ -232,7 +232,7 @@ void GnapEngine::scene05_run() {
playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabLadder;
break;
@@ -267,7 +267,7 @@ void GnapEngine::scene05_run() {
playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y,
0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTryPickPadlock;
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 7df09a1..acf309c 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -106,7 +106,7 @@ void GnapEngine::scene06_run() {
queueInsertDeviceIcon();
- initGnapPos(5, 12, 1);
+ initGnapPos(5, 12, kDirBottomRight);
initBeaverPos(6, 12, 0);
endSceneInit();
@@ -228,7 +228,7 @@ void GnapEngine::scene06_run() {
_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, 0x107BC, 1);
_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
platypusWalkTo(6, 8, 1, 0x107C2, 1);
_beaverFacing = 0;
_gnapActionStatus = kASUseTwigOnHorse;
@@ -244,7 +244,7 @@ void GnapEngine::scene06_run() {
if (_s06_horseTurnedBack) {
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index c6eda8f..1b609f8 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -71,7 +71,7 @@ void GnapEngine::scene07_run() {
_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 8) {
- initGnapPos(7, 7, 3);
+ initGnapPos(7, 7, kDirBottomLeft);
initBeaverPos(9, 7, 4);
endSceneInit();
} else {
@@ -80,7 +80,7 @@ void GnapEngine::scene07_run() {
_gnapId = 140;
_gnapSequenceId = 0x8F;
_gnapSequenceDatNum = 0;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
_gnapActionStatus = kASWait;
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index 01e7708..5988114 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -116,7 +116,7 @@ void GnapEngine::scene08_run() {
if (!isFlag(9))
_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
- initGnapPos(-1, 8, 1);
+ initGnapPos(-1, 8, kDirBottomRight);
initBeaverPos(-1, 7, 0);
endSceneInit();
@@ -202,13 +202,13 @@ void GnapEngine::scene08_run() {
gnapActionIdle(0x14D);
gnapWalkTo(6, 6, 0, 0x107BB, 1);
_gnapActionStatus = kASLookMan;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapActionIdle(0x14D);
gnapWalkTo(8, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkMan;
@@ -240,10 +240,10 @@ void GnapEngine::scene08_run() {
case GRAB_CURSOR:
gnapWalkTo(4, 7, 0, 0x107BB, 1);
_gnapActionStatus = kASGrabDog;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapActionIdle(0x14D);
gnapWalkTo(4, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkDog;
@@ -515,7 +515,7 @@ void GnapEngine::scene08_updateAnimations() {
_timers[3] = getRandom(50) + 200;
_gameSys->insertSequence(0x14D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x14D;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapSequenceDatNum = 0;
_gnapActionStatus = -1;
}
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 69165ce..2cf57a9 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -67,13 +67,13 @@ void GnapEngine::scene09_run() {
_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 8) {
- initGnapPos(11, 8, 3);
+ initGnapPos(11, 8, kDirBottomLeft);
initBeaverPos(12, 7, 4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- initGnapPos(4, 7, 1);
+ initGnapPos(4, 7, kDirBottomRight);
initBeaverPos(5, 7, 0);
endSceneInit();
}
@@ -221,7 +221,7 @@ void GnapEngine::scene09_updateAnimations() {
_gameSys->removeSequence(0x4B, 2, true);
_gnapSequenceId = 0x4C;
_gnapId = 120;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
_gnapSequenceDatNum = 0;
_gnapX = 9;
_gnapY = 6;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index aea4a34..0a89682 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -84,13 +84,13 @@ void GnapEngine::scene10_run() {
queueInsertDeviceIcon();
if (_prevSceneNum == 9) {
- initGnapPos(11, 8, 3);
+ initGnapPos(11, 8, kDirBottomLeft);
initBeaverPos(12, 7, 4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- initGnapPos(-1, 7, 1);
+ initGnapPos(-1, 7, kDirBottomRight);
initBeaverPos(-2, 8, 0);
endSceneInit();
gnapWalkTo(1, 7, -1, 0x107B9, 1);
@@ -173,10 +173,10 @@ void GnapEngine::scene10_run() {
break;
case GRAB_CURSOR:
playGnapImpossible(0, 0);
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapActionIdle(0x10C);
gnapWalkTo(4, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASAnnoyCook;
@@ -279,7 +279,7 @@ void GnapEngine::scene10_run() {
_gameSys->insertSequence(0x10E, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x10E;
_gnapId = 120;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapSequenceDatNum = 0;
_gnapX = 9;
_gnapY = 6;
@@ -475,7 +475,7 @@ void GnapEngine::scene10_updateAnimations() {
_timers[3] = 300;
_gameSys->insertSequence(0x10C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x10C;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapSequenceDatNum = 0;
_gnapActionStatus = -1;
_beaverActionStatus = -1;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 04509ee..f364677 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -93,22 +93,22 @@ void GnapEngine::scene11_run() {
switch (_prevSceneNum) {
case 13:
- initGnapPos(8, 5, 3);
+ initGnapPos(8, 5, kDirBottomLeft);
initBeaverPos(9, 6, 4);
break;
case 47:
- initGnapPos(8, 5, 3);
+ initGnapPos(8, 5, kDirBottomLeft);
initBeaverPos(9, 5, 4);
_s11_currGoggleGuySequenceId = 0x1FA;
_s11_currHookGuySequenceId = 0x1FF;
_timers[7] = 180;
break;
case 12:
- initGnapPos(-1, 9, 1);
+ initGnapPos(-1, 9, kDirBottomRight);
initBeaverPos(-2, 8, 0);
break;
default:
- initGnapPos(6, 6, 3);
+ initGnapPos(6, 6, kDirBottomLeft);
initBeaverPos(6, 5, 4);
break;
}
@@ -213,7 +213,7 @@ void GnapEngine::scene11_run() {
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(3, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkGoggleGuy;
break;
@@ -224,7 +224,7 @@ void GnapEngine::scene11_run() {
case kHSHookGuy:
if (_gnapActionStatus < 0) {
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
if (_grabCursorSpriteIndex >= 0) {
gnapWalkTo(5, 6, 0, 0x107BC, 9);
_gnapActionStatus = kASShowItemToHookGuy;
@@ -239,7 +239,7 @@ void GnapEngine::scene11_run() {
_gnapActionStatus = kASGrabHookGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
gnapWalkTo(5, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkHookGuy;
break;
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index f26bb30..fae6f83 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -111,11 +111,11 @@ void GnapEngine::scene12_run() {
_timers[7] = getRandom(100) + 100;
if (_prevSceneNum == 15) {
- initGnapPos(5, 6, 1);
+ initGnapPos(5, 6, kDirBottomRight);
initBeaverPos(3, 7, 0);
endSceneInit();
} else {
- initGnapPos(11, 8, 3);
+ initGnapPos(11, 8, kDirBottomLeft);
initBeaverPos(12, 8, 4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
@@ -171,18 +171,18 @@ void GnapEngine::scene12_run() {
if (_grabCursorSpriteIndex == kItemQuarter) {
_largeSprite = _gameSys->createSurface(0x141);
gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
_gnapActionStatus = kASQuarterToToothGuy;
playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
setGrabCursorSprite(-1);
} else if (_grabCursorSpriteIndex == kItemQuarterWithHole) {
gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
_gnapActionStatus = kASQuarterWithHoleToToothGuy;
playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
} else if (_grabCursorSpriteIndex >= 0) {
gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
_gnapActionStatus = kASShowItemToToothGuy;
playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
} else {
@@ -195,7 +195,7 @@ void GnapEngine::scene12_run() {
_gnapActionStatus = kASGrabToothGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(3, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkToothGuy;
break;
@@ -213,26 +213,26 @@ void GnapEngine::scene12_run() {
case kHSBarkeeper:
if (_grabCursorSpriteIndex == kItemQuarter || _grabCursorSpriteIndex == kItemQuarterWithHole) {
gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASQuarterWithBarkeeper;
playGnapShowItem(_grabCursorSpriteIndex, 7, 0);
} else if (_grabCursorSpriteIndex >= 0) {
gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASShowItemToBarkeeper;
playGnapShowItem(_grabCursorSpriteIndex, 7, 0);
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASLookBarkeeper;
break;
case GRAB_CURSOR:
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(6, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkBarkeeper;
break;
@@ -248,24 +248,24 @@ void GnapEngine::scene12_run() {
case kHSBeardGuy:
if (_grabCursorSpriteIndex >= 0) {
gnapWalkTo(7, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASShowItemToBeardGuy;
playGnapShowItem(_grabCursorSpriteIndex, 8, 0);
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASLookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASGrabBeardGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(7, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkBeardGuy;
break;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 4d7b6d0..c1e9bab 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -107,10 +107,10 @@ void GnapEngine::scene13_run() {
_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 14) {
- initGnapPos(6, 6, 3);
+ initGnapPos(6, 6, kDirBottomLeft);
initBeaverPos(9, 8, 0);
} else {
- initGnapPos(3, 7, 1);
+ initGnapPos(3, 7, kDirBottomRight);
initBeaverPos(2, 7, 0);
}
@@ -190,12 +190,12 @@ void GnapEngine::scene13_run() {
9, 0, 0, 0);
_gnapActionStatus = kASWait;
_gnapSequenceId = _s13_backToiletCtr + 0xA3;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapSequenceDatNum = 0;
} else {
gnapWalkTo(5, 5, 0, 0x107BB, 1);
_gnapActionStatus = kASBackToilet;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
}
break;
case PLAT_CURSOR:
@@ -216,7 +216,7 @@ void GnapEngine::scene13_run() {
case PLAT_CURSOR:
gnapWalkTo(6, 7, 0, 0xA9, 5);
_gnapActionStatus = kASFrontToilet;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
break;
}
}
@@ -230,13 +230,13 @@ void GnapEngine::scene13_run() {
case LOOK_CURSOR:
gnapWalkTo(7, 7, 0, 0x107BB, 1);
_gnapActionStatus = kASLookScribble;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
playGnapScratchingHead(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(7, 7, -1, getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
@@ -415,7 +415,7 @@ void GnapEngine::scene13_updateAnimations() {
_gameSys->removeSequence(0xAA, 256, true);
_gnapSequenceId = 0xAB;
_gnapId = 160;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gnapSequenceDatNum = 0;
_gnapX = 4;
_gnapY = 8;
@@ -434,7 +434,7 @@ void GnapEngine::scene13_updateAnimations() {
_gameSys->insertSequence(0xA2, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA2;
_gnapId = 120;
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
_gnapSequenceDatNum = 0;
_gnapX = 4;
_gnapY = 6;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 322cdd6..04eb5f3 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -177,13 +177,13 @@ void GnapEngine::scene17_run() {
if (_prevSceneNum == 53 || _prevSceneNum == 18 || _prevSceneNum == 20 || _prevSceneNum == 19) {
if (_prevSceneNum == 20) {
- initGnapPos(4, 6, 1);
+ initGnapPos(4, 6, kDirBottomRight);
initBeaverPos(5, 6, 0);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else if (isFlag(27)) {
- initGnapPos(3, 9, 5);
+ initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
_platY = _hotspotsWalkPos[2].y;
_beaverId = 20 * _hotspotsWalkPos[2].y;
@@ -220,7 +220,7 @@ void GnapEngine::scene17_run() {
clearFlag(15);
clearFlag(16);
_sceneWaiting = true;
- initGnapPos(3, 9, 5);
+ initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
_platY = _hotspotsWalkPos[2].y;
_beaverId = 20 * _hotspotsWalkPos[2].y;
@@ -234,18 +234,18 @@ void GnapEngine::scene17_run() {
_beaverActionStatus = kASPlatPhoningAssistant;
scene17_updateHotspots();
} else if (_prevSceneNum == 18) {
- initGnapPos(6, 6, 1);
+ initGnapPos(6, 6, kDirBottomRight);
initBeaverPos(5, 6, 0);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
if (isFlag(15)) {
- initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1);
+ initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, kDirBottomRight);
initBeaverPos(1, 9, 0);
endSceneInit();
} else {
- initGnapPos(3, 7, 1);
+ initGnapPos(3, 7, kDirBottomRight);
initBeaverPos(1, 7, 0);
endSceneInit();
}
@@ -259,7 +259,7 @@ void GnapEngine::scene17_run() {
_gnapId = 120;
_gnapSequenceId = 0x23D;
_gnapSequenceDatNum = 0;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0, 0, kSeqNone, 0, 0, 0);
_platX = -1;
_platY = 8;
@@ -417,7 +417,7 @@ void GnapEngine::scene17_run() {
if (isFlag(18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGnapUsePhone;
setFlag(15);
@@ -449,7 +449,7 @@ void GnapEngine::scene17_run() {
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
_newSceneNum = 18;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
if (_beaverActionStatus != kASPlatPhoningAssistant)
@@ -462,7 +462,7 @@ void GnapEngine::scene17_run() {
scene17_platHangUpPhone();
_isLeavingScene = true;
_newSceneNum = 20;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, 0x107BC, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[3].x + 1, _hotspotsWalkPos[3].y, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 5466360..53a89e0 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -210,9 +210,9 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
}
if (direction == 1)
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
else
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
_gnapId = 20 * _gnapY + 1;
@@ -233,13 +233,13 @@ void GnapEngine::scene18_putDownGarbageCan(int animationIndex) {
while (_gameSys->getAnimationStatus(animationIndex) != 2)
gameUpdateTick();
}
- if (_gnapIdleFacing != 0 && _gnapIdleFacing != 1 && _gnapIdleFacing != 7)
+ if (_gnapIdleFacing != kDirNone && _gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight)
_s18_garbageCanPos = _gnapX - 1;
else
_s18_garbageCanPos = _gnapX + 1;
clearFlag(10);
scene18_updateHotspots();
- if (_gnapIdleFacing != 0 && _gnapIdleFacing != 1 && _gnapIdleFacing != 7) {
+ if (_gnapIdleFacing != kDirNone && _gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
_gameSys->insertSequence(0x107BA, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -348,9 +348,9 @@ void GnapEngine::scene18_run() {
if (isFlag(26)) {
if (_prevSceneNum == 17)
- initGnapPos(4, 11, 1);
+ initGnapPos(4, 11, kDirBottomRight);
else
- initGnapPos(4, 7, 1);
+ initGnapPos(4, 7, kDirBottomRight);
_s18_platPhoneCtr = getRandom(5);
if (isFlag(27)) {
_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -379,19 +379,19 @@ void GnapEngine::scene18_run() {
_prevSceneNum = 19;
}
if (_prevSceneNum == 17) {
- initGnapPos(4, 11, 1);
+ initGnapPos(4, 11, kDirBottomRight);
initBeaverPos(5, 11, 0);
endSceneInit();
gnapWalkTo(4, 8, -1, 0x107B9, 1);
platypusWalkTo(5, 9, -1, 0x107C2, 1);
} else if (_prevSceneNum == 19) {
- initGnapPos(7, 7, 1);
+ initGnapPos(7, 7, kDirBottomRight);
initBeaverPos(8, 7, 0);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(-1, 10, 1);
+ initGnapPos(-1, 10, kDirBottomRight);
initBeaverPos(-1, 10, 0);
endSceneInit();
gnapWalkTo(3, 7, -1, 0x107B9, 1);
@@ -785,7 +785,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
case kASGrabGarbageCanFromStreet:
- if (_gnapIdleFacing != 7 && _gnapIdleFacing != 1) {
+ if (_gnapIdleFacing != kDirUpRight && _gnapIdleFacing != kDirBottomRight) {
_gameSys->insertSequence(0x1FC, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - 675, 0);
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index 60208bc..2f588f2 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -110,7 +110,7 @@ void GnapEngine::scene19_run() {
_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(26)) {
- initGnapPos(3, 6, 1);
+ initGnapPos(3, 6, kDirBottomRight);
_s19_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[getRandom(5)];
_s19_nextShopAssistantSequenceId = _s19_currShopAssistantSequenceId;
_gameSys->setAnimation(_s19_currShopAssistantSequenceId, 20, 4);
@@ -126,7 +126,7 @@ void GnapEngine::scene19_run() {
_gameSys->setAnimation(0x6D, 20, 4);
_gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_timers[6] = getRandom(40) + 50;
- initGnapPos(3, 6, 1);
+ initGnapPos(3, 6, kDirBottomRight);
initBeaverPos(4, 6, 0);
endSceneInit();
gnapWalkTo(4, 9, -1, 0x107B9, 1);
@@ -227,7 +227,7 @@ void GnapEngine::scene19_run() {
playGnapScratchingHead(6, 2);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkShopAssistant;
break;
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 788a7fa..990ceca 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -228,42 +228,42 @@ void GnapEngine::scene20_run() {
// checkGameAppStatus();
gameUpdateTick();
}
- initGnapPos(11, 8, 3);
+ initGnapPos(11, 8, kDirBottomLeft);
initBeaverPos(11, 9, 4);
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
switch (_prevSceneNum) {
case 17:
- initGnapPos(5, 11, 1);
+ initGnapPos(5, 11, kDirBottomRight);
initBeaverPos(6, 11, 0);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
- initGnapPos(11, 8, 3);
+ initGnapPos(11, 8, kDirBottomLeft);
initBeaverPos(11, 9, 4);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
- initGnapPos(-1, 8, 3);
+ initGnapPos(-1, 8, kDirBottomLeft);
initBeaverPos(-1, 9, 4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
- initGnapPos(7, 6, 1);
+ initGnapPos(7, 6, kDirBottomRight);
initBeaverPos(8, 6, 0);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
- initGnapPos(8, 6, 3);
+ initGnapPos(8, 6, kDirBottomLeft);
initBeaverPos(9, 6, 4);
endSceneInit();
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
@@ -394,7 +394,7 @@ void GnapEngine::scene20_run() {
playGnapMoan2(5, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_s20_stonerGuyShowingJoint)
_gnapActionStatus = kASGrabJoint;
@@ -402,7 +402,7 @@ void GnapEngine::scene20_run() {
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
if (isFlag(17))
_gnapActionStatus = kASTalkStonerGuyNoJoint;
@@ -428,12 +428,12 @@ void GnapEngine::scene20_run() {
break;
case GRAB_CURSOR:
_s20_stonerGuyShowingJoint = false;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabGroceryStoreGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkGroceryStoreGuy;
break;
@@ -448,7 +448,7 @@ void GnapEngine::scene20_run() {
case kHSGroceryStoreHat:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemCowboyHat) {
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreHat].x, _hotspotsWalkPos[kHSGroceryStoreHat].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASSwitchGroceryStoreHat;
} else if (_grabCursorSpriteIndex >= 0) {
@@ -460,7 +460,7 @@ void GnapEngine::scene20_run() {
break;
case GRAB_CURSOR:
_s20_stonerGuyShowingJoint = false;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabGroceryStoreHat;
break;
@@ -650,7 +650,7 @@ void GnapEngine::scene20_updateAnimations() {
removeFullScreenSprite();
showCursor();
setGrabCursorSprite(kItemGroceryStoreHat);
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(3, 8, -1, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = -1;
break;
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index 6f1f406..415c82f 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -77,7 +77,7 @@ void GnapEngine::scene21_run() {
if (isFlag(3)) {
if (isFlag(5)) {
- initGnapPos(5, 8, 1);
+ initGnapPos(5, 8, kDirBottomRight);
initBeaverPos(6, 8, 0);
_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(4))
@@ -85,7 +85,7 @@ void GnapEngine::scene21_run() {
endSceneInit();
clearFlag(5);
} else {
- initGnapPos(5, 11, 1);
+ initGnapPos(5, 11, kDirBottomRight);
initBeaverPos(6, 11, 0);
if (!isFlag(4))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
@@ -94,7 +94,7 @@ void GnapEngine::scene21_run() {
platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
} else {
- initGnapPos(5, 11, 1);
+ initGnapPos(5, 11, kDirBottomRight);
initBeaverPos(6, 11, 0);
_s21_currOldLadySequenceId = 0x89;
_gameSys->setAnimation(0x89, 79, 3);
@@ -186,14 +186,14 @@ void GnapEngine::scene21_run() {
playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(7, 6, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabOldLady;
_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSOldLady].x, _hotspotsWalkPos[kHSOldLady].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkOldLady;
break;
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 65b7bc6..c0e6d2b 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -71,11 +71,11 @@ void GnapEngine::scene22_run() {
queueInsertDeviceIcon();
if (_prevSceneNum == 20) {
- initGnapPos(2, 8, 1);
+ initGnapPos(2, 8, kDirBottomRight);
initBeaverPos(1, 8, 0);
endSceneInit();
} else {
- initGnapPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y, 1);
+ initGnapPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
initBeaverPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, 0);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
@@ -193,7 +193,7 @@ void GnapEngine::scene22_run() {
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSCashier].x, _hotspotsWalkPos[kHSCashier].y,
0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkCashier;
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index 7257ab1..62a3c8b 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -69,7 +69,7 @@ void GnapEngine::scene23_run() {
queueInsertDeviceIcon();
- initGnapPos(-1, 7, 1);
+ initGnapPos(-1, 7, kDirBottomRight);
initBeaverPos(-2, 7, 0);
_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
@@ -151,7 +151,7 @@ void GnapEngine::scene23_run() {
if (isFlag(11))
playGnapImpossible(0, 0);
else {
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y,
0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
setFlag(11);
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index b7660a3..7546b45 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -84,13 +84,13 @@ void GnapEngine::scene24_run() {
queueInsertDeviceIcon();
if (_prevSceneNum == 20) {
- initGnapPos(1, 8, 1);
+ initGnapPos(1, 8, kDirBottomRight);
initBeaverPos(2, 8, 0);
endSceneInit();
gnapWalkTo(1, 9, -1, 0x107B9, 1);
platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
- initGnapPos(8, 8, 3);
+ initGnapPos(8, 8, kDirBottomLeft);
initBeaverPos(8, 8, 4);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107BA, 1);
@@ -156,7 +156,7 @@ void GnapEngine::scene24_run() {
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
_newSceneNum = 20;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index b1bbfb4..5a6d7d3 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -121,13 +121,13 @@ void GnapEngine::scene25_run() {
queueInsertDeviceIcon();
if (_prevSceneNum == 24) {
- initGnapPos(5, 11, 5);
+ initGnapPos(5, 11, kDirUpLeft);
initBeaverPos(6, 11, 4);
endSceneInit();
gnapWalkTo(5, 7, -1, 0x107BA, 1);
platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
- initGnapPos(5, 6, 1);
+ initGnapPos(5, 6, kDirBottomRight);
initBeaverPos(6, 6, 0);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
@@ -195,7 +195,7 @@ void GnapEngine::scene25_run() {
_s25_nextTicketVendorSequenceId = (getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSTicketVendor].x, _hotspotsWalkPos[kHSTicketVendor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkTicketVendor;
break;
@@ -249,11 +249,11 @@ void GnapEngine::scene25_run() {
case LOOK_CURSOR:
gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, -1, -1, 1);
if (_sceneClickedHotspot == 5 || _sceneClickedHotspot == 6)
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
else if (_sceneClickedHotspot == 8)
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
else
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
playGnapIdle(0, 0);
scene25_playAnims(8 - _sceneClickedHotspot + 1);
break;
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index 974525d..bef046c 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -81,13 +81,13 @@ void GnapEngine::scene26_run() {
_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
if (_prevSceneNum == 25) {
- initGnapPos(-1, 8, 1);
+ initGnapPos(-1, 8, kDirBottomRight);
initBeaverPos(-2, 8, 0);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(2, 8, 1);
+ initGnapPos(2, 8, kDirBottomRight);
initBeaverPos(3, 8, 0);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index d241daf..e360981 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -92,28 +92,28 @@ void GnapEngine::scene27_run() {
switch (_prevSceneNum) {
case 26:
- initGnapPos(7, 12, 1);
+ initGnapPos(7, 12, kDirBottomRight);
initBeaverPos(6, 12, 0);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
- initGnapPos(-1, 8, 1);
+ initGnapPos(-1, 8, kDirBottomRight);
initBeaverPos(-1, 9, 0);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
- initGnapPos(12, 8, 3);
+ initGnapPos(12, 8, kDirBottomLeft);
initBeaverPos(12, 9, 4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
- initGnapPos(6, 8, 1);
+ initGnapPos(6, 8, kDirBottomRight);
initBeaverPos(5, 9, 0);
endSceneInit();
break;
@@ -166,7 +166,7 @@ void GnapEngine::scene27_run() {
case kHSJanitor:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemPicture) {
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
if (gnapWalkTo(_hotspotsWalkPos[kHSJanitor].x, _hotspotsWalkPos[kHSJanitor].y, 0, 0x107BC, 1))
_gnapActionStatus = kASShowPictureToJanitor;
} else if (_grabCursorSpriteIndex >= 0) {
@@ -177,7 +177,7 @@ void GnapEngine::scene27_run() {
playGnapScratchingHead(6, 3);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSJanitor].x, _hotspotsWalkPos[kHSJanitor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkJanitor;
break;
@@ -200,7 +200,7 @@ void GnapEngine::scene27_run() {
playGnapScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSBucket].x, _hotspotsWalkPos[kHSBucket].y) | 0x10000, 1);
_gnapActionStatus = kASGrabBucket;
break;
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index e39bb8d..0d04e2e 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -94,12 +94,12 @@ void GnapEngine::scene28_run() {
_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_timers[4] = getRandom(20) + 80;
}
- initGnapPos(8, 8, 3);
+ initGnapPos(8, 8, kDirBottomLeft);
initBeaverPos(9, 8, 4);
endSceneInit();
} else {
_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- initGnapPos(8, 8, 3);
+ initGnapPos(8, 8, kDirBottomLeft);
initBeaverPos(9, 8, 4);
endSceneInit();
playSequences(0xF7, 0x121, 0x122, 0x123);
@@ -176,7 +176,7 @@ void GnapEngine::scene28_run() {
_gnapActionStatus = kASGrabHornSuccess;
}
} else {
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(2, 8, 0, 0x107BB, 1);
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
@@ -201,13 +201,13 @@ void GnapEngine::scene28_run() {
else
playGnapImpossible(0, 0);
} else if (_grabCursorSpriteIndex == kItemBucketWithBeer) {
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
_gnapActionStatus = kASUseBeerBucketWithClown;
} else if (_grabCursorSpriteIndex == kItemBucketWithPill) {
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
@@ -220,7 +220,7 @@ void GnapEngine::scene28_run() {
playGnapScratchingHead(5, 2);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(5, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkClown;
break;
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 666ec9e..98215d4 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -85,13 +85,13 @@ void GnapEngine::scene29_run() {
_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
if (_prevSceneNum == 27) {
- initGnapPos(12, 7, 1);
+ initGnapPos(12, 7, kDirBottomRight);
initBeaverPos(12, 8, 0);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(-1, 7, 1);
+ initGnapPos(-1, 7, kDirBottomRight);
initBeaverPos(-2, 7, 0);
endSceneInit();
gnapWalkTo(2, 7, -1, 0x107B9, 1);
@@ -144,7 +144,7 @@ void GnapEngine::scene29_run() {
case kHSMonkey:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemBanana) {
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASUseBananaWithMonkey;
_newSceneNum = 51;
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 48b97bd..9a64173 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -75,7 +75,7 @@ void GnapEngine::scene30_run() {
_timers[4] = getRandom(100) + 300;
_s30_kidSequenceId = 0x101;
- initGnapPos(7, 12, 1);
+ initGnapPos(7, 12, kDirBottomRight);
initBeaverPos(6, 12, 0);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 17cde86..b39b61b 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -79,13 +79,13 @@ void GnapEngine::scene31_run() {
_timers[5] = getRandom(50) + 180;
if (_prevSceneNum == 27) {
- initGnapPos(-1, 8, 3);
+ initGnapPos(-1, 8, kDirBottomLeft);
initBeaverPos(-1, 9, 4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107BA, 1);
platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
- initGnapPos(7, 12, 1);
+ initGnapPos(7, 12, kDirBottomRight);
initBeaverPos(6, 12, 0);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107BA, 1);
@@ -203,7 +203,7 @@ void GnapEngine::scene31_run() {
} else {
gnapWalkTo(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
_gnapActionStatus = kASUseBeerBarrel;
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
}
break;
case TALK_CURSOR:
@@ -322,7 +322,7 @@ void GnapEngine::scene31_updateAnimations() {
_gnapActionStatus = kASFillEmptyBucketWithBeerDone;
break;
case kASFillEmptyBucketWithBeerDone:
- _gnapIdleFacing = 3;
+ _gnapIdleFacing = kDirBottomLeft;
playGnapPullOutDevice(0, 0);
playGnapUseDevice(0, 0);
_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index fca05ee..b91e1be 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -72,13 +72,13 @@ void GnapEngine::scene32_run() {
_timers[4] = getRandom(100) + 300;
if (_prevSceneNum == 33) {
- initGnapPos(11, 6, 3);
+ initGnapPos(11, 6, kDirBottomLeft);
initBeaverPos(12, 6, 4);
endSceneInit();
platypusWalkTo(9, 6, -1, 0x107D2, 1);
gnapWalkTo(8, 6, -1, 0x107BA, 1);
} else {
- initGnapPos(1, 6, 1);
+ initGnapPos(1, 6, kDirBottomRight);
initBeaverPos(1, 7, 0);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index b601d5f..ed56b68 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -77,26 +77,26 @@ void GnapEngine::scene33_run() {
switch (_prevSceneNum) {
case 34:
- initGnapPos(11, 7, 3);
+ initGnapPos(11, 7, kDirBottomLeft);
initBeaverPos(12, 7, 4);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
- initGnapPos(7, 7, 1);
+ initGnapPos(7, 7, kDirBottomRight);
initBeaverPos(8, 7, 0);
endSceneInit();
break;
case 32:
- initGnapPos(-1, 6, 1);
+ initGnapPos(-1, 6, kDirBottomRight);
initBeaverPos(-1, 7, 0);
endSceneInit();
platypusWalkTo(2, 7, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
default:
- initGnapPos(3, 7, 1);
+ initGnapPos(3, 7, kDirBottomRight);
initBeaverPos(2, 7, 0);
endSceneInit();
break;
@@ -151,14 +151,14 @@ void GnapEngine::scene33_run() {
} else {
switch (_verbCursor) {
case GRAB_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
if (gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_gnapActionStatus = kASUseChicken;
else
_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkChicken;
break;
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index a53d5b0..f5351fe 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -97,10 +97,10 @@ void GnapEngine::scene38_run() {
_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 39) {
- initGnapPos(3, 7, 3);
+ initGnapPos(3, 7, kDirBottomLeft);
initBeaverPos(4, 7, 4);
} else {
- initGnapPos(3, 8, 1);
+ initGnapPos(3, 8, kDirBottomRight);
initBeaverPos(4, 8, 0);
}
endSceneInit();
@@ -304,7 +304,7 @@ void GnapEngine::scene38_updateAnimations() {
_gnapSequenceDatNum = 0;
_gnapX = 3;
_gnapY = 6;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
if (_isLeavingScene) {
_sceneWaiting = false;
gnapWalkTo(5, 7, 0, 0x107BB, 1);
@@ -319,7 +319,7 @@ void GnapEngine::scene38_updateAnimations() {
_gnapSequenceDatNum = 0;
_gnapX = 3;
_gnapY = 6;
- _gnapIdleFacing = 1;
+ _gnapIdleFacing = kDirBottomRight;
_gameSys->setAnimation(0x9E, _gnapId, 0);
_sceneWaiting = false;
scene38_updateHotspots();
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index b8a5f1e..94bdcb5 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -70,11 +70,11 @@ void GnapEngine::scene39_run() {
_s39_nextGuySequenceId = -1;
if (_prevSceneNum == 38) {
- initGnapPos(3, 7, 7);
+ initGnapPos(3, 7, kDirUpRight);
initBeaverPos(2, 7, 5);
endSceneInit();
} else {
- initGnapPos(4, 7, 1);
+ initGnapPos(4, 7, kDirBottomRight);
initBeaverPos(5, 7, 0);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index ca5c677..ab49458 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -133,7 +133,7 @@ void GnapEngine::scene41_run() {
if (isFlag(12)) {
_gnapSequenceId = 0x120;
_gnapSequenceDatNum = 0;
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapX = 7;
_gnapY = 7;
_gnapId = 140;
@@ -142,19 +142,19 @@ void GnapEngine::scene41_run() {
initBeaverPos(8, 10, 3);
endSceneInit();
} else if (_prevSceneNum == 45) {
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-2, 8, 5);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 42) {
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(11, 9, 5);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 8, 1);
+ initGnapPos(5, 8, kDirBottomRight);
initBeaverPos(6, 8, 3);
endSceneInit();
}
@@ -287,7 +287,7 @@ void GnapEngine::scene41_run() {
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(4, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkToyVendor;
break;
@@ -301,7 +301,7 @@ void GnapEngine::scene41_run() {
case kHSKid:
if (_grabCursorSpriteIndex == kItemChickenBucket) {
gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASUseChickenBucketWithKid;
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(7, 7, 8, 0);
@@ -312,11 +312,11 @@ void GnapEngine::scene41_run() {
break;
case GRAB_CURSOR:
gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
_gnapActionStatus = kASGrabKid;
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(7, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 3826f7b..4ebcec6 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -125,19 +125,19 @@ void GnapEngine::scene42_run() {
if (_toyUfoSequenceId == 0x872)
setGrabCursorSprite(-1);
} else if (_prevSceneNum == 41) {
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-1, 9, 5);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else if (_prevSceneNum == 43) {
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(11, 9, 5);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 11, 7);
+ initGnapPos(5, 11, kDirUpRight);
initBeaverPos(6, 11, 5);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
@@ -266,7 +266,7 @@ void GnapEngine::scene42_run() {
playGnapScratchingHead(_hotspotsWalkPos[kHSBBQVendor].x - 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASTalkBBQVendor;
break;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 957aea3..2484a62 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -113,27 +113,27 @@ void GnapEngine::scene43_run() {
} else {
switch (_prevSceneNum) {
case 42:
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-1, 9, 5);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(11, 9, 5);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
- initGnapPos(4, 7, 3);
+ initGnapPos(4, 7, kDirBottomLeft);
initBeaverPos(11, 8, 5);
endSceneInit();
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
default:
- initGnapPos(5, 11, 7);
+ initGnapPos(5, 11, kDirUpRight);
initBeaverPos(6, 11, 5);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
@@ -267,7 +267,7 @@ void GnapEngine::scene43_run() {
playGnapScratchingHead(7, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(5, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = 2;
break;
@@ -289,7 +289,7 @@ void GnapEngine::scene43_run() {
playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(3, 7, 0, 67515, 1);
_gnapActionStatus = 1;
break;
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 3bcde76..af961ad 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -127,21 +127,21 @@ void GnapEngine::scene44_run() {
} else {
switch (_prevSceneNum) {
case 43:
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-1, 7, 5);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(11, 8, 5);
endSceneInit();
gnapWalkTo(6, 8, -1, 0x107BA, 1);
platypusWalkTo(7, 8, -1, 0x107D2, 1);
break;
case 50:
- initGnapPos(4, 8, 1);
+ initGnapPos(4, 8, kDirBottomRight);
if (_sceneSavegameLoaded) {
initBeaverPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 4);
} else if (!isFlag(13)) {
@@ -158,7 +158,7 @@ void GnapEngine::scene44_run() {
endSceneInit();
break;
default:
- initGnapPos(5, 11, 7);
+ initGnapPos(5, 11, kDirUpRight);
initBeaverPos(6, 11, 5);
endSceneInit();
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -279,7 +279,7 @@ void GnapEngine::scene44_run() {
playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSKissingLady].x, _hotspotsWalkPos[kHSKissingLady].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = 1;
break;
@@ -333,7 +333,7 @@ void GnapEngine::scene44_run() {
playGnapScratchingHead(8, 7);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSSpringGuy].x, _hotspotsWalkPos[kHSSpringGuy].y, -1, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 87d52be..1ae51bc 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -119,19 +119,19 @@ void GnapEngine::scene45_run() {
initBeaverPos(4, 8, 0);
endSceneInit();
} else if (_prevSceneNum == 46) {
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-1, 9, 5);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else if (_prevSceneNum == 41) {
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(11, 9, 5);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107D2, 1);
gnapWalkTo(10, 9, -1, 0x107BA, 1);
} else {
- initGnapPos(2, 11, 7);
+ initGnapPos(2, 11, kDirUpRight);
initBeaverPos(6, 11, 5);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 5448292..37a0005 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -101,19 +101,19 @@ void GnapEngine::scene46_run() {
_gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
endSceneInit();
} else if (_prevSceneNum == 44) {
- initGnapPos(-1, 8, 7);
+ initGnapPos(-1, 8, kDirUpRight);
initBeaverPos(-1, 8, 5);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 45) {
- initGnapPos(11, 8, 7);
+ initGnapPos(11, 8, kDirUpRight);
initBeaverPos(12, 8, 5);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 11, 7);
+ initGnapPos(5, 11, kDirUpRight);
initBeaverPos(6, 11, 5);
endSceneInit();
platypusWalkTo(5, 8, -1, 0x107C2, 1);
@@ -203,7 +203,7 @@ void GnapEngine::scene46_run() {
playGnapMoan1(_hotspotsWalkPos[kHSSackGuy].x + 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 5;
+ _gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[kHSSackGuy].x, _hotspotsWalkPos[kHSSackGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = 2;
break;
@@ -224,7 +224,7 @@ void GnapEngine::scene46_run() {
playGnapMoan1(_hotspotsWalkPos[kHSItchyGuy].x - 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = 7;
+ _gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSItchyGuy].x, _hotspotsWalkPos[kHSItchyGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_gnapActionStatus = 1;
break;
Commit: 2d63d769ebcb720507602b165eb042ff69e28c24
https://github.com/scummvm/scummvm/commit/2d63d769ebcb720507602b165eb042ff69e28c24
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactoring - Use enum for beaver facing
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index c845839..dc677a1 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1834,7 +1834,7 @@ void GnapEngine::gnapKissPlatypus(int callback) {
kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_beaverSequenceDatNum = 1;
_beaverSequenceId = 0x7CB;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
playGnapSequence(0x107B5);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
@@ -1864,7 +1864,7 @@ void GnapEngine::gnapUseJointOnPlatypus() {
kSeqSyncWait, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
_beaverSequenceDatNum = 1;
_beaverSequenceId = 0x876;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
playGnapSequence(0x107B5);
gnapWalkStep();
while (_gameSys->getAnimationStatus(0) != 2) {
@@ -1900,17 +1900,17 @@ int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
if (gridX > 0 && gridY > 0) {
if (gridX < _platX) {
sequenceId = 0x7CC;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
} else {
sequenceId = 0x7CB;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
}
- } else if (_beaverFacing != 0) {
+ } else if (_beaverFacing != kDirNone) {
sequenceId = 0x7CC;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
} else {
sequenceId = 0x7CB;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
}
return sequenceId | 0x10000;
}
@@ -1990,20 +1990,20 @@ void GnapEngine::beaverSub426234() {
}
}
-void GnapEngine::initBeaverPos(int gridX, int gridY, int facing) {
+void GnapEngine::initBeaverPos(int gridX, int gridY, Facing facing) {
_timers[0] = 50;
_timers[1] = 20;
_platX = gridX;
_platY = gridY;
- if (facing <= 0)
- _beaverFacing = 0;
+ if (facing == kDirNone)
+ _beaverFacing = kDirNone;
else
_beaverFacing = facing;
- if (_beaverFacing == 4) {
+ if (_beaverFacing == kDirUnk4) {
_beaverSequenceId = 0x7D1;
} else {
_beaverSequenceId = 0x7C1;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
}
_beaverId = 20 * _platY;
_beaverSequenceDatNum = 1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 2872f69..b96d27d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -525,14 +525,14 @@ public:
void gnapUseDisguiseOnPlatypus();
// Beaver
- int _beaverFacing;
+ Facing _beaverFacing;
int _beaverActionStatus;
int _beaverSequenceId, _beaverSequenceDatNum, _beaverId;
int getBeaverSequenceId(int kind, int gridX, int gridY);
void playBeaverSequence(int sequenceId);
void updateBeaverIdleSequence();
void beaverSub426234();
- void initBeaverPos(int gridX, int gridY, int facing);
+ void initBeaverPos(int gridX, int gridY, Facing facing);
// Scenes
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 136e8d4..bfe0a0f 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -1295,13 +1295,13 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_beaverSequenceDatNum = datNum;
// CHECKME Not sure if this is correct...
if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0)
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0)
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
else if (_platWalkNodes[_platWalkNodesCount - 1].gridX1 % 2)
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
else
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId, animationIndex);
} else if (animationIndex >= 0) {
@@ -1313,27 +1313,27 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_beaverSequenceId = ridToEntryIndex(sequenceId);
_beaverSequenceDatNum = ridToDatIndex(sequenceId);
if (_beaverSequenceId == 0x7C2) {
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
} else if (_beaverSequenceId == 0x7D2) {
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
}
} else {
if (_platWalkNodesCount > 0) {
if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0) {
_beaverSequenceId = 0x7C2;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
} else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0) {
_beaverSequenceId = 0x7D2;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
} else if (_platWalkNodes[0].deltaX > 0) {
_beaverSequenceId = 0x7C2;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
} else if (_platWalkNodes[0].deltaX < 0) {
_beaverSequenceId = 0x7D2;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
} else {
_beaverSequenceId = 0x7D2;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
}
} else if (_beaverFacing > 0) {
_beaverSequenceId = 0x7D2;
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index ba906b6..0e90e0b 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -104,7 +104,7 @@ void GnapEngine::scene01_run() {
if (_prevSceneNum == 2) {
initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(0))
- initBeaverPos(12, 6, 4);
+ initBeaverPos(12, 6, kDirUnk4);
endSceneInit();
if (isFlag(0))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
@@ -112,7 +112,7 @@ void GnapEngine::scene01_run() {
} else {
initGnapPos(1, 6, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(1, 7, 0);
+ initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 5d25487..65018e0 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -101,7 +101,7 @@ void GnapEngine::scene02_run() {
case 3:
initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(0))
- initBeaverPos(12, 6, 4);
+ initBeaverPos(12, 6, kDirUnk4);
endSceneInit();
if (isFlag(0))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
@@ -110,7 +110,7 @@ void GnapEngine::scene02_run() {
case 4:
initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, kDirBottomLeft);
if (isFlag(0))
- initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 4);
+ initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, kDirUnk4);
endSceneInit();
gnapWalkTo(7, 6, 0, 0x107B9, 1);
if (isFlag(0))
@@ -121,19 +121,19 @@ void GnapEngine::scene02_run() {
case 47:
clearFlag(25);
initGnapPos(5, 6, kDirBottomLeft);
- initBeaverPos(6, 7, 4);
+ initBeaverPos(6, 7, kDirUnk4);
endSceneInit();
break;
case 49:
initGnapPos(5, 6, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(6, 7, 0);
+ initBeaverPos(6, 7, kDirNone);
endSceneInit();
break;
default:
initGnapPos(-1, 6, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(-1, 7, 0);
+ initBeaverPos(-1, 7, kDirNone);
endSceneInit();
if (isFlag(0))
platypusWalkTo(2, 7, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index c760013..930554c 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -104,7 +104,7 @@ void GnapEngine::scene03_run() {
_timers[5] = getRandom(100) + 200;
if (isFlag(0)) {
- initBeaverPos(5, 4, 0);
+ initBeaverPos(5, 4, kDirNone);
} else {
_timers[1] = getRandom(40) + 20;
_gameSys->setAnimation(0x1C2, 99, 1);
@@ -386,7 +386,7 @@ void GnapEngine::scene03_updateAnimations() {
_gnapActionStatus = -1;
_platX = 6;
_platY = 6;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
_beaverId = 120;
_gameSys->insertSequence(0x107CA, _beaverId, 0x1BC, 99,
kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 164a53f..ec3f482 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -128,7 +128,7 @@ void GnapEngine::scene04_run() {
clearFlag(10);
_beaverSequenceId = 0x20C;
_beaverSequenceDatNum = 0;
- _beaverFacing = 1;
+ _beaverFacing = kDirBottomRight;
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
_gameSys->waitForUpdate();
@@ -137,19 +137,19 @@ void GnapEngine::scene04_run() {
if (_prevSceneNum == 2) {
initGnapPos(5, 11, kDirUpRight);
if (isFlag(0))
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
if (isFlag(0))
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 9, -1, 0x107BA, 1);
} else if (_prevSceneNum == 38) {
initGnapPos(5, 7, kDirBottomRight);
- initBeaverPos(4, 7, 0);
+ initBeaverPos(4, 7, kDirNone);
endSceneInit();
} else {
initGnapPos(12, 9, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(12, 8, 0);
+ initBeaverPos(12, 8, kDirNone);
endSceneInit();
if (isFlag(0))
platypusWalkTo(9, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index f13a2a3..aebd783 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -98,7 +98,7 @@ void GnapEngine::scene05_run() {
if (_prevSceneNum != 6 && _prevSceneNum != 36) {
initGnapPos(-1, 8, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(-1, 9, 0);
+ initBeaverPos(-1, 9, kDirNone);
endSceneInit();
if (isFlag(0))
platypusWalkTo(2, 8, -1, 0x107C2, 1);
@@ -106,7 +106,7 @@ void GnapEngine::scene05_run() {
} else {
initGnapPos(6, 8, kDirBottomRight);
if (isFlag(0))
- initBeaverPos(7, 9, 0);
+ initBeaverPos(7, 9, kDirNone);
endSceneInit();
}
@@ -178,7 +178,7 @@ void GnapEngine::scene05_run() {
gnapUseDeviceOnBeaver();
if (platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
_beaverActionStatus = kASPlatSearchHaystack;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
}
if (_gnapX == 4 && (_gnapY == 8 || _gnapY == 7))
gnapWalkStep();
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index acf309c..459d449 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -107,7 +107,7 @@ void GnapEngine::scene06_run() {
queueInsertDeviceIcon();
initGnapPos(5, 12, kDirBottomRight);
- initBeaverPos(6, 12, 0);
+ initBeaverPos(6, 12, kDirNone);
endSceneInit();
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -230,7 +230,7 @@ void GnapEngine::scene06_run() {
_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
_gnapIdleFacing = kDirUpLeft;
platypusWalkTo(6, 8, 1, 0x107C2, 1);
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
_gnapActionStatus = kASUseTwigOnHorse;
setGrabCursorSprite(-1);
} else if (_grabCursorSpriteIndex >= 0) {
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 1b609f8..b6b5b91 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -72,7 +72,7 @@ void GnapEngine::scene07_run() {
if (_prevSceneNum == 8) {
initGnapPos(7, 7, kDirBottomLeft);
- initBeaverPos(9, 7, 4);
+ initBeaverPos(9, 7, kDirUnk4);
endSceneInit();
} else {
_gnapX = 6;
@@ -89,7 +89,7 @@ void GnapEngine::scene07_run() {
_beaverId = 160;
_beaverSequenceId = 0x91;
_beaverSequenceDatNum = 0;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index 5988114..a1cbe07 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -117,7 +117,7 @@ void GnapEngine::scene08_run() {
_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-1, 7, 0);
+ initBeaverPos(-1, 7, kDirNone);
endSceneInit();
@@ -218,7 +218,7 @@ void GnapEngine::scene08_run() {
gnapUseDeviceOnBeaver();
platypusWalkTo(6, 6, 1, 0x107C2, 1);
_beaverActionStatus = kASPlatWithMan;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
playGnapIdle(6, 6);
break;
}
@@ -254,7 +254,7 @@ void GnapEngine::scene08_run() {
gnapUseDeviceOnBeaver();
platypusWalkTo(3, 7, 1, 0x107C2, 1);
_beaverActionStatus = kASPlatWithDog;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
playGnapIdle(3, 7);
break;
}
@@ -500,7 +500,7 @@ void GnapEngine::scene08_updateAnimations() {
_platY = 8;
_beaverId = 160;
_beaverSequenceId = 0x148;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
_beaverSequenceDatNum = 0;
if (_gnapX == 1 && _gnapY == 8)
gnapWalkStep();
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 2cf57a9..d16f3bd 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -68,13 +68,13 @@ void GnapEngine::scene09_run() {
if (_prevSceneNum == 8) {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 7, 4);
+ initBeaverPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
initGnapPos(4, 7, kDirBottomRight);
- initBeaverPos(5, 7, 0);
+ initBeaverPos(5, 7, kDirNone);
endSceneInit();
}
@@ -128,7 +128,7 @@ void GnapEngine::scene09_run() {
gnapWalkTo(4, 7, 0, 0x107BF, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
break;
case kHSExitHouse:
@@ -137,7 +137,7 @@ void GnapEngine::scene09_run() {
gnapWalkTo(10, -1, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(10, -1, -1, 0x107CD, 1);
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
break;
case kHSTrash:
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 0a89682..6f5552f 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -85,13 +85,13 @@ void GnapEngine::scene10_run() {
if (_prevSceneNum == 9) {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 7, 4);
+ initBeaverPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 8, 0);
+ initBeaverPos(-2, 8, kDirNone);
endSceneInit();
gnapWalkTo(1, 7, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
@@ -256,7 +256,7 @@ void GnapEngine::scene10_run() {
gnapUseDeviceOnBeaver();
platypusWalkTo(7, 6, 1, 0x107D2, 1);
_beaverActionStatus = kASPlatWithBox;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
_largeSprite = _gameSys->createSurface(0xC3);
playGnapIdle(7, 6);
}
@@ -397,7 +397,7 @@ void GnapEngine::scene10_updateAnimations() {
_s10_nextCookSequenceId = 0x843;
_beaverSequenceId = 0x7C9;
_beaverId = 160;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
_beaverSequenceDatNum = 1;
break;
case 0x843:
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index f364677..95a8df3 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -94,22 +94,22 @@ void GnapEngine::scene11_run() {
switch (_prevSceneNum) {
case 13:
initGnapPos(8, 5, kDirBottomLeft);
- initBeaverPos(9, 6, 4);
+ initBeaverPos(9, 6, kDirUnk4);
break;
case 47:
initGnapPos(8, 5, kDirBottomLeft);
- initBeaverPos(9, 5, 4);
+ initBeaverPos(9, 5, kDirUnk4);
_s11_currGoggleGuySequenceId = 0x1FA;
_s11_currHookGuySequenceId = 0x1FF;
_timers[7] = 180;
break;
case 12:
initGnapPos(-1, 9, kDirBottomRight);
- initBeaverPos(-2, 8, 0);
+ initBeaverPos(-2, 8, kDirNone);
break;
default:
initGnapPos(6, 6, kDirBottomLeft);
- initBeaverPos(6, 5, 4);
+ initBeaverPos(6, 5, kDirUnk4);
break;
}
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index fae6f83..c83f0bd 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -112,11 +112,11 @@ void GnapEngine::scene12_run() {
if (_prevSceneNum == 15) {
initGnapPos(5, 6, kDirBottomRight);
- initBeaverPos(3, 7, 0);
+ initBeaverPos(3, 7, kDirNone);
endSceneInit();
} else {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 8, 4);
+ initBeaverPos(12, 8, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
@@ -203,7 +203,7 @@ void GnapEngine::scene12_run() {
gnapUseDeviceOnBeaver();
platypusWalkTo(3, 7, 1, 0x107D2, 1);
_beaverActionStatus = kASPlatWithToothGuy;
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
playGnapIdle(2, 7);
break;
}
@@ -273,7 +273,7 @@ void GnapEngine::scene12_run() {
gnapUseDeviceOnBeaver();
platypusWalkTo(7, 6, 1, 0x107C2, 1);
_beaverActionStatus = kASPlatWithBeardGuy;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
playGnapIdle(7, 6);
break;
}
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index c1e9bab..66e78e8 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -108,10 +108,10 @@ void GnapEngine::scene13_run() {
if (_prevSceneNum == 14) {
initGnapPos(6, 6, kDirBottomLeft);
- initBeaverPos(9, 8, 0);
+ initBeaverPos(9, 8, kDirNone);
} else {
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(2, 7, 0);
+ initBeaverPos(2, 7, kDirNone);
}
endSceneInit();
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 04eb5f3..fdfd1fb 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -178,7 +178,7 @@ void GnapEngine::scene17_run() {
if (_prevSceneNum == 53 || _prevSceneNum == 18 || _prevSceneNum == 20 || _prevSceneNum == 19) {
if (_prevSceneNum == 20) {
initGnapPos(4, 6, kDirBottomRight);
- initBeaverPos(5, 6, 0);
+ initBeaverPos(5, 6, kDirNone);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
@@ -203,7 +203,7 @@ void GnapEngine::scene17_run() {
} else if (isFlag(25)) {
clearFlag(15);
clearFlag(16);
- initBeaverPos(7, 9, 0);
+ initBeaverPos(7, 9, kDirNone);
_gnapX = _hotspotsWalkPos[2].x;
_gnapY = _hotspotsWalkPos[2].y;
_gnapId = 20 * _hotspotsWalkPos[2].y;
@@ -235,18 +235,18 @@ void GnapEngine::scene17_run() {
scene17_updateHotspots();
} else if (_prevSceneNum == 18) {
initGnapPos(6, 6, kDirBottomRight);
- initBeaverPos(5, 6, 0);
+ initBeaverPos(5, 6, kDirNone);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
if (isFlag(15)) {
initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, kDirBottomRight);
- initBeaverPos(1, 9, 0);
+ initBeaverPos(1, 9, kDirNone);
endSceneInit();
} else {
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(1, 7, 0);
+ initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
clearFlag(15);
@@ -273,7 +273,7 @@ void GnapEngine::scene17_run() {
endSceneInit();
_beaverSequenceId = 0x7C1;
_beaverSequenceDatNum = 1;
- _beaverFacing = 1;
+ _beaverFacing = kDirBottomRight;
platypusWalkTo(2, 9, -1, 0x107C2, 1);
}
@@ -388,7 +388,7 @@ void GnapEngine::scene17_run() {
scene17_platHangUpPhone();
_isLeavingScene = true;
gnapUseDeviceOnBeaver();
- _beaverFacing = 5;
+ _beaverFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
setFlag(16);
_beaverActionStatus = kASPlatUsePhone;
@@ -432,7 +432,7 @@ void GnapEngine::scene17_run() {
scene17_platHangUpPhone();
_isLeavingScene = true;
gnapUseDeviceOnBeaver();
- _beaverFacing = 5;
+ _beaverFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
setFlag(16);
_beaverActionStatus = kASPlatUsePhone;
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 53a89e0..a788326 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -380,19 +380,19 @@ void GnapEngine::scene18_run() {
}
if (_prevSceneNum == 17) {
initGnapPos(4, 11, kDirBottomRight);
- initBeaverPos(5, 11, 0);
+ initBeaverPos(5, 11, kDirNone);
endSceneInit();
gnapWalkTo(4, 8, -1, 0x107B9, 1);
platypusWalkTo(5, 9, -1, 0x107C2, 1);
} else if (_prevSceneNum == 19) {
initGnapPos(7, 7, kDirBottomRight);
- initBeaverPos(8, 7, 0);
+ initBeaverPos(8, 7, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
initGnapPos(-1, 10, kDirBottomRight);
- initBeaverPos(-1, 10, 0);
+ initBeaverPos(-1, 10, kDirNone);
endSceneInit();
gnapWalkTo(3, 7, -1, 0x107B9, 1);
platypusWalkTo(3, 8, -1, 0x107C2, 1);
@@ -736,7 +736,7 @@ void GnapEngine::scene18_run() {
if (!_timers[6]) {
_beaverActionStatus = -1;
_sceneWaiting = false;
- initBeaverPos(-1, 10, 0);
+ initBeaverPos(-1, 10, kDirNone);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
clearFlag(26);
}
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index 2f588f2..9dfd69e 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -127,7 +127,7 @@ void GnapEngine::scene19_run() {
_gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_timers[6] = getRandom(40) + 50;
initGnapPos(3, 6, kDirBottomRight);
- initBeaverPos(4, 6, 0);
+ initBeaverPos(4, 6, kDirNone);
endSceneInit();
gnapWalkTo(4, 9, -1, 0x107B9, 1);
platypusWalkTo(5, 9, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 990ceca..beee17b 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -229,42 +229,42 @@ void GnapEngine::scene20_run() {
gameUpdateTick();
}
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(11, 9, 4);
+ initBeaverPos(11, 9, kDirUnk4);
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
switch (_prevSceneNum) {
case 17:
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, 0);
+ initBeaverPos(6, 11, kDirNone);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(11, 9, 4);
+ initBeaverPos(11, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
initGnapPos(-1, 8, kDirBottomLeft);
- initBeaverPos(-1, 9, 4);
+ initBeaverPos(-1, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
initGnapPos(7, 6, kDirBottomRight);
- initBeaverPos(8, 6, 0);
+ initBeaverPos(8, 6, kDirNone);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
initGnapPos(8, 6, kDirBottomLeft);
- initBeaverPos(9, 6, 4);
+ initBeaverPos(9, 6, kDirUnk4);
endSceneInit();
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(8, 8, -1, 0x107BA, 1);
@@ -329,7 +329,7 @@ void GnapEngine::scene20_run() {
gnapWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y + 1, -1, 0x107CF, 1);
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
}
break;
@@ -368,7 +368,7 @@ void GnapEngine::scene20_run() {
gnapWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x, _hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitInsideGrubCity].y, -1, 0x107C2, 1);
- _beaverFacing = 4;
+ _beaverFacing = kDirUnk4;
}
break;
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index 415c82f..7d8157b 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -78,7 +78,7 @@ void GnapEngine::scene21_run() {
if (isFlag(3)) {
if (isFlag(5)) {
initGnapPos(5, 8, kDirBottomRight);
- initBeaverPos(6, 8, 0);
+ initBeaverPos(6, 8, kDirNone);
_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(4))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
@@ -86,7 +86,7 @@ void GnapEngine::scene21_run() {
clearFlag(5);
} else {
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, 0);
+ initBeaverPos(6, 11, kDirNone);
if (!isFlag(4))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
@@ -95,7 +95,7 @@ void GnapEngine::scene21_run() {
}
} else {
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, 0);
+ initBeaverPos(6, 11, kDirNone);
_s21_currOldLadySequenceId = 0x89;
_gameSys->setAnimation(0x89, 79, 3);
_gameSys->insertSequence(_s21_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index c0e6d2b..01de3e8 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -72,11 +72,11 @@ void GnapEngine::scene22_run() {
if (_prevSceneNum == 20) {
initGnapPos(2, 8, kDirBottomRight);
- initBeaverPos(1, 8, 0);
+ initBeaverPos(1, 8, kDirNone);
endSceneInit();
} else {
initGnapPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
- initBeaverPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, 0);
+ initBeaverPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
platypusWalkTo(9, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index 62a3c8b..ebbf46a 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -70,7 +70,7 @@ void GnapEngine::scene23_run() {
queueInsertDeviceIcon();
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 7, 0);
+ initBeaverPos(-2, 7, kDirNone);
_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index 7546b45..ace9043 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -85,13 +85,13 @@ void GnapEngine::scene24_run() {
if (_prevSceneNum == 20) {
initGnapPos(1, 8, kDirBottomRight);
- initBeaverPos(2, 8, 0);
+ initBeaverPos(2, 8, kDirNone);
endSceneInit();
gnapWalkTo(1, 9, -1, 0x107B9, 1);
platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(8, 8, 4);
+ initBeaverPos(8, 8, kDirUnk4);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107BA, 1);
platypusWalkTo(3, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index 5a6d7d3..c93c194 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -122,13 +122,13 @@ void GnapEngine::scene25_run() {
if (_prevSceneNum == 24) {
initGnapPos(5, 11, kDirUpLeft);
- initBeaverPos(6, 11, 4);
+ initBeaverPos(6, 11, kDirUnk4);
endSceneInit();
gnapWalkTo(5, 7, -1, 0x107BA, 1);
platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
initGnapPos(5, 6, kDirBottomRight);
- initBeaverPos(6, 6, 0);
+ initBeaverPos(6, 6, kDirNone);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index bef046c..fb2e0cc 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -82,13 +82,13 @@ void GnapEngine::scene26_run() {
if (_prevSceneNum == 25) {
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-2, 8, 0);
+ initBeaverPos(-2, 8, kDirNone);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
initGnapPos(2, 8, kDirBottomRight);
- initBeaverPos(3, 8, 0);
+ initBeaverPos(3, 8, kDirNone);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index e360981..02020d5 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -93,28 +93,28 @@ void GnapEngine::scene27_run() {
switch (_prevSceneNum) {
case 26:
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, 0);
+ initBeaverPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-1, 9, 0);
+ initBeaverPos(-1, 9, kDirNone);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
initGnapPos(12, 8, kDirBottomLeft);
- initBeaverPos(12, 9, 4);
+ initBeaverPos(12, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
initGnapPos(6, 8, kDirBottomRight);
- initBeaverPos(5, 9, 0);
+ initBeaverPos(5, 9, kDirNone);
endSceneInit();
break;
}
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 0d04e2e..f7226e3 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -95,12 +95,12 @@ void GnapEngine::scene28_run() {
_timers[4] = getRandom(20) + 80;
}
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(9, 8, 4);
+ initBeaverPos(9, 8, kDirUnk4);
endSceneInit();
} else {
_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(9, 8, 4);
+ initBeaverPos(9, 8, kDirUnk4);
endSceneInit();
playSequences(0xF7, 0x121, 0x122, 0x123);
_s28_currClownSequenceId = 0x115;
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 98215d4..302c031 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -86,13 +86,13 @@ void GnapEngine::scene29_run() {
if (_prevSceneNum == 27) {
initGnapPos(12, 7, kDirBottomRight);
- initBeaverPos(12, 8, 0);
+ initBeaverPos(12, 8, kDirNone);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 7, 0);
+ initBeaverPos(-2, 7, kDirNone);
endSceneInit();
gnapWalkTo(2, 7, -1, 0x107B9, 1);
platypusWalkTo(1, 7, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 9a64173..3e237fd 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -76,7 +76,7 @@ void GnapEngine::scene30_run() {
_s30_kidSequenceId = 0x101;
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, 0);
+ initBeaverPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index b39b61b..97c07fc 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -80,13 +80,13 @@ void GnapEngine::scene31_run() {
if (_prevSceneNum == 27) {
initGnapPos(-1, 8, kDirBottomLeft);
- initBeaverPos(-1, 9, 4);
+ initBeaverPos(-1, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107BA, 1);
platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, 0);
+ initBeaverPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107D2, 1);
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index b91e1be..5f91b3f 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -73,13 +73,13 @@ void GnapEngine::scene32_run() {
if (_prevSceneNum == 33) {
initGnapPos(11, 6, kDirBottomLeft);
- initBeaverPos(12, 6, 4);
+ initBeaverPos(12, 6, kDirUnk4);
endSceneInit();
platypusWalkTo(9, 6, -1, 0x107D2, 1);
gnapWalkTo(8, 6, -1, 0x107BA, 1);
} else {
initGnapPos(1, 6, kDirBottomRight);
- initBeaverPos(1, 7, 0);
+ initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index ed56b68..7e9823e 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -78,26 +78,26 @@ void GnapEngine::scene33_run() {
switch (_prevSceneNum) {
case 34:
initGnapPos(11, 7, kDirBottomLeft);
- initBeaverPos(12, 7, 4);
+ initBeaverPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
initGnapPos(7, 7, kDirBottomRight);
- initBeaverPos(8, 7, 0);
+ initBeaverPos(8, 7, kDirNone);
endSceneInit();
break;
case 32:
initGnapPos(-1, 6, kDirBottomRight);
- initBeaverPos(-1, 7, 0);
+ initBeaverPos(-1, 7, kDirNone);
endSceneInit();
platypusWalkTo(2, 7, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
default:
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(2, 7, 0);
+ initBeaverPos(2, 7, kDirNone);
endSceneInit();
break;
}
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index f5351fe..c32a0b0 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -98,10 +98,10 @@ void GnapEngine::scene38_run() {
if (_prevSceneNum == 39) {
initGnapPos(3, 7, kDirBottomLeft);
- initBeaverPos(4, 7, 4);
+ initBeaverPos(4, 7, kDirUnk4);
} else {
initGnapPos(3, 8, kDirBottomRight);
- initBeaverPos(4, 8, 0);
+ initBeaverPos(4, 8, kDirNone);
}
endSceneInit();
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index 94bdcb5..2d3ac77 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -71,11 +71,11 @@ void GnapEngine::scene39_run() {
_s39_nextGuySequenceId = -1;
if (_prevSceneNum == 38) {
initGnapPos(3, 7, kDirUpRight);
- initBeaverPos(2, 7, 5);
+ initBeaverPos(2, 7, kDirUpLeft);
endSceneInit();
} else {
initGnapPos(4, 7, kDirBottomRight);
- initBeaverPos(5, 7, 0);
+ initBeaverPos(5, 7, kDirNone);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index ab49458..efaf1d9 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -139,23 +139,23 @@ void GnapEngine::scene41_run() {
_gnapId = 140;
_gameSys->insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- initBeaverPos(8, 10, 3);
+ initBeaverPos(8, 10, kDirBottomLeft);
endSceneInit();
} else if (_prevSceneNum == 45) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-2, 8, 5);
+ initBeaverPos(-2, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 42) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, 5);
+ initBeaverPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 8, kDirBottomRight);
- initBeaverPos(6, 8, 3);
+ initBeaverPos(6, 8, kDirBottomLeft);
endSceneInit();
}
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 4ebcec6..3aaedc8 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -126,19 +126,19 @@ void GnapEngine::scene42_run() {
setGrabCursorSprite(-1);
} else if (_prevSceneNum == 41) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, 5);
+ initBeaverPos(-1, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else if (_prevSceneNum == 43) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, 5);
+ initBeaverPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 2484a62..b4fe5bb 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -114,27 +114,27 @@ void GnapEngine::scene43_run() {
switch (_prevSceneNum) {
case 42:
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, 5);
+ initBeaverPos(-1, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, 5);
+ initBeaverPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
initGnapPos(4, 7, kDirBottomLeft);
- initBeaverPos(11, 8, 5);
+ initBeaverPos(11, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
default:
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index af961ad..f664431 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -128,14 +128,14 @@ void GnapEngine::scene44_run() {
switch (_prevSceneNum) {
case 43:
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 7, 5);
+ initBeaverPos(-1, 7, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 8, 5);
+ initBeaverPos(11, 8, kDirUpLeft);
endSceneInit();
gnapWalkTo(6, 8, -1, 0x107BA, 1);
platypusWalkTo(7, 8, -1, 0x107D2, 1);
@@ -143,14 +143,14 @@ void GnapEngine::scene44_run() {
case 50:
initGnapPos(4, 8, kDirBottomRight);
if (_sceneSavegameLoaded) {
- initBeaverPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 4);
+ initBeaverPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, kDirUnk4);
} else if (!isFlag(13)) {
_timers[0] = 50;
_timers[1] = 20;
_platX = 5;
_platY = 8;
_beaverSequenceId = 0xFD;
- _beaverFacing = 0;
+ _beaverFacing = kDirNone;
_beaverId = 160;
_beaverSequenceDatNum = 0;
_gameSys->insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
@@ -159,7 +159,7 @@ void GnapEngine::scene44_run() {
break;
default:
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(6, 8, -1, 0x107C2, 1);
gnapWalkTo(5, 8, -1, 0x107BA, 1);
@@ -472,7 +472,7 @@ void GnapEngine::scene44_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
if (_s44_nextKissingLadySequenceId == 0xF6) {
_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- initBeaverPos(5, 8, 0);
+ initBeaverPos(5, 8, kDirNone);
_s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
_s44_nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0, 0, 2);
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 1ae51bc..3694362 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -116,23 +116,23 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(0x9E, 1, 0);
_gnapActionStatus = 1;
_gameSys->insertSequence(_gnapSequenceId, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- initBeaverPos(4, 8, 0);
+ initBeaverPos(4, 8, kDirNone);
endSceneInit();
} else if (_prevSceneNum == 46) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, 5);
+ initBeaverPos(-1, 9, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else if (_prevSceneNum == 41) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, 5);
+ initBeaverPos(11, 9, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107D2, 1);
gnapWalkTo(10, 9, -1, 0x107BA, 1);
} else {
initGnapPos(2, 11, kDirUpRight);
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 7, -1, 0x107B9, 1);
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 37a0005..f7fdc87 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -102,19 +102,19 @@ void GnapEngine::scene46_run() {
endSceneInit();
} else if (_prevSceneNum == 44) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 8, 5);
+ initBeaverPos(-1, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 45) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(12, 8, 5);
+ initBeaverPos(12, 8, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, 5);
+ initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 8, -1, 0x107BA, 1);
Commit: 16051780e01f584b1e5f06c541586dba9a3665fd
https://github.com/scummvm/scummvm/commit/16051780e01f584b1e5f06c541586dba9a3665fd
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some more enum changes
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/grid.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene38.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index dc677a1..2717a7b 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1751,7 +1751,7 @@ void GnapEngine::gnapInitBrainPulseRndValue() {
void GnapEngine::gnapUseDeviceOnBeaver() {
playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
- if (_beaverFacing != 0) {
+ if (_beaverFacing != kDirNone) {
_gameSys->insertSequence(makeRid(1, 0x7D5), _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
@@ -1930,7 +1930,7 @@ void GnapEngine::updateBeaverIdleSequence() {
if (_timers[1] == 0) {
_timers[1] = getRandom(20) + 30;
int rnd = getRandom(10);
- if (_beaverFacing != 0) {
+ if (_beaverFacing != kDirNone) {
if (rnd != 0 || _beaverSequenceId != 0x7CA) {
if (rnd != 1 || _beaverSequenceId != 0x7CA)
playBeaverSequence(0x107CA);
@@ -1967,7 +1967,7 @@ void GnapEngine::beaverSub426234() {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
- if (_beaverFacing != 0) {
+ if (_beaverFacing != kDirNone) {
if (getRandom(10) >= 2 || _beaverSequenceId != 0x7CA)
playBeaverSequence(0x107CA);
else
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index bfe0a0f..3fce6ee 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -1335,7 +1335,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_beaverSequenceId = 0x7D2;
_beaverFacing = kDirUnk4;
}
- } else if (_beaverFacing > 0) {
+ } else if (_beaverFacing != kDirNone) {
_beaverSequenceId = 0x7D2;
} else {
_beaverSequenceId = 0x7C2;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index b6b5b91..671ad9c 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -203,7 +203,7 @@ void GnapEngine::scene07_run() {
_timers[1] = getRandom(20) + 30;
int _gnapRandomValue = getRandom(20);
// TODO Cleanup
- if (_beaverFacing != 0) {
+ if (_beaverFacing != kDirNone) {
if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7CA) {
if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7CA) {
if (_platY == 9)
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index c32a0b0..eab5670 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -332,7 +332,7 @@ void GnapEngine::scene38_updateAnimations() {
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x9F, _gnapId, 0);
_gnapActionStatus = kASHoldingHuntingTrophy;
- if (_beaverFacing)
+ if (_beaverFacing != kDirNone)
playBeaverSequence(0x107D5);
else
playBeaverSequence(0x107D4);
Commit: cd29ffb1c6540cbe6db15337c635928bf3a09c34
https://github.com/scummvm/scummvm/commit/cd29ffb1c6540cbe6db15337c635928bf3a09c34
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Use constants for some more flag values
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/grid.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2717a7b..95376fd 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1569,10 +1569,9 @@ void GnapEngine::playGnapSequence(int sequenceId) {
_timers[2] = getRandom(30) + 20;
_timers[3] = 300;
gnapIdle();
- // CHECKME: Check the value of the flag
_gameSys->insertSequence(sequenceId, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 9, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = ridToEntryIndex(sequenceId);
_gnapSequenceDatNum = ridToDatIndex(sequenceId);
}
@@ -1916,10 +1915,9 @@ int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
}
void GnapEngine::playBeaverSequence(int sequenceId) {
- // CHECKME: Check the value of the flag
_gameSys->insertSequence(sequenceId, _beaverId,
makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
- 9, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_beaverSequenceId = ridToEntryIndex(sequenceId);
_beaverSequenceDatNum = ridToDatIndex(sequenceId);
}
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 3fce6ee..20f3356 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -581,33 +581,29 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;
if (_gnapWalkNodes[index].deltaX == 1 && _gnapWalkNodes[index].deltaY == 0) {
if (index % 2) {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7AB;
gnapSequenceId = 0x7AB;
} else {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7AC;
gnapSequenceId = 0x7AC;
}
} else if (_gnapWalkNodes[index].deltaX == -1 && _gnapWalkNodes[index].deltaY == 0) {
if (index % 2) {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7AF;
gnapSequenceId = 0x7AF;
} else {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = 0x7B0;
gnapSequenceId = 0x7B0;
}
@@ -617,10 +613,9 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
else
_gnapWalkNodes[index].id += 10;
int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index].deltaX, _gnapWalkNodes[index].deltaY);
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index].id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
_gnapWalkNodes[index].sequenceId = newSequenceId;
gnapSequenceId = newSequenceId;
}
@@ -699,17 +694,14 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
if (flags & 4) {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 0, 0);
+ kSeqScale | kSeqSyncWait, 0, 0, 0);
} else {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- 9, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
}
-
}
_gnapX = _gnapWalkDestX;
@@ -1241,33 +1233,29 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platWalkNodes[index].id = index + 20 * _platWalkNodes[index].gridY1;
if (_platWalkNodes[index].deltaX == 1 && _platWalkNodes[index].deltaY == 0) {
if (index % 2) {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7CD;
platSequenceId = 0x7CD;
} else {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7CE;
platSequenceId = 0x7CE;
}
} else if (_platWalkNodes[index].deltaX == -1 && _platWalkNodes[index].deltaY == 0) {
if (index % 2) {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7CF;
platSequenceId = 0x7CF;
} else {
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = 0x7D0;
platSequenceId = 0x7D0;
}
@@ -1277,10 +1265,9 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
else
_platWalkNodes[index].id += 10;
int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index].deltaX, _platWalkNodes[index].deltaY);
- // CHECKME: check the value of the flag
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index].id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
_platWalkNodes[index].sequenceId = newSequenceId;
platSequenceId = newSequenceId;
}
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 66e78e8..a892b84 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -184,10 +184,9 @@ void GnapEngine::scene13_run() {
if (_gnapX == 5 && _gnapY == 5) {
_s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
_gameSys->setAnimation(_s13_backToiletCtr + 0xA3, _gnapId, 0);
- // CHECKME: Check the value of the flag
_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- 9, 0, 0, 0);
+ kSeqScale | kSeqSyncWait, 0, 0, 0);
_gnapActionStatus = kASWait;
_gnapSequenceId = _s13_backToiletCtr + 0xA3;
_gnapIdleFacing = kDirUpRight;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index fdfd1fb..ec580b9 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -265,9 +265,8 @@ void GnapEngine::scene17_run() {
_platY = 8;
_beaverId = 160;
_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- // CHECKME: Check the value of the flag
_gameSys->insertSequence(0x107C1, _beaverId, 0x241, _beaverId,
- 9, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
endSceneInit();
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index a788326..b76e430 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -219,10 +219,9 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
- // CHECKME: Check the value of the flag
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
- 9, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapX = gnapGridX;
@@ -844,8 +843,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
_gameSys->removeSequence(0x20C, 19, true);
_gameSys->setAnimation(0x217, 39, 5);
- // CHECKME: check the value of the flag
- _gameSys->insertSequence(0x217, 39, 0x216, 39, 10, 0, 0, 0);
+ _gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
playSound(0x22B, true);
@@ -947,8 +945,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->requestRemoveSequence(0x1F9, 19);
_gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x213, 39, 5);
- // CHECKME: check the value of the flag
- _gameSys->insertSequence(0x214, 39, 0x213, 39, 10, 0, 0, 0);
+ _gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
playSound(555, true);
@@ -964,8 +961,7 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
_gameSys->removeSequence(0x20B, 19, true);
_gameSys->setAnimation(0x211, 39, 5);
- // CHECKME: check the value of the flag
- _gameSys->insertSequence(0x212, 39, 0x211, 39, 10, 0, 0, 0);
+ _gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(5) != 2)
gameUpdateTick();
playSound(0x22B, true);
Commit: 9d0caa4bdbf993dfde211c9a8c5c56c34809ae41
https://github.com/scummvm/scummvm/commit/9d0caa4bdbf993dfde211c9a8c5c56c34809ae41
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: fix use of _sceneDone
Changed paths:
engines/gnap/scenes/scene14.cpp
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 893b850..1e22c84 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -52,7 +52,6 @@ void GnapEngine::scene14_updateHotspots() {
}
void GnapEngine::scene14_run() {
-
_largeSprite = nullptr;
queueInsertDeviceIcon();
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index 76dc6d7..daa39b5 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -138,7 +138,7 @@ void GnapEngine::scene53_runRandomCall() {
void GnapEngine::scene53_runChitChatLine() {
bool flag = false;
- int sequenceId;
+ int sequenceId = -1;
_gameSys->setAnimation(0x6E, 1, 6);
_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
@@ -189,7 +189,7 @@ void GnapEngine::scene53_runChitChatLine() {
sequenceId = -1;
flag = 1;
_isLeavingScene = true;
- _sceneDone = 1;
+ _sceneDone = true;
_gnapActionStatus = 0;
_newSceneNum = 17;
break;
@@ -320,18 +320,18 @@ void GnapEngine::scene53_run() {
scene53_runChitChatLine();
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = 1;
+ _sceneDone = true;
_newSceneNum = 17;
} else if (phoneNumber != 5556789 || isFlag(20)) {
scene53_runRandomCall();
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = 1;
+ _sceneDone = true;
_newSceneNum = 17;
} else {
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = 1;
+ _sceneDone = true;
_newSceneNum = 17;
if (_s53_isGnapPhoning)
setFlag(25);
@@ -359,7 +359,7 @@ void GnapEngine::scene53_run() {
_gnapActionStatus = -1;
}
_isLeavingScene = true;
- _sceneDone = 1;
+ _sceneDone = true;
_gnapActionStatus = 0;
_newSceneNum = 17;
}
Commit: 66f5610c74710a298ae6a4166b37f438d25882bd
https://github.com/scummvm/scummvm/commit/66f5610c74710a298ae6a4166b37f438d25882bd
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Implement intro, currently disabled. Remove some Debug code.
Changed paths:
A engines/gnap/scenes/scene00.cpp
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/module.mk
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 95376fd..ce9e680 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -700,14 +700,16 @@ void GnapEngine::initGameFlags(int num) {
}
//DEBUG!
+#if 0
// setFlag(0); // Enable platypus
setFlag(25);
invClear();
invAdd(kItemMagazine);
+#endif
#if 0
invAdd(kItemDisguise);
#endif
-#if 1
+#if 0
//invAdd(kItemGas);
invAdd(kItemJoint);
//invAdd(kItemKeys);
@@ -741,14 +743,14 @@ void GnapEngine::mainLoop() {
invClear();
clearFlags();
_grabCursorSpriteIndex = -1;
- _grabCursorSprite = 0;
+ _grabCursorSprite = nullptr;
debug("MainLoop #1");
// > DEBUG BEGIN
- _currentSceneNum = 53;
- _newSceneNum = 48;
- _newCursorValue = 3;
+ _currentSceneNum = 0;
+ _newSceneNum = 1;
+ _newCursorValue = 1;
// < DEBUG END
loadStockDat();
@@ -890,7 +892,7 @@ void GnapEngine::checkGameKeys() {
updatePause();
}
// TODO? Debug input
- debug("facing %d", _gnapIdleFacing);
+// debug("facing %d", _gnapIdleFacing);
}
void GnapEngine::startSoundTimerA(int timerIndex) {
@@ -2172,12 +2174,6 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gnapSequenceId = sequenceId3;
}
-// Scene 0
-
-int GnapEngine::scene00_init() {
- return 0x37C;
-}
-
void GnapEngine::toyUfoSetStatus(int flagNum) {
clearFlag(16);
clearFlag(17);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b96d27d..4948c29 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -550,6 +550,7 @@ public:
// Scene 0
int scene00_init();
+ void scene00_run();
// Scene 1
int _s01_pigsIdCtr, _s01_smokeIdCtr;
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 78e2cce..7a3fc3a 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -9,6 +9,7 @@ MODULE_OBJS := \
menu.o \
resource.o \
sound.o \
+ scenes/scene00.o \
scenes/scene01.o \
scenes/scene02.o \
scenes/scene03.o \
diff --git a/engines/gnap/scenes/scene00.cpp b/engines/gnap/scenes/scene00.cpp
new file mode 100644
index 0000000..c53f58c
--- /dev/null
+++ b/engines/gnap/scenes/scene00.cpp
@@ -0,0 +1,174 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "video/avi_decoder.h"
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+int GnapEngine::scene00_init() {
+ return 0x37C;
+}
+
+void GnapEngine::scene00_run() {
+ const int animIdArr[] = {
+ 0x356, 0x357, 0x358, 0x35A, 0x35F,
+ 0x360, 0x361, 0x362, 0x363, 0x364,
+ 0x365, 0x368, 0x369, 0x36B, 0x378,
+ 0x36C, 0x36D, 0x36E, 0x36F, 0x370,
+ 0x371, 0x372, 0x373, 0x374, 0x375,
+ 0x376, 0x377, 0x378, 0x379, 0x37A,
+ 0x37B, 0};
+
+ const int backgroundIdArr[] = {
+ 0x354, 0x355, 0, 1, 3,
+ 4, 5, 6, 7, 8,
+ 7, 9, 0xA, 0xB, 0xC,
+ 0xD, 0xE, 0xF, 0x10, 0x11,
+ 0x12, 0x13, 0x17, 0x14, 0x19,
+ 0x1A, 0x14, 0x15, 0x16, 0x14,
+ 0x19, 0};
+
+ int index = 0;
+ bool skip = false;
+ hideCursor();
+ _dat->open(1, "musop_n.dat");
+
+ Video::VideoDecoder *videoDecoder = new Video::AVIDecoder();
+ if (!videoDecoder->loadFile("hoffman.avi")) {
+ delete videoDecoder;
+ warning("Unable to open video 'hoffman.avi' - Skipping intro");
+ return;
+ }
+ videoDecoder->start();
+
+ int vidPosX = (800 - videoDecoder->getWidth()) / 2;
+ int vidPosY = (600 - videoDecoder->getHeight()) / 2;
+ bool skipVideo = false;
+
+ screenEffect(1, 255, 255, 255);
+
+ while (!shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) {
+ if (videoDecoder->needsUpdate()) {
+ const Graphics::Surface *frame = videoDecoder->decodeNextFrame();
+ if (frame) {
+ if (frame->format.bytesPerPixel == 1) {
+ _system->copyRectToScreen(frame->getPixels(), frame->pitch, vidPosX, vidPosY, frame->w, frame->h);
+ } else if (frame->format.bytesPerPixel != 4) {
+ Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
+ _system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ frame1->free();
+ delete frame1;
+ } else {
+ // The intro AVI is played upside down, it's the only video played in the English version
+ for (uint16 y = 0; y < frame->h / 2; y++) {
+ uint32 *ptrFrom = (uint32*)frame->getBasePtr(0, y);
+ uint32 *ptrTo = (uint32*)frame->getBasePtr(0, frame->h - y - 1);
+ for (uint16 x = 0; x < frame->w; x++) {
+ uint32 t = *ptrFrom;
+ *ptrFrom = *ptrTo;
+ *ptrTo = t;
+ ptrFrom++;
+ ptrTo++;
+ }
+ }
+
+ Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
+ _system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ frame1->free();
+ delete frame1;
+ }
+ _system->updateScreen();
+ }
+ }
+
+ Common::Event event;
+ while (g_system->getEventManager()->pollEvent(event)) {
+ if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE) ||
+ event.type == Common::EVENT_LBUTTONUP)
+ skipVideo = true;
+ }
+
+ _system->delayMillis(10);
+ }
+
+ delete videoDecoder;
+
+ _gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _gameSys->setAnimation(0x356, 2, 0);
+
+ while (!_sceneDone) {
+ gameUpdateTick();
+
+ if (_gameSys->getAnimationStatus(0) == 2 || skip ) {
+ skip = false;
+ _gameSys->requestClear2(false);
+ _gameSys->requestClear1();
+ if ( index == 11 || index == 1 )
+ screenEffect(0, 0, 0, 0);
+
+ _gameSys->setAnimation(0, 0, 0);
+ if (++index >= 31)
+ _sceneDone = true;
+ else {
+ _gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
+ if (index == 2) {
+ playSound(0x10000, 0);
+ _gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
+ } else if (index == 3)
+ _gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ else if (index == 12)
+ _gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
+
+ _gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _gameSys->setAnimation(animIdArr[index], 2, 0);
+
+ if (index == 11)
+ stopSound(0x10000);
+ }
+ }
+
+ if (isKeyStatus1(Common::KEYCODE_ESCAPE) || isKeyStatus1(Common::KEYCODE_SPACE) || isKeyStatus1(29)) {
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(Common::KEYCODE_SPACE);
+ clearKeyStatus1(29);
+ if (index == 0) {
+ skip = true;
+ stopSound(0x3CF);
+ } else if (index == 1)
+ skip = true;
+ else
+ _sceneDone = true;
+ }
+ }
+
+ stopSound(0x10000);
+
+ _newSceneNum = 1;
+ _newCursorValue = 1;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 0e90e0b..1d4bfee 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -81,7 +81,6 @@ void GnapEngine::scene01_updateHotspots() {
}
void GnapEngine::scene01_run() {
-
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 2736add..0825937 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -31,12 +31,10 @@ int GnapEngine::initSceneLogic() {
int backgroundId = -1;
switch (_currentSceneNum) {
-#if 0 // TODO
case 0:
backgroundId = scene00_init();
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
-#endif
case 1:
backgroundId = scene01_init();
scene01_updateHotspots();
@@ -347,12 +345,10 @@ int GnapEngine::initSceneLogic() {
void GnapEngine::runSceneLogic() {
switch (_currentSceneNum) {
case 0:
-#if 0 // TODO
scene00_run();
if (_newSceneNum == 55)
_newSceneNum = 8;
break;
-#endif
case 1:
scene01_run();
if (_newSceneNum == 55)
Commit: f1738f457f5b3a3c67612f3aa77bf8a1c9a4b129
https://github.com/scummvm/scummvm/commit/f1738f457f5b3a3c67612f3aa77bf8a1c9a4b129
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add savegames (not fully working yet)
Changed paths:
engines/gnap/detection.cpp
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.h
engines/gnap/menu.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index ecd07a6..7e4c085 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -76,11 +76,10 @@ public:
bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
return
- false;
+ (f == kSupportsListSaves) ||
+ (f == kSupportsLoadingDuringStartup) ||
+ (f == kSupportsDeleteSave);
#if 0
- (f == kSupportsListSaves) ||
- (f == kSupportsLoadingDuringStartup) ||
- (f == kSupportsDeleteSave) ||
(f == kSavesSupportMetaInfo) ||
(f == kSavesSupportThumbnail) ||
(f == kSavesSupportCreationDate);
@@ -97,49 +96,39 @@ int GnapMetaEngine::getMaximumSaveSlot() const { return 99; }
SaveStateList GnapMetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Common::StringArray filenames;
- Common::String pattern = target;
- pattern += ".???";
+ Common::String saveDesc;
+ Common::String pattern = Common::String::format("%s.0##", target);
+ Gnap::GnapSavegameHeader header;
filenames = saveFileMan->listSavefiles(pattern);
- sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
SaveStateList saveList;
-#if 0
- int slotNum = 0;
- for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) {
- // Obtain the last 3 digits of the filename, since they correspond to the save slot
- slotNum = atoi(filename->c_str() + filename->size() - 3);
-
- if (slotNum >= 0 && slotNum <= 99) {
- Common::InSaveFile *file = saveFileMan->openForLoading(*filename);
- if (file) {
- int32 version = file->readSint32BE();
- if (version != GNAP_SAVEGAME_VERSION) {
- delete file;
- continue;
- }
+ for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
+ const char *ext = strrchr(file->c_str(), '.');
+ int slot = ext ? atoi(ext + 1) : -1;
- // read name
- uint16 nameSize = file->readUint16BE();
- if (nameSize >= 255) {
- delete file;
- continue;
- }
- char name[256];
- file->read(name, nameSize);
- name[nameSize] = 0;
+ if (slot >= 0 && slot < getMaximumSaveSlot()) {
+ Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(*file);
- saveList.push_back(SaveStateDescriptor(slotNum, name));
- delete file;
+ if (in) {
+ Gnap::GnapEngine::readSavegameHeader(in, header);
+ saveList.push_back(SaveStateDescriptor(slot, header._saveName));
+
+ if (header._thumbnail) {
+ header._thumbnail->free();
+ delete header._thumbnail;
+ }
+ delete in;
}
}
}
-#endif
+
+ // Sort saves based on slot number.
+ Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
return saveList;
}
SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
-#if 0
Common::String fileName = Common::String::format("%s.%03d", target, slot);
Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
if (file) {
@@ -177,7 +166,7 @@ SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int s
delete file;
return desc;
}
-#endif
+
return SaveStateDescriptor();
}
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 6bdeb81..fd53005 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -300,6 +300,18 @@ void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r
}
+int GameSys::getTextHeight(const char *text) {
+ byte height = 0;
+ for (const char *cp = text; *cp != 0; ++cp) {
+ byte c = *cp;
+ if (c < 32 || c > 127)
+ c = (byte)'_';
+ c -= 32;
+ height = MAX(height, _dejaVuSans9ptCharDescriptors[c]._width);
+ }
+ return height;
+}
+
int GameSys::getTextWidth(const char *text) {
int width = 0;
for (const char *cp = text; *cp != 0; ++cp) {
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index fc137eb..a011a61 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -119,6 +119,7 @@ public:
Graphics::Surface *createSurface(int resourceId);
void drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int resourceId);
void drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text);
+ int getTextHeight(const char *text);
int getTextWidth(const char *text);
void fillSurface(Graphics::Surface *surface, int x, int y, int width, int height, byte r, byte g, byte b);
void setAnimation(int sequenceId, int id, int animationIndex);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4948c29..fa33d42 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -28,6 +28,8 @@
#include "common/file.h"
#include "common/memstream.h"
#include "common/random.h"
+#include "common/savefile.h"
+#include "common/serializer.h"
#include "common/str.h"
#include "common/substream.h"
#include "common/system.h"
@@ -49,6 +51,8 @@ class SpriteResource;
class GameSys;
class SoundMan;
+#define GNAP_SAVEGAME_VERSION 1
+
struct MouseButtonState {
bool _left;
bool _right;
@@ -244,6 +248,14 @@ enum Facing {
kDirUpRight = 7
};
+struct GnapSavegameHeader {
+ uint8 _version;
+ Common::String _saveName;
+ Graphics::Surface *_thumbnail;
+ int _year, _month, _day;
+ int _hour, _minute;
+};
+
class GnapEngine : public Engine {
protected:
Common::Error run();
@@ -334,6 +346,12 @@ public:
int readSavegameDescription(int savegameNum, Common::String &description);
int loadSavegame(int savegameNum);
+ Common::Error saveGameState(int slot, const Common::String &desc);
+ Common::Error loadGameState(int slot);
+ Common::String generateSaveName(int slot);
+ void synchronize(Common::Serializer &s);
+ void writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeader &header);
+ static bool readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header);
void delayTicks(int a1);
void delayTicksCursor(int a1);
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 1f0fbea..df8551e 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -20,6 +20,12 @@
*
*/
+#include "common/config-manager.h"
+#include "common/savefile.h"
+#include "common/translation.h"
+
+#include "gui/saveload.h"
+
#include "gnap/gnap.h"
#include "gnap/datarchive.h"
#include "gnap/gamesys.h"
@@ -452,6 +458,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (_sceneClickedHotspot != 1 && _sceneClickedHotspot != 0) {
if (_sceneClickedHotspot != 2 && _hotspotsCount - 1 != _sceneClickedHotspot) {
if (_sceneClickedHotspot == 3) {
+ // Quit
_timers[2] = 10;
playSound(0x108F4, 0);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
@@ -461,13 +468,13 @@ void GnapEngine::updateMenuStatusMainMenu() {
_menuQuitQuerySprite = _gameSys->createSurface(0x104FC);
_gameSys->insertSpriteDrawItem(_menuQuitQuerySprite, 254, 93, 262);
} else if (_sceneClickedHotspot == 4) {
+ // Pause ?
playSound(0x108F4, 0);
Common::Rect dirtyRect(0, 0, 799, 599);
hideCursor();
_largeSprite = _gameSys->allocSurface(800, 600);
for (int i = 0; i < 3; ++i) {
-
_timers[2] = 10;
if (i == 0) {
@@ -502,6 +509,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
deleteSurface(&_largeSprite);
showCursor();
} else if (_hotspotsCount - 3 == _sceneClickedHotspot) {
+ // Button
_timers[2] = 10;
playSound(0x108F4, 0);
initMenuHotspots1();
@@ -517,20 +525,51 @@ void GnapEngine::updateMenuStatusMainMenu() {
_gameSys->insertDirtyRect(dirtyRect);
}
} else {
+ // Resume
playSound(0x108F5, 0);
_menuDone = true;
}
} else {
+ // Save / Load
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+
+ if (_sceneClickedHotspot == 1) {
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+ int16 savegameId = dialog->runModalWithCurrentTarget();
+ Common::String savegameDescription = dialog->getResultString();
+ delete dialog;
+
+ if (savegameId != -1) {
+ saveGameState(savegameId, savegameDescription);
+ }
+ } else {
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
+ int16 savegameId = dialog->runModalWithCurrentTarget();
+ delete dialog;
+
+ if (savegameId != -1) {
+ loadGameState(savegameId);
+ _wasSavegameLoaded = true;
+ _menuDone = true;
+ }
+ }
+ }
+
+#if 0
+// Original Code
_timers[2] = 10;
playSound(0x108F4, 0);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
if (_menuSaveLoadSprite)
deleteSurface(&_menuSaveLoadSprite);
if (_sceneClickedHotspot == 1) {
+ // Save
_menuStatus = 2;
initSaveLoadHotspots();
_menuSaveLoadSprite = _gameSys->createSurface(0x104FB);
} else {
+ // Load
_menuStatus = 3;
initSaveLoadHotspots();
_menuSaveLoadSprite = _gameSys->createSurface(0x104FA);
@@ -550,180 +589,278 @@ void GnapEngine::updateMenuStatusMainMenu() {
}
_savegameIndex = -1;
}
+#endif
+}
+
+Common::Error GnapEngine::saveGameState(int slot, const Common::String &desc) {
+ Common::OutSaveFile *out = g_system->getSavefileManager()->openForSaving(
+ generateSaveName(slot));
+ if (!out)
+ return Common::kCreatingFileFailed;
+
+ GnapSavegameHeader header;
+ header._saveName = desc;
+ writeSavegameHeader(out, header);
+
+ Common::Serializer s(nullptr, out);
+ synchronize(s);
+
+ out->finalize();
+ delete out;
+
+ return Common::kNoError;
+}
+
+void GnapEngine::synchronize(Common::Serializer &s) {
+ s.syncAsSint32LE(_newSceneNum);
+ s.syncAsSint32LE(_currentSceneNum);
+ s.syncAsSint32LE(_newCursorValue);
+ s.syncAsUint32LE(_inventory);
+ s.syncAsUint32LE(_gameFlags);
+
+ if (s.isLoading() && isFlag(24)) {
+ _timers[9] = 600;
+ }
+}
+
+const char *const SAVEGAME_STR = "GNAP";
+#define SAVEGAME_STR_SIZE 4
+void GnapEngine::writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeader &header) {
+ // Write out a savegame header
+ out->write(SAVEGAME_STR, SAVEGAME_STR_SIZE + 1);
+
+ out->writeByte(GNAP_SAVEGAME_VERSION);
+
+ // Write savegame name
+ out->writeString(header._saveName);
+ out->writeByte('\0');
+
+ // TODO: Add thumbnail
+
+ // Write out the save date/time
+ TimeDate td;
+ g_system->getTimeAndDate(td);
+ out->writeSint16LE(td.tm_year + 1900);
+ out->writeSint16LE(td.tm_mon + 1);
+ out->writeSint16LE(td.tm_mday);
+ out->writeSint16LE(td.tm_hour);
+ out->writeSint16LE(td.tm_min);
+}
+
+bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header) {
+ char saveIdentBuffer[SAVEGAME_STR_SIZE + 1];
+ header._thumbnail = nullptr;
+
+ // Validate the header Id
+ in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1);
+ if (strncmp(saveIdentBuffer, SAVEGAME_STR, SAVEGAME_STR_SIZE))
+ return false;
+
+ header._version = in->readByte();
+ if (header._version > GNAP_SAVEGAME_VERSION)
+ return false;
+
+ // Read in the string
+ header._saveName.clear();
+ char ch;
+ while ((ch = (char)in->readByte()) != '\0')
+ header._saveName += ch;
+
+ // TODO: Get the thumbnail
+ header._thumbnail = nullptr;
+
+ // Read in save date/time
+ header._year = in->readSint16LE();
+ header._month = in->readSint16LE();
+ header._day = in->readSint16LE();
+ header._hour = in->readSint16LE();
+ header._minute = in->readSint16LE();
+
+ return true;
+}
+
+Common::Error GnapEngine::loadGameState(int slot) {
+ Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading(
+ generateSaveName(slot));
+ if (!saveFile)
+ return Common::kReadingFailed;
+
+ Common::Serializer s(saveFile, nullptr);
+
+ // Load the savegame header
+ GnapSavegameHeader header;
+ if (!readSavegameHeader(saveFile, header))
+ error("Invalid savegame");
+
+ if (header._thumbnail) {
+ header._thumbnail->free();
+ delete header._thumbnail;
+ }
+
+ synchronize(s);
+ delete saveFile;
+
+ return Common::kNoError;
+}
+
+Common::String GnapEngine::generateSaveName(int slot) {
+ return Common::String::format("%s.%03d", _targetName.c_str(), slot);
}
void GnapEngine::updateMenuStatusSaveGame() {
-#if 0 // TODO
- _hotspots[0].x1 = 288;
- _hotspots[0].y1 = 74;
- _hotspots[0].x2 = 379;
- _hotspots[0].y2 = 96;
+#if 1 // TODO
+ char v43[30];
+ int v46;
+ v43[0] = '\0';
+ _hotspots[0]._x1 = 288;
+ _hotspots[0]._y1 = 74;
+ _hotspots[0]._x2 = 379;
+ _hotspots[0]._y2 = 96;
_sceneClickedHotspot = -1;
+
if (!_timers[2])
- _sceneClickedHotspot = getClickedHotspotId();
- if (_hotspotsCount - 3 == _sceneClickedHotspot)
- {
- _timers[2] = 10;
- playSound(0x108F4, 0);
- _menuStatus = 1;
- writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
- }
- else if (_hotspotsCount - 4 == _sceneClickedHotspot)
- {
- _timers[2] = 10;
- playSound(0x108F5, 0);
- _menuStatus = 1;
- if (strcmp(&v43, &_savegameFilenames[30 * _savegameIndex]) && _savegameIndex != -1)
- {
- strcpy((char *)&_savegameFilenames[30 * _savegameIndex], &v43);
- if (_savegameSprites[_savegameIndex] != -1)
- {
- _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
- delayTicksCursor(5);
- memFreeHandle(_savegameSprites[_savegameIndex]);
- }
- v16 = getSpriteWidthById(0x104F9);
- _savegameSprites[_savegameIndex] = allocSprite(v16, 40, 128, 0);
- }
- }
- else if (_hotspotsCount - 5 == _sceneClickedHotspot)
- {
- _timers[2] = 10;
- playSound(0x108F4, 0);
- if ((signed int)_savegameIndex > -1)
- writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
- _menuStatus = 1;
- }
- else if (_hotspotsCount - 1 == _sceneClickedHotspot)
- {
- _menuDone = true;
- }
- else if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot)
- {
- _timers[2] = 10;
- playSound(0x108F4, 0);
- v17 = strcmp(&v43, &_savegameFilenames[30 * _savegameIndex]);
- if (!v17)
- LOBYTE(v17) = 0;
- if ((unsigned int8)v17 & (_savegameIndex < 0xFFFFFFFF))
- {
- strcpy((char *)&_savegameFilenames[30 * _savegameIndex], &v43);
- if (_savegameSprites[_savegameIndex] != -1)
- {
- _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
- delayTicksCursor(5);
- memFreeHandle(_savegameSprites[_savegameIndex]);
- }
- v18 = getSpriteWidthById(0x104F9);
- _savegameSprites[_savegameIndex] = allocSprite(v18, 40, 128, 0);
- drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
- insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex].y1, 263);
- }
- _savegameIndex = _sceneClickedHotspot;
- v46 = strlen(&_savegameFilenames[30 * _sceneClickedHotspot]);
- strcpy(&v43, &_savegameFilenames[30 * _sceneClickedHotspot]);
- if (_cursorSprite == -1)
- {
- v19 = getTextHeight("_");
- v20 = getTextWidth("_");
- _cursorSprite = allocSprite(v20, v19, 128, 0);
- drawTextToSurface(_cursorSprite, 0, 0, 255, 0, 0, "_");
- }
- else
- {
- _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
- }
- v21 = _hotspots[_savegameIndex].x2;
- v22 = v21 - getTextWidth("_");
- if (v22 > getTextWidth(&_savegameFilenames[30 * _savegameIndex]) + 288)
- {
- v25 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]) + 288;
- insertSpriteDrawItem(_cursorSprite, v25, _hotspots[_savegameIndex].y1, 264);
- }
- else
- {
- v23 = _hotspots[_savegameIndex].x2;
- v24 = v23 - getTextWidth("_");
- insertSpriteDrawItem(_cursorSprite, v24, _hotspots[_savegameIndex].y1, 264);
- }
- }
- if ((signed int)_savegameIndex > -1 && keybChar)
- {
- if ((keybChar < 'A' || keybChar > 'Z') && (keybChar < '0' || keybChar > '9') && keybChar != ' ')
- {
- if (keybChar == 8)
- {
- if ((signed int)v46 > 0)
- --v46;
- *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
- if (_savegameSprites[_savegameIndex] != -1)
- {
- _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
- memFreeHandle(_savegameSprites[_savegameIndex]);
- }
- v32 = getSpriteWidthById(0x104F9);
- _savegameSprites[_savegameIndex] = allocSprite(v32, 40, 128, 0);
- drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
- insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex].y1, 263);
- _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
- v33 = _hotspots[_savegameIndex].y1;
- v34 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]);
- insertSpriteDrawItem(_cursorSprite, LOWORD(_hotspots[_savegameIndex].x1) + v34, v33, 264);
- }
- else if (keybChar == 13)
- {
- _menuStatus = 1;
- writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);
- }
- }
- else
- {
- *(&_savegameFilenames[30 * _savegameIndex] + v46) = keybChar;
- if ((signed int)v46 < 28)
- ++v46;
- *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
- if (getTextWidth(&_savegameFilenames[30 * _savegameIndex]) > 91)
- {
- --v46;
- *(&_savegameFilenames[30 * _savegameIndex] + v46) = 0;
- }
- drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, &_savegameFilenames[30 * _savegameIndex]);
- v26 = getTextWidth(&_savegameFilenames[30 * _savegameIndex]);
- rect.right = _hotspots[_savegameIndex].x1 + v26;
- v27 = rect.right;
- rect.left = v27 - 2 * getTextWidth("W");
- rect.top = _hotspots[_savegameIndex].y1;
- rect.bottom = _hotspots[_savegameIndex].y2;
- insertDirtyRect(&rect);
- _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
- v28 = _hotspots[_savegameIndex].x2;
- v29 = getTextWidth("_");
- if (v28 - v29 > rect.right)
- {
- insertSpriteDrawItem(_cursorSprite, SLOWORD(rect.right), SLOWORD(rect.top), 264);
- }
- else
- {
- v30 = _hotspots[_savegameIndex].x2;
- v31 = v30 - getTextWidth("_");
- insertSpriteDrawItem(_cursorSprite, v31, SLOWORD(rect.top), 264);
- }
- clearKeyStatus1(8);
- }
+ _sceneClickedHotspot = getClickedHotspotId();
+
+ if (_hotspotsCount - 3 == _sceneClickedHotspot) {
+ // Button
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ _menuStatus = 1;
+ warning("writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);");
+ } else if (_hotspotsCount - 4 == _sceneClickedHotspot) {
+ // Cancel
+ _timers[2] = 10;
+ playSound(0x108F5, 0);
+ _menuStatus = 1;
+ if (strcmp(v43, _savegameFilenames[_savegameIndex]) && _savegameIndex != -1) {
+ strcpy(_savegameFilenames[_savegameIndex], v43);
+ if (_savegameSprites[_savegameIndex] != nullptr) {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ delayTicksCursor(5);
+ warning("memFreeHandle(_savegameSprites[_savegameIndex]);");
+ }
+ int v16 = _gameSys->getSpriteWidthById(0x104F9);
+ warning("_savegameSprites[_savegameIndex] = allocSprite(v16, 40, 128, 0);");
+ }
+ } else if (_hotspotsCount - 5 == _sceneClickedHotspot) {
+ // OK
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ if (_savegameIndex != -1)
+ warning("writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);");
+ _menuStatus = 1;
+ } else if (_hotspotsCount - 1 == _sceneClickedHotspot) {
+ // in background
+ _menuDone = true;
+ } else if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot) {
+ // Savegame name
+ _timers[2] = 10;
+ playSound(0x108F4, 0);
+ if (strcmp(v43, _savegameFilenames[_savegameIndex]) & (_savegameIndex != -1)) {
+ strcpy(_savegameFilenames[_savegameIndex], v43);
+ if (_savegameSprites[_savegameIndex] != nullptr) {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ delayTicksCursor(5);
+ warning("memFreeHandle(_savegameSprites[_savegameIndex]);");
+ }
+ int v18 = _gameSys->getSpriteWidthById(0x104F9);
+ _savegameSprites[_savegameIndex] = _gameSys->allocSurface(v18, 40);
+ _gameSys->drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, _savegameFilenames[_savegameIndex]);
+ _gameSys->insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex]._y1, 263);
+ }
+ _savegameIndex = _sceneClickedHotspot;
+ v46 = strlen(_savegameFilenames[_sceneClickedHotspot]);
+ strcpy(v43, _savegameFilenames[_sceneClickedHotspot]);
+ if (_cursorSprite == nullptr) {
+ int v19 = _gameSys->getTextHeight("_");
+ int v20 = _gameSys->getTextWidth("_");
+ _cursorSprite = _gameSys->allocSurface(v20, v19);
+ _gameSys->drawTextToSurface(_cursorSprite, 0, 0, 255, 0, 0, "_");
+ } else {
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ }
+ int v21 = _hotspots[_savegameIndex]._x2;
+ int v22 = v21 - _gameSys->getTextWidth("_");
+ if (v22 > _gameSys->getTextWidth(_savegameFilenames[_savegameIndex]) + 288) {
+ int v25 = _gameSys->getTextWidth(_savegameFilenames[_savegameIndex]) + 288;
+ _gameSys->insertSpriteDrawItem(_cursorSprite, v25, _hotspots[_savegameIndex]._y1, 264);
+ } else {
+ int v23 = _hotspots[_savegameIndex]._x2;
+ int v24 = v23 - _gameSys->getTextWidth("_");
+ _gameSys->insertSpriteDrawItem(_cursorSprite, v24, _hotspots[_savegameIndex]._y1, 264);
+ }
}
- keybChar = 0;
- if (_menuStatus == 1 || _menuDone)
- {
- _gameSys->removeSpriteDrawItem(_menuSprite2, 262);
- _gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
- for (i = 0; i < 7; ++i)
- _gameSys->removeSpriteDrawItem(_savegameSprites[i], 263);
- _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
- if (!_menuDone)
- {
- initMenuHotspots2();
- insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+
+ updateEvents();
+ Common::Event event;
+ _eventMan->pollEvent(event);
+
+ Common::KeyCode keycode = event.kbd.keycode;
+ if (_savegameIndex != -1 && keycode) {
+ if ((keycode < Common::KEYCODE_a || keycode > Common::KEYCODE_z) && (keycode < Common::KEYCODE_0 || keycode > Common::KEYCODE_9) && keycode != Common::KEYCODE_SPACE) {
+ if (keycode == Common::KEYCODE_BACKSPACE) {
+ if (v46 > 0)
+ --v46;
+ _savegameFilenames[_savegameIndex][v46] = '\0';
+ if (_savegameSprites[_savegameIndex] != nullptr) {
+ _gameSys->removeSpriteDrawItem(_savegameSprites[_savegameIndex], 263);
+ warning("memFreeHandle(_savegameSprites[_savegameIndex]);");
+ }
+ int v32 = _gameSys->getSpriteWidthById(0x104F9);
+ _savegameSprites[_savegameIndex] = _gameSys->allocSurface(v32, 40);
+ _gameSys->drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, _savegameFilenames[_savegameIndex]);
+ _gameSys->insertSpriteDrawItem(_savegameSprites[_savegameIndex], 288, _hotspots[_savegameIndex]._y1, 263);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ int v33 = _hotspots[_savegameIndex]._y1;
+ int v34 = _gameSys->getTextWidth(_savegameFilenames[_savegameIndex]);
+ _gameSys->insertSpriteDrawItem(_cursorSprite, _hotspots[_savegameIndex]._x1 + v34, v33, 264);
+ } else if (keycode == Common::KEYCODE_RETURN) {
+ _menuStatus = 1;
+ warning("writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);");
+ }
+ } else {
+ _savegameFilenames[_savegameIndex][v46] = event.kbd.ascii;
+ if (v46 < 28)
+ ++v46;
+ _savegameFilenames[_savegameIndex][v46] = '\0';
+ if (_gameSys->getTextWidth(_savegameFilenames[_savegameIndex]) > 91) {
+ --v46;
+ _savegameFilenames[_savegameIndex][v46] = '\0';
+ }
+ _gameSys->drawTextToSurface(_savegameSprites[_savegameIndex], 0, 0, 255, 0, 0, _savegameFilenames[_savegameIndex]);
+ int v26 = _gameSys->getTextWidth(_savegameFilenames[_savegameIndex]);
+ Common::Rect rect;
+ rect.right = _hotspots[_savegameIndex]._x1 + v26;
+ int v27 = rect.right;
+ rect.left = v27 - 2 * _gameSys->getTextWidth("W");
+ rect.top = _hotspots[_savegameIndex]._y1;
+ rect.bottom = _hotspots[_savegameIndex]._y2;
+ _gameSys->insertDirtyRect(rect);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ int v28 = _hotspots[_savegameIndex]._x2;
+ int v29 = _gameSys->getTextWidth("_");
+ if (v28 - v29 > rect.right)
+ _gameSys->insertSpriteDrawItem(_cursorSprite, rect.right, rect.top, 264);
+ else {
+ int v30 = _hotspots[_savegameIndex]._x2;
+ int v31 = v30 - _gameSys->getTextWidth("_");
+ _gameSys->insertSpriteDrawItem(_cursorSprite, v31, rect.top, 264);
+ }
+ clearKeyStatus1(8);
+ }
}
+
+// warning("keybChar = 0;");
+ if (_menuStatus == 1 || _menuDone) {
+ _gameSys->removeSpriteDrawItem(_menuSprite2, 262);
+ _gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
+ for (int i = 0; i < 7; ++i)
+ _gameSys->removeSpriteDrawItem(_savegameSprites[i], 263);
+ _gameSys->removeSpriteDrawItem(_cursorSprite, 264);
+ if (!_menuDone) {
+ initMenuHotspots2();
+ _gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
+ }
}
#endif
}
Commit: e11ec6a9c18ec908780b30b0a5f54d271904ea8b
https://github.com/scummvm/scummvm/commit/e11ec6a9c18ec908780b30b0a5f54d271904ea8b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some rework of hotspot initialization code
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index df8551e..8c3bcae 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -44,88 +44,91 @@ void GnapEngine::freeMenuSprite() {
}
void GnapEngine::initMenuHotspots1() {
-
- int v0, v2 = 0;
+ int curId = 0;
for (int i = 0; i < 3; ++i) {
- int v1 = 0;
- while (v1 < 3) {
- _hotspots[v2]._x1 = 87 * v1 + 262;
- _hotspots[v2]._y1 = 74 * i + 69;
- _hotspots[v2]._x2 = _hotspots[v2]._x1 + 79;
- _hotspots[v2]._y2 = _hotspots[v2]._y1 + 66;
- _hotspots[v2]._flags = SF_NONE;
- _hotspots[v2]._id = v2;
- ++v1;
- ++v2;
+ for (int j = 0; j < 3; ++j) {
+ _hotspots[curId]._x1 = 87 * j + 262;
+ _hotspots[curId]._y1 = 74 * i + 69;
+ _hotspots[curId]._x2 = _hotspots[curId]._x1 + 79;
+ _hotspots[curId]._y2 = _hotspots[curId]._y1 + 66;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+ ++curId;
}
}
- _hotspots[v2]._x1 = 330;
- _hotspots[v2]._y1 = 350;
- _hotspots[v2]._x2 = 430;
- _hotspots[v2]._y2 = 460;
- _hotspots[v2]._flags = SF_GRAB_CURSOR;
- _hotspots[v2]._id = v2;
-
- v0 = v2 + 1;
- _hotspots[v0]._x1 = 180;
- _hotspots[v0]._y1 = 15;
- _hotspots[v0]._x2 = 620;
- _hotspots[v0]._y2 = 580;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
-
- ++v0;
- _hotspots[v0]._x1 = 0;
- _hotspots[v0]._y1 = 0;
- _hotspots[v0]._x2 = 799;
- _hotspots[v0]._y2 = 599;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
-
- _hotspotsCount = v0 + 1;
+ _hotspots[curId]._x1 = 330;
+ _hotspots[curId]._y1 = 350;
+ _hotspots[curId]._x2 = 430;
+ _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 180;
+ _hotspots[curId]._y1 = 15;
+ _hotspots[curId]._x2 = 620;
+ _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 0;
+ _hotspots[curId]._y1 = 0;
+ _hotspots[curId]._x2 = 799;
+ _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ _hotspotsCount = curId + 1;
}
void GnapEngine::initMenuHotspots2() {
- int i, v0;
+ int curId = 0;
- for (i = 0; i < 4; ++i) {
- _hotspots[i]._x1 = 312;
- _hotspots[i]._y1 = 48 * i + 85;
- _hotspots[i]._x2 = _hotspots[i]._x1 + 153;
- _hotspots[i]._y2 = _hotspots[i]._y1 + 37;
- _hotspots[i]._flags = SF_GRAB_CURSOR;
- _hotspots[i]._id = i;
+ for (int i = 0; i < 4; ++i) {
+ _hotspots[curId]._x1 = 312;
+ _hotspots[curId]._y1 = 48 * i + 85;
+ _hotspots[curId]._x2 = _hotspots[curId]._x1 + 153;
+ _hotspots[curId]._y2 = _hotspots[curId]._y1 + 37;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+ ++curId;
}
- _hotspots[i]._x1 = 500;
- _hotspots[i]._y1 = 72;
- _hotspots[i]._x2 = 527;
- _hotspots[i]._y2 = 99;
- _hotspots[i]._flags = SF_DISABLED;
- _hotspots[i]._id = i;
- v0 = i + 1;
- _hotspots[v0]._x1 = 330;
- _hotspots[v0]._y1 = 350;
- _hotspots[v0]._x2 = 430;
- _hotspots[v0]._y2 = 460;
- _hotspots[v0]._flags = SF_GRAB_CURSOR;
- _hotspots[v0]._id = v0;
- ++v0;
- _hotspots[v0]._x1 = 180;
- _hotspots[v0]._y1 = 15;
- _hotspots[v0]._x2 = 620;
- _hotspots[v0]._y2 = 580;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
- ++v0;
- _hotspots[v0]._x1 = 0;
- _hotspots[v0]._y1 = 0;
- _hotspots[v0]._x2 = 799;
- _hotspots[v0]._y2 = 599;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
- _hotspotsCount = v0 + 1;
+
+ _hotspots[curId]._x1 = 500;
+ _hotspots[curId]._y1 = 72;
+ _hotspots[curId]._x2 = 527;
+ _hotspots[curId]._y2 = 99;
+ _hotspots[curId]._flags = SF_DISABLED;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 330;
+ _hotspots[curId]._y1 = 350;
+ _hotspots[curId]._x2 = 430;
+ _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 180;
+ _hotspots[curId]._y1 = 15;
+ _hotspots[curId]._x2 = 620;
+ _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 0;
+ _hotspots[curId]._y1 = 0;
+ _hotspots[curId]._x2 = 799;
+ _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ _hotspotsCount = curId + 1;
}
void GnapEngine::initMenuQuitQueryHotspots() {
@@ -135,80 +138,93 @@ void GnapEngine::initMenuQuitQueryHotspots() {
_hotspots[0]._y2 = 237;
_hotspots[0]._flags = SF_GRAB_CURSOR;
_hotspots[0]._id = 0;
+
_hotspots[1]._x1 = 403;
_hotspots[1]._y1 = 197;
_hotspots[1]._x2 = 469;
_hotspots[1]._y2 = 237;
_hotspots[1]._flags = SF_GRAB_CURSOR;
_hotspots[1]._id = 1;
+
_hotspots[2]._x1 = 330;
_hotspots[2]._y1 = 350;
_hotspots[2]._x2 = 430;
_hotspots[2]._y2 = 460;
_hotspots[2]._flags = SF_GRAB_CURSOR;
_hotspots[2]._id = 2;
+
_hotspots[3]._x1 = 180;
_hotspots[3]._y1 = 15;
_hotspots[3]._x2 = 620;
_hotspots[3]._y2 = 580;
_hotspots[3]._flags = SF_NONE;
_hotspots[3]._id = 3;
+
_hotspots[4]._x1 = 0;
_hotspots[4]._y1 = 0;
_hotspots[4]._x2 = 799;
_hotspots[4]._y2 = 599;
_hotspots[4]._flags = SF_NONE;
_hotspots[4]._id = 4;
+
_hotspotsCount = 5;
}
void GnapEngine::initSaveLoadHotspots() {
- int i, v0;
- for (i = 0; i < 7; ++i ) {
- _hotspots[i]._x1 = 288;
- _hotspots[i]._y1 = 31 * i + 74;
- _hotspots[i]._x2 = _hotspots[i]._x1 + 91;
- _hotspots[i]._y2 = _hotspots[i]._y1 + 22;
- _hotspots[i]._flags = SF_GRAB_CURSOR;
- _hotspots[i]._id = i;
+ int curId = 0;
+
+ for (int i = 0; i < 7; ++i ) {
+ _hotspots[curId]._x1 = 288;
+ _hotspots[curId]._y1 = 31 * i + 74;
+ _hotspots[curId]._x2 = _hotspots[curId]._x1 + 91;
+ _hotspots[curId]._y2 = _hotspots[curId]._y1 + 22;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+ ++curId;
}
+
if (_menuStatus == 2) {
- _hotspots[i]._x1 = 416;
- _hotspots[i]._y1 = 160;
- _hotspots[i]._x2 = 499;
- _hotspots[i]._y2 = 188;
- _hotspots[i]._flags = SF_GRAB_CURSOR;
- _hotspots[i]._id = i;
- ++i;
+ _hotspots[curId]._x1 = 416;
+ _hotspots[curId]._y1 = 160;
+ _hotspots[curId]._x2 = 499;
+ _hotspots[curId]._y2 = 188;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+ ++curId;
}
- _hotspots[i]._x1 = 416;
- _hotspots[i]._y1 = 213;
- _hotspots[i]._x2 = 499;
- _hotspots[i]._y2 = 241;
- _hotspots[i]._flags = SF_GRAB_CURSOR;
- _hotspots[i]._id = i;
- v0 = i + 1;
- _hotspots[v0]._x1 = 330;
- _hotspots[v0]._y1 = 350;
- _hotspots[v0]._x2 = 430;
- _hotspots[v0]._y2 = 460;
- _hotspots[v0]._flags = SF_GRAB_CURSOR;
- _hotspots[v0]._id = v0;
- ++v0;
- _hotspots[v0]._x1 = 180;
- _hotspots[v0]._y1 = 15;
- _hotspots[v0]._x2 = 620;
- _hotspots[v0]._y2 = 580;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
- ++v0;
- _hotspots[v0]._x1 = 0;
- _hotspots[v0]._y1 = 0;
- _hotspots[v0]._x2 = 799;
- _hotspots[v0]._y2 = 599;
- _hotspots[v0]._flags = SF_NONE;
- _hotspots[v0]._id = v0;
- _hotspotsCount = v0 + 1;
+
+ _hotspots[curId]._x1 = 416;
+ _hotspots[curId]._y1 = 213;
+ _hotspots[curId]._x2 = 499;
+ _hotspots[curId]._y2 = 241;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 330;
+ _hotspots[curId]._y1 = 350;
+ _hotspots[curId]._x2 = 430;
+ _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._flags = SF_GRAB_CURSOR;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 180;
+ _hotspots[curId]._y1 = 15;
+ _hotspots[curId]._x2 = 620;
+ _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ ++curId;
+ _hotspots[curId]._x1 = 0;
+ _hotspots[curId]._y1 = 0;
+ _hotspots[curId]._x2 = 799;
+ _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._flags = SF_NONE;
+ _hotspots[curId]._id = curId;
+
+ _hotspotsCount = curId + 1;
}
void GnapEngine::drawInventoryFrames() {
Commit: 6a55da1504b54d4ac16dcccd3fd6c9811d6e3620
https://github.com/scummvm/scummvm/commit/6a55da1504b54d4ac16dcccd3fd6c9811d6e3620
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Replace flags values by enums (WIP)
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene14.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index ce9e680..fad1e57 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -455,7 +455,7 @@ void GnapEngine::updateMouseCursor() {
_mouseClickState._right = false;
_timers[3] = 300;
_verbCursor = (_verbCursor + 1) % 4;
- if (!isFlag(0) && _verbCursor == PLAT_CURSOR && _cursorValue == 1)
+ if (!isFlag(kGFPlatypus) && _verbCursor == PLAT_CURSOR && _cursorValue == 1)
_verbCursor = (_verbCursor + 1) % 4;
if (!_isWaiting)
setCursor(kDisabledCursors[_verbCursor]);
@@ -688,20 +688,20 @@ void GnapEngine::initGameFlags(int num) {
invAdd(kItemHorn);
invAdd(kItemLightbulb);
clearFlags();
- setFlag(0);
- setFlag(1);
- setFlag(2);
- setFlag(3);
- setFlag(4);
- setFlag(5);
- setFlag(6);
- setFlag(7);
+ setFlag(kGFPlatypus);
+ setFlag(kGFMudTaken);
+ setFlag(kGFNeedleTaken);
+ setFlag(kGFTwigTaken);
+ setFlag(kGFUnk04);
+ setFlag(kGFKeysTaken);
+ setFlag(kGFGrassTaken);
+ setFlag(kGFBarnPadlockOpen);
break;
}
//DEBUG!
#if 0
-// setFlag(0); // Enable platypus
+// setFlag(kGFPlatypus); // Enable platypus
setFlag(25);
invClear();
invAdd(kItemMagazine);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index fa33d42..75f931d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -169,9 +169,36 @@ enum {
enum {
kGFPlatypus = 0,
kGFMudTaken = 1,
-
-
- kGFEnd
+ kGFNeedleTaken = 2,
+ kGFTwigTaken = 3,
+ kGFUnk04 = 4,
+ kGFKeysTaken = 5,
+ kGFGrassTaken = 6,
+ kGFBarnPadlockOpen = 7,
+ kGFTruckFilledWithGas = 8,
+ kGFTruckKeysUsed = 9,
+ kGFPlatyPussDisguised = 10,
+ kGFSceneFlag1 = 11,
+ kGFGnapControlsToyUFO = 12,
+ kGFUnk13 = 13,
+ kGFUnk14 = 14,
+ kGFSpringTaken = 15,
+ kGFUnk16 = 16,
+ kGFJointTaken = 17,
+ kGFUnk18 = 18,
+ kGFGroceryStoreHatTaken = 19,
+ kGFPictureTaken = 20,
+ kGFUnk21 = 21,
+ kGFUnk22 = 22,
+ kGFUnk23 = 23,
+ kGFUnk24 = 24,
+ kGFUnk25 = 25,
+ kGFPlatypusTalkingToAssistant = 26,
+ kGFUnk27 = 27,
+ kGFUnk28 = 28,
+ kGFGasTaken = 29,
+ kGFUnk30 = 30,
+ kGFUnk31 = 31
};
/*
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 1d4bfee..bb7315c 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -73,9 +73,9 @@ void GnapEngine::scene01_updateHotspots() {
setHotspot(kHSWalkArea7, 0, 0, 520, 351);
setHotspot(kHSWalkArea8, 0, 546, 300, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
_hotspots[kHSMud]._flags = SF_WALKABLE | SF_DISABLED;
_hotspotsCount = 14;
}
@@ -95,22 +95,22 @@ void GnapEngine::scene01_run() {
_timers[4] = getRandom(100) + 300;
- if (!isFlag(1))
+ if (!isFlag(kGFMudTaken))
_gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
if (_prevSceneNum == 2) {
initGnapPos(11, 6, kDirBottomLeft);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(12, 6, kDirUnk4);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
gnapWalkTo(8, 6, -1, 0x107B9, 1);
} else {
initGnapPos(1, 6, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
@@ -134,7 +134,7 @@ void GnapEngine::scene01_run() {
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
if (_grabCursorSpriteIndex == kItemDisguise) {
gnapUseDisguiseOnPlatypus();
} else if (_grabCursorSpriteIndex >= 0) {
@@ -142,7 +142,7 @@ void GnapEngine::scene01_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -239,7 +239,7 @@ void GnapEngine::scene01_run() {
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
_newSceneNum = 2;
}
@@ -272,7 +272,7 @@ void GnapEngine::scene01_run() {
playSound(0x1091C, 1);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(0))
+ if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
updateBeaverIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
@@ -347,7 +347,7 @@ void GnapEngine::scene01_updateAnimations() {
_gameSys->setAnimation(0, 0, 3);
invAdd(kItemMud);
setGrabCursorSprite(kItemMud);
- setFlag(1);
+ setFlag(kGFMudTaken);
scene01_updateHotspots();
}
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 65018e0..0688b29 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -78,7 +78,7 @@ void GnapEngine::scene02_updateHotspots() {
setHotspot(kHSWalkArea3, 0, 0, 386, 445);
setHotspot(kHSWalkArea4, 386, 0, 509, 410);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 14;
}
@@ -100,20 +100,20 @@ void GnapEngine::scene02_run() {
switch (_prevSceneNum) {
case 3:
initGnapPos(11, 6, kDirBottomLeft);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(12, 6, kDirUnk4);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
gnapWalkTo(8, 6, -1, 0x107BA, 1);
break;
case 4:
initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, kDirBottomLeft);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, kDirUnk4);
endSceneInit();
gnapWalkTo(7, 6, 0, 0x107B9, 1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(8, 6, 1, 0x107C2, 1);
scene02_updateHotspots();
_gameSys->waitForUpdate();
@@ -126,16 +126,16 @@ void GnapEngine::scene02_run() {
break;
case 49:
initGnapPos(5, 6, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(6, 7, kDirNone);
endSceneInit();
break;
default:
initGnapPos(-1, 6, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(-1, 7, kDirNone);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(2, 7, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
@@ -162,7 +162,7 @@ void GnapEngine::scene02_run() {
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
if (_grabCursorSpriteIndex == kItemDisguise) {
gnapUseDisguiseOnPlatypus();
} else if (_grabCursorSpriteIndex >= 0) {
@@ -170,7 +170,7 @@ void GnapEngine::scene02_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -299,7 +299,7 @@ void GnapEngine::scene02_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 0, 0x107AD, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, -1, 0x107C1, 1);
scene02_updateHotspots();
_newSceneNum = 4;
@@ -311,7 +311,7 @@ void GnapEngine::scene02_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[7].x, _hotspotsWalkPos[7].y, 0, 0x107AD, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[7].x + 1, _hotspotsWalkPos[7].y, -1, 0x107C1, 1);
scene02_updateHotspots();
_newSceneNum = 5;
@@ -323,7 +323,7 @@ void GnapEngine::scene02_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, -1, 0x107CD, 1);
_newSceneNum = 3;
}
@@ -334,7 +334,7 @@ void GnapEngine::scene02_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, -1, 0x107CF, 1);
_newSceneNum = 1;
}
@@ -363,7 +363,7 @@ void GnapEngine::scene02_run() {
playSound(0x1091C, 1);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(0))
+ if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
updateBeaverIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 930554c..50c985c 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -69,13 +69,13 @@ void GnapEngine::scene03_updateHotspots() {
setHotspot(kHSPlatypusWalkArea, 235, 0, 800, 600);
setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(6))
+ if (isFlag(kGFGrassTaken))
_hotspots[kHSGrass]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSTrappedPlatypus]._flags = SF_DISABLED;
- if (isFlag(0) || _s03_platypusHypnotized)
+ if (isFlag(kGFPlatypus) || _s03_platypusHypnotized)
_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
_hotspotsCount = 10;
}
@@ -103,7 +103,7 @@ void GnapEngine::scene03_run() {
_timers[4] = getRandom(100) + 300;
_timers[5] = getRandom(100) + 200;
- if (isFlag(0)) {
+ if (isFlag(kGFPlatypus)) {
initBeaverPos(5, 4, kDirNone);
} else {
_timers[1] = getRandom(40) + 20;
@@ -115,14 +115,14 @@ void GnapEngine::scene03_run() {
_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(6))
+ if (!isFlag(kGFGrassTaken))
_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(4, 7, -1, 0x107C2, 1);
gnapWalkTo(3, 6, -1, 0x107B9, 1);
@@ -137,7 +137,7 @@ void GnapEngine::scene03_run() {
switch (_sceneClickedHotspot) {
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
if (_grabCursorSpriteIndex == kItemDisguise) {
gnapUseDisguiseOnPlatypus();
} else if (_grabCursorSpriteIndex >= 0) {
@@ -145,7 +145,7 @@ void GnapEngine::scene03_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -167,7 +167,7 @@ void GnapEngine::scene03_run() {
case kHSGrass:
if (_gnapActionStatus < 0) {
- if (isFlag(6)) {
+ if (isFlag(kGFGrassTaken)) {
gnapWalkTo(-1, -1, -1, -1, 1);
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowItem(_grabCursorSpriteIndex, 9, 6);
@@ -198,7 +198,7 @@ void GnapEngine::scene03_run() {
_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107AD, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, -1, 0x107C2, 1);
_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_cursorValue == 1)
@@ -218,11 +218,11 @@ void GnapEngine::scene03_run() {
playGnapMoan2(2, 8);
break;
case GRAB_CURSOR:
- if (!isFlag(0))
+ if (!isFlag(kGFPlatypus))
_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[3].x + 1, _hotspotsWalkPos[3].y + 1) | 0x10000, 1))
_gnapActionStatus = kASGrabCreek;
- if (!isFlag(0))
+ if (!isFlag(kGFPlatypus))
_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
@@ -236,7 +236,7 @@ void GnapEngine::scene03_run() {
case kHSTrappedPlatypus:
if (_gnapActionStatus < 0) {
- if (isFlag(0)) {
+ if (isFlag(kGFPlatypus)) {
gnapWalkTo(-1, -1, -1, -1, 1);
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowItem(_grabCursorSpriteIndex, 8, 4);
@@ -293,7 +293,7 @@ void GnapEngine::scene03_run() {
case kHSPlatypusWalkArea:
if (_gnapActionStatus < 0) {
- if (isFlag(0) || _s03_platypusHypnotized) {
+ if (isFlag(kGFPlatypus) || _s03_platypusHypnotized) {
gnapWalkTo(-1, -1, -1, -1, 1);
} else {
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107B5, 1);
@@ -320,13 +320,13 @@ void GnapEngine::scene03_run() {
playSound(0x10925, 1);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(0))
+ if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
updateBeaverIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[1] && !_s03_platypusScared) {
_timers[1] = getRandom(40) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && !isFlag(0) && !_s03_platypusHypnotized)
+ if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && !isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
_s03_nextPlatSequenceId = 450;
}
if (!_timers[6]) {
@@ -393,7 +393,7 @@ void GnapEngine::scene03_updateAnimations() {
_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
_beaverSequenceDatNum = 1;
_beaverSequenceId = 0x7CA;
- setFlag(0);
+ setFlag(kGFPlatypus);
_s03_nextPlatSequenceId = -1;
scene03_updateHotspots();
break;
@@ -508,7 +508,7 @@ void GnapEngine::scene03_updateAnimations() {
_gameSys->setAnimation(0, 0, 5);
invAdd(kItemGrass);
setGrabCursorSprite(kItemGrass);
- setFlag(6);
+ setFlag(kGFGrassTaken);
scene03_updateHotspots();
}
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index ec3f482..8022625 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -73,9 +73,9 @@ void GnapEngine::scene04_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 562, 461);
setHotspot(kHSWalkArea2, 562, 0, 800, 500);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(3))
+ if (isFlag(kGFTwigTaken))
_hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(26) || _cursorValue == 1)
_hotspots[kHSAxe]._flags = SF_DISABLED;
@@ -102,7 +102,7 @@ void GnapEngine::scene04_run() {
if (!isFlag(26) && _cursorValue == 4)
_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(3))
+ if (!isFlag(kGFTwigTaken))
_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
@@ -124,7 +124,7 @@ void GnapEngine::scene04_run() {
endSceneInit();
invRemove(kItemDisguise);
invAdd(kItemKeys);
- setFlag(5);
+ setFlag(kGFKeysTaken);
clearFlag(10);
_beaverSequenceId = 0x20C;
_beaverSequenceDatNum = 0;
@@ -136,10 +136,10 @@ void GnapEngine::scene04_run() {
_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 2) {
initGnapPos(5, 11, kDirUpRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(6, 11, kDirUpLeft);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 9, -1, 0x107BA, 1);
} else if (_prevSceneNum == 38) {
@@ -148,10 +148,10 @@ void GnapEngine::scene04_run() {
endSceneInit();
} else {
initGnapPos(12, 9, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(12, 8, kDirNone);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(9, 8, -1, 0x107C2, 1);
gnapWalkTo(9, 9, -1, 0x107BA, 1);
}
@@ -177,7 +177,7 @@ void GnapEngine::scene04_run() {
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
if (_grabCursorSpriteIndex == kItemDisguise) {
gnapUseDisguiseOnPlatypus();
} else if (_grabCursorSpriteIndex >= 0) {
@@ -185,7 +185,7 @@ void GnapEngine::scene04_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -325,7 +325,7 @@ void GnapEngine::scene04_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, -1, 0x107C7, 1);
if (_cursorValue == 1)
_newSceneNum = 2;
@@ -338,7 +338,7 @@ void GnapEngine::scene04_run() {
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 2, 3);
- } else if (isFlag(5)) {
+ } else if (isFlag(kGFKeysTaken)) {
playGnapImpossible(0, 0);
} else {
switch (_verbCursor) {
@@ -369,7 +369,7 @@ void GnapEngine::scene04_run() {
_isLeavingScene = 1;
gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
if (_cursorValue == 1)
_newSceneNum = 5;
@@ -399,7 +399,7 @@ void GnapEngine::scene04_run() {
playSound(0x1091C, 1);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(0))
+ if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
beaverSub426234();
if (_gnapActionStatus < 0)
updateGnapIdleSequence2();
@@ -537,7 +537,7 @@ void GnapEngine::scene04_updateAnimations() {
_gameSys->setAnimation(0, 0, 2);
invAdd(kItemTwig);
setGrabCursorSprite(kItemTwig);
- setFlag(3);
+ setFlag(kGFTwigTaken);
scene04_updateHotspots();
}
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index aebd783..805de4f 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -55,7 +55,7 @@ int GnapEngine::scene05_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0, 0, 3);
- return isFlag(7) ? 0x151 : 0x150;
+ return isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
}
void GnapEngine::scene05_updateHotspots() {
@@ -69,9 +69,9 @@ void GnapEngine::scene05_updateHotspots() {
setHotspot(kHSWalkArea2, 422, 0, 800, 487);
setHotspot(kHSWalkArea3, 0, 0, 104, 499);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(7))
+ if (isFlag(kGFBarnPadlockOpen))
_hotspots[kHSPadlock]._flags = SF_EXIT_U_CURSOR;
_hotspotsCount = 10;
}
@@ -90,22 +90,22 @@ void GnapEngine::scene05_run() {
_timers[5] = getRandom(10) + 30;
_timers[6] = getRandom(150) + 300;
- if (isFlag(7))
+ if (isFlag(kGFBarnPadlockOpen))
_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
if (_prevSceneNum != 6 && _prevSceneNum != 36) {
initGnapPos(-1, 8, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(-1, 9, kDirNone);
endSceneInit();
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(2, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 9, -1, 0x107B9, 1);
} else {
initGnapPos(6, 8, kDirBottomRight);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
initBeaverPos(7, 9, kDirNone);
endSceneInit();
}
@@ -130,7 +130,7 @@ void GnapEngine::scene05_run() {
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(0)) {
+ if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
if (_grabCursorSpriteIndex == kItemDisguise) {
gnapUseDisguiseOnPlatypus();
} else if (_grabCursorSpriteIndex >= 0) {
@@ -138,7 +138,7 @@ void GnapEngine::scene05_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -162,7 +162,7 @@ void GnapEngine::scene05_run() {
if (_gnapActionStatus < 0 && _beaverActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[1].x - 2, _hotspotsWalkPos[1].y, 4, 5);
- } else if (isFlag(2)) {
+ } else if (isFlag(kGFNeedleTaken)) {
playGnapImpossible(0, 0);
} else {
switch (_verbCursor) {
@@ -174,7 +174,7 @@ void GnapEngine::scene05_run() {
playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(0)) {
+ if (isFlag(kGFPlatypus)) {
gnapUseDeviceOnBeaver();
if (platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
_beaverActionStatus = kASPlatSearchHaystack;
@@ -246,7 +246,7 @@ void GnapEngine::scene05_run() {
break;
case kHSPadlock:
- if (isFlag(7)) {
+ if (isFlag(kGFBarnPadlockOpen)) {
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[2].x - 1, _hotspotsWalkPos[2].y + 1, 0, -1, 1);
_gnapActionStatus = kASEnterBarn;
@@ -286,7 +286,7 @@ void GnapEngine::scene05_run() {
_isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
platypusWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
if (_cursorValue == 1)
_newSceneNum = 4;
@@ -320,7 +320,7 @@ void GnapEngine::scene05_run() {
playSound(0x1091C, 1);
if (!_isLeavingScene) {
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
updateBeaverIdleSequence();
updateGnapIdleSequence();
if (!_timers[5]) {
@@ -375,7 +375,7 @@ void GnapEngine::scene05_updateAnimations() {
_gameSys->insertSequence(0x147, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x147;
_gnapSequenceDatNum = 0;
- setFlag(7);
+ setFlag(kGFBarnPadlockOpen);
setFlag(11);
setGrabCursorSprite(-1);
_newSceneNum = 6;
@@ -425,7 +425,7 @@ void GnapEngine::scene05_updateAnimations() {
_beaverSequenceDatNum = 1;
_beaverId = 20 * _platY;
invAdd(kItemNeedle);
- setFlag(2);
+ setFlag(kGFNeedleTaken);
setGrabCursorSprite(kItemNeedle);
showCursor();
_timers[1] = 30;
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 459d449..8a374e1 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -96,7 +96,7 @@ void GnapEngine::scene06_run() {
_timers[4] = getRandom(40) + 25;
- if (isFlag(4))
+ if (isFlag(kGFUnk04))
_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
else
_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
@@ -141,7 +141,7 @@ void GnapEngine::scene06_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(5))
+ if (isFlag(kGFKeysTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -171,7 +171,7 @@ void GnapEngine::scene06_run() {
playGnapScratchingHead(5, 0);
break;
case GRAB_CURSOR:
- if (isFlag(4)) {
+ if (isFlag(kGFUnk04)) {
playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
@@ -185,7 +185,7 @@ void GnapEngine::scene06_run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- if (isFlag(4))
+ if (isFlag(kGFUnk04))
playGnapImpossible(0, 0);
else
playGnapScratchingHead(5, 0);
@@ -391,7 +391,7 @@ void GnapEngine::scene06_updateAnimations() {
_gameSys->insertSequence(0x107C1, _beaverId, 0, 0, kSeqNone, 0, 450 - _platGridX, 384 - _platGridY);
_beaverSequenceId = 0x7C1;
_beaverSequenceDatNum = 1;
- setFlag(4);
+ setFlag(kGFUnk04);
_gnapActionStatus = -1;
showCursor();
}
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 671ad9c..d10c409 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -53,7 +53,7 @@ void GnapEngine::scene07_updateHotspots() {
setHotspot(kHSWalkArea2, 325, 0, 799, 445, _isLeavingScene ? SF_WALKABLE : 0);
setHotspot(kHSWalkArea3, 160, 0, 325, 495);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(0))
+ if (isFlag(kGFPlatypus))
_hotspots[kHSDice]._flags = SF_DISABLED;
_hotspotsCount = 7;
}
@@ -67,7 +67,7 @@ void GnapEngine::scene07_run() {
invRemove(kItemGas);
invRemove(kItemNeedle);
- if (!isFlag(0))
+ if (!isFlag(kGFPlatypus))
_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 8) {
@@ -147,7 +147,7 @@ void GnapEngine::scene07_run() {
case LOOK_CURSOR:
break;
case GRAB_CURSOR:
- setFlag(0);
+ setFlag(kGFPlatypus);
invAdd(kItemDice);
scene07_updateHotspots();
playGnapPullOutDevice(3, 3);
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index a1cbe07..2dfb4d3 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -67,7 +67,7 @@ void GnapEngine::scene08_updateHotspots() {
setHotspot(kHSWalkArea1, 290, 340, -1, -1);
setHotspot(kHSWalkArea2, 0, 0, 799, 420);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(7))
+ if (isFlag(kGFBarnPadlockOpen))
_hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
if (isFlag(8))
_hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
@@ -107,7 +107,7 @@ void GnapEngine::scene08_run() {
_timers[4] = getRandom(50) + 75;
- if (!isFlag(7))
+ if (!isFlag(kGFBarnPadlockOpen))
_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(8))
@@ -473,7 +473,7 @@ void GnapEngine::scene08_updateAnimations() {
_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
switch (_s08_nextDogSequenceId) {
case 0x149:
- setFlag(7);
+ setFlag(kGFBarnPadlockOpen);
_hotspots[kHSMeat]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x144, 1, true);
break;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 6f5552f..6f9f47e 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -78,7 +78,7 @@ void GnapEngine::scene10_run() {
_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
_s10_nextCookSequenceId = 0x106;
- if (!isFlag(1))
+ if (!isFlag(kGFMudTaken))
_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
@@ -125,7 +125,7 @@ void GnapEngine::scene10_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -198,13 +198,13 @@ void GnapEngine::scene10_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
playGnapMoan2(-1, -1);
else
playGnapScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
playGnapMoan2(-1, -1);
else {
gnapActionIdle(0x10C);
@@ -216,7 +216,7 @@ void GnapEngine::scene10_run() {
playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
playGnapMoan2(-1, -1);
else {
gnapActionIdle(0x10C);
@@ -247,11 +247,11 @@ void GnapEngine::scene10_run() {
playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(1))
+ if (isFlag(kGFMudTaken))
playGnapMoan2(-1, -1);
else {
invAdd(kItemTongs);
- setFlag(1);
+ setFlag(kGFMudTaken);
gnapActionIdle(0x10C);
gnapUseDeviceOnBeaver();
platypusWalkTo(7, 6, 1, 0x107D2, 1);
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index c83f0bd..df26e4d 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -497,7 +497,7 @@ void GnapEngine::scene12_updateAnimations() {
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7B7;
_gnapSequenceDatNum = 1;
- setFlag(3);
+ setFlag(kGFTwigTaken);
invAdd(kItemQuarterWithHole);
invRemove(kItemQuarter);
}
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 1e22c84..47bb12f 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -46,7 +46,7 @@ void GnapEngine::scene14_updateHotspots() {
setHotspot(kHSCoin, 330, 390, 375, 440, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
setHotspot(kHSToilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(2))
+ if (isFlag(kGFNeedleTaken))
_hotspots[kHSCoin]._flags = SF_DISABLED;
_hotspotsCount = 5;
}
@@ -56,15 +56,15 @@ void GnapEngine::scene14_run() {
queueInsertDeviceIcon();
- if (!isFlag(2))
+ if (!isFlag(kGFNeedleTaken))
_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
- if (!isFlag(2) && invHas(kItemTongs))
+ if (!isFlag(kGFNeedleTaken) && invHas(kItemTongs))
_largeSprite = _gameSys->createSurface(1);
- if (!isFlag(2)) {
+ if (!isFlag(kGFNeedleTaken)) {
_gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x24;
_timers[2] = getRandom(40) + 50;
@@ -95,7 +95,7 @@ void GnapEngine::scene14_run() {
case kHSCoin:
if (_grabCursorSpriteIndex == kItemTongs) {
invAdd(kItemQuarter);
- setFlag(2);
+ setFlag(kGFNeedleTaken);
setGrabCursorSprite(-1);
hideCursor();
_gameSys->setAnimation(0x26, 10, 0);
@@ -151,7 +151,7 @@ void GnapEngine::scene14_run() {
checkGameKeys();
- if (!isFlag(2) && !_timers[2]) {
+ if (!isFlag(kGFNeedleTaken) && !_timers[2]) {
_gameSys->insertSequence(0x24, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x24;
_timers[2] = getRandom(40) + 50;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index ec580b9..c502649 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -72,7 +72,7 @@ void GnapEngine::scene17_updateHotspots() {
setHotspot(kHSWalkArea2, 541, 0, 800, 600);
setHotspot(kHSWalkArea3, 0, 204, 173, 468);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(6))
+ if (isFlag(kGFGrassTaken))
_hotspots[kHSWrench]._flags = SF_NONE;
if (isFlag(26)) {
_hotspots[kHSDevice]._flags = SF_DISABLED;
@@ -150,7 +150,7 @@ void GnapEngine::scene17_run() {
queueInsertDeviceIcon();
- if (isFlag(6))
+ if (isFlag(kGFGrassTaken))
_s17_currWrenchSequenceId = 0x22D;
else
_s17_currWrenchSequenceId = 0x22F;
@@ -163,7 +163,7 @@ void GnapEngine::scene17_run() {
_gameSys->setAnimation(_s17_currWrenchSequenceId, 40, 2);
_gameSys->insertSequence(_s17_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(6)) {
+ if (isFlag(kGFGrassTaken)) {
_gameSys->setAnimation(0, 0, 3);
} else {
_gameSys->setAnimation(_s17_currCarWindowSequenceId, 40, 3);
@@ -296,7 +296,7 @@ void GnapEngine::scene17_run() {
case kHSPlatypus:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex == kItemJoint) {
- if (isFlag(6)) {
+ if (isFlag(kGFGrassTaken)) {
gnapUseJointOnPlatypus();
} else {
gnapUseDeviceOnBeaver();
@@ -330,7 +330,7 @@ void GnapEngine::scene17_run() {
case kHSWrench:
if (_gnapActionStatus < 0) {
- if (isFlag(6)) {
+ if (isFlag(kGFGrassTaken)) {
playGnapImpossible(0, 0);
} else if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 8, 7);
@@ -515,7 +515,7 @@ void GnapEngine::scene17_run() {
}
if (_beaverActionStatus < 0 && !_timers[5]) {
_timers[5] = getRandom(30) + 80;
- if (isFlag(6) && _s17_nextWrenchSequenceId == -1) {
+ if (isFlag(kGFGrassTaken) && _s17_nextWrenchSequenceId == -1) {
_s17_nextWrenchSequenceId = 0x236;
} else if (_s17_canTryGetWrench) {
switch (getRandom(6)) {
@@ -565,7 +565,7 @@ void GnapEngine::scene17_run() {
}
if (!_timers[6]) {
_timers[6] = getRandom(30) + 200;
- if (_s17_nextCarWindowSequenceId == -1 && !isFlag(6))
+ if (_s17_nextCarWindowSequenceId == -1 && !isFlag(kGFGrassTaken))
_s17_nextCarWindowSequenceId = 0x246;
}
playSoundA();
@@ -832,7 +832,7 @@ void GnapEngine::scene17_updateAnimations() {
_s17_nextCarWindowSequenceId = -1;
_s17_currWrenchSequenceId = 0x22D;
_s17_nextWrenchSequenceId = -1;
- setFlag(6);
+ setFlag(kGFGrassTaken);
_gnapActionStatus = -1;
_beaverActionStatus = 2;
scene17_updateHotspots();
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index b76e430..3e2301e 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -97,7 +97,7 @@ void GnapEngine::scene18_updateHotspots() {
} else {
_hotspots[kHSHydrantTopValve]._y1 = 246;
}
- } else if (isFlag(7)) {
+ } else if (isFlag(kGFBarnPadlockOpen)) {
_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
_hotspots[kHSHydrantTopValve]._x1 = 105;
_hotspots[kHSHydrantTopValve]._x2 = 192;
@@ -294,7 +294,7 @@ void GnapEngine::scene18_closeHydrantValve() {
_gnapActionStatus = kASCloseRightValveNoGarbageCan;
scene18_waitForGnapAction();
}
- } else if (isFlag(7)) {
+ } else if (isFlag(kGFBarnPadlockOpen)) {
gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
_gnapActionStatus = kASCloseTopValve;
scene18_waitForGnapAction();
@@ -338,7 +338,7 @@ void GnapEngine::scene18_run() {
_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
playSound(0x22B, true);
- } else if (isFlag(7)) {
+ } else if (isFlag(kGFBarnPadlockOpen)) {
_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
playSound(0x22B, true);
@@ -542,7 +542,7 @@ void GnapEngine::scene18_run() {
if (isFlag(8)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
_gnapActionStatus = kASPutGarbageCanOnRunningHydrant;
- } else if (!isFlag(7)) {
+ } else if (!isFlag(kGFBarnPadlockOpen)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
_gnapActionStatus = kASPutGarbageCanOnHydrant;
} else {
@@ -571,7 +571,7 @@ void GnapEngine::scene18_run() {
playGnapScratchingHead(1, 5);
break;
case GRAB_CURSOR:
- if (isFlag(7)) {
+ if (isFlag(kGFBarnPadlockOpen)) {
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
@@ -723,7 +723,7 @@ void GnapEngine::scene18_run() {
if (!isSoundPlaying(0x10940))
playSound(0x10940, true);
- if ((isFlag(8) || isFlag(7)) && !isSoundPlaying(0x22B) &&
+ if ((isFlag(8) || isFlag(kGFBarnPadlockOpen)) && !isSoundPlaying(0x22B) &&
_gnapActionStatus != kASOpenRightValveNoGarbageCanDone && _gnapActionStatus != kASOpenRightValveNoGarbageCan &&
_gnapActionStatus != kASOpenTopValve && _gnapActionStatus != kASOpenTopValveDone &&
_gnapActionStatus != kASOpenRightValveWithGarbageCan && _gnapActionStatus != kASOpenRightValveWithGarbageCanDone)
@@ -827,7 +827,7 @@ void GnapEngine::scene18_updateAnimations() {
_gnapActionStatus = -1;
break;
case kASOpenTopValve:
- setFlag(7);
+ setFlag(kGFBarnPadlockOpen);
scene18_updateHotspots();
playGnapPullOutDevice(2, 7);
playGnapUseDevice(0, 0);
@@ -862,7 +862,7 @@ void GnapEngine::scene18_updateAnimations() {
stopSound(0x22B);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x206;
- clearFlag(7);
+ clearFlag(kGFBarnPadlockOpen);
invAdd(kItemWrench);
setGrabCursorSprite(kItemWrench);
scene18_updateHotspots();
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index 7d8157b..a6f42e1 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -48,7 +48,7 @@ enum {
int GnapEngine::scene21_init() {
_gameSys->setAnimation(0, 0, 3);
- return isFlag(3) ? 0x94 : 0x93;
+ return isFlag(kGFTwigTaken) ? 0x94 : 0x93;
}
void GnapEngine::scene21_updateHotspots() {
@@ -59,9 +59,9 @@ void GnapEngine::scene21_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 440);
setHotspot(kHSWalkArea2, 698, 0, 800, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(4) || !isFlag(3))
+ if (isFlag(kGFUnk04) || !isFlag(kGFTwigTaken))
_hotspots[kHSBanana]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(3))
+ if (isFlag(kGFTwigTaken))
_hotspots[kHSOldLady]._flags = SF_DISABLED;
_hotspotsCount = 7;
}
@@ -75,19 +75,19 @@ void GnapEngine::scene21_run() {
queueInsertDeviceIcon();
- if (isFlag(3)) {
- if (isFlag(5)) {
+ if (isFlag(kGFTwigTaken)) {
+ if (isFlag(kGFKeysTaken)) {
initGnapPos(5, 8, kDirBottomRight);
initBeaverPos(6, 8, kDirNone);
_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(4))
+ if (!isFlag(kGFUnk04))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
- clearFlag(5);
+ clearFlag(kGFKeysTaken);
} else {
initGnapPos(5, 11, kDirBottomRight);
initBeaverPos(6, 11, kDirNone);
- if (!isFlag(4))
+ if (!isFlag(kGFUnk04))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
@@ -237,7 +237,7 @@ void GnapEngine::scene21_run() {
if (!_isLeavingScene) {
updateBeaverIdleSequence();
updateGnapIdleSequence();
- if (!isFlag(3) && !_timers[4] && _s21_nextOldLadySequenceId == -1 && _gnapActionStatus == -1) {
+ if (!isFlag(kGFTwigTaken) && !_timers[4] && _s21_nextOldLadySequenceId == -1 && _gnapActionStatus == -1) {
_timers[4] = getRandom(30) + 50;
switch (getRandom(5)) {
case 0:
@@ -284,7 +284,7 @@ void GnapEngine::scene21_updateAnimations() {
case kASGrabBanana:
_gameSys->setAnimation(0x8C, 59, 0);
_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
- setFlag(4);
+ setFlag(kGFUnk04);
invAdd(kItemBanana);
scene21_updateHotspots();
_gnapActionStatus = kASGrabBananaDone;
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index c93c194..42df9bd 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -220,7 +220,7 @@ void GnapEngine::scene25_run() {
case kHSExitInsideCircusWorld:
if (_gnapActionStatus < 0) {
- if (isFlag(2)) {
+ if (isFlag(kGFNeedleTaken)) {
_isLeavingScene = true;
_newSceneNum = 26;
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
@@ -368,7 +368,7 @@ void GnapEngine::scene25_updateAnimations() {
case kASShowTicketToVendor:
setGrabCursorSprite(-1);
invRemove(kItemTickets);
- setFlag(2);
+ setFlag(kGFNeedleTaken);
_gameSys->setAnimation(0x61, 40, 0);
_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
_gnapActionStatus = kASShowTicketToVendorDone;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 02020d5..e891e25 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -245,7 +245,7 @@ void GnapEngine::scene27_run() {
case kHSExitClown:
if (_gnapActionStatus < 0) {
- if (isFlag(0)) {
+ if (isFlag(kGFPlatypus)) {
_isLeavingScene = true;
_newSceneNum = 28;
gnapWalkTo(_hotspotsWalkPos[kHSExitClown].x, _hotspotsWalkPos[kHSExitClown].y, 0, 0x107AD, 1);
@@ -404,7 +404,7 @@ void GnapEngine::scene27_updateAnimations() {
_gnapActionStatus = kASEnterClownTent;
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
- setFlag(0);
+ setFlag(kGFPlatypus);
setGrabCursorSprite(-1);
invRemove(kItemPicture);
_newSceneNum = 28;
@@ -417,7 +417,6 @@ void GnapEngine::scene27_updateAnimations() {
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index f7226e3..a2831e9 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -81,7 +81,7 @@ void GnapEngine::scene28_run() {
if (isFlag(22))
_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(1)) {
+ if (isFlag(kGFMudTaken)) {
if (isFlag(21)) {
_gameSys->setAnimation(0x11C, 39, 3);
_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -104,7 +104,7 @@ void GnapEngine::scene28_run() {
endSceneInit();
playSequences(0xF7, 0x121, 0x122, 0x123);
_s28_currClownSequenceId = 0x115;
- setFlag(1);
+ setFlag(kGFMudTaken);
_gameSys->setAnimation(0x115, 39, 3);
_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_s28_nextClownSequenceId = -1;
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index d692e1d..37077e2 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -130,7 +130,7 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceIdArr[2] = 0x314;
_s99_sequenceIdArr[3] = 0x31B;
int v1 = 4;
- if (!isFlag(3)) {
+ if (!isFlag(kGFTwigTaken)) {
_s99_sequenceIdArr[4] = 0x31C;
v1 = 5;
}
@@ -144,7 +144,7 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceIdArr[v0++] = 0x312;
_s99_sequenceIdArr[v0] = 0x31A;
v2 = v0 + 1;
- if (!isFlag(3))
+ if (!isFlag(kGFTwigTaken))
_s99_sequenceIdArr[v2++] = 0x31C;
if (!isFlag(26))
_s99_sequenceIdArr[v2++] = 0x31D;
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 0825937..734c737 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -599,8 +599,8 @@ void GnapEngine::runSceneLogic() {
} else if (_prevSceneNum == 21) {
scene47_initCutscene5();
_newSceneNum = 21;
- setFlag(3);
- setFlag(5);
+ setFlag(kGFTwigTaken);
+ setFlag(kGFKeysTaken);
} else if (_prevSceneNum == 30) {
scene47_initCutscene6();
_newSceneNum = 26;
Commit: 6dfa316b2454e34252225be399a08f56b78e274f
https://github.com/scummvm/scummvm/commit/6dfa316b2454e34252225be399a08f56b78e274f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Replace more flags values by enums (WIP)
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
engines/gnap/scenes/scene50.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index fad1e57..631f70c 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -839,7 +839,7 @@ void GnapEngine::initScene() {
_gameSys->drawBitmap(backgroundId);
}
- if ((_cursorValue == 4 && isFlag(12)) || _currentSceneNum == 41)
+ if ((_cursorValue == 4 && isFlag(kGFGnapControlsToyUFO)) || _currentSceneNum == 41)
playSound(makeRid(1, 0x8F6), true);
}
@@ -1887,7 +1887,7 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
_newSceneNum = 47;
_isLeavingScene = true;
_sceneDone = true;
- setFlag(10);
+ setFlag(kGFPlatyPussDisguised);
}
// CHECKME: The 3 parameters are always 0
@@ -2195,7 +2195,7 @@ int GnapEngine::toyUfoGetSequenceId() {
}
bool GnapEngine::toyUfoCheckTimer() {
- if (!isFlag(12) || isFlag(18) || _timers[9] ||
+ if (!isFlag(kGFGnapControlsToyUFO) || isFlag(18) || _timers[9] ||
_toyUfoSequenceId == 0x870 || _toyUfoSequenceId == 0x871 || _toyUfoSequenceId == 0x872 || _toyUfoSequenceId == 0x873)
return false;
_sceneDone = true;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 75f931d..aa6e8d5 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -180,7 +180,7 @@ enum {
kGFPlatyPussDisguised = 10,
kGFSceneFlag1 = 11,
kGFGnapControlsToyUFO = 12,
- kGFUnk13 = 13,
+ kGFUnk13 = 13, // Tongue Fight Won?
kGFUnk14 = 14,
kGFSpringTaken = 15,
kGFUnk16 = 16,
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 0688b29..b285972 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -60,7 +60,7 @@ enum {
int GnapEngine::scene02_init() {
_gameSys->setAnimation(0, 0, 0);
- return isFlag(9) ? 0x15A : 0x15B;
+ return isFlag(kGFTruckKeysUsed) ? 0x15A : 0x15B;
}
void GnapEngine::scene02_updateHotspots() {
@@ -231,7 +231,7 @@ void GnapEngine::scene02_run() {
if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
setGrabCursorSprite(-1);
invRemove(kItemKeys);
- if (isFlag(8))
+ if (isFlag(kGFTruckFilledWithGas))
_gnapActionStatus = kASUseTruckGas;
else
_gnapActionStatus = kASUseTruckNoGas;
@@ -249,9 +249,9 @@ void GnapEngine::scene02_run() {
playGnapScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- if (isFlag(9)) {
+ if (isFlag(kGFTruckKeysUsed)) {
if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
- if (isFlag(8))
+ if (isFlag(kGFTruckFilledWithGas))
_gnapActionStatus = kASUseTruckGas;
else
_gnapActionStatus = kASUseTruckNoGas;
@@ -419,7 +419,7 @@ void GnapEngine::scene02_updateAnimations() {
_gnapSequenceDatNum = 0;
invRemove(kItemGas);
setGrabCursorSprite(-1);
- setFlag(8);
+ setFlag(kGFTruckFilledWithGas);
_gnapActionStatus = kASUseGasWithTruckDone;
break;
case kASUseTruckGas:
@@ -427,10 +427,10 @@ void GnapEngine::scene02_updateAnimations() {
_timers[4] = 9999;
hideCursor();
setGrabCursorSprite(-1);
- if (!isFlag(9)) {
+ if (!isFlag(kGFTruckKeysUsed)) {
_gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->waitForUpdate();
- setFlag(9);
+ setFlag(kGFTruckKeysUsed);
_gnapSequenceId = 0x14F;
_gnapSequenceDatNum = 0;
invRemove(kItemKeys);
@@ -443,10 +443,10 @@ void GnapEngine::scene02_updateAnimations() {
hideCursor();
setGrabCursorSprite(-1);
_timers[4] = 250;
- if (!isFlag(9)) {
+ if (!isFlag(kGFTruckKeysUsed)) {
_gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->waitForUpdate();
- setFlag(9);
+ setFlag(kGFTruckKeysUsed);
_gnapSequenceId = 0x14F;
_gnapSequenceDatNum = 0;
invRemove(kItemKeys);
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 8022625..b85bbe7 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -107,7 +107,7 @@ void GnapEngine::scene04_run() {
queueInsertDeviceIcon();
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
setGrabCursorSprite(kItemKeys);
@@ -125,7 +125,7 @@ void GnapEngine::scene04_run() {
invRemove(kItemDisguise);
invAdd(kItemKeys);
setFlag(kGFKeysTaken);
- clearFlag(10);
+ clearFlag(kGFPlatyPussDisguised);
_beaverSequenceId = 0x20C;
_beaverSequenceDatNum = 0;
_beaverFacing = kDirBottomRight;
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index 805de4f..03534b1 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -376,7 +376,7 @@ void GnapEngine::scene05_updateAnimations() {
_gnapSequenceId = 0x147;
_gnapSequenceDatNum = 0;
setFlag(kGFBarnPadlockOpen);
- setFlag(11);
+ setFlag(kGFSceneFlag1);
setGrabCursorSprite(-1);
_newSceneNum = 6;
_timers[2] = 100;
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 8a374e1..13c6108 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -53,9 +53,9 @@ int GnapEngine::scene06_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0, 0, 2);
- if (isFlag(11)) {
+ if (isFlag(kGFSceneFlag1)) {
playSound(0x11B, 0);
- clearFlag(11);
+ clearFlag(kGFSceneFlag1);
}
return 0x101;
}
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index 2dfb4d3..d01355a 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -69,9 +69,9 @@ void GnapEngine::scene08_updateHotspots() {
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(kGFBarnPadlockOpen))
_hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(8))
+ if (isFlag(kGFTruckFilledWithGas))
_hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(9))
+ if (isFlag(kGFTruckKeysUsed))
_hotspots[kHSToy]._flags = SF_WALKABLE | SF_DISABLED;
_hotspotsCount = 11;
}
@@ -110,10 +110,10 @@ void GnapEngine::scene08_run() {
if (!isFlag(kGFBarnPadlockOpen))
_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(8))
+ if (!isFlag(kGFTruckFilledWithGas))
_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(9))
+ if (!isFlag(kGFTruckKeysUsed))
_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
initGnapPos(-1, 8, kDirBottomRight);
@@ -156,7 +156,7 @@ void GnapEngine::scene08_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(11))
+ if (isFlag(kGFSceneFlag1))
playGnapMoan1(_platX, _platY);
else
playGnapScratchingHead(_platX, _platY);
@@ -249,7 +249,7 @@ void GnapEngine::scene08_run() {
_gnapActionStatus = kASTalkDog;
break;
case PLAT_CURSOR:
- setFlag(11);
+ setFlag(kGFSceneFlag1);
gnapActionIdle(0x14D);
gnapUseDeviceOnBeaver();
platypusWalkTo(3, 7, 1, 0x107C2, 1);
@@ -478,12 +478,12 @@ void GnapEngine::scene08_updateAnimations() {
_gameSys->removeSequence(0x144, 1, true);
break;
case 0x14A:
- setFlag(8);
+ setFlag(kGFTruckFilledWithGas);
_hotspots[kHSBone]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x145, 1, true);
break;
case 0x14B:
- setFlag(9);
+ setFlag(kGFTruckKeysUsed);
_hotspots[kHSToy]._flags = SF_DISABLED | SF_WALKABLE;
_gameSys->removeSequence(0x146, 1, true);
break;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index a892b84..bfffcbd 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -165,7 +165,7 @@ void GnapEngine::scene13_run() {
gnapWalkTo(2, 7, 0, 0x107C0, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(2, 8, -1, -1, 1);
- if (isFlag(14) || isFlag(15)) {
+ if (isFlag(kGFUnk14) || isFlag(15)) {
_newSceneNum = 11;
} else {
setFlag(15);
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index f9fb3ef..4323253 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -148,13 +148,13 @@ void GnapEngine::scene15_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(12) || isFlag(13))
+ if (isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk13))
playSound(0x108E9, 0);
else
_s15_nextSlotSequenceId = 0xDA;
break;
case GRAB_CURSOR:
- if (isFlag(12) || isFlag(13))
+ if (isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk13))
_s15_nextSlotSequenceId = 0xD9;
else
_s15_nextSlotSequenceId = 0xDA;
@@ -259,22 +259,22 @@ void GnapEngine::scene15_updateAnimations() {
invRemove(kItemQuarter);
} else {
invRemove(kItemQuarterWithHole);
- setFlag(13);
+ setFlag(kGFUnk13);
}
setGrabCursorSprite(-1);
break;
case 0xDB:
- setFlag(14);
+ setFlag(kGFUnk14);
setGrabCursorSprite(-1);
_s15_nextSlotSequenceId = 0xD8;
break;
case 0xD9:
- if (isFlag(12)) {
- clearFlag(12);
+ if (isFlag(kGFGnapControlsToyUFO)) {
+ clearFlag(kGFGnapControlsToyUFO);
invAdd(kItemQuarter);
_newGrabCursorSpriteIndex = kItemQuarter;
- } else if (isFlag(13)) {
- clearFlag(13);
+ } else if (isFlag(kGFUnk13)) {
+ clearFlag(kGFUnk13);
invAdd(kItemQuarterWithHole);
_newGrabCursorSpriteIndex = kItemQuarterWithHole;
}
@@ -315,7 +315,7 @@ void GnapEngine::scene15_updateAnimations() {
_gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, _s15_currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s15_currUpperButtonSequenceId = _s15_nextUpperButtonSequenceId;
_s15_nextUpperButtonSequenceId = -1;
- if (_s15_currLowerButtonSequenceId != -1 && isFlag(14)) {
+ if (_s15_currLowerButtonSequenceId != -1 && isFlag(kGFUnk14)) {
if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
_s15_nextRecordSequenceId = 0xD3;
else
@@ -329,7 +329,7 @@ void GnapEngine::scene15_updateAnimations() {
_gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, _s15_currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s15_currLowerButtonSequenceId = _s15_nextLowerButtonSequenceId;
_s15_nextLowerButtonSequenceId = -1;
- if (_s15_currUpperButtonSequenceId != -1 && isFlag(14)) {
+ if (_s15_currUpperButtonSequenceId != -1 && isFlag(kGFUnk14)) {
if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
_s15_nextRecordSequenceId = 0xD3;
else
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index c502649..8c07a0a 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -129,7 +129,7 @@ void GnapEngine::scene17_run() {
_timers[6] = getRandom(30) + 200;
_timers[7] = getRandom(100) + 100;
- if (isFlag(9)) {
+ if (isFlag(kGFTruckKeysUsed)) {
_gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
} else {
if (_s18_garbageCanPos >= 8) {
@@ -157,7 +157,7 @@ void GnapEngine::scene17_run() {
_s17_currCarWindowSequenceId = 0x244;
- if (isFlag(14))
+ if (isFlag(kGFUnk14))
_gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(_s17_currWrenchSequenceId, 40, 2);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 3e2301e..755a9f7 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -86,8 +86,8 @@ void GnapEngine::scene18_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 448);
setHotspot(kHSWalkArea2, 0, 0, 214, 515);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(8)) {
- if (isFlag(9)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
+ if (isFlag(kGFTruckKeysUsed)) {
_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
_hotspots[kHSHydrantRightValve]._x1 = 148;
_hotspots[kHSHydrantRightValve]._y1 = 403;
@@ -101,7 +101,7 @@ void GnapEngine::scene18_updateHotspots() {
_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
_hotspots[kHSHydrantTopValve]._x1 = 105;
_hotspots[kHSHydrantTopValve]._x2 = 192;
- } else if (isFlag(9)) {
+ } else if (isFlag(kGFTruckKeysUsed)) {
_hotspots[kHSGarbageCan]._x1 = 115;
_hotspots[kHSGarbageCan]._y1 = 365;
_hotspots[kHSGarbageCan]._x2 = 168;
@@ -110,7 +110,7 @@ void GnapEngine::scene18_updateHotspots() {
_hotspotsWalkPos[kHSGarbageCan].x = 3;
_hotspotsWalkPos[kHSGarbageCan].y = 7;
}
- if (isFlag(10))
+ if (isFlag(kGFPlatyPussDisguised))
_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
if (isFlag(26)) {
_hotspots[kHSDevice]._flags = SF_DISABLED;
@@ -118,7 +118,7 @@ void GnapEngine::scene18_updateHotspots() {
_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
_hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
- if (isFlag(14)) {
+ if (isFlag(kGFUnk14)) {
_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
_hotspots[kHSCowboyHat]._flags = SF_DISABLED;
}
@@ -236,7 +236,7 @@ void GnapEngine::scene18_putDownGarbageCan(int animationIndex) {
_s18_garbageCanPos = _gnapX - 1;
else
_s18_garbageCanPos = _gnapX + 1;
- clearFlag(10);
+ clearFlag(kGFPlatyPussDisguised);
scene18_updateHotspots();
if (_gnapIdleFacing != kDirNone && _gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
_gameSys->insertSequence(0x107BA, _gnapId,
@@ -285,9 +285,9 @@ void GnapEngine::scene18_platEndPhoning(bool platFl) {
void GnapEngine::scene18_closeHydrantValve() {
_gnapActionStatus = kASLeaveScene;
updateMouseCursor();
- if (isFlag(8)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (isFlag(9)) {
+ if (isFlag(kGFTruckKeysUsed)) {
_gnapActionStatus = kASCloseRightValveWithGarbageCan;
scene18_waitForGnapAction();
} else {
@@ -319,13 +319,13 @@ void GnapEngine::scene18_run() {
queueInsertDeviceIcon();
- clearFlag(10);
+ clearFlag(kGFPlatyPussDisguised);
- if (!isFlag(14))
+ if (!isFlag(kGFUnk14))
_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(9)) {
- if (isFlag(8)) {
+ if (isFlag(kGFTruckKeysUsed)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
_gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
playSound(0x22B, true);
@@ -334,7 +334,7 @@ void GnapEngine::scene18_run() {
}
} else {
_gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _s18_garbageCanPos - 40), 0);
- if (isFlag(8)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
playSound(0x22B, true);
@@ -372,8 +372,8 @@ void GnapEngine::scene18_run() {
}
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
- if (isFlag(12)) {
- clearFlag(12);
+ if (isFlag(kGFGnapControlsToyUFO)) {
+ clearFlag(kGFGnapControlsToyUFO);
setGrabCursorSprite(kItemCowboyHat);
_prevSceneNum = 19;
}
@@ -422,7 +422,7 @@ void GnapEngine::scene18_run() {
case kHSPlatypus:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
@@ -455,7 +455,7 @@ void GnapEngine::scene18_run() {
_gnapActionStatus = kASGrabCowboyHat;
_sceneWaiting = 0;
} else if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
@@ -480,7 +480,7 @@ void GnapEngine::scene18_run() {
case kHSGarbageCan:
if (_gnapActionStatus < 0) {
- if (isFlag(14)) {
+ if (isFlag(kGFUnk14)) {
if (_grabCursorSpriteIndex >= 0)
playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y, 1, 5);
else
@@ -489,7 +489,7 @@ void GnapEngine::scene18_run() {
if (isFlag(26))
scene18_platEndPhoning(true);
if (_grabCursorSpriteIndex >= 0) {
- if (!isFlag(9))
+ if (!isFlag(kGFTruckKeysUsed))
playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1),
_hotspotsWalkPos[kHSGarbageCan].y, _hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y);
else
@@ -497,18 +497,18 @@ void GnapEngine::scene18_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (!isFlag(9))
+ if (!isFlag(kGFTruckKeysUsed))
playGnapScratchingHead(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1), _hotspotsWalkPos[kHSGarbageCan].y);
- else if (!isFlag(8))
+ else if (!isFlag(kGFTruckFilledWithGas))
playGnapScratchingHead(2, 4);
break;
case GRAB_CURSOR:
- if (!isFlag(9)) {
+ if (!isFlag(kGFTruckKeysUsed)) {
gnapWalkTo(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1), _hotspotsWalkPos[kHSGarbageCan].y,
-1, -1, 1);
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _s18_garbageCanPos, _gnapY) | 0x10000, 1);
_gnapActionStatus = kASGrabGarbageCanFromStreet;
- } else if (!isFlag(8)) {
+ } else if (!isFlag(kGFTruckFilledWithGas)) {
if (gnapWalkTo(_hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y, 0, -1, 1))
_gnapActionStatus = kASGrabGarbageCanFromHydrant;
}
@@ -525,7 +525,7 @@ void GnapEngine::scene18_run() {
case kHSHydrantTopValve:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
// While carrying garbage can
if (_grabCursorSpriteIndex >= 0) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
@@ -539,7 +539,7 @@ void GnapEngine::scene18_run() {
playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (isFlag(8)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
_gnapActionStatus = kASPutGarbageCanOnRunningHydrant;
} else if (!isFlag(kGFBarnPadlockOpen)) {
@@ -591,20 +591,20 @@ void GnapEngine::scene18_run() {
case kHSHydrantRightValve:
if (_gnapActionStatus < 0) {
- if (isFlag(14)) {
+ if (isFlag(kGFUnk14)) {
if (_grabCursorSpriteIndex == -1) {
playGnapImpossible(0, 0);
} else {
playGnapShowCurrItem(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
}
} else {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
if (_grabCursorSpriteIndex == kItemWrench) {
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- if (isFlag(9))
+ if (isFlag(kGFTruckKeysUsed))
_gnapActionStatus = kASOpenRightValveWithGarbageCan;
else
_gnapActionStatus = kASOpenRightValveNoGarbageCan;
@@ -616,9 +616,9 @@ void GnapEngine::scene18_run() {
playGnapScratchingHead(1, 5);
break;
case GRAB_CURSOR:
- if (isFlag(8)) {
+ if (isFlag(kGFTruckFilledWithGas)) {
gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (isFlag(9))
+ if (isFlag(kGFTruckKeysUsed))
_gnapActionStatus = kASCloseRightValveWithGarbageCan;
else
_gnapActionStatus = kASCloseRightValveNoGarbageCan;
@@ -636,7 +636,7 @@ void GnapEngine::scene18_run() {
case kHSExitToyStore:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
@@ -655,7 +655,7 @@ void GnapEngine::scene18_run() {
case kHSExitPhoneBooth:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
@@ -673,7 +673,7 @@ void GnapEngine::scene18_run() {
case kHSExitGrubCity:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
@@ -694,7 +694,7 @@ void GnapEngine::scene18_run() {
case kHSWalkArea1:
case kHSWalkArea2:
if (_gnapActionStatus < 0) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
} else {
@@ -706,7 +706,7 @@ void GnapEngine::scene18_run() {
default:
if (_gnapActionStatus != kASStandingOnHydrant && _mouseClickState._left) {
- if (isFlag(10)) {
+ if (isFlag(kGFPlatyPussDisguised)) {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
} else {
@@ -723,7 +723,7 @@ void GnapEngine::scene18_run() {
if (!isSoundPlaying(0x10940))
playSound(0x10940, true);
- if ((isFlag(8) || isFlag(kGFBarnPadlockOpen)) && !isSoundPlaying(0x22B) &&
+ if ((isFlag(kGFTruckFilledWithGas) || isFlag(kGFBarnPadlockOpen)) && !isSoundPlaying(0x22B) &&
_gnapActionStatus != kASOpenRightValveNoGarbageCanDone && _gnapActionStatus != kASOpenRightValveNoGarbageCan &&
_gnapActionStatus != kASOpenTopValve && _gnapActionStatus != kASOpenTopValveDone &&
_gnapActionStatus != kASOpenRightValveWithGarbageCan && _gnapActionStatus != kASOpenRightValveWithGarbageCanDone)
@@ -757,7 +757,7 @@ void GnapEngine::scene18_run() {
}
playSoundA();
}
- if (!isFlag(10))
+ if (!isFlag(kGFPlatyPussDisguised))
updateGnapIdleSequence();
}
@@ -773,7 +773,7 @@ void GnapEngine::scene18_run() {
}
- if (isFlag(12))
+ if (isFlag(kGFGnapControlsToyUFO))
deleteSurface(&_s18_cowboyHatSurface);
}
@@ -798,7 +798,7 @@ void GnapEngine::scene18_updateAnimations() {
_gnapSequenceId = 0x1FD;
}
_gameSys->removeSequence(0x1FA, 19, true);
- setFlag(10);
+ setFlag(kGFPlatyPussDisguised);
scene18_updateHotspots();
_gnapActionStatus = -1;
break;
@@ -807,8 +807,8 @@ void GnapEngine::scene18_updateAnimations() {
_gameSys->removeSequence(0x1F9, 19, true);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x1FE;
- clearFlag(9);
- setFlag(10);
+ clearFlag(kGFTruckKeysUsed);
+ setFlag(kGFPlatyPussDisguised);
scene18_updateHotspots();
_gnapActionStatus = -1;
break;
@@ -820,7 +820,7 @@ void GnapEngine::scene18_updateAnimations() {
stopSound(0x22B);
_gnapSequenceDatNum = 0;
_gnapSequenceId = 0x205;
- clearFlag(8);
+ clearFlag(kGFTruckFilledWithGas);
invAdd(kItemWrench);
setGrabCursorSprite(kItemWrench);
scene18_updateHotspots();
@@ -886,11 +886,11 @@ void GnapEngine::scene18_updateAnimations() {
_newSceneNum = 18;
invAdd(kItemCowboyHat);
invAdd(kItemWrench);
- setFlag(12);
- setFlag(14);
- clearFlag(8);
- setFlag(9);
- setFlag(14);
+ setFlag(kGFGnapControlsToyUFO);
+ setFlag(kGFUnk14);
+ clearFlag(kGFTruckFilledWithGas);
+ setFlag(kGFTruckKeysUsed);
+ setFlag(kGFUnk14); // CHECKME - Set 2 times?
scene18_updateHotspots();
_gnapActionStatus = kASLeaveScene;
break;
@@ -899,8 +899,8 @@ void GnapEngine::scene18_updateAnimations() {
_gnapActionStatus = -1;
break;
case kASPutGarbageCanOnRunningHydrant:
- setFlag(9);
- clearFlag(10);
+ setFlag(kGFTruckKeysUsed);
+ clearFlag(kGFPlatyPussDisguised);
_gameSys->requestRemoveSequence(0x211, 39);
_gameSys->requestRemoveSequence(0x212, 39);
_gameSys->insertSequence(0x210, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
@@ -925,7 +925,7 @@ void GnapEngine::scene18_updateAnimations() {
break;
case kASOpenRightValveNoGarbageCan:
case kASOpenRightValveWithGarbageCan:
- setFlag(8);
+ setFlag(kGFTruckFilledWithGas);
scene18_updateHotspots();
playGnapPullOutDevice(2, 7);
playGnapUseDevice(0, 0);
@@ -978,7 +978,7 @@ void GnapEngine::scene18_updateAnimations() {
stopSound(0x22B);
_gameSys->setAnimation(0x1F9, 19, 0);
_gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
- clearFlag(8);
+ clearFlag(kGFTruckFilledWithGas);
invAdd(kItemWrench);
setGrabCursorSprite(kItemWrench);
_gameSys->insertSequence(0x107B5, _gnapId, 517, _gnapId, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
@@ -991,8 +991,8 @@ void GnapEngine::scene18_updateAnimations() {
_gnapActionStatus = -1;
break;
case kASPutGarbageCanOnHydrant:
- setFlag(9);
- clearFlag(10);
+ setFlag(kGFTruckKeysUsed);
+ clearFlag(kGFPlatyPussDisguised);
_gameSys->insertSequence(0x20F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(0x20F, _gnapId, 0);
_gnapSequenceDatNum = 0;
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index beee17b..dd8dcfb 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -219,8 +219,8 @@ void GnapEngine::scene20_run() {
queueInsertDeviceIcon();
- if (isFlag(11)) {
- clearFlag(11);
+ if (isFlag(kGFSceneFlag1)) {
+ clearFlag(kGFSceneFlag1);
endSceneInit();
_gameSys->setAnimation(0x182, 140, 0);
_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 01de3e8..a01c7e4 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -82,7 +82,7 @@ void GnapEngine::scene22_run() {
platypusWalkTo(9, 8, -1, 0x107C2, 1);
}
- if (isFlag(11)) {
+ if (isFlag(kGFSceneFlag1)) {
int storeDetectiveSeqId;
setGrabCursorSprite(-1);
invRemove(kItemCereals);
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index ebbf46a..3ad17c5 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -139,7 +139,7 @@ void GnapEngine::scene23_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(11))
+ if (isFlag(kGFSceneFlag1))
playGnapMoan2(0, 0);
else {
gnapWalkTo(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y,
@@ -148,13 +148,13 @@ void GnapEngine::scene23_run() {
}
break;
case GRAB_CURSOR:
- if (isFlag(11))
+ if (isFlag(kGFSceneFlag1))
playGnapImpossible(0, 0);
else {
_gnapIdleFacing = kDirBottomRight;
gnapWalkTo(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y,
0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- setFlag(11);
+ setFlag(kGFSceneFlag1);
_gnapActionStatus = kASGrabCereals;
invAdd(kItemCereals);
}
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index e891e25..2b7666b 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -63,7 +63,7 @@ void GnapEngine::scene27_updateHotspots() {
setHotspot(kHSExitClown, 340, 240, 460, 420, SF_EXIT_U_CURSOR, 6, 8);
setHotspot(kHSWalkArea1, 0, 0, 800, 507);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(13))
+ if (isFlag(kGFUnk13))
_hotspots[kHSBucket]._flags = SF_DISABLED;
_hotspotsCount = 9;
}
@@ -75,7 +75,7 @@ void GnapEngine::scene27_run() {
_timers[7] = getRandom(100) + 300;
queueInsertDeviceIcon();
- if (!isFlag(13))
+ if (!isFlag(kGFUnk13))
_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
if (_debugLevel == 4)
@@ -339,7 +339,7 @@ void GnapEngine::scene27_updateAnimations() {
playGnapUseDevice(0, 0);
_hotspots[kHSBucket]._flags = SF_DISABLED;
invAdd(kItemEmptyBucket);
- setFlag(13);
+ setFlag(kGFUnk13);
_gameSys->setAnimation(0xD2, 39, 0);
_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
_gnapActionStatus = kASGrabBucketDone;
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 3e237fd..cad83ae 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -67,7 +67,7 @@ void GnapEngine::scene30_run() {
if (isFlag(23))
_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(13))
+ if (!isFlag(kGFUnk13))
_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
_timers[5] = getRandom(50) + 180;
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index efaf1d9..6c50a34 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -66,7 +66,7 @@ int GnapEngine::scene41_init() {
}
void GnapEngine::scene41_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 500, SF_EXIT_L_CURSOR | SF_DISABLED);
setHotspot(kHSUfoExitRight, 790, 0, 799, 500, SF_EXIT_R_CURSOR);
@@ -88,10 +88,9 @@ void GnapEngine::scene41_updateHotspots() {
}
void GnapEngine::scene41_run() {
-
queueInsertDeviceIcon();
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoX = 770;
if (_toyUfoY < 0 || _toyUfoY > 300)
_toyUfoY = 150;
@@ -113,7 +112,7 @@ void GnapEngine::scene41_run() {
_gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
_gameSys->insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
- if (isFlag(12))
+ if (isFlag(kGFGnapControlsToyUFO))
_s41_currKidSequenceId = 0x11B;
else
_s41_currKidSequenceId = 0x11D;
@@ -130,7 +129,7 @@ void GnapEngine::scene41_run() {
_gameSys->insertSequence(_s41_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_gnapSequenceId = 0x120;
_gnapSequenceDatNum = 0;
_gnapIdleFacing = kDirUpRight;
@@ -163,11 +162,10 @@ void GnapEngine::scene41_run() {
_timers[5] = getRandom(30) + 20;
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094B))
playSound(0x1094B, 1);
- if (!isFlag(12)) {
+ if (!isFlag(kGFGnapControlsToyUFO)) {
_hotspots[kHSToyUfo]._x1 = _toyUfoX - 25;
_hotspots[kHSToyUfo]._y1 = _toyUfoY - 20;
_hotspots[kHSToyUfo]._x2 = _toyUfoX + 25;
@@ -182,7 +180,7 @@ void GnapEngine::scene41_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
@@ -339,10 +337,9 @@ void GnapEngine::scene41_run() {
gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
-
}
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
if (!_timers[9] && _gnapActionStatus < 0) {
_gnapActionStatus = kASGiveBackToyUfo;
if (_gnapSequenceId == 0x121 || _gnapSequenceId == 0x122) {
@@ -356,7 +353,7 @@ void GnapEngine::scene41_run() {
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
int sequenceId;
if (_leftClickMouseX >= 400) {
if (_gnapSequenceId == 0x11F || _gnapSequenceId == 0x120 || _gnapSequenceId == 0x123 || _gnapSequenceId == 0x126)
@@ -389,7 +386,7 @@ void GnapEngine::scene41_run() {
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
updateBeaverIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(12))
+ if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(100) + 100;
@@ -412,7 +409,7 @@ void GnapEngine::scene41_run() {
if (!_timers[5]) {
_timers[5] = getRandom(30) + 20;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
- if (isFlag(12))
+ if (isFlag(kGFGnapControlsToyUFO))
_s41_nextKidSequenceId = 0x11B;
else if (getRandom(3) != 0)
_s41_nextKidSequenceId = 0x11D;
@@ -481,7 +478,7 @@ void GnapEngine::scene41_updateAnimations() {
_s41_nextKidSequenceId = 0x11B;
_timers[5] = getRandom(30) + 20;
_gnapActionStatus = -1;
- setFlag(12);
+ setFlag(kGFGnapControlsToyUFO);
scene41_updateHotspots();
_timers[9] = 600;
}
@@ -532,7 +529,7 @@ void GnapEngine::scene41_updateAnimations() {
_s41_nextKidSequenceId = -1;
_timers[5] = getRandom(30) + 20;
_gnapActionStatus = -1;
- clearFlag(12);
+ clearFlag(kGFGnapControlsToyUFO);
scene41_updateHotspots();
}
break;
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 3aaedc8..94a59e7 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -66,7 +66,7 @@ int GnapEngine::scene42_init() {
}
void GnapEngine::scene42_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
@@ -99,7 +99,7 @@ void GnapEngine::scene42_run() {
_gameSys->setAnimation(0x14A, 1, 2);
_gameSys->insertSequence(_s42_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
if (_prevSceneNum == 43 && isFlag(18)) {
@@ -157,7 +157,7 @@ void GnapEngine::scene42_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
@@ -310,7 +310,7 @@ void GnapEngine::scene42_run() {
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoActionStatus = kASToyUfoRefresh;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
@@ -323,9 +323,9 @@ void GnapEngine::scene42_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12))
+ if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateBeaverIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(12))
+ if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 30;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index b4fe5bb..4793185 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -55,7 +55,7 @@ int GnapEngine::scene43_init() {
}
void GnapEngine::scene43_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
@@ -65,7 +65,7 @@ void GnapEngine::scene43_updateHotspots() {
if (isFlag(19))
_hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
// NOTE Bug in the original. Key hotspot wasn't disabled.
- if (isFlag(14))
+ if (isFlag(kGFUnk14))
_hotspots[kHSUfoKey]._flags = SF_DISABLED;
_hotspotsCount = 6;
} else {
@@ -79,7 +79,7 @@ void GnapEngine::scene43_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 445);
setHotspot(kHSWalkArea2, 465, 0, 800, 493);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(14))
+ if (isFlag(kGFUnk14))
_hotspots[kHSKey]._flags = SF_DISABLED;
_hotspotsCount = 10;
}
@@ -89,7 +89,7 @@ void GnapEngine::scene43_run() {
queueInsertDeviceIcon();
- if (!isFlag(14))
+ if (!isFlag(kGFUnk14))
_gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
_s43_currTwoHeadedGuySequenceId = 0x13C;
@@ -98,7 +98,7 @@ void GnapEngine::scene43_run() {
_gameSys->setAnimation(0x13C, 1, 2);
_gameSys->insertSequence(_s43_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
_toyUfoSequenceId = toyUfoGetSequenceId();
@@ -155,7 +155,7 @@ void GnapEngine::scene43_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
@@ -306,14 +306,12 @@ void GnapEngine::scene43_run() {
if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
}
-
}
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12) && (_toyUfoActionStatus == 5 || _toyUfoActionStatus == -1)) {
+ if (isFlag(kGFGnapControlsToyUFO) && (_toyUfoActionStatus == 5 || _toyUfoActionStatus == -1)) {
_toyUfoActionStatus = 5;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
@@ -326,11 +324,11 @@ void GnapEngine::scene43_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12))
+ if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateBeaverIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(12))
+ if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
- if (!_timers[4] && (!isFlag(12) || !isFlag(19))) {
+ if (!_timers[4] && (!isFlag(kGFGnapControlsToyUFO) || !isFlag(19))) {
_timers[4] = getRandom(100) + 100;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
switch (getRandom(5)) {
@@ -370,7 +368,7 @@ void GnapEngine::scene43_run() {
}
if (_newSceneNum == 54)
- clearFlag(12);
+ clearFlag(kGFGnapControlsToyUFO);
}
@@ -439,7 +437,7 @@ void GnapEngine::scene43_updateAnimations() {
case 6:
_gameSys->insertSequence(0x10871, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
_gameSys->removeSequence(0x1086F, 1, true);
- setFlag(14);
+ setFlag(kGFUnk14);
scene43_updateHotspots();
toyUfoSetStatus(18);
_toyUfoSequenceId = 0x871;
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index f664431..6e8a12a 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -54,7 +54,7 @@ int GnapEngine::scene44_init() {
}
void GnapEngine::scene44_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
@@ -71,7 +71,7 @@ void GnapEngine::scene44_updateHotspots() {
setHotspot(kHSWalkArea1, 0, 0, 800, 445);
setHotspot(kHSWalkArea2, 617, 0, 800, 600);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(13))
+ if (isFlag(kGFUnk13))
_hotspots[kHSKissingLady]._flags = SF_DISABLED;
if (isFlag(15))
_hotspots[kHSSpring]._flags = SF_DISABLED;
@@ -94,7 +94,7 @@ void GnapEngine::scene44_run() {
_gameSys->setAnimation(_s44_currSpringGuySequenceId, 1, 4);
_gameSys->insertSequence(_s44_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(13)) {
+ if (isFlag(kGFUnk13)) {
if (_prevSceneNum != 50 || _sceneSavegameLoaded) {
_s44_currKissingLadySequenceId = 0xF6;
_s44_nextKissingLadySequenceId = -1;
@@ -112,7 +112,7 @@ void GnapEngine::scene44_run() {
_gameSys->insertSequence(_s44_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
_toyUfoSequenceId = toyUfoGetSequenceId();
@@ -144,7 +144,7 @@ void GnapEngine::scene44_run() {
initGnapPos(4, 8, kDirBottomRight);
if (_sceneSavegameLoaded) {
initBeaverPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, kDirUnk4);
- } else if (!isFlag(13)) {
+ } else if (!isFlag(kGFUnk13)) {
_timers[0] = 50;
_timers[1] = 20;
_platX = 5;
@@ -179,10 +179,8 @@ void GnapEngine::scene44_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
-
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
-
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
_isLeavingScene = 1;
@@ -351,12 +349,11 @@ void GnapEngine::scene44_run() {
break;
}
-
}
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoActionStatus = 7;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
@@ -369,9 +366,9 @@ void GnapEngine::scene44_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12) && _s44_currKissingLadySequenceId != 0xF5)
+ if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
updateBeaverIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(12))
+ if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 3694362..55f6326 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -54,7 +54,7 @@ int GnapEngine::scene45_init() {
}
void GnapEngine::scene45_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
setHotspot(kHSUfoExitRight, 794, 0, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED);
@@ -97,7 +97,7 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(_s45_currDancerSequenceId, 1, 2);
_gameSys->insertSequence(_s45_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
_toyUfoSequenceId = toyUfoGetSequenceId();
@@ -138,7 +138,7 @@ void GnapEngine::scene45_run() {
gnapWalkTo(2, 7, -1, 0x107B9, 1);
}
- if (!isFlag(21) && !isFlag(12)) {
+ if (!isFlag(21) && !isFlag(kGFGnapControlsToyUFO)) {
setFlag(21);
setGrabCursorSprite(-1);
_gameSys->setAnimation(0x9D, _gnapId, 0);
@@ -193,7 +193,7 @@ void GnapEngine::scene45_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
@@ -328,7 +328,7 @@ void GnapEngine::scene45_run() {
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoActionStatus = 3;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
} else {
@@ -339,7 +339,7 @@ void GnapEngine::scene45_run() {
scene45_updateAnimations();
toyUfoCheckTimer();
- if (!_isLeavingScene && _gnapActionStatus < 0 && !isFlag(12))
+ if (!_isLeavingScene && _gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
checkGameKeys();
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index f7fdc87..29a8608 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -53,7 +53,7 @@ int GnapEngine::scene46_init() {
}
void GnapEngine::scene46_updateHotspots() {
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
@@ -88,7 +88,7 @@ void GnapEngine::scene46_run() {
_gameSys->setAnimation(0x47, 1, 4);
_gameSys->insertSequence(_s46_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
_toyUfoSequenceId = toyUfoGetSequenceId();
@@ -136,7 +136,7 @@ void GnapEngine::scene46_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
@@ -268,7 +268,7 @@ void GnapEngine::scene46_run() {
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
- if (isFlag(12)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoActionStatus = 4;
toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
@@ -281,9 +281,9 @@ void GnapEngine::scene46_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(12))
+ if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateBeaverIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(12))
+ if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(50) + 80;
diff --git a/engines/gnap/scenes/scene50.cpp b/engines/gnap/scenes/scene50.cpp
index cd5b700..2ec842a 100644
--- a/engines/gnap/scenes/scene50.cpp
+++ b/engines/gnap/scenes/scene50.cpp
@@ -61,7 +61,7 @@ void GnapEngine::scene50_playWinAnim(int tongueNum, bool fightOver) {
scene50_waitForAnim(6);
scene50_waitForAnim(5);
invAdd(kItemGum);
- setFlag(13);
+ setFlag(kGFUnk13);
} else {
_gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 734c737..20d591f 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -588,7 +588,7 @@ void GnapEngine::runSceneLogic() {
} else if (_prevSceneNum == 13) {
scene47_initCutscene2();
_newSceneNum = 11;
- } else if (!isFlag(10) && _prevSceneNum == 2) {//CHECKME
+ } else if (!isFlag(kGFPlatyPussDisguised) && _prevSceneNum == 2) {//CHECKME
if (isFlag(25)) {
scene47_initCutscene3();
_newSceneNum = 2;
@@ -604,7 +604,7 @@ void GnapEngine::runSceneLogic() {
} else if (_prevSceneNum == 30) {
scene47_initCutscene6();
_newSceneNum = 26;
- } else if (isFlag(10) && _cursorValue == 1) {
+ } else if (isFlag(kGFPlatyPussDisguised) && _cursorValue == 1) {
scene47_initCutscene7();
_newSceneNum = 4;
}
Commit: 11c0fa8fed6d19bddc112a9d378f7895d4b7e21f
https://github.com/scummvm/scummvm/commit/11c0fa8fed6d19bddc112a9d378f7895d4b7e21f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Replace more flags values by enums (WIP)
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene53.cpp
engines/gnap/scenes/scene54.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 631f70c..e408cd8 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2175,27 +2175,27 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
}
void GnapEngine::toyUfoSetStatus(int flagNum) {
- clearFlag(16);
- clearFlag(17);
- clearFlag(18);
- clearFlag(19);
+ clearFlag(kGFUnk16);
+ clearFlag(kGFJointTaken);
+ clearFlag(kGFUnk18);
+ clearFlag(kGFGroceryStoreHatTaken);
setFlag(flagNum);
}
int GnapEngine::toyUfoGetSequenceId() {
- if (isFlag(16))
+ if (isFlag(kGFUnk16))
return 0x84E;
- if (isFlag(17))
+ if (isFlag(kGFJointTaken))
return 0x84B;
- if (isFlag(18))
+ if (isFlag(kGFUnk18))
return 0x84D;
- if (isFlag(19))
+ if (isFlag(kGFGroceryStoreHatTaken))
return 0x84C;
return 0x84E;
}
bool GnapEngine::toyUfoCheckTimer() {
- if (!isFlag(kGFGnapControlsToyUFO) || isFlag(18) || _timers[9] ||
+ if (!isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk18) || _timers[9] ||
_toyUfoSequenceId == 0x870 || _toyUfoSequenceId == 0x871 || _toyUfoSequenceId == 0x872 || _toyUfoSequenceId == 0x873)
return false;
_sceneDone = true;
@@ -2273,13 +2273,13 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
if (i - 1 > 0) {
int seqId;
- if (isFlag(16))
+ if (isFlag(kGFUnk16))
seqId = 0x867;
- else if (isFlag(17))
+ else if (isFlag(kGFJointTaken))
seqId = 0x84F;
- else if (isFlag(18))
+ else if (isFlag(kGFUnk18))
seqId = 0x85F;
- else if (isFlag(19))
+ else if (isFlag(kGFGroceryStoreHatTaken))
seqId = 0x857;
v16[0].sequenceId = seqId;
v16[0].id = 0;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index bfffcbd..8a04b2d 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -165,10 +165,10 @@ void GnapEngine::scene13_run() {
gnapWalkTo(2, 7, 0, 0x107C0, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(2, 8, -1, -1, 1);
- if (isFlag(kGFUnk14) || isFlag(15)) {
+ if (isFlag(kGFUnk14) || isFlag(kGFSpringTaken)) {
_newSceneNum = 11;
} else {
- setFlag(15);
+ setFlag(kGFSpringTaken);
_newSceneNum = 47;
}
break;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 8c07a0a..fa18a22 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -145,7 +145,7 @@ void GnapEngine::scene17_run() {
}
}
- if (isFlag(19))
+ if (isFlag(kGFGroceryStoreHatTaken))
_gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
@@ -172,7 +172,7 @@ void GnapEngine::scene17_run() {
_s17_canTryGetWrench = true;
- if (isFlag(18))
+ if (isFlag(kGFUnk18))
_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
if (_prevSceneNum == 53 || _prevSceneNum == 18 || _prevSceneNum == 20 || _prevSceneNum == 19) {
@@ -192,8 +192,8 @@ void GnapEngine::scene17_run() {
_beaverSequenceId = 0x25A;
_beaverSequenceDatNum = 0;
endSceneInit();
- clearFlag(15);
- clearFlag(16);
+ clearFlag(kGFSpringTaken);
+ clearFlag(kGFUnk16);
_beaverActionStatus = kASPlatPhoningAssistant;
scene17_platHangUpPhone();
_gameSys->setAnimation(0, 0, 4);
@@ -201,8 +201,8 @@ void GnapEngine::scene17_run() {
clearFlag(27);
scene17_updateHotspots();
} else if (isFlag(25)) {
- clearFlag(15);
- clearFlag(16);
+ clearFlag(kGFSpringTaken);
+ clearFlag(kGFUnk16);
initBeaverPos(7, 9, kDirNone);
_gnapX = _hotspotsWalkPos[2].x;
_gnapY = _hotspotsWalkPos[2].y;
@@ -217,8 +217,8 @@ void GnapEngine::scene17_run() {
_gameSys->setAnimation(0x257, 254, 0);
_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
} else if (isFlag(26)) {
- clearFlag(15);
- clearFlag(16);
+ clearFlag(kGFSpringTaken);
+ clearFlag(kGFUnk16);
_sceneWaiting = true;
initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
@@ -240,7 +240,7 @@ void GnapEngine::scene17_run() {
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, kDirBottomRight);
initBeaverPos(1, 9, kDirNone);
endSceneInit();
@@ -249,8 +249,8 @@ void GnapEngine::scene17_run() {
initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
- clearFlag(15);
- clearFlag(16);
+ clearFlag(kGFSpringTaken);
+ clearFlag(kGFUnk16);
endSceneInit();
}
} else {
@@ -372,7 +372,7 @@ void GnapEngine::scene17_run() {
playGnapScratchingHead(1, 3);
break;
case GRAB_CURSOR:
- if (isFlag(18)) {
+ if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y) | 0x10000, 1);
_gnapActionStatus = kASGetCoinFromPhone;
@@ -383,13 +383,13 @@ void GnapEngine::scene17_run() {
playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(18)) {
+ if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
gnapUseDeviceOnBeaver();
_beaverFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- setFlag(16);
+ setFlag(kGFUnk16);
_beaverActionStatus = kASPlatUsePhone;
_gnapActionStatus = kASPlatUsePhone;
} else
@@ -413,13 +413,13 @@ void GnapEngine::scene17_run() {
playGnapScratchingHead(1, 3);
break;
case GRAB_CURSOR:
- if (isFlag(18)) {
+ if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
_gnapIdleFacing = kDirUpLeft;
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGnapUsePhone;
- setFlag(15);
+ setFlag(kGFSpringTaken);
} else
playGnapImpossible(0, 0);
break;
@@ -427,13 +427,13 @@ void GnapEngine::scene17_run() {
playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(18)) {
+ if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
gnapUseDeviceOnBeaver();
_beaverFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- setFlag(16);
+ setFlag(kGFUnk16);
_beaverActionStatus = kASPlatUsePhone;
_gnapActionStatus = kASPlatUsePhone;
} else
@@ -603,7 +603,7 @@ void GnapEngine::scene17_updateAnimations() {
_gameSys->setAnimation(0x250, 100, 0);
_gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
invAdd(kItemDiceQuarterHole);
- clearFlag(18);
+ clearFlag(kGFUnk18);
_gnapActionStatus = kASGetCoinFromPhoneDone;
break;
case kASGetCoinFromPhoneDone:
@@ -617,7 +617,7 @@ void GnapEngine::scene17_updateAnimations() {
_gnapSequenceId = 0x24C;
invRemove(kItemDiceQuarterHole);
setGrabCursorSprite(-1);
- setFlag(18);
+ setFlag(kGFUnk18);
_gnapActionStatus = kASPutCoinIntoPhoneDone;
break;
case kASPutCoinIntoPhoneDone:
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 755a9f7..3676ada 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -640,7 +640,7 @@ void GnapEngine::scene18_run() {
scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
scene18_putDownGarbageCan(0);
}
- if (isFlag(20)) {
+ if (isFlag(kGFPictureTaken)) {
playGnapImpossible(0, 0);
} else {
_isLeavingScene = 1;
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index 9dfd69e..ba6ab19 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -106,7 +106,7 @@ void GnapEngine::scene19_run() {
_gameSys->insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(20))
+ if (!isFlag(kGFPictureTaken))
_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(26)) {
@@ -203,7 +203,7 @@ void GnapEngine::scene19_run() {
playGnapScratchingHead(6, 2);
break;
case GRAB_CURSOR:
- if (!isFlag(20)) {
+ if (!isFlag(kGFPictureTaken)) {
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y) | 0x10000, 1);
_gnapActionStatus = kASGrabPicture;
}
@@ -316,7 +316,7 @@ void GnapEngine::scene19_run() {
_timers[6] = getRandom(40) + 50;
if (getRandom(4) != 0) {
_s19_nextShopAssistantSequenceId = 0x64;
- } else if (isFlag(20)) {
+ } else if (isFlag(kGFPictureTaken)) {
_s19_nextShopAssistantSequenceId = 0x64;
} else {
_s19_nextShopAssistantSequenceId = 0x6C;
@@ -373,7 +373,7 @@ void GnapEngine::scene19_updateAnimations() {
_gameSys->setAnimation(0x68, 19, 0);
_gameSys->insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
invAdd(kItemPicture);
- setFlag(20);
+ setFlag(kGFPictureTaken);
scene19_updateHotspots();
_gnapActionStatus = kASGrabPictureDone;
break;
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index dd8dcfb..2301d29 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -96,7 +96,7 @@ void GnapEngine::scene20_updateAnimationsCb() {
_s20_currStonerGuySequenceId = 0x16A;
_s20_nextStonerGuySequenceId = -1;
invAdd(kItemJoint);
- setFlag(17);
+ setFlag(kGFJointTaken);
_s20_stonerGuyShowingJoint = false;
_gnapActionStatus = kASGrabJointDone;
break;
@@ -212,7 +212,7 @@ void GnapEngine::scene20_run() {
_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
_timers[5] = getRandom(50) + 130;
- if (isFlag(19))
+ if (isFlag(kGFGroceryStoreHatTaken))
_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
else
_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
@@ -404,7 +404,7 @@ void GnapEngine::scene20_run() {
case TALK_CURSOR:
_gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- if (isFlag(17))
+ if (isFlag(kGFJointTaken))
_gnapActionStatus = kASTalkStonerGuyNoJoint;
else
_gnapActionStatus = kASTalkStonerGuyHasJoint;
@@ -639,7 +639,7 @@ void GnapEngine::scene20_updateAnimations() {
break;
case kASSwitchGroceryStoreHatDone:
_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
- setFlag(19);
+ setFlag(kGFGroceryStoreHatTaken);
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(0x12C, 255);
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index fb2e0cc..55b5b07 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -43,7 +43,7 @@ enum {
};
int GnapEngine::scene26_init() {
- return isFlag(23) ? 0x61 : 0x60;
+ return isFlag(kGFUnk23) ? 0x61 : 0x60;
}
void GnapEngine::scene26_updateHotspots() {
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index a2831e9..d175fdf 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -66,7 +66,7 @@ void GnapEngine::scene28_updateHotspots() {
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (invHas(kItemHorn))
_hotspots[kHSHorn]._flags = SF_DISABLED;
- if (isFlag(22))
+ if (isFlag(kGFUnk22))
_hotspots[kHSEmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspotsCount = 8;
}
@@ -78,11 +78,11 @@ void GnapEngine::scene28_run() {
queueInsertDeviceIcon();
_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(22))
+ if (isFlag(kGFUnk22))
_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
if (isFlag(kGFMudTaken)) {
- if (isFlag(21)) {
+ if (isFlag(kGFUnk21)) {
_gameSys->setAnimation(0x11C, 39, 3);
_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
if (!invHas(kItemHorn))
@@ -170,7 +170,7 @@ void GnapEngine::scene28_run() {
playGnapScratchingHead(2, 4);
break;
case GRAB_CURSOR:
- if (isFlag(21)) {
+ if (isFlag(kGFUnk21)) {
if (!invHas(kItemHorn)) {
gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y) | 0x10000, 1);
_gnapActionStatus = kASGrabHornSuccess;
@@ -195,7 +195,7 @@ void GnapEngine::scene28_run() {
case kHSClown:
if (_gnapActionStatus < 0) {
- if (isFlag(21)) {
+ if (isFlag(kGFUnk21)) {
if (_verbCursor == LOOK_CURSOR)
playGnapScratchingHead(5, 2);
else
@@ -249,7 +249,7 @@ void GnapEngine::scene28_run() {
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowItem(_grabCursorSpriteIndex, 8, 6);
- } else if (isFlag(21)) {
+ } else if (isFlag(kGFUnk21)) {
playGnapImpossible(8, 6);
} else {
switch (_verbCursor) {
@@ -294,7 +294,7 @@ void GnapEngine::scene28_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 80;
- if (_gnapActionStatus < 0 && !isFlag(21))
+ if (_gnapActionStatus < 0 && !isFlag(kGFUnk21))
_s28_nextClownSequenceId = 0x114;
}
}
@@ -319,7 +319,7 @@ void GnapEngine::scene28_updateAnimations() {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
case kASUseBeerBucketWithClown:
- setFlag(22);
+ setFlag(kGFUnk22);
_s28_nextClownSequenceId = 0x113;
invRemove(kItemBucketWithBeer);
scene28_updateHotspots();
@@ -327,8 +327,8 @@ void GnapEngine::scene28_updateAnimations() {
case kASUsePillBucketWithClown:
_s28_nextClownSequenceId = 0x116;
invRemove(kItemBucketWithPill);
- setFlag(22);
- setFlag(21);
+ setFlag(kGFUnk22);
+ setFlag(kGFUnk21);
scene28_updateHotspots();
break;
case kASGrabHornFails:
@@ -365,7 +365,7 @@ void GnapEngine::scene28_updateAnimations() {
break;
case kASGrabEmptyBucketDone:
setGrabCursorSprite(kItemEmptyBucket);
- clearFlag(22);;
+ clearFlag(kGFUnk22);;
scene28_updateHotspots();
invAdd(kItemEmptyBucket);
_gnapActionStatus = -1;
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index cad83ae..6b9504d 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -44,7 +44,7 @@ enum {
};
int GnapEngine::scene30_init() {
- return isFlag(23) ? 0x10B : 0x10A;
+ return isFlag(kGFUnk23) ? 0x10B : 0x10A;
}
void GnapEngine::scene30_updateHotspots() {
@@ -64,7 +64,7 @@ void GnapEngine::scene30_run() {
queueInsertDeviceIcon();
- if (isFlag(23))
+ if (isFlag(kGFUnk23))
_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(kGFUnk13))
@@ -126,7 +126,7 @@ void GnapEngine::scene30_run() {
case kHSPillMachine:
if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole && !isFlag(23)) {
+ if (_grabCursorSpriteIndex == kItemDiceQuarterHole && !isFlag(kGFUnk23)) {
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
@@ -203,7 +203,7 @@ void GnapEngine::scene30_run() {
if (!_timers[5]) {
_timers[5] = getRandom(50) + 180;
if (_gnapActionStatus < 0) {
- if (!isFlag(23) || hasTakenPill)
+ if (!isFlag(kGFUnk23) || hasTakenPill)
_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
@@ -257,7 +257,7 @@ void GnapEngine::scene30_updateAnimations() {
showCursor();
_gnapActionStatus = kASUsePillMachine3;
invAdd(kItemPill);
- setFlag(23);
+ setFlag(kGFUnk23);
break;
case kASUsePillMachine3:
_gameSys->setAnimation(0x104, _gnapId, 0);
@@ -273,7 +273,7 @@ void GnapEngine::scene30_updateAnimations() {
_gnapActionStatus = -1;
break;
case kASLookPillMachine:
- if (isFlag(23))
+ if (isFlag(kGFUnk23))
showFullScreenSprite(0xE3);
else
showFullScreenSprite(0xE2);
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index 99b62f6..fe95742 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -41,7 +41,7 @@ enum {
int GnapEngine::scene40_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
- return isFlag(23) ? 0x01 : 0x00;
+ return isFlag(kGFUnk23) ? 0x01 : 0x00;
}
void GnapEngine::scene40_updateHotspots() {
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 6c50a34..92222b5 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -97,7 +97,7 @@ void GnapEngine::scene41_run() {
if (!_timers[9])
_gnapActionStatus = kASGiveBackToyUfo;
} else {
- if (!isFlag(16) && !isFlag(17) && !isFlag(18) && !isFlag(19))
+ if (!isFlag(kGFUnk16) && !isFlag(kGFJointTaken) && !isFlag(kGFUnk18) && !isFlag(kGFGroceryStoreHatTaken))
toyUfoSetStatus(16);
_toyUfoX = 600;
_toyUfoY = 200;
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 94a59e7..7e032e4 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -60,7 +60,7 @@ int GnapEngine::scene42_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0, 0, 2);
- if (isFlag(20) || (isFlag(18) && isFlag(23)))
+ if (isFlag(kGFPictureTaken) || (isFlag(kGFUnk18) && isFlag(kGFUnk23)))
return 0x153;
return 0x152;
}
@@ -72,7 +72,7 @@ void GnapEngine::scene42_updateHotspots() {
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if ((isFlag(20) || isFlag(18)) && isFlag(23) && !isFlag(24))
+ if ((isFlag(kGFPictureTaken) || isFlag(kGFUnk18)) && isFlag(kGFUnk23) && !isFlag(24))
_hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
_hotspotsCount = 5;
} else {
@@ -102,14 +102,14 @@ void GnapEngine::scene42_run() {
if (isFlag(kGFGnapControlsToyUFO)) {
_toyUfoId = 0;
_toyUfoActionStatus = -1;
- if (_prevSceneNum == 43 && isFlag(18)) {
+ if (_prevSceneNum == 43 && isFlag(kGFUnk18)) {
_toyUfoSequenceId = 0x872;
_toyUfoNextSequenceId = toyUfoGetSequenceId();
_gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
_toyUfoX = 317;
_toyUfoY = 61;
toyUfoSetStatus(17);
- setFlag(20);
+ setFlag(kGFPictureTaken);
_timers[9] = 600;
} else {
_toyUfoSequenceId = toyUfoGetSequenceId();
@@ -180,7 +180,7 @@ void GnapEngine::scene42_run() {
break;
case kHSUfoHotSauce:
- if (isFlag(17)) {
+ if (isFlag(kGFJointTaken)) {
_toyUfoActionStatus = kASToyUfoPickUpHotSauce;
toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
_timers[9] = 600;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 4793185..a421482 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -62,7 +62,7 @@ void GnapEngine::scene43_updateHotspots() {
setHotspot(kHSUfoKey, 140, 170, 185, 260, SF_GRAB_CURSOR);
setHotspot(kHSUfoBucket, 475, 290, 545, 365, SF_DISABLED);
setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if (isFlag(19))
+ if (isFlag(kGFGroceryStoreHatTaken))
_hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
// NOTE Bug in the original. Key hotspot wasn't disabled.
if (isFlag(kGFUnk14))
@@ -184,7 +184,7 @@ void GnapEngine::scene43_run() {
break;
case kHSUfoKey:
- if (isFlag(17)) {
+ if (isFlag(kGFJointTaken)) {
_toyUfoActionStatus = 6;
toyUfoFlyTo(163, 145, 0, 799, 0, 300, 3);
} else {
@@ -328,7 +328,7 @@ void GnapEngine::scene43_run() {
updateBeaverIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
- if (!_timers[4] && (!isFlag(kGFGnapControlsToyUFO) || !isFlag(19))) {
+ if (!_timers[4] && (!isFlag(kGFGnapControlsToyUFO) || !isFlag(kGFGroceryStoreHatTaken))) {
_timers[4] = getRandom(100) + 100;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
switch (getRandom(5)) {
@@ -407,7 +407,7 @@ void GnapEngine::scene43_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
if (_s43_currTwoHeadedGuySequenceId == 0x13A) {
- if (isFlag(19)) {
+ if (isFlag(kGFGroceryStoreHatTaken)) {
_s43_nextTwoHeadedGuySequenceId = 0x13E;
stopSound(0x108F6);
} else if (getRandom(2) != 0) {
@@ -451,7 +451,7 @@ void GnapEngine::scene43_updateAnimations() {
_toyUfoSequenceId = 0x874;
_gameSys->setAnimation(0x10874, _toyUfoId, 3);
_toyUfoActionStatus = 8;
- setFlag(17);
+ setFlag(kGFJointTaken);
_gnapActionStatus = 3;
break;
case 8:
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 6e8a12a..48dd1fd 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -73,7 +73,7 @@ void GnapEngine::scene44_updateHotspots() {
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(kGFUnk13))
_hotspots[kHSKissingLady]._flags = SF_DISABLED;
- if (isFlag(15))
+ if (isFlag(kGFSpringTaken))
_hotspots[kHSSpring]._flags = SF_DISABLED;
_hotspotsCount = 10;
}
@@ -85,7 +85,7 @@ void GnapEngine::scene44_run() {
_gameSys->insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(15))
+ if (isFlag(kGFSpringTaken))
_s44_currSpringGuySequenceId = 0xF8;
else
_s44_currSpringGuySequenceId = 0xF9;
@@ -306,7 +306,7 @@ void GnapEngine::scene44_run() {
playGnapUseDevice(8, 0);
_s44_nextSpringGuySequenceId = 0xFB;
invAdd(kItemSpring);
- setFlag(15);
+ setFlag(kGFSpringTaken);
scene44_updateHotspots();
break;
case TALK_CURSOR:
@@ -325,7 +325,7 @@ void GnapEngine::scene44_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(15))
+ if (isFlag(kGFSpringTaken))
playGnapMoan1(8, 7);
else
playGnapScratchingHead(8, 7);
@@ -401,10 +401,10 @@ void GnapEngine::scene44_run() {
_timers[5] = getRandom(20) + 20;
if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
if (getRandom(5) != 0) {
- if (!isFlag(15))
+ if (!isFlag(kGFSpringTaken))
_s44_nextSpringGuySequenceId = 0xF9;
} else {
- if (isFlag(15))
+ if (isFlag(kGFSpringTaken))
_s44_nextSpringGuySequenceId = 0xF8;
else
_s44_nextSpringGuySequenceId = 0xFA;
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 55f6326..daad788 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -50,7 +50,7 @@ int GnapEngine::scene45_init() {
_gameSys->setAnimation(0, 0, 3);
_gameSys->setAnimation(0, 0, 4);
_gameSys->setAnimation(0, 0, 5);
- return isFlag(23) ? 0xA2 : 0xA1;
+ return isFlag(kGFUnk23) ? 0xA2 : 0xA1;
}
void GnapEngine::scene45_updateHotspots() {
@@ -69,14 +69,14 @@ void GnapEngine::scene45_updateHotspots() {
setHotspot(kHSDiscoBall, 370, 10, 470, 125, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
setHotspot(kHSWalkArea1, 0, 0, 800, 472);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(22)) {
+ if (isFlag(kGFUnk22)) {
_hotspots[kHSPlatypus]._flags = SF_DISABLED;
_hotspots[kHSExitUfoParty]._flags = SF_DISABLED;
_hotspots[kHSExitShoe]._flags = SF_DISABLED;
_hotspots[kHSExitRight]._flags = SF_DISABLED;
_hotspots[kHSExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
}
- if (isFlag(23) || isFlag(22))
+ if (isFlag(kGFUnk23) || isFlag(kGFUnk22))
_hotspots[kHSDiscoBall]._flags = SF_DISABLED;
_hotspotsCount = 8;
}
@@ -109,7 +109,7 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 5);
_gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
endSceneInit();
- } else if (isFlag(22)) {
+ } else if (isFlag(kGFUnk22)) {
_gnapSequenceId = 0x9E;
_gnapSequenceDatNum = 0;
_gnapId = 1;
@@ -138,8 +138,8 @@ void GnapEngine::scene45_run() {
gnapWalkTo(2, 7, -1, 0x107B9, 1);
}
- if (!isFlag(21) && !isFlag(kGFGnapControlsToyUFO)) {
- setFlag(21);
+ if (!isFlag(kGFUnk21) && !isFlag(kGFGnapControlsToyUFO)) {
+ setFlag(kGFUnk21);
setGrabCursorSprite(-1);
_gameSys->setAnimation(0x9D, _gnapId, 0);
_gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
@@ -287,8 +287,8 @@ void GnapEngine::scene45_run() {
break;
case kHSExitDiscoBall:
- clearFlag(22);
- setFlag(23);
+ clearFlag(kGFUnk22);
+ setFlag(kGFUnk23);
_sceneDone = true;
_newSceneNum = 54;
break;
@@ -368,7 +368,7 @@ void GnapEngine::scene45_updateAnimations() {
break;
case 1:
_sceneWaiting = 1;
- setFlag(22);
+ setFlag(kGFUnk22);
scene45_updateHotspots();
_gameSys->insertSequence(0x9E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9E;
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index daa39b5..5d73528 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -151,7 +151,7 @@ void GnapEngine::scene53_runChitChatLine() {
}
_gnapActionStatus = -1;
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
_gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s53_currHandSequenceId = 0x45;
} else {
@@ -236,7 +236,7 @@ void GnapEngine::scene53_runChitChatLine() {
_gnapActionStatus = 1;
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
_gameSys->setAnimation(0x73, 40, 6);
_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(6) != 2) {
@@ -256,7 +256,7 @@ void GnapEngine::scene53_run() {
queueInsertDeviceIcon();
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
_s53_currHandSequenceId = 0x45;
_s53_isGnapPhoning = true;
} else {
@@ -305,7 +305,7 @@ void GnapEngine::scene53_run() {
debug("phoneNumber: %d", phoneNumber);
if (phoneNumberLen == 7) {
_gnapActionStatus = 1;
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
_gameSys->setAnimation(0x73, 40, 6);
_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(6) != 2) {
@@ -322,7 +322,7 @@ void GnapEngine::scene53_run() {
phoneNumberLen = 0;
_sceneDone = true;
_newSceneNum = 17;
- } else if (phoneNumber != 5556789 || isFlag(20)) {
+ } else if (phoneNumber != 5556789 || isFlag(kGFPictureTaken)) {
scene53_runRandomCall();
phoneNumber = 0;
phoneNumberLen = 0;
@@ -347,7 +347,7 @@ void GnapEngine::scene53_run() {
case 14:
if (_gnapActionStatus < 0) {
_gnapActionStatus = 1;
- if (isFlag(15)) {
+ if (isFlag(kGFSpringTaken)) {
_gameSys->setAnimation(0x73, 40, 6);
_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(6) != 2) {
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
index 387b17c..b6e4be9 100644
--- a/engines/gnap/scenes/scene54.cpp
+++ b/engines/gnap/scenes/scene54.cpp
@@ -36,7 +36,7 @@ void GnapEngine::scene54_initCutscene1() {
_s99_resourceIdArr[0] = 0x3C;
_s99_resourceIdArr[1] = 0x43;
_s99_resourceIdArr[2] = 0x44;
- if (isFlag(20))
+ if (isFlag(kGFPictureTaken))
_s99_resourceIdArr[3] = 0x47;
else
_s99_resourceIdArr[3] = 0x46;
Commit: efa9466c815c6e1eaf913af0211a242d70c50e74
https://github.com/scummvm/scummvm/commit/efa9466c815c6e1eaf913af0211a242d70c50e74
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Replace more flags values by enums
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene53.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e408cd8..08b8f95 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -674,7 +674,7 @@ void GnapEngine::initGameFlags(int num) {
invAdd(kItemMagazine);
switch (num) {
case 1:
- setFlag(26);
+ setFlag(kGFPlatypusTalkingToAssistant);
break;
case 2:
clearFlags();
@@ -702,7 +702,7 @@ void GnapEngine::initGameFlags(int num) {
//DEBUG!
#if 0
// setFlag(kGFPlatypus); // Enable platypus
- setFlag(25);
+ setFlag(kGFUnk25);
invClear();
invAdd(kItemMagazine);
#endif
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 8c3bcae..e8de9da 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -634,7 +634,7 @@ void GnapEngine::synchronize(Common::Serializer &s) {
s.syncAsUint32LE(_inventory);
s.syncAsUint32LE(_gameFlags);
- if (s.isLoading() && isFlag(24)) {
+ if (s.isLoading() && isFlag(kGFUnk24)) {
_timers[9] = 600;
}
}
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index b285972..e1b4d2a 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -119,7 +119,7 @@ void GnapEngine::scene02_run() {
_gameSys->waitForUpdate();
break;
case 47:
- clearFlag(25);
+ clearFlag(kGFUnk25);
initGnapPos(5, 6, kDirBottomLeft);
initBeaverPos(6, 7, kDirUnk4);
endSceneInit();
@@ -454,7 +454,7 @@ void GnapEngine::scene02_updateAnimations() {
}
_newSceneNum = 47;
_sceneDone = true;
- setFlag(25);
+ setFlag(kGFUnk25);
break;
case kASGrabTruckGrill:
switch (_s02_truckGrillCtr) {
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index b85bbe7..6204971 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -77,7 +77,7 @@ void GnapEngine::scene04_updateHotspots() {
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (isFlag(kGFTwigTaken))
_hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(26) || _cursorValue == 1)
+ if (isFlag(kGFPlatypusTalkingToAssistant) || _cursorValue == 1)
_hotspots[kHSAxe]._flags = SF_DISABLED;
_hotspotsCount = 11;
}
@@ -99,7 +99,7 @@ void GnapEngine::scene04_run() {
_timers[7] = getRandom(150) + 200;
_timers[8] = getRandom(150) + 400;
- if (!isFlag(26) && _cursorValue == 4)
+ if (!isFlag(kGFPlatypusTalkingToAssistant) && _cursorValue == 4)
_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(kGFTwigTaken))
@@ -245,7 +245,7 @@ void GnapEngine::scene04_run() {
_gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_gnapActionStatus = kASGrabAxe;
- setFlag(26);
+ setFlag(kGFPlatypusTalkingToAssistant);
scene04_updateHotspots();
break;
case TALK_CURSOR:
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 13c6108..c051f80 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -72,7 +72,7 @@ void GnapEngine::scene06_updateHotspots() {
setHotspot(kHSWalkArea4, 475, 469, 800, 505);
setHotspot(kHSWalkArea5, 0, 0, 800, 504);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(29))
+ if (isFlag(kGFGasTaken))
_hotspots[kHSLadder]._flags = SF_DISABLED;
if (_cursorValue == 4) {
_hotspots[kHSLadder]._flags = SF_DISABLED;
@@ -101,7 +101,7 @@ void GnapEngine::scene06_run() {
else
_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(29) && _cursorValue != 4)
+ if (!isFlag(kGFGasTaken) && _cursorValue != 4)
_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
queueInsertDeviceIcon();
@@ -205,12 +205,12 @@ void GnapEngine::scene06_run() {
playGnapScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- if (isFlag(29))
+ if (isFlag(kGFGasTaken))
playGnapImpossible(0, 0);
else {
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107BB, 1);
_gnapActionStatus = kASTryToClimbLadder;
- setFlag(29);
+ setFlag(kGFGasTaken);
}
break;
case TALK_CURSOR:
@@ -382,7 +382,7 @@ void GnapEngine::scene06_updateAnimations() {
if (_beaverSequenceId == 0xFA) {
_gameSys->setAnimation(0, 0, 1);
invAdd(kItemGas);
- setFlag(29);
+ setFlag(kGFGasTaken);
_hotspots[kHSLadder]._flags = SF_DISABLED;
setGrabCursorSprite(kItemGas);
_beaverActionStatus = -1;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index fa18a22..849e063 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -74,7 +74,7 @@ void GnapEngine::scene17_updateHotspots() {
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(kGFGrassTaken))
_hotspots[kHSWrench]._flags = SF_NONE;
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
_hotspots[kHSDevice]._flags = SF_DISABLED;
_hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
@@ -109,7 +109,7 @@ void GnapEngine::scene17_platHangUpPhone() {
_beaverSequenceDatNum = 0;
_s17_currPhoneSequenceId = -1;
_s17_nextPhoneSequenceId = -1;
- clearFlag(26);
+ clearFlag(kGFPlatypusTalkingToAssistant);
while (_gameSys->getAnimationStatus(1) != 2)
gameUpdateTick();
_gnapActionStatus = savedGnapActionStatus;
@@ -182,7 +182,7 @@ void GnapEngine::scene17_run() {
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
- } else if (isFlag(27)) {
+ } else if (isFlag(kGFUnk27)) {
initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
_platY = _hotspotsWalkPos[2].y;
@@ -197,10 +197,10 @@ void GnapEngine::scene17_run() {
_beaverActionStatus = kASPlatPhoningAssistant;
scene17_platHangUpPhone();
_gameSys->setAnimation(0, 0, 4);
- clearFlag(26);
- clearFlag(27);
+ clearFlag(kGFPlatypusTalkingToAssistant);
+ clearFlag(kGFUnk27);
scene17_updateHotspots();
- } else if (isFlag(25)) {
+ } else if (isFlag(kGFUnk25)) {
clearFlag(kGFSpringTaken);
clearFlag(kGFUnk16);
initBeaverPos(7, 9, kDirNone);
@@ -211,12 +211,12 @@ void GnapEngine::scene17_run() {
_gnapSequenceDatNum = 0;
_gnapSequenceId = 601;
_gnapActionStatus = kASGnapHangUpPhone;
- clearFlag(25);
+ clearFlag(kGFUnk25);
_gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
_gameSys->setAnimation(0x257, 254, 0);
_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
- } else if (isFlag(26)) {
+ } else if (isFlag(kGFPlatypusTalkingToAssistant)) {
clearFlag(kGFSpringTaken);
clearFlag(kGFUnk16);
_sceneWaiting = true;
@@ -683,7 +683,7 @@ void GnapEngine::scene17_updateAnimations() {
_beaverSequenceDatNum = 0;
_beaverSequenceId = 0x25B;
_beaverActionStatus = -1;
- clearFlag(26);
+ clearFlag(kGFPlatypusTalkingToAssistant);
_sceneWaiting = false;
scene17_updateHotspots();
} else {
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 3676ada..8faeb64 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -112,7 +112,7 @@ void GnapEngine::scene18_updateHotspots() {
}
if (isFlag(kGFPlatyPussDisguised))
_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
_hotspots[kHSDevice]._flags = SF_DISABLED;
_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
@@ -258,7 +258,7 @@ void GnapEngine::scene18_putDownGarbageCan(int animationIndex) {
}
void GnapEngine::scene18_platEndPhoning(bool platFl) {
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
_s18_platPhoneIter = 0;
_s18_platPhoneCtr = 0;
_beaverActionStatus = -1;
@@ -270,7 +270,7 @@ void GnapEngine::scene18_platEndPhoning(bool platFl) {
}
_gameSys->removeSequence(0x21F, 254, true);
_gameSys->setAnimation(0, 0, 3);
- clearFlag(26);
+ clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
_beaverActionStatus = kASPlatComesHere;
_timers[6] = 50;
@@ -345,18 +345,18 @@ void GnapEngine::scene18_run() {
}
}
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
if (_prevSceneNum == 17)
initGnapPos(4, 11, kDirBottomRight);
else
initGnapPos(4, 7, kDirBottomRight);
_s18_platPhoneCtr = getRandom(5);
- if (isFlag(27)) {
+ if (isFlag(kGFUnk27)) {
_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
_s18_currPhoneSequenceId = -1;
scene18_platEndPhoning(true);
- clearFlag(27);
+ clearFlag(kGFUnk27);
} else {
_s18_currPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr];
_s18_platPhoneIter = 0;
@@ -364,9 +364,9 @@ void GnapEngine::scene18_run() {
_gameSys->insertSequence(_s18_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
}
- if (isFlag(27)) {
+ if (isFlag(kGFUnk27)) {
scene18_platEndPhoning(true);
- clearFlag(27);
+ clearFlag(kGFUnk27);
} else {
_gameSys->setAnimation(_s18_currPhoneSequenceId, 254, 3);
}
@@ -486,7 +486,7 @@ void GnapEngine::scene18_run() {
else
playGnapImpossible(0, 0);
} else {
- if (isFlag(26))
+ if (isFlag(kGFPlatypusTalkingToAssistant))
scene18_platEndPhoning(true);
if (_grabCursorSpriteIndex >= 0) {
if (!isFlag(kGFTruckKeysUsed))
@@ -647,7 +647,7 @@ void GnapEngine::scene18_run() {
_newSceneNum = 19;
gnapWalkTo(_hotspotsWalkPos[kHSExitToyStore].x, _hotspotsWalkPos[kHSExitToyStore].y, 0, 0x107C0, 1);
_gnapActionStatus = kASLeaveScene;
- if (!isFlag(26))
+ if (!isFlag(kGFPlatypusTalkingToAssistant))
platypusWalkTo(_hotspotsWalkPos[kHSExitToyStore].x + 1, _hotspotsWalkPos[kHSExitToyStore].y, -1, 0x107C2, 1);
}
}
@@ -664,8 +664,8 @@ void GnapEngine::scene18_run() {
_newSceneNum = 17;
gnapWalkTo(_hotspotsWalkPos[kHSExitPhoneBooth].x, _hotspotsWalkPos[kHSExitPhoneBooth].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(26))
- setFlag(27);
+ if (isFlag(kGFPlatypusTalkingToAssistant))
+ setFlag(kGFUnk27);
else
platypusWalkTo(_hotspotsWalkPos[kHSExitPhoneBooth].x + 1, _hotspotsWalkPos[kHSExitPhoneBooth].y, -1, 0x107C2, 1);
}
@@ -683,7 +683,7 @@ void GnapEngine::scene18_run() {
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(26))
+ if (isFlag(kGFPlatypusTalkingToAssistant))
scene18_platEndPhoning(false);
else
platypusWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
@@ -730,14 +730,14 @@ void GnapEngine::scene18_run() {
playSound(0x22B, true);
if (!_isLeavingScene) {
- if (!isFlag(26)) {
+ if (!isFlag(kGFPlatypusTalkingToAssistant)) {
if (_beaverActionStatus == kASPlatComesHere) {
if (!_timers[6]) {
_beaverActionStatus = -1;
_sceneWaiting = false;
initBeaverPos(-1, 10, kDirNone);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
- clearFlag(26);
+ clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
_hotspots[kHSWalkArea1]._y2 += 48;
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index ba6ab19..da29558 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -60,7 +60,7 @@ enum {
int GnapEngine::scene19_init() {
playSound(0x79, 0);
- return isFlag(26) ? 0x77 : 0x76;
+ return isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
}
void GnapEngine::scene19_updateHotspots() {
@@ -80,7 +80,7 @@ void GnapEngine::scene19_updateHotspots() {
setHotspot(kHSWalkArea2, 622, 0, 800, 600);
setHotspot(kHSWalkArea3, 0, 0, 800, 437);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
_hotspots[kHSToy1]._flags = SF_DISABLED;
_hotspots[kHSToy2]._flags = SF_DISABLED;
_hotspots[kHSToy3]._flags = SF_DISABLED;
@@ -109,7 +109,7 @@ void GnapEngine::scene19_run() {
if (!isFlag(kGFPictureTaken))
_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(26)) {
+ if (isFlag(kGFPlatypusTalkingToAssistant)) {
initGnapPos(3, 6, kDirBottomRight);
_s19_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[getRandom(5)];
_s19_nextShopAssistantSequenceId = _s19_currShopAssistantSequenceId;
@@ -185,8 +185,8 @@ void GnapEngine::scene19_run() {
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107B2, 1);
_gnapActionStatus = kASLeaveScene;
- if (isFlag(26))
- setFlag(27);
+ if (isFlag(kGFPlatypusTalkingToAssistant))
+ setFlag(kGFUnk27);
else
platypusWalkTo(_hotspotsWalkPos[1].x + 1, _hotspotsWalkPos[1].y, -1, 0x107C5, 1);
_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
@@ -310,7 +310,7 @@ void GnapEngine::scene19_run() {
if (!_isLeavingScene) {
updateGnapIdleSequence();
- if (!isFlag(26)) {
+ if (!isFlag(kGFPlatypusTalkingToAssistant)) {
updateBeaverIdleSequence();
if (!_timers[6] && _s19_nextShopAssistantSequenceId == -1) {
_timers[6] = getRandom(40) + 50;
@@ -387,7 +387,7 @@ void GnapEngine::scene19_updateAnimations() {
// checkGameAppStatus();
gameUpdateTick();
}
- setFlag(27);
+ setFlag(kGFUnk27);
showCursor();
_newSceneNum = 17;
_isLeavingScene = true;
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index 3ad17c5..e3e7939 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -77,14 +77,14 @@ void GnapEngine::scene23_run() {
platypusWalkTo(1, 7, -1, 0x107C2, 1);
- if (isFlag(24)) {
+ if (isFlag(kGFUnk24)) {
gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else {
gnapWalkTo(2, 7, 0, 0x107B9, 1);
while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
playSequences(0x48, 0xBA, 0xBB, 0xBC);
- setFlag(24);
+ setFlag(kGFUnk24);
}
while (!_sceneDone) {
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 5f91b3f..ed735cc 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -46,7 +46,7 @@ enum {
int GnapEngine::scene32_init() {
_gameSys->setAnimation(0, 0, 0);
- return isFlag(26) ? 0xF : 0x10;
+ return isFlag(kGFPlatypusTalkingToAssistant) ? 0xF : 0x10;
}
void GnapEngine::scene32_updateHotspots() {
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index 7e9823e..99e9dbc 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -46,7 +46,7 @@ enum {
};
int GnapEngine::scene33_init() {
- return isFlag(26) ? 0x84 : 0x85;
+ return isFlag(kGFPlatypusTalkingToAssistant) ? 0x84 : 0x85;
}
void GnapEngine::scene33_updateHotspots() {
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 7e032e4..b1cca2b 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -72,7 +72,7 @@ void GnapEngine::scene42_updateHotspots() {
setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if ((isFlag(kGFPictureTaken) || isFlag(kGFUnk18)) && isFlag(kGFUnk23) && !isFlag(24))
+ if ((isFlag(kGFPictureTaken) || isFlag(kGFUnk18)) && isFlag(kGFUnk23) && !isFlag(kGFUnk24))
_hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
_hotspotsCount = 5;
} else {
@@ -392,17 +392,17 @@ void GnapEngine::scene42_updateAnimations() {
setGrabCursorSprite(-1);
sequenceId = 0x150;
_s42_nextBBQVendorSequenceId = 0x148;
- } else if (isFlag(27)) {
- if (isFlag(28)) {
+ } else if (isFlag(kGFUnk27)) {
+ if (isFlag(kGFUnk28)) {
sequenceId = 0x7B7;
_s42_nextBBQVendorSequenceId = 0x145;
} else {
- setFlag(28);
+ setFlag(kGFUnk28);
sequenceId = 0x14F;
_s42_nextBBQVendorSequenceId = 0x147;
}
} else {
- setFlag(27);
+ setFlag(kGFUnk27);
sequenceId = 0x14E;
_s42_nextBBQVendorSequenceId = 0x146;
}
@@ -463,7 +463,7 @@ void GnapEngine::scene42_updateAnimations() {
break;
case kASToyUfoPickUpHotSauce:
_gameSys->insertSequence(0x10870, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
- setFlag(24);
+ setFlag(kGFUnk24);
scene42_updateHotspots();
toyUfoSetStatus(19);
_toyUfoSequenceId = 0x870;
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index 37077e2..50c8c39 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -134,7 +134,7 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceIdArr[4] = 0x31C;
v1 = 5;
}
- if (!isFlag(26))
+ if (!isFlag(kGFPlatypusTalkingToAssistant))
_s99_sequenceIdArr[v1++] = 0x31D;
v4 = v1;
_s99_sequenceIdArr[v1] = 0x319;
@@ -146,7 +146,7 @@ void GnapEngine::scene47_initCutscene7() {
v2 = v0 + 1;
if (!isFlag(kGFTwigTaken))
_s99_sequenceIdArr[v2++] = 0x31C;
- if (!isFlag(26))
+ if (!isFlag(kGFPlatypusTalkingToAssistant))
_s99_sequenceIdArr[v2++] = 0x31D;
_s99_sequenceIdArr[v2] = 0x313;
_s99_sequenceIdArr[v2 + 1] = 0x315;
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index 5d73528..0b06f55 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -334,9 +334,9 @@ void GnapEngine::scene53_run() {
_sceneDone = true;
_newSceneNum = 17;
if (_s53_isGnapPhoning)
- setFlag(25);
+ setFlag(kGFUnk25);
else
- setFlag(26);
+ setFlag(kGFPlatypusTalkingToAssistant);
}
}
break;
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 20d591f..ba1ea40 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -589,7 +589,7 @@ void GnapEngine::runSceneLogic() {
scene47_initCutscene2();
_newSceneNum = 11;
} else if (!isFlag(kGFPlatyPussDisguised) && _prevSceneNum == 2) {//CHECKME
- if (isFlag(25)) {
+ if (isFlag(kGFUnk25)) {
scene47_initCutscene3();
_newSceneNum = 2;
} else {
Commit: ff43147ee3e7c80d156cd5f145519cfb33a50811
https://github.com/scummvm/scummvm/commit/ff43147ee3e7c80d156cd5f145519cfb33a50811
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix some remaining flags
Changed paths:
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index d01355a..4b5c564 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -395,9 +395,7 @@ void GnapEngine::scene08_run() {
}
gameUpdateTick();
-
}
-
}
void GnapEngine::scene08_updateAnimations() {
@@ -521,7 +519,6 @@ void GnapEngine::scene08_updateAnimations() {
}
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 92222b5..2075112 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -98,7 +98,7 @@ void GnapEngine::scene41_run() {
_gnapActionStatus = kASGiveBackToyUfo;
} else {
if (!isFlag(kGFUnk16) && !isFlag(kGFJointTaken) && !isFlag(kGFUnk18) && !isFlag(kGFGroceryStoreHatTaken))
- toyUfoSetStatus(16);
+ toyUfoSetStatus(kGFUnk16);
_toyUfoX = 600;
_toyUfoY = 200;
}
@@ -547,7 +547,7 @@ void GnapEngine::scene41_updateAnimations() {
kSeqSyncWait, 0, _toyUfoX - 365, _toyUfoY - 128);
_toyUfoSequenceId = _toyUfoNextSequenceId;
_gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 2);
- toyUfoSetStatus(17);
+ toyUfoSetStatus(kGFJointTaken);
break;
default:
_toyUfoNextSequenceId = toyUfoGetSequenceId();
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index b1cca2b..04f372f5 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -108,7 +108,7 @@ void GnapEngine::scene42_run() {
_gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
_toyUfoX = 317;
_toyUfoY = 61;
- toyUfoSetStatus(17);
+ toyUfoSetStatus(kGFJointTaken);
setFlag(kGFPictureTaken);
_timers[9] = 600;
} else {
@@ -465,7 +465,7 @@ void GnapEngine::scene42_updateAnimations() {
_gameSys->insertSequence(0x10870, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
setFlag(kGFUnk24);
scene42_updateHotspots();
- toyUfoSetStatus(19);
+ toyUfoSetStatus(kGFGroceryStoreHatTaken);
_toyUfoSequenceId = 0x870;
_gameSys->setAnimation(0x10870, _toyUfoId, 3);
_toyUfoActionStatus = -1;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index a421482..83b11b7 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -439,7 +439,7 @@ void GnapEngine::scene43_updateAnimations() {
_gameSys->removeSequence(0x1086F, 1, true);
setFlag(kGFUnk14);
scene43_updateHotspots();
- toyUfoSetStatus(18);
+ toyUfoSetStatus(kGFUnk18);
_toyUfoSequenceId = 0x871;
_gameSys->setAnimation(0x10871, _toyUfoId, 3);
_toyUfoActionStatus = -1;
Commit: 192bc349350e33e44d15f59e548dcecd4a7b253c
https://github.com/scummvm/scummvm/commit/192bc349350e33e44d15f59e548dcecd4a7b253c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix savegames
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index e8de9da..1ffd7ab 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -547,6 +547,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
}
} else {
// Save / Load
+#if 1
_timers[2] = 10;
playSound(0x108F4, 0);
@@ -568,12 +569,15 @@ void GnapEngine::updateMenuStatusMainMenu() {
loadGameState(savegameId);
_wasSavegameLoaded = true;
_menuDone = true;
+ _sceneDone = true;
+ playSound(0x108F4, 0);
+ } else {
+ playSound(0x108F5, 0);
}
}
}
-
-#if 0
-// Original Code
+#else
+ // Original Code
_timers[2] = 10;
playSound(0x108F4, 0);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
@@ -628,14 +632,21 @@ Common::Error GnapEngine::saveGameState(int slot, const Common::String &desc) {
}
void GnapEngine::synchronize(Common::Serializer &s) {
- s.syncAsSint32LE(_newSceneNum);
- s.syncAsSint32LE(_currentSceneNum);
- s.syncAsSint32LE(_newCursorValue);
- s.syncAsUint32LE(_inventory);
- s.syncAsUint32LE(_gameFlags);
-
- if (s.isLoading() && isFlag(kGFUnk24)) {
- _timers[9] = 600;
+ if (s.isSaving()) {
+ s.syncAsSint32LE(_currentSceneNum);
+ s.syncAsSint32LE(_prevSceneNum);
+ s.syncAsSint32LE(_cursorValue);
+ s.syncAsUint32LE(_inventory);
+ s.syncAsUint32LE(_gameFlags);
+ } else {
+ s.syncAsSint32LE(_newSceneNum);
+ s.syncAsSint32LE(_currentSceneNum);
+ s.syncAsSint32LE(_newCursorValue);
+ s.syncAsUint32LE(_inventory);
+ s.syncAsUint32LE(_gameFlags);
+
+ if (isFlag(kGFUnk24))
+ _timers[9] = 600;
}
}
Commit: 558ab62fd7e526af549f82b92cc820f46faf2fcd
https://github.com/scummvm/scummvm/commit/558ab62fd7e526af549f82b92cc820f46faf2fcd
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Enforce the use of a boolean when calling playSound()
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/scene00.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene14.cpp
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene51.cpp
engines/gnap/scenes/scene52.cpp
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 08b8f95..a755c98 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -911,7 +911,7 @@ int GnapEngine::playSoundA() {
if (!_timers[_soundTimerIndexA]) {
_timers[_soundTimerIndexA] = getRandom(50) + 100;
soundId = kSoundIdsA[getRandom(11)];
- playSound(soundId | 0x10000, 0);
+ playSound(soundId | 0x10000, false);
}
return soundId;
}
@@ -935,7 +935,7 @@ int GnapEngine::playSoundB() {
if (!_timers[_soundTimerIndexB]) {
_timers[_soundTimerIndexB] = getRandom(50) + 150;
soundId = kSoundIdsB[getRandom(19)];
- playSound(soundId | 0x10000, 0);
+ playSound(soundId | 0x10000, false);
}
return soundId;
}
@@ -957,7 +957,7 @@ int GnapEngine::playSoundC() {
if (!_timers[_soundTimerIndexC]) {
_timers[_soundTimerIndexC] = getRandom(50) + 150;
soundId = kSoundIdsC[getRandom(7)] ;
- playSound(soundId | 0x10000, 0);
+ playSound(soundId | 0x10000, false);
}
return soundId;
}
@@ -2134,16 +2134,16 @@ void GnapEngine::sceneXX_playRandomSound(int timerIndex) {
_timers[timerIndex] = getRandom(40) + 50;
switch (getRandom(4)) {
case 0:
- playSound(0x1091B, 0);
+ playSound(0x1091B, false);
break;
case 1:
- playSound(0x10921, 0);
+ playSound(0x10921, false);
break;
case 2:
- playSound(0x10927, 0);
+ playSound(0x10927, false);
break;
case 3:
- playSound(0x1091D, 0);
+ playSound(0x1091D, false);
break;
}
}
@@ -2326,7 +2326,7 @@ void GnapEngine::cutscene_run() {
}
if (soundId != -1)
- playSound(soundId, 0);
+ playSound(soundId, false);
hideCursor();
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 1ffd7ab..82e45ded 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -406,7 +406,7 @@ void GnapEngine::updateMenuStatusInventory() {
if (_sceneClickedHotspot == _hotspotsCount - 3) {
if (_grabCursorSpriteIndex == -1) {
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_menuStatus = 1;
Common::Rect dirtyRect(_hotspots[0]._x1, _hotspots[0]._y1, _hotspots[2]._x2, _hotspots[_hotspotsCount - 4]._y2);
drawInventoryFrames();
@@ -417,11 +417,11 @@ void GnapEngine::updateMenuStatusInventory() {
_gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
_gameSys->insertDirtyRect(dirtyRect);
} else {
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
}
} else if (_sceneClickedHotspot == _hotspotsCount - 1) {
_timers[2] = 10;
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_menuDone = true;
}
} else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] != -1 && _grabCursorSpriteIndex == -1) {
@@ -448,7 +448,7 @@ void GnapEngine::updateMenuStatusInventory() {
invRemove(kCombineItems[combineIndex].item1);
invRemove(kCombineItems[combineIndex].item2);
invAdd(kCombineItems[combineIndex].resultItem);
- playSound(0x108AE, 0);
+ playSound(0x108AE, false);
deleteSurface(&_spriteHandle); // CHECKME
_spriteHandle = _gameSys->createSurface(0x10001);
_gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1]._x1, _hotspots[_menuSpritesIndex - 1]._y1, 261);
@@ -457,7 +457,7 @@ void GnapEngine::updateMenuStatusInventory() {
insertInventorySprites();
delayTicksCursor(5);
} else {
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
}
}
}
@@ -476,7 +476,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (_sceneClickedHotspot == 3) {
// Quit
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
initMenuQuitQueryHotspots();
_menuStatus = 4;
@@ -485,7 +485,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
_gameSys->insertSpriteDrawItem(_menuQuitQuerySprite, 254, 93, 262);
} else if (_sceneClickedHotspot == 4) {
// Pause ?
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
Common::Rect dirtyRect(0, 0, 799, 599);
hideCursor();
_largeSprite = _gameSys->allocSurface(800, 600);
@@ -513,7 +513,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
gameUpdateTick();
}
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_mouseClickState._left = false;
clearKeyStatus1(28);
clearKeyStatus1(29);
@@ -527,7 +527,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
} else if (_hotspotsCount - 3 == _sceneClickedHotspot) {
// Button
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
initMenuHotspots1();
/* TODO
if (_mouseX < 93 || _mouseX > 638 || _mouseY < 0 || _mouseY > 600)
@@ -542,14 +542,14 @@ void GnapEngine::updateMenuStatusMainMenu() {
}
} else {
// Resume
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_menuDone = true;
}
} else {
// Save / Load
#if 1
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
if (_sceneClickedHotspot == 1) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
@@ -570,16 +570,16 @@ void GnapEngine::updateMenuStatusMainMenu() {
_wasSavegameLoaded = true;
_menuDone = true;
_sceneDone = true;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
} else {
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
}
}
}
#else
// Original Code
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
if (_menuSaveLoadSprite)
deleteSurface(&_menuSaveLoadSprite);
@@ -751,13 +751,13 @@ void GnapEngine::updateMenuStatusSaveGame() {
if (_hotspotsCount - 3 == _sceneClickedHotspot) {
// Button
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_menuStatus = 1;
warning("writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);");
} else if (_hotspotsCount - 4 == _sceneClickedHotspot) {
// Cancel
_timers[2] = 10;
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_menuStatus = 1;
if (strcmp(v43, _savegameFilenames[_savegameIndex]) && _savegameIndex != -1) {
strcpy(_savegameFilenames[_savegameIndex], v43);
@@ -772,7 +772,7 @@ void GnapEngine::updateMenuStatusSaveGame() {
} else if (_hotspotsCount - 5 == _sceneClickedHotspot) {
// OK
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
if (_savegameIndex != -1)
warning("writeSavegame(_savegameIndex + 1, (int)&_savegameFilenames[30 * _savegameIndex], 1);");
_menuStatus = 1;
@@ -782,7 +782,7 @@ void GnapEngine::updateMenuStatusSaveGame() {
} else if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot) {
// Savegame name
_timers[2] = 10;
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
if (strcmp(v43, _savegameFilenames[_savegameIndex]) & (_savegameIndex != -1)) {
strcpy(_savegameFilenames[_savegameIndex], v43);
if (_savegameSprites[_savegameIndex] != nullptr) {
@@ -903,7 +903,7 @@ void GnapEngine::updateMenuStatusLoadGame() {
if (_sceneClickedHotspot != -1 && _hotspotsCount - 2 != _sceneClickedHotspot) {
_timers[2] = 10;
if (_hotspotsCount - 4 <= _sceneClickedHotspot) {
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_gameSys->removeSpriteDrawItem(_menuSprite2, 262);
_gameSys->removeSpriteDrawItem(_menuSaveLoadSprite, 262);
for (int i = 0; i < 7; ++i)
@@ -916,9 +916,9 @@ void GnapEngine::updateMenuStatusLoadGame() {
_gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
}
} else if (loadSavegame(_sceneClickedHotspot + 1)) {
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
} else {
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_sceneDone = true;
}
}
@@ -946,18 +946,18 @@ void GnapEngine::updateMenuStatusQueryQuit() {
if (_sceneClickedHotspot == 0) {
// Quit the game
- playSound(0x108F5, 0);
+ playSound(0x108F5, false);
_gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
_sceneDone = true;
_gameDone = true;
} else if (_sceneClickedHotspot == 4) {
// Exit the device
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
_menuDone = true;
} else if (_sceneClickedHotspot != -1) {
// Return to the main menu
- playSound(0x108F4, 0);
+ playSound(0x108F4, false);
_gameSys->removeSpriteDrawItem(_menuQuitQuerySprite, 262);
_timers[2] = 10;
_menuStatus = 1;
diff --git a/engines/gnap/scenes/scene00.cpp b/engines/gnap/scenes/scene00.cpp
index c53f58c..8291546 100644
--- a/engines/gnap/scenes/scene00.cpp
+++ b/engines/gnap/scenes/scene00.cpp
@@ -136,7 +136,7 @@ void GnapEngine::scene00_run() {
else {
_gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
if (index == 2) {
- playSound(0x10000, 0);
+ playSound(0x10000, false);
_gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
} else if (index == 3)
_gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index bb7315c..30e6491 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -84,7 +84,7 @@ void GnapEngine::scene01_run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(5);
_gameSys->setAnimation(134, 20, 4);
@@ -269,7 +269,7 @@ void GnapEngine::scene01_run() {
scene01_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
@@ -329,9 +329,9 @@ void GnapEngine::scene01_updateAnimations() {
_gnapActionStatus = -1;
break;
case kASLookPigs:
- playSound(138, 0);
- playSound(139, 0);
- playSound(140, 0);
+ playSound(138, false);
+ playSound(139, false);
+ playSound(140, false);
_gnapActionStatus = -1;
break;
case kASUsePigs:
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index e1b4d2a..d214f3b 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -84,7 +84,7 @@ void GnapEngine::scene02_updateHotspots() {
}
void GnapEngine::scene02_run() {
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(6);
_s02_currChickenSequenceId = 0x14B;
@@ -360,7 +360,7 @@ void GnapEngine::scene02_run() {
scene02_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 50c985c..1916350 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -81,8 +81,7 @@ void GnapEngine::scene03_updateHotspots() {
}
void GnapEngine::scene03_run() {
-
- playSound(0x10925, 1);
+ playSound(0x10925, true);
startSoundTimerC(7);
@@ -317,7 +316,7 @@ void GnapEngine::scene03_run() {
scene03_updateAnimations();
if (!isSoundPlaying(0x10925))
- playSound(0x10925, 1);
+ playSound(0x10925, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 6204971..27ed3ac 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -83,8 +83,7 @@ void GnapEngine::scene04_updateHotspots() {
}
void GnapEngine::scene04_run() {
-
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(4);
_gameSys->insertSequence(0x210, 139 - _s04_dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
@@ -396,7 +395,7 @@ void GnapEngine::scene04_run() {
scene04_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index 03534b1..6ef4b35 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -78,7 +78,7 @@ void GnapEngine::scene05_updateHotspots() {
void GnapEngine::scene05_run() {
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(7);
_s05_currChickenSequenceId = 0x142;
@@ -317,7 +317,7 @@ void GnapEngine::scene05_run() {
scene05_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index c051f80..f89bace 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -54,7 +54,7 @@ int GnapEngine::scene06_init() {
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0, 0, 2);
if (isFlag(kGFSceneFlag1)) {
- playSound(0x11B, 0);
+ playSound(0x11B, false);
clearFlag(kGFSceneFlag1);
}
return 0x101;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index d10c409..e2d385d 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -100,7 +100,7 @@ void GnapEngine::scene07_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x10919))
- playSound(0x10919, 1);
+ playSound(0x10919, true);
if (testWalk(0, 1, 8, 7, 6, 7))
scene07_updateHotspots();
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index 4b5c564..d8a1c26 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -129,7 +129,7 @@ void GnapEngine::scene08_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x10919))
- playSound(0x10919, 1);
+ playSound(0x10919, true);
testWalk(0, 0, -1, -1, -1, -1);
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index d16f3bd..368f8fe 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -84,7 +84,7 @@ void GnapEngine::scene09_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x10919))
- playSound(0x10919, 1);
+ playSound(0x10919, true);
testWalk(0, 0, -1, -1, -1, -1);
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 6f9f47e..b5f9cb1 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -103,10 +103,10 @@ void GnapEngine::scene10_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1091E))
- playSound(0x1091E, 1);
+ playSound(0x1091E, true);
if (!isSoundPlaying(0x1091A))
- playSound(0x1091A, 1);
+ playSound(0x1091A, true);
updateMouseCursor();
@@ -325,7 +325,7 @@ void GnapEngine::scene10_run() {
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(80) + 150;
- playSound(0x12B, 0);
+ playSound(0x12B, false);
}
if (!_timers[5]) {
_timers[5] = getRandom(100) + 100;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 95a8df3..3e2a757 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -57,8 +57,8 @@ int GnapEngine::scene11_init() {
_gameSys->setAnimation(0, 0, 3);
_gameSys->setAnimation(0, 0, 2);
if (_prevSceneNum == 10 || _prevSceneNum == 13) {
- playSound(0x108EC, 0);
- playSound(0x10928, 0);
+ playSound(0x108EC, false);
+ playSound(0x10928, false);
}
return 0x209;
}
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 8a04b2d..58bdba1 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -58,7 +58,7 @@ enum {
};
int GnapEngine::scene13_init() {
- playSound(0x108EC, 0);
+ playSound(0x108EC, false);
return 0xAC;
}
@@ -122,7 +122,7 @@ void GnapEngine::scene13_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1091A))
- playSound(0x1091A, 1);
+ playSound(0x1091A, true);
testWalk(0, 0, -1, -1, -1, -1);
@@ -325,19 +325,19 @@ void GnapEngine::scene13_run() {
_timers[4] = getRandom(20) + 20;
switch (getRandom(5)) {
case 0:
- playSound(0xD2, 0);
+ playSound(0xD2, false);
break;
case 1:
- playSound(0xD3, 0);
+ playSound(0xD3, false);
break;
case 2:
- playSound(0xD4, 0);
+ playSound(0xD4, false);
break;
case 3:
- playSound(0xD5, 0);
+ playSound(0xD5, false);
break;
case 4:
- playSound(0xD6, 0);
+ playSound(0xD6, false);
break;
}
}
@@ -362,7 +362,7 @@ void GnapEngine::scene13_run() {
break;
}
if (newSoundId != currSoundId) {
- playSound(newSoundId, 0);
+ playSound(newSoundId, false);
currSoundId = newSoundId;
}
}
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 47bb12f..25db3a6 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -101,11 +101,11 @@ void GnapEngine::scene14_run() {
_gameSys->setAnimation(0x26, 10, 0);
_gameSys->insertSequence(0x26, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
} else if (_grabCursorSpriteIndex >= 0) {
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
break;
case GRAB_CURSOR:
_gameSys->insertSequence(0x25, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
@@ -113,7 +113,7 @@ void GnapEngine::scene14_run() {
_gnapSequenceId = 0x23;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
@@ -129,10 +129,10 @@ void GnapEngine::scene14_run() {
switch (_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playSound(0x108B1, 0);
+ playSound(0x108B1, false);
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index 4323253..89ca126 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -130,10 +130,10 @@ void GnapEngine::scene15_run() {
switch (_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
@@ -149,7 +149,7 @@ void GnapEngine::scene15_run() {
switch (_verbCursor) {
case LOOK_CURSOR:
if (isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk13))
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
else
_s15_nextSlotSequenceId = 0xDA;
break;
@@ -160,7 +160,7 @@ void GnapEngine::scene15_run() {
_s15_nextSlotSequenceId = 0xDA;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
@@ -180,13 +180,13 @@ void GnapEngine::scene15_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
break;
case GRAB_CURSOR:
_s15_nextUpperButtonSequenceId = _sceneClickedHotspot + 0xC5;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
@@ -206,13 +206,13 @@ void GnapEngine::scene15_run() {
} else {
switch (_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, 0);
+ playSound(0x108E9, false);
break;
case GRAB_CURSOR:
_s15_nextLowerButtonSequenceId = _sceneClickedHotspot + 0xC5;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, 0);
+ playSound((getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 849e063..aa08255 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -119,8 +119,7 @@ void GnapEngine::scene17_platHangUpPhone() {
}
void GnapEngine::scene17_run() {
-
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(8);
_sceneWaiting = false;
_timers[4] = getRandom(100) + 200;
@@ -486,7 +485,7 @@ void GnapEngine::scene17_run() {
scene17_updateAnimations();
if (!isSoundPlaying(0x10940))
- playSound(0x10940, 1);
+ playSound(0x10940, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 8faeb64..b338b4c 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -309,10 +309,9 @@ void GnapEngine::scene18_waitForGnapAction() {
}
void GnapEngine::scene18_run() {
-
_s18_cowboyHatSurface = 0;
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(4);
_timers[5] = getRandom(100) + 100;
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index da29558..ddc977f 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -59,7 +59,7 @@ enum {
};
int GnapEngine::scene19_init() {
- playSound(0x79, 0);
+ playSound(0x79, false);
return isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
}
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 2301d29..dd49b4c 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -180,7 +180,7 @@ void GnapEngine::scene20_stopSounds() {
void GnapEngine::scene20_run() {
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(8);
@@ -490,7 +490,7 @@ void GnapEngine::scene20_run() {
scene20_updateAnimations();
if (!isSoundPlaying(0x10940))
- playSound(0x10940, 1);
+ playSound(0x10940, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0) {
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index a6f42e1..c04b7c4 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -67,8 +67,7 @@ void GnapEngine::scene21_updateHotspots() {
}
void GnapEngine::scene21_run() {
-
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(6);
_timers[5] = getRandom(100) + 100;
@@ -232,7 +231,7 @@ void GnapEngine::scene21_run() {
scene21_updateAnimations();
if (!isSoundPlaying(0x10940))
- playSound(0x10940, 1);
+ playSound(0x10940, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
@@ -267,13 +266,10 @@ void GnapEngine::scene21_run() {
}
gameUpdateTick();
-
}
-
}
void GnapEngine::scene21_updateAnimations() {
-
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index e3e7939..9a16ce4 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -217,13 +217,13 @@ void GnapEngine::scene23_run() {
_timers[5] = getRandom(100) + 200;
switch (getRandom(3)) {
case 0:
- playSound(0xCE, 0);
+ playSound(0xCE, false);
break;
case 1:
- playSound(0xD0, 0);
+ playSound(0xD0, false);
break;
case 2:
- playSound(0xCF, 0);
+ playSound(0xCF, false);
break;
}
}
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index ace9043..dcfeb18 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -58,7 +58,7 @@ void GnapEngine::scene24_updateHotspots() {
void GnapEngine::scene24_run() {
int counter = 0;
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(9);
@@ -182,7 +182,7 @@ void GnapEngine::scene24_run() {
scene24_updateAnimations();
if (!isSoundPlaying(0x10940))
- playSound(0x10940, 1);
+ playSound(0x10940, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index 42df9bd..cf95aca 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -106,8 +106,7 @@ void GnapEngine::scene25_playAnims(int index) {
}
void GnapEngine::scene25_run() {
-
- playSound(0x10940, 1);
+ playSound(0x10940, true);
startSoundTimerA(5);
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index 55b5b07..7da3393 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -62,7 +62,7 @@ void GnapEngine::scene26_updateHotspots() {
void GnapEngine::scene26_run() {
startSoundTimerB(7);
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
_s26_currKidSequenceId = 0x5B;
_s26_nextKidSequenceId = -1;
@@ -198,7 +198,7 @@ void GnapEngine::scene26_run() {
scene26_updateAnimations();
if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 2b7666b..0466940 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -70,7 +70,7 @@ void GnapEngine::scene27_updateHotspots() {
void GnapEngine::scene27_run() {
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
startSoundTimerB(4);
_timers[7] = getRandom(100) + 300;
queueInsertDeviceIcon();
@@ -277,7 +277,7 @@ void GnapEngine::scene27_run() {
scene27_updateAnimations();
if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index d175fdf..5f4dc74 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -72,8 +72,7 @@ void GnapEngine::scene28_updateHotspots() {
}
void GnapEngine::scene28_run() {
-
- playSound(0x1093C, 1);
+ playSound(0x1093C, true);
_s28_nextClownSequenceId = -1;
queueInsertDeviceIcon();
_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -287,7 +286,7 @@ void GnapEngine::scene28_run() {
scene28_updateAnimations();
if (!isSoundPlaying(0x1093C))
- playSound(0x1093C, 1);
+ playSound(0x1093C, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 302c031..e4cea83 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -60,7 +60,7 @@ void GnapEngine::scene29_updateHotspots() {
void GnapEngine::scene29_run() {
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
startSoundTimerB(6);
queueInsertDeviceIcon();
@@ -231,7 +231,7 @@ void GnapEngine::scene29_run() {
scene29_updateAnimations();
if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
if (!_isLeavingScene) {
if (_gnapActionStatus < 0) {
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 6b9504d..5344d3f 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -59,7 +59,7 @@ void GnapEngine::scene30_updateHotspots() {
void GnapEngine::scene30_run() {
bool hasTakenPill = false;
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
startSoundTimerB(6);
queueInsertDeviceIcon();
@@ -182,7 +182,7 @@ void GnapEngine::scene30_run() {
scene30_updateAnimations();
if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
if (!_isLeavingScene) {
updateBeaverIdleSequence();
@@ -221,13 +221,10 @@ void GnapEngine::scene30_run() {
}
gameUpdateTick();
-
}
-
}
-void GnapEngine::scene30_updateAnimations() {
-
+void GnapEngine::scene30_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
@@ -281,7 +278,6 @@ void GnapEngine::scene30_updateAnimations() {
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 97c07fc..084a127 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -61,8 +61,7 @@ void GnapEngine::scene31_updateHotspots() {
}
void GnapEngine::scene31_run() {
-
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
startSoundTimerB(6);
queueInsertDeviceIcon();
@@ -251,7 +250,7 @@ void GnapEngine::scene31_run() {
scene31_updateAnimations();
if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, 1);
+ playSound(0x1093B, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index ed735cc..0822dc4 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -65,8 +65,7 @@ void GnapEngine::scene32_updateHotspots() {
}
void GnapEngine::scene32_run() {
-
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(5);
queueInsertDeviceIcon();
_timers[4] = getRandom(100) + 300;
@@ -84,7 +83,6 @@ void GnapEngine::scene32_run() {
}
while (!_sceneDone) {
-
updateMouseCursor();
updateCursorByHotspot();
testWalk(0, 0, -1, -1, -1, -1);
@@ -93,7 +91,6 @@ void GnapEngine::scene32_run() {
updateGrabCursorSprite(0, 0);
switch (_sceneClickedHotspot) {
-
case kHSDevice:
if (_gnapActionStatus < 0) {
runMenu();
@@ -158,7 +155,7 @@ void GnapEngine::scene32_run() {
scene32_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index 99e9dbc..3069dba 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -63,8 +63,7 @@ void GnapEngine::scene33_updateHotspots() {
}
void GnapEngine::scene33_run() {
-
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
startSoundTimerC(6);
queueInsertDeviceIcon();
@@ -233,7 +232,7 @@ void GnapEngine::scene33_run() {
scene33_updateAnimations();
if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, 1);
+ playSound(0x1091C, true);
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index 2d3ac77..4950717 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -82,7 +82,7 @@ void GnapEngine::scene39_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1094B)) {
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
setSoundVolume(0x1094B, 60);
}
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index fe95742..cbbae71 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -65,7 +65,7 @@ void GnapEngine::scene40_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
updateMouseCursor();
updateCursorByHotspot();
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 2075112..41480bf 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -163,7 +163,7 @@ void GnapEngine::scene41_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
if (!isFlag(kGFGnapControlsToyUFO)) {
_hotspots[kHSToyUfo]._x1 = _toyUfoX - 25;
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 04f372f5..906d84f 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -147,7 +147,7 @@ void GnapEngine::scene42_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
updateMouseCursor();
updateCursorByHotspot();
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 83b11b7..45b52a7 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -143,9 +143,8 @@ void GnapEngine::scene43_run() {
}
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
updateMouseCursor();
updateCursorByHotspot();
@@ -199,11 +198,8 @@ void GnapEngine::scene43_run() {
_timers[9] = 600;
break;
}
-
} else {
-
switch (_sceneClickedHotspot) {
-
case kHSDevice:
runMenu();
scene43_updateHotspots();
@@ -364,12 +360,10 @@ void GnapEngine::scene43_run() {
}
gameUpdateTick();
-
}
if (_newSceneNum == 54)
clearFlag(kGFGnapControlsToyUFO);
-
}
void GnapEngine::scene43_updateAnimations() {
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 48dd1fd..dad6301 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -169,7 +169,7 @@ void GnapEngine::scene44_run() {
while (!_sceneDone) {
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
updateMouseCursor();
updateCursorByHotspot();
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index daad788..3f8f790 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -83,9 +83,8 @@ void GnapEngine::scene45_updateHotspots() {
}
void GnapEngine::scene45_run() {
-
if (!isSoundPlaying(0x1094A))
- playSound(0x1094A, 1);
+ playSound(0x1094A, true);
queueInsertDeviceIcon();
@@ -181,9 +180,8 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(_beaverSequenceId, _beaverId, 1);
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094A))
- playSound(0x1094A, 1);
+ playSound(0x1094A, true);
updateMouseCursor();
updateCursorByHotspot();
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 29a8608..d0c8965 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -124,9 +124,8 @@ void GnapEngine::scene46_run() {
_timers[5] = getRandom(50) + 80;
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, 1);
+ playSound(0x1094B, true);
updateMouseCursor();
updateCursorByHotspot();
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index 9a47145..2c92919 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -172,7 +172,7 @@ void GnapEngine::scene49_updateObstacle(int id) {
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- playSound(224, 0);
+ playSound(224, false);
scene49_increaseScore(30);
} else if ((obstacle._laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
(obstacle._laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
@@ -194,7 +194,7 @@ void GnapEngine::scene49_updateObstacle(int id) {
_s49_truckSequenceId = obstacle._collisionSequenceId;
_s49_truckId = 256;
obstacle._currSequenceId = obstacle._passedSequenceId;
- playSound(225, 0);
+ playSound(225, false);
scene49_decreaseScore(30);
}
} else {
@@ -212,7 +212,7 @@ void GnapEngine::scene49_updateObstacle(int id) {
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- playSound(224, 0);
+ playSound(224, false);
scene49_increaseScore(30);
}
} else if (obstacle._splashSequenceId) {
@@ -275,7 +275,7 @@ void GnapEngine::scene49_run() {
bool streetAnimToggle = false;
bool bgAnimToggle = false;
- playSound(0xE2, 1);
+ playSound(0xE2, true);
setSoundVolume(0xE2, 75);
hideCursor();
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index d93506f..1d9e177 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -323,7 +323,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
} else {
_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
_gameSys->setAnimation(0, 0, index + 1);
- playSound(218, 0);
+ playSound(218, false);
if (scene51_incCashAmount(item->_currSequenceId) == 1995) {
scene51_winMinigame();
_sceneDone = true;
@@ -523,7 +523,7 @@ void GnapEngine::scene51_playIntroAnim() {
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, 0);
+ playSound(214, false);
}
_s51_platypusNextSequenceId = 0x75;
@@ -541,7 +541,7 @@ void GnapEngine::scene51_playIntroAnim() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, 0);
+ playSound(214, false);
}
}
@@ -604,7 +604,7 @@ int GnapEngine::scene51_incCashAmount(int sequenceId) {
void GnapEngine::scene51_winMinigame() {
scene51_updateCash(1995);
- playSound(218, 0);
+ playSound(218, false);
// TODO delayTicksA(1, 5);
_newSceneNum = 48;
invRemove(kItemBanana);
@@ -781,7 +781,7 @@ void GnapEngine::scene51_run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, 0);
+ playSound(214, false);
}
}
} else {
@@ -833,7 +833,7 @@ void GnapEngine::scene51_run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, 0);
+ playSound(214, false);
}
}
} else {
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 0b00b42..0caf7a8 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -47,7 +47,7 @@ void GnapEngine::scene52_update() {
if (_s52_liveAlienRows == 0 && !_s52_alienSingle) {
_s52_alienWave = false;
- playSound(48, 0);
+ playSound(48, false);
++_s52_alienCounter;
if (_s52_alienCounter != 3) {
_timers[0] = 50;
@@ -172,7 +172,7 @@ void GnapEngine::scene52_fireShipCannon(int posX) {
_s52_shipCannonPosY = _s52_shipCannonTopY;
_gameSys->setAnimation(0x23, cannonNum + 256, cannonNum + 8);
_gameSys->insertSequence(0x23, cannonNum + 256, 0, 0, kSeqNone, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
- playSound(0x2D, 0);
+ playSound(0x2D, false);
if (scene52_shipCannonHitShield(cannonNum)) {
_gameSys->setAnimation(0, 0, cannonNum + 8);
_gameSys->removeSequence(0x23, cannonNum + 256, true);
@@ -421,7 +421,7 @@ int GnapEngine::scene52_updateHitAlien() {
if (hitAlienNum != -1 && _s52_items[rowNum][hitAlienNum] >= 0) {
_s52_gameScore = ((_s52_items[rowNum][hitAlienNum] - 24) % 3 + _s52_gameScore + 1) % 1000;
_s52_items[rowNum][hitAlienNum] = -2;
- playSound(44, 0);
+ playSound(44, false);
_gameSys->insertSequence(0x21, 266, 0, 0,
kSeqNone, 0, _s52_alienLeftX + hitAlienNum * _s52_alienWidth + _s52_alienRowXOfs[rowNum] - 10, ya - _s52_alienHeight);
result = 1;
@@ -540,7 +540,7 @@ int GnapEngine::scene52_alienCannonHitShield(int cannonNum) {
}
_gameSys->setAnimation(0, 0, cannonNum + 9);
_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_alienCannonPosX[cannonNum] - 18, _s52_arcadeScreenBottom - 44);
- playSound(0x2C, 0);
+ playSound(0x2C, false);
result = 1;
}
@@ -583,7 +583,7 @@ int GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
_s52_shieldSpriteIds[shieldNum] = -1;
}
_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_shipCannonPosX - 18, _s52_arcadeScreenBottom - 44);
- playSound(0x2C, 0);
+ playSound(0x2C, false);
result = 1;
}
@@ -639,10 +639,10 @@ void GnapEngine::scene52_shipExplode() {
if (!_s52_aliensCount) {
_gameSys->setAnimation(0, 0, 7);
_gameSys->removeSequence(_s52_ufoSequenceId, 256, true);
- playSound(44, 0);
+ playSound(44, false);
_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_aliensCount = 1;
- playSound(0x31, 0);
+ playSound(0x31, false);
}
}
@@ -735,10 +735,10 @@ void GnapEngine::scene52_initAlienSize() {
void GnapEngine::scene52_playSound() {
if (_s52_soundToggle) {
- playSound(0x2F, 0);
+ playSound(0x2F, false);
_s52_soundToggle = false;
} else {
- playSound(0x2E, 0);
+ playSound(0x2E, false);
_s52_soundToggle = true;
}
}
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index 0b06f55..9b2867a 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -270,10 +270,9 @@ void GnapEngine::scene53_run() {
setVerbCursor(GRAB_CURSOR);
- playSound(0xA0, 1);
+ playSound(0xA0, true);
while (!_sceneDone) {
-
updateMouseCursor();
updateCursorByHotspot();
Commit: 03027be392de3dbf698361abf2395f3d7cc4e53e
https://github.com/scummvm/scummvm/commit/03027be392de3dbf698361abf2395f3d7cc4e53e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix hasFeature
Changed paths:
engines/gnap/detection.cpp
engines/gnap/gnap.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 7e4c085..69628f9 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -78,14 +78,21 @@ bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
return
(f == kSupportsListSaves) ||
(f == kSupportsLoadingDuringStartup) ||
- (f == kSupportsDeleteSave);
+ (f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo) ||
+ (f == kSavesSupportCreationDate);
#if 0
- (f == kSavesSupportMetaInfo) ||
- (f == kSavesSupportThumbnail) ||
- (f == kSavesSupportCreationDate);
+ (f == kSavesSupportThumbnail) ||
#endif
}
+bool Gnap::GnapEngine::hasFeature(EngineFeature f) const {
+ return
+ (f == kSupportsRTL) ||
+ (f == kSupportsLoadingDuringRuntime) ||
+ (f == kSupportsSavingDuringRuntime);
+}
+
void GnapMetaEngine::removeSaveState(const char *target, int slot) const {
Common::String fileName = Common::String::format("%s.%03d", target, slot);
g_system->getSavefileManager()->removeSavefile(fileName);
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index a755c98..19dd353 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -221,11 +221,6 @@ Common::Error GnapEngine::run() {
return Common::kNoError;
}
-bool GnapEngine::hasFeature(EngineFeature f) const {
- return
- false;
-}
-
void GnapEngine::updateEvents() {
Common::Event event;
Commit: 52f0712b66fff3351ae6c2b5fd8e1abcdaad6001
https://github.com/scummvm/scummvm/commit/52f0712b66fff3351ae6c2b5fd8e1abcdaad6001
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add debugger
Changed paths:
A engines/gnap/debugger.cpp
A engines/gnap/debugger.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/module.mk
diff --git a/engines/gnap/debugger.cpp b/engines/gnap/debugger.cpp
new file mode 100644
index 0000000..07f3f67
--- /dev/null
+++ b/engines/gnap/debugger.cpp
@@ -0,0 +1,42 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/debugger.h"
+#include "gnap/gnap.h"
+
+namespace Gnap {
+
+Debugger::Debugger(GnapEngine *vm) : GUI::Debugger(), _vm(vm) {
+ // Register methods
+ registerCmd("hotspots", WRAP_METHOD(Debugger, Cmd_Hotspots));
+
+ // Set fields
+ _showHotspotNumber = false;
+}
+
+bool Debugger::Cmd_Hotspots(int argc, const char **argv) {
+ _showHotspotNumber ^= 1;
+
+ return true;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/debugger.h b/engines/gnap/debugger.h
new file mode 100644
index 0000000..ac83cc5
--- /dev/null
+++ b/engines/gnap/debugger.h
@@ -0,0 +1,54 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_DEBUGGER_H
+#define GNAP_DEBUGGER_H
+
+#include "common/scummsys.h"
+#include "gui/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Debugger : public GUI::Debugger {
+private:
+ GnapEngine *_vm;
+public:
+ /*
+ * Specifies whether to show the hotspot IDs
+ */
+ bool _showHotspotNumber;
+protected:
+ /**
+ * List the active hotspots during the current time period
+ */
+ bool Cmd_Hotspots(int argc, const char **argv);
+
+public:
+ Debugger(GnapEngine *vm);
+ virtual ~Debugger() {}
+};
+
+} // End of namespace Gnap
+
+#endif
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 19dd353..793cc2f 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -139,7 +139,8 @@ Common::Error GnapEngine::run() {
_sequenceCache = new SequenceCache(_dat);
_gameSys = new GameSys(this);
_soundMan = new SoundMan(this);
-
+ _debugger = new Debugger(this);
+
_menuBackgroundSurface = nullptr;
initGlobalSceneVars();
@@ -213,6 +214,7 @@ Common::Error GnapEngine::run() {
delete _soundCache;
delete _spriteCache;
delete _dat;
+ delete _debugger;
delete _exe;
@@ -227,6 +229,13 @@ void GnapEngine::updateEvents() {
while (_eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
+ // Check for debugger
+ if (event.kbd.keycode == Common::KEYCODE_d && (event.kbd.flags & Common::KBD_CTRL)) {
+ // Attach to the debugger
+ _debugger->attach();
+ _debugger->onFrame();
+ }
+
_keyPressState[event.kbd.keycode] = 1;
_keyDownState[event.kbd.keycode] = 1;
break;
@@ -387,13 +396,13 @@ void GnapEngine::updateCursorByHotspot() {
if (!_isWaiting) {
int hotspotIndex = getHotspotIndexAtPos(_mouseX, _mouseY);
-#if 1
- // NOTE This causes some display glitches so don't worry
- char t[256];
- sprintf(t, "hotspot = %d", hotspotIndex);
- _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
- _gameSys->drawTextToSurface(0, 10, 10, 255, 255, 255, t);
-#endif
+ if (_debugger->_showHotspotNumber) {
+ // NOTE This causes some display glitches so don't worry
+ char t[256];
+ sprintf(t, "hotspot = %d", hotspotIndex);
+ _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
+ _gameSys->drawTextToSurface(0, 10, 10, 255, 255, 255, t);
+ }
if (hotspotIndex < 0)
setCursor(kDisabledCursors[_verbCursor]);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index aa6e8d5..2773845 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -39,6 +39,7 @@
#include "graphics/pixelformat.h"
#include "graphics/wincursor.h"
+#include "gnap/debugger.h"
#include "gnap/resource.h"
struct ADGameDescription;
@@ -304,6 +305,7 @@ public:
SequenceCache *_sequenceCache;
GameSys *_gameSys;
SoundMan *_soundMan;
+ Debugger *_debugger;
int _lastUpdateClock;
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 7a3fc3a..a2e5c77 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -2,6 +2,7 @@ MODULE := engines/gnap
MODULE_OBJS := \
datarchive.o \
+ debugger.o \
detection.o \
gamesys.o \
gnap.o \
Commit: 43c65df52620bc7f8cf013c460e77620d331836e
https://github.com/scummvm/scummvm/commit/43c65df52620bc7f8cf013c460e77620d331836e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Use debug channels
Changed paths:
engines/gnap/datarchive.cpp
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index a0423c1..0f6faee 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -24,6 +24,8 @@
#include "common/file.h"
#include "common/stream.h"
#include "common/substream.h"
+
+#include "gnap/gnap.h"
#include "gnap/datarchive.h"
#include "engines/util.h"
@@ -40,7 +42,7 @@ DatArchive::DatArchive(const char *filename) {
_fd->skip(2); // Skip unknown
_fd->skip(2); // Skip unknown
_entriesCount = _fd->readUint32LE();
- debug(1, "_entriesCount: %d", _entriesCount);
+ debugC(kDebugBasic, "_entriesCount: %d", _entriesCount);
_fd->skip(4); // Skip unknown
_entries = new DatEntry[_entriesCount];
for (int i = 0; i < _entriesCount; ++i) {
@@ -59,7 +61,7 @@ DatArchive::~DatArchive() {
byte *DatArchive::load(int index) {
_fd->seek(_entries[index]._ofs);
- debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
+ debugC(kDebugBasic, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
byte *buffer = new byte[_entries[index]._outSize1];
if (!Common::decompressDCL(_fd, buffer, _entries[index]._outSize2, _entries[index]._outSize1))
error("DatArchive::load() Error during decompression of entry %d", index);
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index fd53005..ef0a265 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -69,7 +69,7 @@ GameSys::~GameSys() {
}
void GameSys::insertSequence(int sequenceId, int id, int sequenceId2, int id2, int flags, int totalDuration, int16 x, int16 y) {
- debug(0, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, id, sequenceId2, id2, x, y);
+ debugC(kDebugBasic, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, id, sequenceId2, id2, x, y);
Sequence sequence;
SequenceResource *sequenceResource = _vm->_sequenceCache->get(sequenceId);
sequenceResource->_sequenceId = sequenceId;
@@ -168,7 +168,7 @@ int GameSys::isSequenceActive(int sequenceId, int id) {
}
void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7) {
- debug(1, "GameSys::setBackgroundSurface() Setting background image");
+ debugC(kDebugBasic, "GameSys::setBackgroundSurface() Setting background image");
_backgroundSurface = surface;
if (!_backgroundSurface) {
@@ -177,7 +177,7 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
}
if (!_frontSurface || _frontSurface->w != surface->w || _frontSurface->h != surface->h) {
- debug(1, "GameSys::setBackgroundSurface() Creating background working surface");
+ debugC(kDebugBasic, "GameSys::setBackgroundSurface() Creating background working surface");
if (_frontSurface)
_frontSurface->free();
delete _frontSurface;
@@ -244,7 +244,7 @@ Graphics::Surface *GameSys::allocSurface(int width, int height) {
}
Graphics::Surface *GameSys::createSurface(int resourceId) {
- debug(0, "GameSys::createSurface() resourceId: %08X", resourceId);
+ debugC(kDebugBasic, "GameSys::createSurface() resourceId: %08X", resourceId);
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
Graphics::Surface *surface = allocSurface(spriteResource->_width, spriteResource->_height);
@@ -364,7 +364,7 @@ int GameSys::getSpriteHeightById(int resourceId) {
}
Graphics::Surface *GameSys::loadBitmap(int resourceId) {
- debug("GameSys::loadBitmap() resourceId: %08X", resourceId);
+ debugC(kDebugBasic, "GameSys::loadBitmap() resourceId: %08X", resourceId);
if (_vm->_dat->getResourceType(resourceId) != 1)
return nullptr;
byte *resourceData = _vm->_dat->loadResource(resourceId);
@@ -382,12 +382,12 @@ Graphics::Surface *GameSys::loadBitmap(int resourceId) {
void GameSys::drawBitmap(int resourceId) {
Graphics::Surface *bmpSurface = loadBitmap(resourceId);
if (!bmpSurface || !_backgroundSurface) {
- debug("GameSys::drawBitmap() Error loading the bitmap");
+ debugC(kDebugBasic, "GameSys::drawBitmap() Error loading the bitmap");
return;
}
if (bmpSurface->format != _backgroundSurface->format ||
bmpSurface->w != _backgroundSurface->w || bmpSurface->h != _backgroundSurface->h) {
- debug("GameSys::drawBitmap() Different bitmap properties than current background");
+ debugC(kDebugBasic, "GameSys::drawBitmap() Different bitmap properties than current background");
} else {
byte *src = (byte*)bmpSurface->getPixels();
byte *dst = (byte*)_backgroundSurface->getPixels();
@@ -452,7 +452,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
SequenceAnimation *animation = &sequenceResource->_animations[i];
- debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
+ debugC(kDebugBasic, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
gfxItem->_sequenceId = seqItem->_sequenceId;
gfxItem->_id = seqItem->_id;
@@ -737,14 +737,14 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
}
void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect) {
- debug(1, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
+ debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
- debug(1, "GameSys::seqDrawStaticFrame() Surface not inside screen");
+ debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() Surface not inside screen");
return;
}
@@ -757,14 +757,14 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
}
void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
- debug(1, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
+ debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
frame._spriteId, frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
- debug(1, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
+ debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
return;
}
@@ -773,7 +773,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
const int x = clipRect.left, y = clipRect.top;
- debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
+ debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
// 32bit sprite drawing
if (frame._isScaled) {
@@ -786,7 +786,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
}
void GameSys::drawSprites() {
- debug(1, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
+ debugC(kDebugBasic, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
// TODO Split into multiple functions for clarity
@@ -847,14 +847,13 @@ void GameSys::drawSprites() {
for (int m = 0; m < _gfxItemsCount; ++m) {
GfxItem *gfxItem5 = &_gfxItems[m];
- debug(0, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
+ debugC(kDebugBasic, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
m, gfxItem5->_updFlag, gfxItem5->_currFrame._spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
if (gfxItem5->_updFlag) {
if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
- //debug("seqDrawStaticFrame");
} else if (gfxItem5->_flags & 2) {
// TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
} else {
@@ -884,11 +883,11 @@ void GameSys::drawSprites() {
}
}
- debug(1, "GameSys::drawSprites() OK");
+ debugC(kDebugBasic, "GameSys::drawSprites() OK");
}
void GameSys::updateRect(const Common::Rect &r) {
- debug(1, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
+ debugC(kDebugBasic, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
if (r.width() > 0 && r.height() > 0) {
byte *pixels = (byte*)_frontSurface->getBasePtr(r.left, r.top);
_vm->_system->copyRectToScreen(pixels, _frontSurface->pitch, r.left, r.top,
@@ -897,7 +896,7 @@ void GameSys::updateRect(const Common::Rect &r) {
}
void GameSys::updateScreen() {
- debug(1, "GameSys::updateScreen()");
+ debugC(kDebugBasic, "GameSys::updateScreen()");
for (uint i = 0; i < _dirtyRects.size(); ++i)
updateRect(_dirtyRects[i]);
@@ -931,7 +930,7 @@ void GameSys::updateScreen() {
updateRect(Common::Rect(0, 0, 800, 600));
- debug(1, "GameSys::updateScreen() OK");
+ debugC(kDebugBasic, "GameSys::updateScreen() OK");
}
void GameSys::handleReqRemoveSequenceItem() {
@@ -1003,12 +1002,12 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
void GameSys::fatUpdateFrame() {
- debug(1, "GameSys::fatUpdateFrame()");
+ debugC(kDebugBasic, "GameSys::fatUpdateFrame()");
int32 clockDelta = _gameSysClock - _lastUpdateClock;
_lastUpdateClock = _gameSysClock;
- debug(1, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
+ debugC(kDebugBasic, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
if (clockDelta <= 0)
return;
@@ -1129,7 +1128,7 @@ void GameSys::fatUpdateFrame() {
}
if (_newSpriteDrawItemsCount > 0) {
- debug(0, "_newSpriteDrawItemsCount: %d", _newSpriteDrawItemsCount);
+ debugC(kDebugBasic, "_newSpriteDrawItemsCount: %d", _newSpriteDrawItemsCount);
for (int k = 0; k < _newSpriteDrawItemsCount; ++k) {
if (_gfxItemsCount < 50) {
int insertIndex;
@@ -1183,7 +1182,7 @@ void GameSys::fatUpdateFrame() {
// NOTE Skipped avi code (reqAviStart)
- debug(1, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
+ debugC(kDebugBasic, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
for (uint i = 0; i < _fatSequenceItems.size(); ++i) {
Sequence *seqItem = &_fatSequenceItems[i];
@@ -1238,7 +1237,7 @@ void GameSys::fatUpdateFrame() {
}
}
- debug(1, "GameSys::fatUpdateFrame() _seqItems.size(): %d", _seqItems.size());
+ debugC(kDebugBasic, "GameSys::fatUpdateFrame() _seqItems.size(): %d", _seqItems.size());
for (uint i = 0; i < _seqItems.size(); ++i) {
Sequence *seqItem = &_seqItems[i];
@@ -1260,7 +1259,7 @@ void GameSys::fatUpdateFrame() {
}
void GameSys::fatUpdate() {
- debug(1, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
+ debugC(kDebugBasic, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
for (int i = 0; i < _gfxItemsCount; ++i) {
_gfxItems[i]._updFlag = false;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 793cc2f..6e81af9 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -95,6 +95,7 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine(syst), _gameDescription(gd) {
_random = new Common::RandomSource("gnap");
+ DebugMan.addDebugChannel(kDebugBasic, "basic", "Basic debug level");
Engine::syncSoundSettings();
}
@@ -218,8 +219,6 @@ Common::Error GnapEngine::run() {
delete _exe;
- debug("run() done");
-
return Common::kNoError;
}
@@ -655,7 +654,7 @@ bool GnapEngine::isSoundPlaying(int resourceId) {
}
void GnapEngine::playSound(int resourceId, bool looping) {
- debug(0, "playSound(%08X, %d)", resourceId, looping);
+ debugC(kDebugBasic, "playSound(%08X, %d)", resourceId, looping);
_soundMan->playSound(resourceId, looping);
}
@@ -749,8 +748,6 @@ void GnapEngine::mainLoop() {
_grabCursorSpriteIndex = -1;
_grabCursorSprite = nullptr;
- debug("MainLoop #1");
-
// > DEBUG BEGIN
_currentSceneNum = 0;
_newSceneNum = 1;
@@ -760,16 +757,15 @@ void GnapEngine::mainLoop() {
loadStockDat();
while (!_gameDone) {
-
- debug("New scene: %d", _newSceneNum);
-
+ debugC(kDebugBasic, "New scene: %d", _newSceneNum);
+
_prevSceneNum = _currentSceneNum;
_currentSceneNum = _newSceneNum;
- debug("GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
+ debugC(kDebugBasic, "GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
if (_newCursorValue != _cursorValue) {
- debug("_newCursorValue: %d", _newCursorValue);
+ debugC(kDebugBasic, "_newCursorValue: %d", _newCursorValue);
_cursorValue = _newCursorValue;
if (!_wasSavegameLoaded)
initGameFlags(_cursorValue);
@@ -803,8 +799,6 @@ void GnapEngine::mainLoop() {
_dat->close(1);
// TODO freeMenuSprite();
// TODO freeFont();
-
- debug("MainLoop #XXX2");
}
void GnapEngine::initScene() {
@@ -824,7 +818,7 @@ void GnapEngine::initScene() {
datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
- debug("GnapEngine::initScene() datFilename: %s", datFilename.c_str());
+ debugC(kDebugBasic, "GnapEngine::initScene() datFilename: %s", datFilename.c_str());
_dat->open(0, datFilename.c_str());
@@ -896,7 +890,6 @@ void GnapEngine::checkGameKeys() {
updatePause();
}
// TODO? Debug input
-// debug("facing %d", _gnapIdleFacing);
}
void GnapEngine::startSoundTimerA(int timerIndex) {
@@ -2273,8 +2266,6 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
_toyUfoX = clippedDestX;
_toyUfoY = clippedDestY;
-// debug("v21: %d", v21);
-
if (i - 1 > 0) {
int seqId;
if (isFlag(kGFUnk16))
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 2773845..d40b26a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -83,6 +83,10 @@ struct GridStruct {
const int kMaxGridStructs = 30;
const int kMaxTimers = 10;
+enum GnapDebugChannels {
+ kDebugBasic = 1 << 0
+};
+
enum {
SF_NONE = 0x0000,
SF_LOOK_CURSOR = 0x0001,
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 20f3356..5bb1e06 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -575,7 +575,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
int gnapId = _gnapId;
int gnapSequenceDatNum = _gnapSequenceDatNum;
- debug(0, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
+ debugC(kDebugBasic, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
for (int index = 0; index < _gnapWalkNodesCount; ++index) {
_gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index eb07d96..ee9f14b 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "gnap/gnap.h"
#include "gnap/resource.h"
namespace Gnap {
@@ -36,8 +37,8 @@ void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
_spriteId = stream.readUint32LE();
_soundId = stream.readUint32LE();
_unusedVal = stream.readUint32LE();
- //isScaled = 0;//DEBUG
- debug(1, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
+
+ debugC(kDebugBasic, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
}
// SequenceAnimation
@@ -48,7 +49,7 @@ void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
_additionalDelay = stream.readUint32LE();
_framesCount = stream.readUint16LE();
_maxTotalDuration = stream.readUint16LE();
- debug(1, "SequenceAnimation() framesCount: %d", _framesCount);
+ debugC(kDebugBasic, "SequenceAnimation() framesCount: %d", _framesCount);
frames = new SequenceFrame[_framesCount];
for (int i = 0; i < _framesCount; ++i)
frames[i].loadFromStream(stream);
@@ -69,10 +70,10 @@ SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
_yOffs = stream.readUint16LE();
_animationsCount = stream.readUint32LE();
_animations = new SequenceAnimation[_animationsCount];
- debug(1, "SequenceResource() _animationsCount: %d", _animationsCount);
+ debugC(kDebugBasic, "SequenceResource() _animationsCount: %d", _animationsCount);
for (int i = 0; i < _animationsCount; ++i) {
uint32 animationOffs = stream.readUint32LE();
- debug(1, "animationOffs: %08X", animationOffs);
+ debugC(kDebugBasic, "animationOffs: %08X", animationOffs);
uint32 oldOffs = stream.pos();
stream.seek(animationOffs);
_animations[i].loadFromStream(stream);
@@ -97,7 +98,7 @@ SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
_colorsCount = READ_LE_UINT16(_data + 10);
_palette = (uint32*)(_data + 12);
_pixels = _data + 12 + _colorsCount * 4;
- debug(1, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
+ debugC(kDebugBasic, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
}
SpriteResource::~SpriteResource() {
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index b689869..dc67097 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -122,11 +122,11 @@ public:
ResourceClass *get(int resourceId) {
Resource *resource = find(resourceId);
if (!resource) {
- debug(1, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
+ debugC(kDebugBasic, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
resource = new Resource(load(resourceId));
_cache[resourceId] = resource;
} else {
- debug(1, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
+ debugC(kDebugBasic, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
}
resource->_isLocked = true;
return resource->_obj;
@@ -139,7 +139,6 @@ public:
}
void purge(bool force = false) {
- debug("Count before purge: %d", _cache.size());
for (CacheMapIterator it = _cache.begin(); it != _cache.end(); ++it) {
Resource *resource = it->_value;
if (force || !resource->_isLocked) {
@@ -147,7 +146,6 @@ public:
_cache.erase(it);
}
}
- debug("Count after purge: %d", _cache.size());
}
protected:
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index 89ca126..7bdfc81 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -102,11 +102,7 @@ void GnapEngine::scene15_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (_sceneClickedHotspot >= 0)
- debug("_sceneClickedHotspot: %d; _verbCursor: %d", _sceneClickedHotspot, _verbCursor);
-
switch (_sceneClickedHotspot) {
-
case kHSDevice:
if (_gnapActionStatus < 0) {
runMenu();
@@ -238,13 +234,10 @@ void GnapEngine::scene15_run() {
}
gameUpdateTick();
-
}
-
}
-void GnapEngine::scene15_updateAnimations() {
-
+void GnapEngine::scene15_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
if (_isLeavingScene) {
_sceneDone = true;
@@ -337,7 +330,6 @@ void GnapEngine::scene15_updateAnimations() {
}
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index b338b4c..4bd75f5 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -309,7 +309,7 @@ void GnapEngine::scene18_waitForGnapAction() {
}
void GnapEngine::scene18_run() {
- _s18_cowboyHatSurface = 0;
+ _s18_cowboyHatSurface = nullptr;
playSound(0x10940, true);
startSoundTimerA(4);
@@ -398,7 +398,6 @@ void GnapEngine::scene18_run() {
}
while (!_sceneDone) {
-
updateMouseCursor();
updateCursorByHotspot();
@@ -407,9 +406,6 @@ void GnapEngine::scene18_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
- if (_sceneClickedHotspot >= 0)
- debug("_sceneClickedHotspot: %d", _sceneClickedHotspot);
-
switch (_sceneClickedHotspot) {
case kHSDevice:
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index 9b2867a..a21641e 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -301,7 +301,7 @@ void GnapEngine::scene53_run() {
stopSound(0xA0);
++phoneNumberLen;
phoneNumber = scene53_pressPhoneNumberButton(phoneNumber, _sceneClickedHotspot - 1);
- debug("phoneNumber: %d", phoneNumber);
+ debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
if (phoneNumberLen == 7) {
_gnapActionStatus = 1;
if (isFlag(kGFSpringTaken)) {
Commit: 0577aae277db3521f0068dc23418b39b49cfaa5d
https://github.com/scummvm/scummvm/commit/0577aae277db3521f0068dc23418b39b49cfaa5d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix compilation
Changed paths:
engines/gnap/resource.h
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index dc67097..73cee76 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -122,11 +122,11 @@ public:
ResourceClass *get(int resourceId) {
Resource *resource = find(resourceId);
if (!resource) {
- debugC(kDebugBasic, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
+ debug(9, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
resource = new Resource(load(resourceId));
_cache[resourceId] = resource;
} else {
- debugC(kDebugBasic, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
+ debug(9, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
}
resource->_isLocked = true;
return resource->_obj;
@@ -156,10 +156,10 @@ protected:
Resource(ResourceClass *obj) : _obj(obj), _isLocked(false) {}
~Resource() { delete _obj; }
};
-
+
typedef Common::HashMap<int, Resource*> CacheMap;
typedef typename CacheMap::iterator CacheMapIterator;
-
+
DatManager *_dat;
CacheMap _cache;
@@ -169,7 +169,7 @@ protected:
return it->_value;
return nullptr;
}
-
+
ResourceClass *load(int resourceId) {
if (_dat->getResourceType(resourceId) != ResourceType) {
error("ResourceCache::load() Wrong resource type: Expected %d, got %d", ResourceType, _dat->getResourceType(resourceId));
Commit: 5c072b859e3e7ffaa45125f18cd1ff2c21aaf980
https://github.com/scummvm/scummvm/commit/5c072b859e3e7ffaa45125f18cd1ff2c21aaf980
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix warning
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 6e81af9..2dfd0b1 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -93,10 +93,10 @@ static const char *kSceneNames[] = {
GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine(syst), _gameDescription(gd) {
-
+
_random = new Common::RandomSource("gnap");
DebugMan.addDebugChannel(kDebugBasic, "basic", "Basic debug level");
-
+
Engine::syncSoundSettings();
}
@@ -112,9 +112,9 @@ Common::Error GnapEngine::run() {
// We do not support color conversion yet
if (_system->getScreenFormat() != format)
return Common::kUnsupportedColorMode;
-
+
_lastUpdateClock = 0;
-
+
// >>>>> Variable initialization
_cursorIndex = -1;
_verbCursor = 1;
@@ -143,7 +143,7 @@ Common::Error GnapEngine::run() {
_debugger = new Debugger(this);
_menuBackgroundSurface = nullptr;
-
+
initGlobalSceneVars();
#if 1
@@ -151,23 +151,23 @@ Common::Error GnapEngine::run() {
mainLoop();
#else
-
+
Graphics::Surface *testBack = new Graphics::Surface();
testBack->create(800, 600, _system->getScreenFormat());
//testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
-
+
_currentSceneNum = 41;
Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
_dat->open(0, datFilename.c_str());
-
+
_gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
_gameSys->insertSequence(0x11b, 100, -1, -1, kSeqNone, 0, 0, 0);
CursorMan.showMouse(true);
-
+
while (!shouldQuit()) {
Common::Event event;
@@ -188,7 +188,7 @@ Common::Error GnapEngine::run() {
break;
}
}
-
+
_gameSys->fatUpdate();
_gameSys->drawSprites();
_gameSys->updateScreen();
@@ -201,7 +201,7 @@ Common::Error GnapEngine::run() {
}
_dat->close(0);
-
+
testBack->free();
delete testBack;
@@ -216,7 +216,7 @@ Common::Error GnapEngine::run() {
delete _spriteCache;
delete _dat;
delete _debugger;
-
+
delete _exe;
return Common::kNoError;
@@ -637,7 +637,7 @@ void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int
}
int GnapEngine::getSequenceTotalDuration(int resourceId) {
- SequenceResource *sequenceResource = _sequenceCache->get(resourceId);
+ SequenceResource *sequenceResource = _sequenceCache->get(resourceId);
int maxValue = 0;
for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
SequenceAnimation *animation = &sequenceResource->_animations[i];
@@ -737,7 +737,7 @@ void GnapEngine::loadStockDat() {
}
void GnapEngine::mainLoop() {
-
+
_newCursorValue = 1;
_cursorValue = -1;
_newSceneNum = 0;
@@ -757,11 +757,11 @@ void GnapEngine::mainLoop() {
loadStockDat();
while (!_gameDone) {
- debugC(kDebugBasic, "New scene: %d", _newSceneNum);
+ debugC(kDebugBasic, "New scene: %d", _newSceneNum);
_prevSceneNum = _currentSceneNum;
_currentSceneNum = _newSceneNum;
-
+
debugC(kDebugBasic, "GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
if (_newCursorValue != _cursorValue) {
@@ -775,10 +775,10 @@ void GnapEngine::mainLoop() {
_wasSavegameLoaded = false;
initScene();
-
+
runSceneLogic();
afterScene();
-
+
_soundMan->stopAll();
// Force purge all resources
@@ -795,7 +795,7 @@ void GnapEngine::mainLoop() {
if (_backgroundSurface)
deleteSurface(&_backgroundSurface);
-
+
_dat->close(1);
// TODO freeMenuSprite();
// TODO freeFont();
@@ -803,7 +803,7 @@ void GnapEngine::mainLoop() {
void GnapEngine::initScene() {
Common::String datFilename;
-
+
_isLeavingScene = false;
_sceneDone = false;
_newSceneNum = 55;
@@ -851,7 +851,7 @@ void GnapEngine::endSceneInit() {
void GnapEngine::afterScene() {
if (_gameDone)
return;
-
+
if (_newCursorValue == _cursorValue && _newSceneNum != 0 && _newSceneNum != 16 &&
_newSceneNum != 47 && _newSceneNum != 48 && _newSceneNum != 54 && _newSceneNum != 49 &&
_newSceneNum != 50 && _newSceneNum != 51 && _newSceneNum != 52)
@@ -904,7 +904,7 @@ int GnapEngine::playSoundA() {
};
int soundId = -1;
-
+
if (!_timers[_soundTimerIndexA]) {
_timers[_soundTimerIndexA] = getRandom(50) + 100;
soundId = kSoundIdsA[getRandom(11)];
@@ -928,7 +928,7 @@ int GnapEngine::playSoundB() {
};
int soundId = -1;
-
+
if (!_timers[_soundTimerIndexB]) {
_timers[_soundTimerIndexB] = getRandom(50) + 150;
soundId = kSoundIdsB[getRandom(19)];
@@ -1019,7 +1019,7 @@ 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) {
@@ -1278,6 +1278,9 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case kDirUpRight:
sequenceId = 0x82F;
break;
+ case kDirNone:
+ case kDirUnk4:
+ break;
}
}
break;
@@ -1296,6 +1299,9 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case kDirUpRight:
sequenceId = 0x83E;
break;
+ case kDirNone:
+ case kDirUnk4:
+ break;
}
break;
@@ -1788,7 +1794,7 @@ void GnapEngine::doCallback(int callback) {
bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
bool result = false;
-
+
if (_gnapActionStatus <= -1 && _beaverActionStatus <= -1) {
_gnapActionStatus = 100;
if (isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY))
@@ -2017,32 +2023,32 @@ void GnapEngine::initGlobalSceneVars() {
_s01_pigsIdCtr = 0;
_s01_smokeIdCtr = 0;
_s01_spaceshipSurface = 0;
-
+
// Scene 2
_s02_truckGrillCtr = 0;
-
+
// Scene 3
_s03_nextPlatSequenceId = -1;
_s03_platypusScared = false;
_s03_platypusHypnotized = false;
-
+
// Scene 4
_s04_dogIdCtr = 0;
//_s04_triedWindow = true;//??
_s04_triedWindow = false;
-
+
// Scene 5
_s05_nextChickenSequenceId = -1;
-
+
// Scene 6
_s06_nextPlatSequenceId = -1;
-
+
// Scene 11
_s11_billardBallCtr = 0;
-
+
// Scene 13
_s13_backToiletCtr = -1;
-
+
// Scene 17
_s17_platTryGetWrenchCtr = 0;
_s17_wrenchCtr = 2;
@@ -2052,14 +2058,14 @@ void GnapEngine::initGlobalSceneVars() {
_s17_platPhoneCtr = 0;
_s17_nextPhoneSequenceId = -1;
_s17_currPhoneSequenceId = -1;
-
+
// Scene 18
_s18_garbageCanPos = 8;
_s18_platPhoneCtr = 0;
_s18_platPhoneIter = 0;
_s18_nextPhoneSequenceId = -1;
_s18_currPhoneSequenceId = -1;
-
+
// Scene 19
_s19_toyGrabCtr = 0;
_s19_pictureSurface = 0;
@@ -2069,11 +2075,11 @@ void GnapEngine::initGlobalSceneVars() {
_s20_stonerGuyCtr = 3;
_s20_stonerGuyShowingJoint = false;
_s20_groceryStoreGuyCtr = 0;
-
+
// Scene 22
_s22_caughtBefore = false;
_s22_cashierCtr = 3;
-
+
// Scene 31
_s31_beerGuyDistracted = false;
_s31_clerkMeasureMaxCtr = 3;
@@ -2086,13 +2092,13 @@ void GnapEngine::initGlobalSceneVars() {
_s50_leftTongueNextIdCtr = 0;
_s50_rightTongueEnergyBarPos = 10;
_s50_rightTongueNextIdCtr = 0;
-
+
// Scene 52
_s52_gameScore = 0;
_s52_aliensInitialized = false;
_s52_alienDirection = 0;
_s52_soundToggle = false;
-
+
// Scene 53
_s53_callsMadeCtr = 0;
_s53_callsRndUsed = 0;
@@ -2202,15 +2208,15 @@ bool GnapEngine::toyUfoCheckTimer() {
void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex) {
GridStruct v16[34];
-
+
if (destX == -1)
destX = _leftClickMouseX;
-
+
if (destY == -1)
destY = _leftClickMouseY;
//CHECKME
-
+
int clippedDestX = CLIP(destX, minX, maxX);
int clippedDestY = CLIP(destY, minY, maxY);
int dirX, dirY; // 0, -1 or 1
@@ -2219,12 +2225,12 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
dirX = 0;
else
dirX = (clippedDestX - _toyUfoX) / ABS(clippedDestX - _toyUfoX);
-
+
if (clippedDestY == _toyUfoY)
dirY = 0;
else
dirY = (clippedDestY - _toyUfoY) / ABS(clippedDestY - _toyUfoY);
-
+
int deltaX = ABS(clippedDestX - _toyUfoX);
int deltaY = ABS(clippedDestY - _toyUfoY);
@@ -2262,10 +2268,10 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
}
int v21 = i - 1;
-
+
_toyUfoX = clippedDestX;
_toyUfoY = clippedDestY;
-
+
if (i - 1 > 0) {
int seqId;
if (isFlag(kGFUnk16))
@@ -2289,13 +2295,13 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
kSeqSyncWait, 0,
v16[i].gridX1 - 365, v16[i].gridY1 - 128);
}
-
+
_toyUfoSequenceId = v16[v21 - 1].sequenceId;
_toyUfoId = v16[v21 - 1].id;
-
+
if (animationIndex >= 0)
_gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, animationIndex);
-
+
}
}
@@ -2307,7 +2313,7 @@ int GnapEngine::cutscene_init() {
}
void GnapEngine::cutscene_run() {
-
+
int itemIndex = 0;
int soundId = -1;
int volume = 100;
@@ -2330,13 +2336,13 @@ void GnapEngine::cutscene_run() {
for (int j = 0; j < _s99_sequenceCountArr[0]; ++j)
_gameSys->insertSequence(_s99_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(_s99_sequenceIdArr[0], 2, 0);
-
+
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(Common::KEYCODE_SPACE);
clearKeyStatus1(29);
_mouseClickState._left = false;
-
+
int firstSequenceIndex = 0;
while (!_sceneDone) {
gameUpdateTick();
@@ -2375,7 +2381,7 @@ void GnapEngine::cutscene_run() {
}
if (soundId != -1)
- stopSound(soundId);
+ stopSound(soundId);
}
} // End of namespace Gnap
Commit: 7762c494324075170ce3b84761bdaba31a390228
https://github.com/scummvm/scummvm/commit/7762c494324075170ce3b84761bdaba31a390228
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix another warning and adding a catching condition
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2dfd0b1..c42dc2b 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2273,7 +2273,7 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
_toyUfoY = clippedDestY;
if (i - 1 > 0) {
- int seqId;
+ int seqId = 0;
if (isFlag(kGFUnk16))
seqId = 0x867;
else if (isFlag(kGFJointTaken))
@@ -2282,6 +2282,8 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
seqId = 0x85F;
else if (isFlag(kGFGroceryStoreHatTaken))
seqId = 0x857;
+ else
+ error("Unhandled flag in GnapEngine::toyUfoFlyTo(): 0x%x", _gameFlags);
v16[0].sequenceId = seqId;
v16[0].id = 0;
_gameSys->insertSequence(seqId | 0x10000, 0,
Commit: f4fc5e251a79bb7ee7d6ba69251fc7db05747853
https://github.com/scummvm/scummvm/commit/f4fc5e251a79bb7ee7d6ba69251fc7db05747853
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add missing newlines at the end
Changed paths:
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 0822dc4..659ce0e 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -81,15 +81,15 @@ void GnapEngine::scene32_run() {
initBeaverPos(1, 7, kDirNone);
endSceneInit();
}
-
+
while (!_sceneDone) {
updateMouseCursor();
updateCursorByHotspot();
testWalk(0, 0, -1, -1, -1, -1);
-
+
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
-
+
switch (_sceneClickedHotspot) {
case kHSDevice:
if (_gnapActionStatus < 0) {
@@ -153,10 +153,10 @@ void GnapEngine::scene32_run() {
}
scene32_updateAnimations();
-
+
if (!isSoundPlaying(0x1091C))
playSound(0x1091C, true);
-
+
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
updateBeaverIdleSequence();
@@ -171,19 +171,19 @@ void GnapEngine::scene32_run() {
}
playSoundC();
}
-
+
checkGameKeys();
-
+
if (isKeyStatus1(8)) {
clearKeyStatus1(8);
runMenu();
scene32_updateHotspots();
}
-
+
gameUpdateTick();
-
+
}
-
+
}
void GnapEngine::scene32_updateAnimations() {
@@ -197,4 +197,3 @@ void GnapEngine::scene32_updateAnimations() {
}
} // End of namespace Gnap
-
\ No newline at end of file
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index 3069dba..7258832 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -106,10 +106,10 @@ void GnapEngine::scene33_run() {
updateMouseCursor();
updateCursorByHotspot();
testWalk(0, 0, 7, 6, 8, 6);
-
+
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
-
+
switch (_sceneClickedHotspot) {
case kHSDevice:
@@ -169,7 +169,7 @@ void GnapEngine::scene33_run() {
}
}
break;
-
+
case kHSExitHouse:
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
@@ -181,7 +181,7 @@ void GnapEngine::scene33_run() {
gnapWalkTo(6, 7, 0, 0x107B1, 1);
}
break;
-
+
case kHSExitBarn:
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
@@ -203,7 +203,7 @@ void GnapEngine::scene33_run() {
_newSceneNum = 34;
}
break;
-
+
case kHSExitPigpen:
if (_gnapActionStatus < 0) {
_isLeavingScene = true;
@@ -213,13 +213,13 @@ void GnapEngine::scene33_run() {
_newSceneNum = 32;
}
break;
-
+
case kHSWalkArea1:
case kHSWalkArea2:
if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_mouseClickState._left && _gnapActionStatus < 0) {
gnapWalkTo(-1, -1, -1, -1, 1);
@@ -228,12 +228,12 @@ void GnapEngine::scene33_run() {
break;
}
-
+
scene33_updateAnimations();
-
+
if (!isSoundPlaying(0x1091C))
playSound(0x1091C, true);
-
+
if (!_isLeavingScene) {
if (_beaverActionStatus < 0)
updateBeaverIdleSequence();
@@ -257,17 +257,17 @@ void GnapEngine::scene33_run() {
}
playSoundC();
}
-
+
checkGameKeys();
-
+
if (isKeyStatus1(8)) {
clearKeyStatus1(8);
runMenu();
scene33_updateHotspots();
}
-
+
gameUpdateTick();
-
+
}
}
@@ -328,4 +328,3 @@ void GnapEngine::scene33_updateAnimations() {
}
} // End of namespace Gnap
-
\ No newline at end of file
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index eab5670..3650c63 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -95,7 +95,7 @@ void GnapEngine::scene38_run() {
queueInsertDeviceIcon();
_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_prevSceneNum == 39) {
initGnapPos(3, 7, kDirBottomLeft);
initBeaverPos(4, 7, kDirUnk4);
@@ -106,13 +106,13 @@ void GnapEngine::scene38_run() {
endSceneInit();
while (!_sceneDone) {
-
+
updateMouseCursor();
updateCursorByHotspot();
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
-
+
switch (_sceneClickedHotspot) {
case kHSDevice:
@@ -222,7 +222,7 @@ void GnapEngine::scene38_run() {
else if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_mouseClickState._left) {
if (_gnapActionStatus == kASHoldingHuntingTrophy)
@@ -236,22 +236,22 @@ void GnapEngine::scene38_run() {
}
scene38_updateAnimations();
-
+
if (!_isLeavingScene) {
updateBeaverIdleSequence();
updateGnapIdleSequence();
}
-
+
checkGameKeys();
-
+
if (isKeyStatus1(8)) {
clearKeyStatus1(8);
runMenu();
scene38_updateHotspots();
}
-
+
gameUpdateTick();
-
+
}
}
@@ -362,4 +362,3 @@ void GnapEngine::scene38_updateAnimations() {
}
} // End of namespace Gnap
-
\ No newline at end of file
Commit: bd72968ccbfbb5f91843068b508f0e3db7c47665
https://github.com/scummvm/scummvm/commit/bd72968ccbfbb5f91843068b508f0e3db7c47665
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename members of GridStruct
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index c42dc2b..2188bda 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2246,8 +2246,8 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
v15 = MAX(6, v15 - 3);
}
v14 += v15;
- v16[i].gridX1 = _toyUfoX + dirX * deltaX * v14 / deltaY;
- v16[i].gridY1 = _toyUfoY + dirY * v14;
+ v16[i]._gridX1 = _toyUfoX + dirX * deltaX * v14 / deltaY;
+ v16[i]._gridY1 = _toyUfoY + dirY * v14;
++i;
}
} else {
@@ -2261,8 +2261,8 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
v17 = MAX(6, v17 - 3);
}
v14 += v17;
- v16[i].gridX1 = _toyUfoX + dirX * v14;
- v16[i].gridY1 = _toyUfoY + dirY * deltaY * v14 / deltaX;
+ v16[i]._gridX1 = _toyUfoX + dirX * v14;
+ v16[i]._gridY1 = _toyUfoY + dirY * deltaY * v14 / deltaX;
++i;
}
}
@@ -2284,22 +2284,22 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
seqId = 0x857;
else
error("Unhandled flag in GnapEngine::toyUfoFlyTo(): 0x%x", _gameFlags);
- v16[0].sequenceId = seqId;
- v16[0].id = 0;
+ v16[0]._sequenceId = seqId;
+ v16[0]._id = 0;
_gameSys->insertSequence(seqId | 0x10000, 0,
_toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, v16[0].gridX1 - 365, v16[0].gridY1 - 128);
+ kSeqSyncWait, 0, v16[0]._gridX1 - 365, v16[0]._gridY1 - 128);
for (i = 1; i < v21; ++i) {
- v16[i].sequenceId = seqId + (i % 8);
- v16[i].id = i;
- _gameSys->insertSequence(v16[i].sequenceId | 0x10000, v16[i].id,
- v16[i - 1].sequenceId | 0x10000, v16[i - 1].id,
+ v16[i]._sequenceId = seqId + (i % 8);
+ v16[i]._id = i;
+ _gameSys->insertSequence(v16[i]._sequenceId | 0x10000, v16[i]._id,
+ v16[i - 1]._sequenceId | 0x10000, v16[i - 1]._id,
kSeqSyncWait, 0,
- v16[i].gridX1 - 365, v16[i].gridY1 - 128);
+ v16[i]._gridX1 - 365, v16[i]._gridY1 - 128);
}
- _toyUfoSequenceId = v16[v21 - 1].sequenceId;
- _toyUfoId = v16[v21 - 1].id;
+ _toyUfoSequenceId = v16[v21 - 1]._sequenceId;
+ _toyUfoId = v16[v21 - 1]._id;
if (animationIndex >= 0)
_gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, animationIndex);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d40b26a..53ca33d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -74,10 +74,10 @@ struct Hotspot {
};
struct GridStruct {
- int deltaX, deltaY;
- int gridX1, gridY1;
- int sequenceId;
- int id;
+ int _deltaX, _deltaY;
+ int _gridX1, _gridY1;
+ int _sequenceId;
+ int _id;
};
const int kMaxGridStructs = 30;
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 5bb1e06..99add51 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -110,21 +110,21 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
_gnapWalkDirY = 0;
while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirXIncr;
++_gnapWalkDirYIncr;
} else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
} else {
_gnapWalkDeltaX = _gnapWalkDirXIncr;
@@ -132,13 +132,13 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
--_gnapWalkNodesCount;
}
} else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
} else {
_gnapWalkDeltaX = _gnapWalkDirXIncr;
@@ -150,11 +150,11 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
}
while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
++_gnapWalkNodesCount;
} else {
@@ -163,11 +163,11 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
}
while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
++_gnapWalkNodesCount;
} else {
@@ -204,32 +204,32 @@ bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
_gnapWalkDirY = 0;
while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirXIncr;
++_gnapWalkDirYIncr;
} else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
} else
return false;
@@ -238,11 +238,11 @@ bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
}
while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
++_gnapWalkNodesCount;
} else
@@ -250,11 +250,11 @@ bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
}
while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
++_gnapWalkNodesCount;
} else
@@ -282,11 +282,11 @@ bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
_gnapWalkDirY = 0;
while (_gnapWalkDeltaY < _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, gridY)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, gridY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
++_gnapWalkNodesCount;
} else
@@ -294,11 +294,11 @@ bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
}
while (_gnapWalkDeltaX < _gnapWalkDeltaY - _gnapWalkDirYIncr) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(gridX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(gridX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
++_gnapWalkNodesCount;
} else
@@ -306,32 +306,32 @@ bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
}
while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirXIncr;
++_gnapWalkDirYIncr;
} else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
} else
return false;
@@ -340,11 +340,11 @@ bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
}
while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount].gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
+ if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
++_gnapWalkDirXIncr;
++_gnapWalkNodesCount;
} else
@@ -352,11 +352,11 @@ bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
}
while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount].gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount].gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount].gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount].deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount].deltaY = _gnapWalkDirY;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
+ _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
+ if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
+ _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
++_gnapWalkDirYIncr;
++_gnapWalkNodesCount;
} else
@@ -373,160 +373,160 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
while (!done && gridIncr < _gridMaxX) {
if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41F5FC(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = 0;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41F5FC(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = 0;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41F5FC(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = 0;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = 0;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41F5FC(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = 0;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = 0;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41FAD5(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = 0;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41FAD5(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = 0;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41FAD5(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = 0;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = 0;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41FAD5(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = 0;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = 0;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY + i;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = 1;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY + i;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX + i;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = 1;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX + i;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = 1;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i].gridX1 = gridX - i;
- _gnapWalkNodes[i].gridY1 = gridY - i;
- _gnapWalkNodes[i].deltaX = -1;
- _gnapWalkNodes[i].deltaY = -1;
+ _gnapWalkNodes[i]._gridX1 = gridX - i;
+ _gnapWalkNodes[i]._gridY1 = gridY - i;
+ _gnapWalkNodes[i]._deltaX = -1;
+ _gnapWalkNodes[i]._deltaY = -1;
}
done = true;
break;
@@ -578,48 +578,48 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
debugC(kDebugBasic, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
for (int index = 0; index < _gnapWalkNodesCount; ++index) {
- _gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;
- if (_gnapWalkNodes[index].deltaX == 1 && _gnapWalkNodes[index].deltaY == 0) {
+ _gnapWalkNodes[index]._id = index + 20 * _gnapWalkNodes[index]._gridY1;
+ if (_gnapWalkNodes[index]._deltaX == 1 && _gnapWalkNodes[index]._deltaY == 0) {
if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
- _gnapWalkNodes[index].sequenceId = 0x7AB;
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ _gnapWalkNodes[index]._sequenceId = 0x7AB;
gnapSequenceId = 0x7AB;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
- _gnapWalkNodes[index].sequenceId = 0x7AC;
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ _gnapWalkNodes[index]._sequenceId = 0x7AC;
gnapSequenceId = 0x7AC;
}
- } else if (_gnapWalkNodes[index].deltaX == -1 && _gnapWalkNodes[index].deltaY == 0) {
+ } else if (_gnapWalkNodes[index]._deltaX == -1 && _gnapWalkNodes[index]._deltaY == 0) {
if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
- _gnapWalkNodes[index].sequenceId = 0x7AF;
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ _gnapWalkNodes[index]._sequenceId = 0x7AF;
gnapSequenceId = 0x7AF;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
- _gnapWalkNodes[index].sequenceId = 0x7B0;
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ _gnapWalkNodes[index]._sequenceId = 0x7B0;
gnapSequenceId = 0x7B0;
}
} else {
- if (_gnapWalkNodes[index].deltaY == -1)
- _gnapWalkNodes[index].id -= 10;
+ if (_gnapWalkNodes[index]._deltaY == -1)
+ _gnapWalkNodes[index]._id -= 10;
else
- _gnapWalkNodes[index].id += 10;
- int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index].deltaX, _gnapWalkNodes[index].deltaY);
- _gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index].id,
+ _gnapWalkNodes[index]._id += 10;
+ int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index]._deltaX, _gnapWalkNodes[index]._deltaY);
+ _gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index].gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index].gridY1 - _gnapGridY);
- _gnapWalkNodes[index].sequenceId = newSequenceId;
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ _gnapWalkNodes[index]._sequenceId = newSequenceId;
gnapSequenceId = newSequenceId;
}
- gnapId = _gnapWalkNodes[index].id;
+ gnapId = _gnapWalkNodes[index]._id;
gnapSequenceDatNum = datNum;
}
@@ -627,7 +627,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (_gnapWalkNodesCount > 0) {
_gnapSequenceId = gnapSequenceId;
_gnapId = gnapId;
- _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
+ _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
_gnapSequenceDatNum = datNum;
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
@@ -656,8 +656,8 @@ 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);
- _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1].deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1].deltaY);
+ _gnapSequenceId = getGnapWalkStopSequenceId(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
+ _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
} else if (gridX >= 0 || gridY >= 0) {
switch (_gnapIdleFacing) {
case kDirBottomRight:
@@ -767,21 +767,21 @@ bool GnapEngine::gridSub423750(int gridX, int gridY) {
_platWalkDirY = 0;
while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirXIncr;
++_platWalkDirYIncr;
} else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
} else {
_platWalkDeltaX = _platWalkDirXIncr;
@@ -789,13 +789,13 @@ bool GnapEngine::gridSub423750(int gridX, int gridY) {
--_platWalkNodesCount;
}
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
} else {
_platWalkDeltaX = _platWalkDirXIncr;
@@ -807,11 +807,11 @@ bool GnapEngine::gridSub423750(int gridX, int gridY) {
}
while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
++_platWalkNodesCount;
} else {
@@ -820,11 +820,11 @@ bool GnapEngine::gridSub423750(int gridX, int gridY) {
}
while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
++_platWalkNodesCount;
} else {
@@ -861,32 +861,32 @@ bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
_platWalkDirY = 0;
while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirXIncr;
++_platWalkDirYIncr;
} else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
} else
return false;
@@ -895,11 +895,11 @@ bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
}
while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
++_platWalkNodesCount;
} else
@@ -907,11 +907,11 @@ bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
}
while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
++_platWalkNodesCount;
} else
@@ -939,11 +939,11 @@ bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
_platWalkDirY = 0;
while (_platWalkDeltaY < _platWalkDeltaX - _platWalkDirXIncr) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, gridY)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, gridY)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
++_platWalkNodesCount;
} else
@@ -951,11 +951,11 @@ bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
}
while (_platWalkDeltaX < _platWalkDeltaY - _platWalkDirYIncr) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(gridX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(gridX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
++_platWalkNodesCount;
} else
@@ -963,32 +963,32 @@ bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
}
while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirXIncr;
++_platWalkDirYIncr;
} else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
} else
return false;
@@ -997,11 +997,11 @@ bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
}
while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount].gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount].gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount].deltaY = 0;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
+ if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
++_platWalkDirXIncr;
++_platWalkNodesCount;
} else
@@ -1009,11 +1009,11 @@ bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
}
while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount].gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount].gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount].gridY1)) {
- _platWalkNodes[_platWalkNodesCount].deltaX = 0;
- _platWalkNodes[_platWalkNodesCount].deltaY = _platWalkDirY;
+ _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
+ _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
+ _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
+ _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
++_platWalkDirYIncr;
++_platWalkNodesCount;
} else
@@ -1030,160 +1030,160 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
while (!done && gridIncr < _gridMaxX) {
if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub423CC1(_platX + gridIncr, _platY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = 0;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub423CC1(_platX - gridIncr, _platY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = 0;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub423CC1(_platX, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = 0;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = 0;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub423CC1(_platX, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = 0;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = 0;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub423CC1(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub423CC1(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub423CC1(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub423CC1(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub42419A(_platX + gridIncr, _platY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = 0;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub42419A(_platX - gridIncr, _platY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = 0;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub42419A(_platX, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = 0;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = 0;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub42419A(_platX, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = 0;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = 0;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub42419A(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub42419A(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY + i;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = 1;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub42419A(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX + i;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = 1;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX + i;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = 1;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub42419A(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i].gridX1 = _platX - i;
- _platWalkNodes[i].gridY1 = _platY - i;
- _platWalkNodes[i].deltaX = -1;
- _platWalkNodes[i].deltaY = -1;
+ _platWalkNodes[i]._gridX1 = _platX - i;
+ _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._deltaX = -1;
+ _platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
@@ -1230,48 +1230,48 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
int platSequenceDatNum = _beaverSequenceDatNum;
for (int index = 0; index < _platWalkNodesCount; ++index) {
- _platWalkNodes[index].id = index + 20 * _platWalkNodes[index].gridY1;
- if (_platWalkNodes[index].deltaX == 1 && _platWalkNodes[index].deltaY == 0) {
+ _platWalkNodes[index]._id = index + 20 * _platWalkNodes[index]._gridY1;
+ if (_platWalkNodes[index]._deltaX == 1 && _platWalkNodes[index]._deltaY == 0) {
if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
- _platWalkNodes[index].sequenceId = 0x7CD;
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ _platWalkNodes[index]._sequenceId = 0x7CD;
platSequenceId = 0x7CD;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
- _platWalkNodes[index].sequenceId = 0x7CE;
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ _platWalkNodes[index]._sequenceId = 0x7CE;
platSequenceId = 0x7CE;
}
- } else if (_platWalkNodes[index].deltaX == -1 && _platWalkNodes[index].deltaY == 0) {
+ } else if (_platWalkNodes[index]._deltaX == -1 && _platWalkNodes[index]._deltaY == 0) {
if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
- _platWalkNodes[index].sequenceId = 0x7CF;
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ _platWalkNodes[index]._sequenceId = 0x7CF;
platSequenceId = 0x7CF;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index].id,
+ _gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
- _platWalkNodes[index].sequenceId = 0x7D0;
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ _platWalkNodes[index]._sequenceId = 0x7D0;
platSequenceId = 0x7D0;
}
} else {
- if (_platWalkNodes[index].deltaY == -1)
- _platWalkNodes[index].id -= 10;
+ if (_platWalkNodes[index]._deltaY == -1)
+ _platWalkNodes[index]._id -= 10;
else
- _platWalkNodes[index].id += 10;
- int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index].deltaX, _platWalkNodes[index].deltaY);
- _gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index].id,
+ _platWalkNodes[index]._id += 10;
+ int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
+ _gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index].gridX1 - _platGridX, 48 * _platWalkNodes[index].gridY1 - _platGridY);
- _platWalkNodes[index].sequenceId = newSequenceId;
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ _platWalkNodes[index]._sequenceId = newSequenceId;
platSequenceId = newSequenceId;
}
- platId = _platWalkNodes[index].id;
+ platId = _platWalkNodes[index]._id;
platSequenceDatNum = datNum;
}
@@ -1281,11 +1281,11 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_beaverId = platId;
_beaverSequenceDatNum = datNum;
// CHECKME Not sure if this is correct...
- if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0)
+ if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0)
_beaverFacing = kDirNone;
- else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0)
+ else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0)
_beaverFacing = kDirUnk4;
- else if (_platWalkNodes[_platWalkNodesCount - 1].gridX1 % 2)
+ else if (_platWalkNodes[_platWalkNodesCount - 1]._gridX1 % 2)
_beaverFacing = kDirUnk4;
else
_beaverFacing = kDirNone;
@@ -1306,16 +1306,16 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
}
} else {
if (_platWalkNodesCount > 0) {
- if (_platWalkNodes[_platWalkNodesCount - 1].deltaX > 0) {
+ if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0) {
_beaverSequenceId = 0x7C2;
_beaverFacing = kDirNone;
- } else if (_platWalkNodes[_platWalkNodesCount - 1].deltaX < 0) {
+ } else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0) {
_beaverSequenceId = 0x7D2;
_beaverFacing = kDirUnk4;
- } else if (_platWalkNodes[0].deltaX > 0) {
+ } else if (_platWalkNodes[0]._deltaX > 0) {
_beaverSequenceId = 0x7C2;
_beaverFacing = kDirNone;
- } else if (_platWalkNodes[0].deltaX < 0) {
+ } else if (_platWalkNodes[0]._deltaX < 0) {
_beaverSequenceId = 0x7D2;
_beaverFacing = kDirUnk4;
} else {
Commit: e340538f5cce72619e8773e97797e4fb8d467980
https://github.com/scummvm/scummvm/commit/e340538f5cce72619e8773e97797e4fb8d467980
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename variables in toyUfoFlyTo
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2188bda..bfb4978 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2207,7 +2207,7 @@ bool GnapEngine::toyUfoCheckTimer() {
}
void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex) {
- GridStruct v16[34];
+ GridStruct flyNodes[34];
if (destX == -1)
destX = _leftClickMouseX;
@@ -2216,19 +2216,14 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
destY = _leftClickMouseY;
//CHECKME
-
int clippedDestX = CLIP(destX, minX, maxX);
int clippedDestY = CLIP(destY, minY, maxY);
- int dirX, dirY; // 0, -1 or 1
+ int dirX = 0, dirY = 0; // 0, -1 or 1
- if (clippedDestX == _toyUfoX)
- dirX = 0;
- else
+ if (clippedDestX != _toyUfoX)
dirX = (clippedDestX - _toyUfoX) / ABS(clippedDestX - _toyUfoX);
- if (clippedDestY == _toyUfoY)
- dirY = 0;
- else
+ if (clippedDestY != _toyUfoY)
dirY = (clippedDestY - _toyUfoY) / ABS(clippedDestY - _toyUfoY);
int deltaX = ABS(clippedDestX - _toyUfoX);
@@ -2236,43 +2231,43 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
int i = 0;
if (deltaY > deltaX) {
- int v15 = 32;
- int v22 = deltaY / v15;
- int v14 = 0;
- while (v14 < deltaY && i < 34) {
- if (v22 - 5 >= i) {
- v15 = MIN(36, 8 * i + 8);
+ int flyDirYIncr = 32;
+ int gridDistY = deltaY / flyDirYIncr;
+ int curMove = 0;
+ while (curMove < deltaY && i < 34) {
+ if (gridDistY - 5 >= i) {
+ flyDirYIncr = MIN(36, 8 * i + 8);
} else {
- v15 = MAX(6, v15 - 3);
+ flyDirYIncr = MAX(6, flyDirYIncr - 3);
}
- v14 += v15;
- v16[i]._gridX1 = _toyUfoX + dirX * deltaX * v14 / deltaY;
- v16[i]._gridY1 = _toyUfoY + dirY * v14;
+ curMove += flyDirYIncr;
+ flyNodes[i]._gridX1 = _toyUfoX + dirX * deltaX * curMove / deltaY;
+ flyNodes[i]._gridY1 = _toyUfoY + dirY * curMove;
++i;
}
} else {
- int v17 = 36;
- int v22 = deltaX / v17;
- int v14 = 0;
- while (v14 < deltaX && i < 34) {
- if (v22 - 5 >= i) {
- v17 = MIN(38, 8 * i + 8);
+ int flyDirXIncr = 36;
+ int gridDistX = deltaX / flyDirXIncr;
+ int curMove = 0;
+ while (curMove < deltaX && i < 34) {
+ if (gridDistX - 5 >= i) {
+ flyDirXIncr = MIN(38, 8 * i + 8);
} else {
- v17 = MAX(6, v17 - 3);
+ flyDirXIncr = MAX(6, flyDirXIncr - 3);
}
- v14 += v17;
- v16[i]._gridX1 = _toyUfoX + dirX * v14;
- v16[i]._gridY1 = _toyUfoY + dirY * deltaY * v14 / deltaX;
+ curMove += flyDirXIncr;
+ flyNodes[i]._gridX1 = _toyUfoX + dirX * curMove;
+ flyNodes[i]._gridY1 = _toyUfoY + dirY * deltaY * curMove / deltaX;
++i;
}
}
- int v21 = i - 1;
+ int nodesCount = i - 1;
_toyUfoX = clippedDestX;
_toyUfoY = clippedDestY;
- if (i - 1 > 0) {
+ if (nodesCount > 0) {
int seqId = 0;
if (isFlag(kGFUnk16))
seqId = 0x867;
@@ -2284,28 +2279,27 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
seqId = 0x857;
else
error("Unhandled flag in GnapEngine::toyUfoFlyTo(): 0x%x", _gameFlags);
- v16[0]._sequenceId = seqId;
- v16[0]._id = 0;
+ flyNodes[0]._sequenceId = seqId;
+ flyNodes[0]._id = 0;
_gameSys->insertSequence(seqId | 0x10000, 0,
_toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, v16[0]._gridX1 - 365, v16[0]._gridY1 - 128);
- for (i = 1; i < v21; ++i) {
- v16[i]._sequenceId = seqId + (i % 8);
- v16[i]._id = i;
- _gameSys->insertSequence(v16[i]._sequenceId | 0x10000, v16[i]._id,
- v16[i - 1]._sequenceId | 0x10000, v16[i - 1]._id,
+ kSeqSyncWait, 0, flyNodes[0]._gridX1 - 365, flyNodes[0]._gridY1 - 128);
+ for (i = 1; i < nodesCount; ++i) {
+ flyNodes[i]._sequenceId = seqId + (i % 8);
+ flyNodes[i]._id = i;
+ _gameSys->insertSequence(flyNodes[i]._sequenceId | 0x10000, flyNodes[i]._id,
+ flyNodes[i - 1]._sequenceId | 0x10000, flyNodes[i - 1]._id,
kSeqSyncWait, 0,
- v16[i]._gridX1 - 365, v16[i]._gridY1 - 128);
+ flyNodes[i]._gridX1 - 365, flyNodes[i]._gridY1 - 128);
}
- _toyUfoSequenceId = v16[v21 - 1]._sequenceId;
- _toyUfoId = v16[v21 - 1]._id;
+ _toyUfoSequenceId = flyNodes[nodesCount - 1]._sequenceId;
+ _toyUfoId = flyNodes[nodesCount - 1]._id;
if (animationIndex >= 0)
_gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, animationIndex);
}
-
}
// Scene 99
Commit: d90b948b22bb1c46e2ae1c807b17f5d07744cd6e
https://github.com/scummvm/scummvm/commit/d90b948b22bb1c46e2ae1c807b17f5d07744cd6e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Some renaming in scene 52
Changed paths:
engines/gnap/gnap.h
engines/gnap/scenes/scene52.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 53ca33d..5b183cb 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -1118,10 +1118,10 @@ public:
int scene52_getHitAlienNum(int rowNum);
int scene52_alienCannonHitShip(int cannonNum);
int scene52_alienCannonHitShield(int cannonNum);
- int scene52_shipCannonHitShield(int cannonNum);
- int scene52_shipCannonHitAlien();
+ bool scene52_shipCannonHitShield(int cannonNum);
+ bool scene52_shipCannonHitAlien();
void scene52_shipExplode();
- int scene52_checkAlienRow(int rowNum);
+ bool scene52_checkAlienRow(int rowNum);
void scene52_updateAlienRowXOfs();
void scene52_initAlienSize();
void scene52_playSound();
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 0caf7a8..3d74538 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -547,33 +547,33 @@ int GnapEngine::scene52_alienCannonHitShield(int cannonNum) {
return result;
}
-int GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
- int result = 0;
+bool GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
+ bool result = false;
if (_s52_shipCannonPosX < _s52_shieldPosX[0])
- return 0;
+ return result;
if (_s52_shipCannonPosX > _s52_shieldPosX[2] + 33)
- return 0;
+ return result;
int shieldNum = -1;
if (_s52_shipCannonPosX < _s52_shieldPosX[0] + 33)
shieldNum = 0;
if (shieldNum < 0 && _s52_shipCannonPosX < _s52_shieldPosX[1])
- return 0;
+ return result;
if (shieldNum < 0 && _s52_shipCannonPosX < _s52_shieldPosX[1] + 33)
shieldNum = 1;
if (shieldNum < 0) {
if (_s52_shipCannonPosX < _s52_shieldPosX[2])
- return 0;
+ return result;
shieldNum = 2;
}
if (_s52_shieldSpriteIds[shieldNum] == -1) {
- result = 0;
+ result = false;
} else {
++_s52_shieldSpriteIds[shieldNum];
if (_s52_shieldSpriteIds[shieldNum] <= 21) {
@@ -584,52 +584,49 @@ int GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
}
_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_shipCannonPosX - 18, _s52_arcadeScreenBottom - 44);
playSound(0x2C, false);
- result = 1;
+ result = true;
}
return result;
}
-int GnapEngine::scene52_shipCannonHitAlien() {
- int result = 0;
+bool GnapEngine::scene52_shipCannonHitAlien() {
+ bool result = false;
- if (_s52_aliensCount) {
- result = 0;
- } else if (scene52_checkAlienRow(0)) {
- result = 0;
- } else {
- int v1 = _s52_alienLeftX + _s52_alienRowXOfs[0];
- if (_s52_shipMidX + _s52_shipPosX >= _s52_alienLeftX + _s52_alienRowXOfs[0]) {
- int v7 = _s52_alienWidth / 2 - 15;
- if (v1 + 5 * _s52_alienWidth - v7 >= _s52_shipPosX) {
- int v2 = v1 + _s52_alienWidth;
- if (_s52_items[0][0] <= -1 || v2 - v7 <= _s52_shipPosX) {
- int v3 = v2 + _s52_alienWidth;
- if (_s52_items[0][1] <= -1 || v3 - v7 <= _s52_shipPosX) {
- int v4 = v3 + _s52_alienWidth;
- if (_s52_items[0][2] <= -1 || v4 - v7 <= _s52_shipPosX) {
- int v5 = v4 + _s52_alienWidth;
- if (_s52_items[0][3] <= -1 || v5 - v7 <= _s52_shipPosX) {
- int v6 = v5 + _s52_alienWidth;
- result = _s52_items[0][4] > -1 && v6 - v7 > _s52_shipPosX;
- } else {
- result = 1;
- }
+ if (_s52_aliensCount || scene52_checkAlienRow(0))
+ return false;
+
+ int alienNextX = _s52_alienLeftX + _s52_alienRowXOfs[0];
+ if (_s52_shipMidX + _s52_shipPosX >= alienNextX) {
+ int startX = _s52_alienWidth / 2 - 15;
+ if (alienNextX + 5 * _s52_alienWidth - startX >= _s52_shipPosX) {
+ int alienNextDeltaX = alienNextX + _s52_alienWidth;
+ if (_s52_items[0][0] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
+ alienNextDeltaX += _s52_alienWidth;
+ if (_s52_items[0][1] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
+ alienNextDeltaX += _s52_alienWidth;
+ if (_s52_items[0][2] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
+ alienNextDeltaX += _s52_alienWidth;
+ if (_s52_items[0][3] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
+ alienNextDeltaX += _s52_alienWidth;
+ result = _s52_items[0][4] > -1 && alienNextDeltaX - startX > _s52_shipPosX;
} else {
- result = 1;
+ result = true;
}
} else {
- result = 1;
+ result = true;
}
} else {
- result = 1;
+ result = true;
}
} else {
- result = 0;
+ result = true;
}
} else {
- result = 0;
+ result = false;
}
+ } else {
+ result = false;
}
return result;
@@ -646,21 +643,22 @@ void GnapEngine::scene52_shipExplode() {
}
}
-int GnapEngine::scene52_checkAlienRow(int rowNum) {
- for (int i = 0; i < 5; ++i)
+bool GnapEngine::scene52_checkAlienRow(int rowNum) {
+ for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0)
- return 0;
+ return false;
+ }
- int v4 = 0;
+ bool found = false;
for (int j = 0; j < 5; ++j)
if (_s52_items[rowNum][j] == -2) {
_gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
_s52_items[rowNum][j] = -1;
--_s52_alienSpeed;
- v4 = 1;
+ found = true;
}
- if (v4) {
+ if (found) {
_gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
--_s52_liveAlienRows;
}
@@ -668,7 +666,7 @@ int GnapEngine::scene52_checkAlienRow(int rowNum) {
if (_s52_liveAlienRows < 0)
_s52_liveAlienRows = 0;
- return 1;
+ return true;
}
void GnapEngine::scene52_updateAlienRowXOfs() {
@@ -699,11 +697,9 @@ void GnapEngine::scene52_updateAlienRowXOfs() {
}
}
}
-
}
void GnapEngine::scene52_initAlienSize() {
-
_s52_alienWidth = _gameSys->getSpriteWidthById(0);
if (_gameSys->getSpriteWidthById(1) > _s52_alienWidth)
_s52_alienWidth = _gameSys->getSpriteWidthById(1);
@@ -750,9 +746,10 @@ void GnapEngine::scene52_updateAliens() {
void GnapEngine::scene52_updateAlien(int rowNum) {
if (_s52_alienRowKind[rowNum] >= 0 && !scene52_checkAlienRow(rowNum)) {
- for (int i = 0; i < 5; ++i)
+ for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0)
_s52_items[rowNum][i] = -2;
+ }
scene52_checkAlienRow(rowNum);
}
}
@@ -791,7 +788,6 @@ void GnapEngine::scene52_drawScore(int score) {
}
void GnapEngine::scene52_run() {
-
_timers[1] = 0;
hideCursor();
@@ -847,7 +843,6 @@ void GnapEngine::scene52_run() {
_s52_alienWave = true;
while (!_sceneDone) {
-
gameUpdateTick();
while (isKeyStatus2(Common::KEYCODE_RIGHT)) {
@@ -893,13 +888,11 @@ void GnapEngine::scene52_run() {
clearKeyStatus1(30);
_sceneDone = true;
}
-
}
// TODO freeFont();
_gameSys->waitForUpdate();
-
}
} // End of namespace Gnap
Commit: d6e4b67dca52c4cf7aae156ba5cb7523a60a0595
https://github.com/scummvm/scummvm/commit/d6e4b67dca52c4cf7aae156ba5cb7523a60a0595
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add load from launcher
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/menu.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index bfb4978..b951911 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -118,8 +118,14 @@ Common::Error GnapEngine::run() {
// >>>>> Variable initialization
_cursorIndex = -1;
_verbCursor = 1;
+
+ _loadGameSlot = -1;
+ if (ConfMan.hasKey("save_slot"))
+ _loadGameSlot = ConfMan.getInt("save_slot");
+
invClear();
clearFlags();
+
_grabCursorSprite = nullptr;
_newGrabCursorSpriteIndex = -1;
_backgroundSurface = nullptr;
@@ -737,7 +743,6 @@ void GnapEngine::loadStockDat() {
}
void GnapEngine::mainLoop() {
-
_newCursorValue = 1;
_cursorValue = -1;
_newSceneNum = 0;
@@ -748,14 +753,25 @@ void GnapEngine::mainLoop() {
_grabCursorSpriteIndex = -1;
_grabCursorSprite = nullptr;
+#if 0
// > DEBUG BEGIN
_currentSceneNum = 0;
_newSceneNum = 1;
_newCursorValue = 1;
// < DEBUG END
+#endif
loadStockDat();
+ if (_loadGameSlot != -1) {
+ // Load a savegame
+ int slot = _loadGameSlot;
+ _loadGameSlot = -1;
+ loadGameState(slot);
+
+ showCursor();
+ }
+
while (!_gameDone) {
debugC(kDebugBasic, "New scene: %d", _newSceneNum);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 5b183cb..5318e3f 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -298,6 +298,8 @@ public:
private:
const ADGameDescription *_gameDescription;
Graphics::PixelFormat _pixelFormat;
+ int _loadGameSlot;
+
public:
Common::RandomSource *_random;
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 82e45ded..d1701d7 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -233,7 +233,6 @@ void GnapEngine::drawInventoryFrames() {
}
void GnapEngine::insertInventorySprites() {
-
for (int i = 0; i < 9; ++i) {
_menuInventoryIndices[i] = -1;
_gameSys->removeSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot], 261);
@@ -258,7 +257,6 @@ void GnapEngine::insertInventorySprites() {
++_menuSpritesIndex;
}
}
-
}
void GnapEngine::removeInventorySprites() {
@@ -313,7 +311,6 @@ void GnapEngine::runMenu() {
_timers[2] = 10;
while (!isKeyStatus1(8) && !isKeyStatus1(28) && !_sceneDone && !_menuDone) {
-
updateCursorByHotspot();
switch (_menuStatus) {
@@ -335,7 +332,6 @@ void GnapEngine::runMenu() {
}
gameUpdateTick();
-
}
removeInventorySprites();
@@ -385,7 +381,6 @@ void GnapEngine::runMenu() {
}
void GnapEngine::updateMenuStatusInventory() {
-
static const struct {
int item1, item2, resultItem;
} kCombineItems[] = {
@@ -727,6 +722,7 @@ Common::Error GnapEngine::loadGameState(int slot) {
synchronize(s);
delete saveFile;
+ _loadGameSlot = slot;
return Common::kNoError;
}
@@ -735,7 +731,7 @@ Common::String GnapEngine::generateSaveName(int slot) {
}
void GnapEngine::updateMenuStatusSaveGame() {
-#if 1 // TODO
+#if 0 // TODO
char v43[30];
int v46;
v43[0] = '\0';
@@ -925,7 +921,6 @@ void GnapEngine::updateMenuStatusLoadGame() {
}
void GnapEngine::updateMenuStatusQueryQuit() {
-
_hotspots[0]._x1 = 311;
_hotspots[0]._y1 = 197;
_hotspots[0]._x2 = 377;
@@ -964,7 +959,6 @@ void GnapEngine::updateMenuStatusQueryQuit() {
initMenuHotspots2();
_gameSys->insertSpriteDrawItem(_menuSprite1, 288, 79, 262);
}
-
}
} // End of namespace Gnap
Commit: 63a13bc2c05ed9e24aaf8294e8a03d6ff9043d45
https://github.com/scummvm/scummvm/commit/63a13bc2c05ed9e24aaf8294e8a03d6ff9043d45
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add some code to fix the transition from intro to game
Changed paths:
engines/gnap/scenes/scene00.cpp
diff --git a/engines/gnap/scenes/scene00.cpp b/engines/gnap/scenes/scene00.cpp
index 8291546..7be508e 100644
--- a/engines/gnap/scenes/scene00.cpp
+++ b/engines/gnap/scenes/scene00.cpp
@@ -169,6 +169,8 @@ void GnapEngine::scene00_run() {
_newSceneNum = 1;
_newCursorValue = 1;
+
+ _dat->open(1, "stock_n.dat");
}
} // End of namespace Gnap
Commit: 08ba28db7ffa2db9dbd8bb660260e0e78e5a45fb
https://github.com/scummvm/scummvm/commit/08ba28db7ffa2db9dbd8bb660260e0e78e5a45fb
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Cosmetic changes
Changed paths:
engines/gnap/datarchive.cpp
engines/gnap/gnap.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene42.cpp
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index 0f6faee..a2de0b3 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -72,7 +72,7 @@ byte *DatArchive::load(int index) {
DatManager::DatManager() {
for (int i = 0; i < kMaxDatArchives; ++i)
- _datArchives[i] = 0;
+ _datArchives[i] = nullptr;
}
DatManager::~DatManager() {
@@ -87,7 +87,7 @@ void DatManager::open(int index, const char *filename) {
void DatManager::close(int index) {
delete _datArchives[index];
- _datArchives[index] = 0;
+ _datArchives[index] = nullptr;
}
byte *DatManager::loadResource(int resourceId) {
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index b951911..79cab3d 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -959,7 +959,6 @@ void GnapEngine::startSoundTimerC(int timerIndex) {
}
int GnapEngine::playSoundC() {
-
static const int kSoundIdsC[] = {
0x918, 0x91F, 0x920, 0x922, 0x923, 0x924,
0x926
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 4bd75f5..a13432d 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -770,11 +770,9 @@ void GnapEngine::scene18_run() {
if (isFlag(kGFGnapControlsToyUFO))
deleteSurface(&_s18_cowboyHatSurface);
-
}
void GnapEngine::scene18_updateAnimations() {
-
if (_gameSys->getAnimationStatus(0) == 2) {
_gameSys->setAnimation(0, 0, 0);
switch (_gnapActionStatus) {
@@ -1016,7 +1014,6 @@ void GnapEngine::scene18_updateAnimations() {
scene18_platEndPhoning(true);
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 906d84f..5685f5c 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -145,22 +145,19 @@ void GnapEngine::scene42_run() {
}
while (!_sceneDone) {
-
if (!isSoundPlaying(0x1094B))
playSound(0x1094B, true);
-
+
updateMouseCursor();
updateCursorByHotspot();
-
+
testWalk(0, 0, -1, -1, -1, -1);
-
+
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
-
- if (isFlag(kGFGnapControlsToyUFO)) {
+ if (isFlag(kGFGnapControlsToyUFO)) {
switch (_sceneClickedHotspot) {
-
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
_isLeavingScene = true;
@@ -194,7 +191,6 @@ void GnapEngine::scene42_run() {
runMenu();
scene42_updateHotspots();
break;
-
}
} else {
switch (_sceneClickedHotspot) {
@@ -203,7 +199,7 @@ void GnapEngine::scene42_run() {
scene42_updateHotspots();
_timers[4] = getRandom(20) + 30;
break;
-
+
case kHSPlatypus:
if (_gnapActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
@@ -277,7 +273,7 @@ void GnapEngine::scene42_run() {
}
}
break;
-
+
case kHSChickenLeg:
if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[kHSChickenLeg].x, _hotspotsWalkPos[kHSChickenLeg].y, _hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
@@ -297,17 +293,16 @@ void GnapEngine::scene42_run() {
}
}
break;
-
+
case kHSWalkArea1:
case kHSWalkArea2:
if (_gnapActionStatus < 0)
gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
}
-
}
-
+
if (_mouseClickState._left && _gnapActionStatus < 0) {
_mouseClickState._left = false;
if (isFlag(kGFGnapControlsToyUFO)) {
@@ -317,11 +312,11 @@ void GnapEngine::scene42_run() {
gnapWalkTo(-1, -1, -1, -1, 1);
}
}
-
+
scene42_updateAnimations();
-
+
toyUfoCheckTimer();
-
+
if (!_isLeavingScene) {
if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateBeaverIdleSequence();
@@ -353,20 +348,18 @@ void GnapEngine::scene42_run() {
}
}
}
-
+
checkGameKeys();
-
+
if (isKeyStatus1(8)) {
clearKeyStatus1(8);
runMenu();
scene42_updateHotspots();
_timers[4] = getRandom(20) + 30;
}
-
+
gameUpdateTick();
-
}
-
}
void GnapEngine::scene42_updateAnimations() {
@@ -447,7 +440,7 @@ void GnapEngine::scene42_updateAnimations() {
break;
}
}
-
+
if (_gameSys->getAnimationStatus(2) == 2 && _s42_nextBBQVendorSequenceId != -1) {
_gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
@@ -455,7 +448,7 @@ void GnapEngine::scene42_updateAnimations() {
_s42_nextBBQVendorSequenceId = -1;
_timers[4] = getRandom(20) + 30;
}
-
+
if (_gameSys->getAnimationStatus(3) == 2) {
switch (_toyUfoActionStatus) {
case kASToyUfoLeaveScene:
@@ -494,7 +487,6 @@ void GnapEngine::scene42_updateAnimations() {
}
_toyUfoActionStatus = -1;
}
-
}
} // End of namespace Gnap
Commit: c144b884c3141554db8098f2ebd2c6dc6ceacbb3
https://github.com/scummvm/scummvm/commit/c144b884c3141554db8098f2ebd2c6dc6ceacbb3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix phone keys hotspots
Changed paths:
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index a21641e..bf3b06d 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -34,19 +34,20 @@ int GnapEngine::scene53_init() {
void GnapEngine::scene53_updateHotspots() {
setHotspot(0, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(2, 336, 361, 238, 270, SF_GRAB_CURSOR);
- setHotspot(3, 376, 405, 243, 274, SF_GRAB_CURSOR);
- setHotspot(4, 415, 441, 248, 276, SF_GRAB_CURSOR);
- setHotspot(5, 329, 358, 276, 303, SF_GRAB_CURSOR);
- setHotspot(6, 378, 408, 282, 311, SF_GRAB_CURSOR);
- setHotspot(7, 417, 446, 286, 319, SF_GRAB_CURSOR);
- setHotspot(8, 332, 361, 311, 342, SF_GRAB_CURSOR);
- setHotspot(9, 376, 407, 318, 349, SF_GRAB_CURSOR);
- setHotspot(10, 417, 447, 320, 353, SF_GRAB_CURSOR);
- setHotspot(11, 377, 405, 352, 384, SF_GRAB_CURSOR);
- setHotspot(12, 419, 450, 358, 394, SF_GRAB_CURSOR);
- setHotspot(13, 328, 359, 346, 379, SF_GRAB_CURSOR);
- setHotspot(14, 150, 650, 585, 600, SF_EXIT_D_CURSOR);
+ setHotspot(2, 336, 238, 361, 270, SF_GRAB_CURSOR);
+ setHotspot(3, 376, 243, 405, 274, SF_GRAB_CURSOR);
+ setHotspot(4, 415, 248, 441, 276, SF_GRAB_CURSOR);
+ setHotspot(5, 329, 276, 358, 303, SF_GRAB_CURSOR);
+ setHotspot(6, 378, 282, 408, 311, SF_GRAB_CURSOR);
+ setHotspot(7, 417, 286, 446, 319, SF_GRAB_CURSOR);
+ setHotspot(8, 332, 311, 361, 342, SF_GRAB_CURSOR);
+ setHotspot(9, 376, 318, 407, 349, SF_GRAB_CURSOR);
+ setHotspot(10, 417, 320, 447, 353, SF_GRAB_CURSOR);
+ setHotspot(11, 377, 352, 405, 384, SF_GRAB_CURSOR);
+ setHotspot(12, 419, 358, 450, 394, SF_GRAB_CURSOR);
+ setHotspot(13, 328, 346, 359, 379, SF_GRAB_CURSOR);
+ setHotspot(14, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
+
setDeviceHotspot(1, -1, -1, -1, -1);
_hotspotsCount = 15;
}
@@ -374,9 +375,7 @@ void GnapEngine::scene53_run() {
}
gameUpdateTick();
-
}
-
}
} // End of namespace Gnap
Commit: ba20d63573a7db596a4c7532e99508621fafad84
https://github.com/scummvm/scummvm/commit/ba20d63573a7db596a4c7532e99508621fafad84
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix a crash after disco ball animation
Changed paths:
engines/gnap/scenes/scene45.cpp
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 3f8f790..0281b7c 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -391,7 +391,7 @@ void GnapEngine::scene45_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
_gameSys->setAnimation(0, 0, 2);
int newSeqId = getRandom(7) + 0x8F;
- _gameSys->insertSequence(newSeqId + 0x8F, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(newSeqId, 1, 2);
_s45_currDancerSequenceId = newSeqId;
}
Commit: be10dd378cea478c958d68aea2bda9232ae4ce75
https://github.com/scummvm/scummvm/commit/be10dd378cea478c958d68aea2bda9232ae4ce75
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Remove useless return after an error
Changed paths:
engines/gnap/resource.h
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 73cee76..7235351 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -171,10 +171,9 @@ protected:
}
ResourceClass *load(int resourceId) {
- if (_dat->getResourceType(resourceId) != ResourceType) {
+ if (_dat->getResourceType(resourceId) != ResourceType)
error("ResourceCache::load() Wrong resource type: Expected %d, got %d", ResourceType, _dat->getResourceType(resourceId));
- return nullptr;
- }
+
byte *resourceData = _dat->loadResource(resourceId);
uint32 resourceSize = _dat->getResourceSize(resourceId);
ResourceClass *obj = new ResourceClass(resourceId, resourceData, resourceSize);
Commit: 82db01550a5427408eb6922c715348c2767f3da2
https://github.com/scummvm/scummvm/commit/82db01550a5427408eb6922c715348c2767f3da2
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix hotspots in scene 30
Changed paths:
engines/gnap/scenes/scene30.cpp
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 5344d3f..089e50e 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -50,8 +50,8 @@ int GnapEngine::scene30_init() {
void GnapEngine::scene30_updateHotspots() {
setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
setHotspot(kHSPillMachine, 598, 342, 658, 426, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 7);
- setHotspot(kHSExitCircus, 100, 590, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitCircus, 0, 0, 800, 514);
+ setHotspot(kHSExitCircus, 100, 590 - _deviceY1, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ setHotspot(kHSWalkArea1, 0, 0, 800, 514);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
_hotspotsCount = 5;
}
@@ -82,7 +82,6 @@ void GnapEngine::scene30_run() {
platypusWalkTo(6, 8, -1, 0x107C2, 1);
while (!_sceneDone) {
-
updateMouseCursor();
updateCursorByHotspot();
@@ -90,7 +89,6 @@ void GnapEngine::scene30_run() {
updateGrabCursorSprite(0, 0);
switch (_sceneClickedHotspot) {
-
case kHSDevice:
if (_gnapActionStatus < 0) {
runMenu();
Commit: 0f58e9481da3ef9a4015e5eac70cbb4521956135
https://github.com/scummvm/scummvm/commit/0f58e9481da3ef9a4015e5eac70cbb4521956135
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename hotspots in scene 53
Changed paths:
engines/gnap/scenes/scene53.cpp
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index bf3b06d..f76f608 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -26,6 +26,24 @@
namespace Gnap {
+enum {
+ kHSPlatypus = 0,
+ kHSDevice = 1,
+ kHSPhoneKey1 = 2,
+ kHSPhoneKey2 = 3,
+ kHSPhoneKey3 = 4,
+ kHSPhoneKey4 = 5,
+ kHSPhoneKey5 = 6,
+ kHSPhoneKey6 = 7,
+ kHSPhoneKey7 = 8,
+ kHSPhoneKey8 = 9,
+ kHSPhoneKey9 = 10,
+ kHSPhoneKey0 = 11,
+ kHSPhoneKeySharp = 12,
+ kHSPhoneKeyStar = 13,
+ kHSPhoneExit = 14
+};
+
int GnapEngine::scene53_init() {
_gameSys->setAnimation(0, 0, 0);
_gameSys->setAnimation(0, 0, 1);
@@ -33,27 +51,26 @@ int GnapEngine::scene53_init() {
}
void GnapEngine::scene53_updateHotspots() {
- setHotspot(0, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(2, 336, 238, 361, 270, SF_GRAB_CURSOR);
- setHotspot(3, 376, 243, 405, 274, SF_GRAB_CURSOR);
- setHotspot(4, 415, 248, 441, 276, SF_GRAB_CURSOR);
- setHotspot(5, 329, 276, 358, 303, SF_GRAB_CURSOR);
- setHotspot(6, 378, 282, 408, 311, SF_GRAB_CURSOR);
- setHotspot(7, 417, 286, 446, 319, SF_GRAB_CURSOR);
- setHotspot(8, 332, 311, 361, 342, SF_GRAB_CURSOR);
- setHotspot(9, 376, 318, 407, 349, SF_GRAB_CURSOR);
- setHotspot(10, 417, 320, 447, 353, SF_GRAB_CURSOR);
- setHotspot(11, 377, 352, 405, 384, SF_GRAB_CURSOR);
- setHotspot(12, 419, 358, 450, 394, SF_GRAB_CURSOR);
- setHotspot(13, 328, 346, 359, 379, SF_GRAB_CURSOR);
- setHotspot(14, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
+ setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ setHotspot(kHSPhoneKey1, 336, 238, 361, 270, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey2, 376, 243, 405, 274, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey3, 415, 248, 441, 276, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey4, 329, 276, 358, 303, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey5, 378, 282, 408, 311, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey6, 417, 286, 446, 319, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey7, 332, 311, 361, 342, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey8, 376, 318, 407, 349, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey9, 417, 320, 447, 353, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKey0, 377, 352, 405, 384, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKeySharp, 419, 358, 450, 394, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneKeyStar, 328, 346, 359, 379, SF_GRAB_CURSOR);
+ setHotspot(kHSPhoneExit, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
- setDeviceHotspot(1, -1, -1, -1, -1);
+ setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
_hotspotsCount = 15;
}
int GnapEngine::scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum) {
-
static const int kGnapHandSequenceIds[13] = {
0x00,
0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
@@ -104,7 +121,6 @@ int GnapEngine::scene53_getRandomCallIndex() {
}
void GnapEngine::scene53_runRandomCall() {
-
static const int kCallSequenceIds[15] = {
0x60, 0x61, 0x62, 0x63, 0x64,
0x65, 0x66, 0x67, 0x68, 0x69,
@@ -134,7 +150,6 @@ void GnapEngine::scene53_runRandomCall() {
gameUpdateTick();
}
_gnapActionStatus = -1;
-
}
void GnapEngine::scene53_runChitChatLine() {
@@ -160,10 +175,9 @@ void GnapEngine::scene53_runChitChatLine() {
_s53_currHandSequenceId = 0x5E;
}
- _hotspots[1]._flags = SF_DISABLED;
+ _hotspots[kHSDevice]._flags = SF_DISABLED;
while (!flag) {
-
updateMouseCursor();
updateCursorByHotspot();
@@ -230,7 +244,6 @@ void GnapEngine::scene53_runChitChatLine() {
}
_gnapActionStatus = -1;
}
-
}
scene53_updateHotspots();
@@ -248,7 +261,6 @@ void GnapEngine::scene53_runChitChatLine() {
_s53_currHandSequenceId = 0x73;
_gnapActionStatus = -1;
}
-
}
void GnapEngine::scene53_run() {
Commit: de17d92199c5351b29a83efb7a04ce1d8805b976
https://github.com/scummvm/scummvm/commit/de17d92199c5351b29a83efb7a04ce1d8805b976
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Remove unused variable in fatUpdateFrame
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index ef0a265..e983440 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -1001,7 +1001,6 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
}
void GameSys::fatUpdateFrame() {
-
debugC(kDebugBasic, "GameSys::fatUpdateFrame()");
int32 clockDelta = _gameSysClock - _lastUpdateClock;
@@ -1012,7 +1011,6 @@ void GameSys::fatUpdateFrame() {
if (clockDelta <= 0)
return;
- bool updFlag = true;
int duration, currFrameNum;
// NOTE Skipped avi code (reqAviStart)
@@ -1029,7 +1027,6 @@ void GameSys::fatUpdateFrame() {
} else {
Sequence *seqItem = seqFind(gfxItem->_sequenceId, gfxItem->_id, 0);
if (!animation) {
- updFlag = false;
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
gfxItem->_currFrame._duration = 0;
@@ -1038,7 +1035,6 @@ void GameSys::fatUpdateFrame() {
gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if (!seqItem) {
- updFlag = false;
gfxItem->_animation = nullptr;
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
@@ -1046,7 +1042,6 @@ void GameSys::fatUpdateFrame() {
gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if ((seqItem->_flags & 4) && clockDelta > 1) {
- updFlag = false;
if (gfxItem->_delayTicks < clockDelta) {
duration = clockDelta - gfxItem->_delayTicks;
gfxItem->_delayTicks = 0;
@@ -1072,7 +1067,6 @@ void GameSys::fatUpdateFrame() {
}
currFrameNum = gfxItem->_currFrameNum;
if (animation->_framesCount > currFrameNum) {
- updFlag = false;
while (animation->_framesCount > currFrameNum &&
animation->frames[currFrameNum]._duration <= duration) {
if (animation->frames[currFrameNum]._soundId != -1)
@@ -1109,12 +1103,10 @@ void GameSys::fatUpdateFrame() {
gfxItem->_updFlag = false;
}
} else {
- updFlag = false;
gfxItem->_prevFrame._duration -= duration;
gfxItem->_updFlag = false;
}
} else {
- updFlag = false;
gfxItem->_delayTicks -= clockDelta;
gfxItem->_updFlag = false;
}
@@ -1202,7 +1194,6 @@ void GameSys::fatUpdateFrame() {
found = true;
}
if (found) {
- updFlag = false;
seqRemoveGfx(seqItem->_sequenceId2, seqItem->_id2);
seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
_fatSequenceItems.remove_at(i);
@@ -1211,7 +1202,6 @@ void GameSys::fatUpdateFrame() {
}
}
} else {
- updFlag = false;
if (seqItem->_totalDuration < clockDelta) {
int index;
bool found = false;
@@ -1245,7 +1235,6 @@ void GameSys::fatUpdateFrame() {
updateAnimationsStatus(seqItem->_sequenceId, seqItem->_id);
if (seqItem->_flags & 2) {
int gfxDuration;
- updFlag = false;
if (updateSequenceDuration(seqItem->_sequenceId, seqItem->_id, &gfxDuration)) {
seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
seqInsertGfx(i, gfxDuration);
Commit: ff7f8aa26d69918c66f6431fb7863d7205e23d81
https://github.com/scummvm/scummvm/commit/ff7f8aa26d69918c66f6431fb7863d7205e23d81
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor getBeaverSequenceId
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 79cab3d..8e4bc90 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1908,29 +1908,17 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatyPussDisguised);
}
-// CHECKME: The 3 parameters are always 0
-int GnapEngine::getBeaverSequenceId(int kind, int gridX, int gridY) {
- int sequenceId;
+int GnapEngine::getBeaverSequenceId() {
+ // The original had 3 parameters, all always set to 0.
+ // The code to handle the other values has been removed.
- // TODO kind is always 0, remove that parameter
- if (kind != 0)
- return 0;
+ int sequenceId = 0x7CB;
- if (gridX > 0 && gridY > 0) {
- if (gridX < _platX) {
- sequenceId = 0x7CC;
- _beaverFacing = kDirUnk4;
- } else {
- sequenceId = 0x7CB;
- _beaverFacing = kDirNone;
- }
- } else if (_beaverFacing != kDirNone) {
+ if (_beaverFacing != kDirNone) {
sequenceId = 0x7CC;
_beaverFacing = kDirUnk4;
- } else {
- sequenceId = 0x7CB;
- _beaverFacing = kDirNone;
}
+
return sequenceId | 0x10000;
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 5318e3f..9e389bc 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -581,7 +581,7 @@ public:
Facing _beaverFacing;
int _beaverActionStatus;
int _beaverSequenceId, _beaverSequenceDatNum, _beaverId;
- int getBeaverSequenceId(int kind, int gridX, int gridY);
+ int getBeaverSequenceId();
void playBeaverSequence(int sequenceId);
void updateBeaverIdleSequence();
void beaverSub426234();
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 30e6491..08c807d 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -152,7 +152,7 @@ void GnapEngine::scene01_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index d214f3b..3831c68 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -180,7 +180,7 @@ void GnapEngine::scene02_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 1916350..974b0d2 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -154,7 +154,7 @@ void GnapEngine::scene03_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 27ed3ac..0f86eed 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -197,7 +197,7 @@ void GnapEngine::scene04_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index 6ef4b35..4a60292 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -148,7 +148,7 @@ void GnapEngine::scene05_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index f89bace..cbe4fb4 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -151,7 +151,7 @@ void GnapEngine::scene06_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index e2d385d..d240378 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -123,7 +123,7 @@ void GnapEngine::scene07_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index d8a1c26..ed67669 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -167,7 +167,7 @@ void GnapEngine::scene08_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 368f8fe..cf1af00 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -115,7 +115,7 @@ void GnapEngine::scene09_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index b5f9cb1..5650dd1 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -135,7 +135,7 @@ void GnapEngine::scene10_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 3e2a757..68a261b 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -163,7 +163,7 @@ void GnapEngine::scene11_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index df26e4d..dcd62a3 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -152,7 +152,7 @@ void GnapEngine::scene12_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 58bdba1..cff04bb 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -153,7 +153,7 @@ void GnapEngine::scene13_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0));
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index aa08255..37427bd 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -317,7 +317,7 @@ void GnapEngine::scene17_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index a13432d..d1683b6 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -435,7 +435,7 @@ void GnapEngine::scene18_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index ddc977f..fd8b421 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -168,7 +168,7 @@ void GnapEngine::scene19_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index dd49b4c..9298fc1 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -310,7 +310,7 @@ void GnapEngine::scene20_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index c04b7c4..9d2b171 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -138,7 +138,7 @@ void GnapEngine::scene21_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index a01c7e4..3a196da 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -150,7 +150,7 @@ void GnapEngine::scene22_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index 9a16ce4..70437eb 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -122,7 +122,7 @@ void GnapEngine::scene23_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index dcfeb18..1c67c50 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -132,7 +132,7 @@ void GnapEngine::scene24_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index cf95aca..427536b 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -166,7 +166,7 @@ void GnapEngine::scene25_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index 7da3393..f2ced59 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -125,7 +125,7 @@ void GnapEngine::scene26_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 0466940..ad25092 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -153,7 +153,7 @@ void GnapEngine::scene27_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 5f4dc74..86df88b 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -149,7 +149,7 @@ void GnapEngine::scene28_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index e4cea83..6ab5744 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -131,7 +131,7 @@ void GnapEngine::scene29_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 089e50e..b394baf 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -112,7 +112,7 @@ void GnapEngine::scene30_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 084a127..3adfcbd 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -124,7 +124,7 @@ void GnapEngine::scene31_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 659ce0e..ff52604 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -112,7 +112,7 @@ void GnapEngine::scene32_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index 7258832..bad0f88 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -133,7 +133,7 @@ void GnapEngine::scene33_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index 3650c63..b60c832 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -135,7 +135,7 @@ void GnapEngine::scene38_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index 4950717..a89fea8 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -116,7 +116,7 @@ void GnapEngine::scene39_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index cbbae71..c2b8291 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -96,7 +96,7 @@ void GnapEngine::scene40_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 41480bf..23ac6ca 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -236,7 +236,7 @@ void GnapEngine::scene41_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 5685f5c..6b719d2 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -214,7 +214,7 @@ void GnapEngine::scene42_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 45b52a7..dcf03cb 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -220,7 +220,7 @@ void GnapEngine::scene43_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index dad6301..3b2633b 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -231,7 +231,7 @@ void GnapEngine::scene44_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 0281b7c..8581e55 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -245,7 +245,7 @@ void GnapEngine::scene45_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index d0c8965..4a1ba25 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -183,7 +183,7 @@ void GnapEngine::scene46_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId(0, 0, 0) | 0x10000);
+ playBeaverSequence(getBeaverSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
Commit: 90c7e1db014633a905993feaf6a8d0f152e11d2b
https://github.com/scummvm/scummvm/commit/90c7e1db014633a905993feaf6a8d0f152e11d2b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename members of GnapEngine from beaver to platypus for consistency
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 8e4bc90..15c949a 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -470,10 +470,10 @@ void GnapEngine::updateMouseCursor() {
setCursor(kDisabledCursors[_verbCursor]);
setGrabCursorSprite(-1);
}
- if (_isWaiting && ((_gnapActionStatus < 0 && _beaverActionStatus < 0) || _sceneWaiting)) {
+ if (_isWaiting && ((_gnapActionStatus < 0 && _platypusActionStatus < 0) || _sceneWaiting)) {
setCursor(kDisabledCursors[_verbCursor]);
_isWaiting = false;
- } else if (!_isWaiting && (_gnapActionStatus >= 0 || _beaverActionStatus >= 0) && !_sceneWaiting) {
+ } else if (!_isWaiting && (_gnapActionStatus >= 0 || _platypusActionStatus >= 0) && !_sceneWaiting) {
setCursor(WAIT_CURSOR);
_isWaiting = true;
}
@@ -824,7 +824,7 @@ void GnapEngine::initScene() {
_sceneDone = false;
_newSceneNum = 55;
_gnapActionStatus = -1;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
gnapInitBrainPulseRndValue();
hideCursor();
clearAllKeyStatus1();
@@ -1638,7 +1638,7 @@ void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
if (_platX == gridX && _platY == gridY)
- beaverMakeRoom();
+ platypusMakeRoom();
gnapWalkTo(gridX, gridY, -1, -1, 1);
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
}
@@ -1732,7 +1732,7 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
_isLeavingScene = false;
_gameSys->setAnimation(0, 0, animationIndex);
_gnapActionStatus = -1;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
gnapWalkTo(gridX1, gridY1, -1, -1, 1);
platypusWalkTo(gridX2, gridY2, -1, -1, 1);
_mouseClickState._left = false;
@@ -1767,21 +1767,21 @@ void GnapEngine::gnapInitBrainPulseRndValue() {
_gnapBrainPulseRndValue = 2 * getRandom(10);
}
-void GnapEngine::gnapUseDeviceOnBeaver() {
+void GnapEngine::gnapUseDeviceOnPlatypuss() {
playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
- if (_beaverFacing != kDirNone) {
- _gameSys->insertSequence(makeRid(1, 0x7D5), _beaverId,
- makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ if (_platypusFacing != kDirNone) {
+ _gameSys->insertSequence(makeRid(1, 0x7D5), _platypusId,
+ makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _beaverSequenceId = 0x7D5;
- _beaverSequenceDatNum = 1;
+ _platypusSequenceId = 0x7D5;
+ _platypusSequenceDatNum = 1;
} else {
- _gameSys->insertSequence(makeRid(1, 0x7D4), _beaverId,
- makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ _gameSys->insertSequence(makeRid(1, 0x7D4), _platypusId,
+ makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _beaverSequenceId = 0x7D4;
- _beaverSequenceDatNum = 1;
+ _platypusSequenceId = 0x7D4;
+ _platypusSequenceDatNum = 1;
}
int newSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
@@ -1810,7 +1810,7 @@ void GnapEngine::doCallback(int callback) {
bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
bool result = false;
- if (_gnapActionStatus <= -1 && _beaverActionStatus <= -1) {
+ if (_gnapActionStatus <= -1 && _platypusActionStatus <= -1) {
_gnapActionStatus = 100;
if (isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY))
platypusWalkStep();
@@ -1823,8 +1823,8 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
}
_gameSys->setAnimation(0, 0, 0);
if (_platX + gridX == _gnapX && _platY + gridY == _gnapY) {
- _gameSys->setAnimation(platSequenceId, _beaverId, 1);
- playBeaverSequence(platSequenceId);
+ _gameSys->setAnimation(platSequenceId, _platypusId, 1);
+ playPlatypusSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
updateMouseCursor();
doCallback(callback);
@@ -1848,12 +1848,12 @@ void GnapEngine::gnapKissPlatypus(int callback) {
kSeqSyncWait, 0, 15 * (5 * _gnapX - 20) - (21 - _gridMinX), 48 * (_gnapY - 6) - (146 - _gridMinY));
_gnapSequenceDatNum = 1;
_gnapSequenceId = 0x847;
- _gameSys->insertSequence(0x107CB, _beaverId,
- makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ _gameSys->insertSequence(0x107CB, _platypusId,
+ makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _beaverSequenceDatNum = 1;
- _beaverSequenceId = 0x7CB;
- _beaverFacing = kDirNone;
+ _platypusSequenceDatNum = 1;
+ _platypusSequenceId = 0x7CB;
+ _platypusFacing = kDirNone;
playGnapSequence(0x107B5);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
@@ -1872,18 +1872,18 @@ void GnapEngine::gnapUseJointOnPlatypus() {
if (gnapPlatypusAction(1, 0, 0x107C1, 0)) {
_gnapActionStatus = 100;
_gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0x10876, _beaverId, 0);
+ _gameSys->setAnimation(0x10876, _platypusId, 0);
_gameSys->insertSequence(0x10875, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
kSeqSyncWait, 0, 15 * (5 * _gnapX - 30), 48 * (_gnapY - 7));
_gnapSequenceDatNum = 1;
_gnapSequenceId = 0x875;
- _gameSys->insertSequence(0x10876, _beaverId,
- _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ _gameSys->insertSequence(0x10876, _platypusId,
+ _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
kSeqSyncWait, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
- _beaverSequenceDatNum = 1;
- _beaverSequenceId = 0x876;
- _beaverFacing = kDirNone;
+ _platypusSequenceDatNum = 1;
+ _platypusSequenceId = 0x876;
+ _platypusFacing = kDirNone;
playGnapSequence(0x107B5);
gnapWalkStep();
while (_gameSys->getAnimationStatus(0) != 2) {
@@ -1908,59 +1908,59 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatyPussDisguised);
}
-int GnapEngine::getBeaverSequenceId() {
+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 (_beaverFacing != kDirNone) {
+ if (_platypusFacing != kDirNone) {
sequenceId = 0x7CC;
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
}
return sequenceId | 0x10000;
}
-void GnapEngine::playBeaverSequence(int sequenceId) {
- _gameSys->insertSequence(sequenceId, _beaverId,
- makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+void GnapEngine::playPlatypusSequence(int sequenceId) {
+ _gameSys->insertSequence(sequenceId, _platypusId,
+ makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _beaverSequenceId = ridToEntryIndex(sequenceId);
- _beaverSequenceDatNum = ridToDatIndex(sequenceId);
+ _platypusSequenceId = ridToEntryIndex(sequenceId);
+ _platypusSequenceDatNum = ridToDatIndex(sequenceId);
}
-void GnapEngine::updateBeaverIdleSequence() {
- if (_beaverActionStatus < 0 && _gnapActionStatus < 0) {
+void GnapEngine::updatePlatypusIdleSequence() {
+ if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
if (_timers[0] > 0) {
if (_timers[1] == 0) {
_timers[1] = getRandom(20) + 30;
int rnd = getRandom(10);
- if (_beaverFacing != kDirNone) {
- if (rnd != 0 || _beaverSequenceId != 0x7CA) {
- if (rnd != 1 || _beaverSequenceId != 0x7CA)
- playBeaverSequence(0x107CA);
+ if (_platypusFacing != kDirNone) {
+ if (rnd != 0 || _platypusSequenceId != 0x7CA) {
+ if (rnd != 1 || _platypusSequenceId != 0x7CA)
+ playPlatypusSequence(0x107CA);
else
- playBeaverSequence(0x10845);
+ playPlatypusSequence(0x10845);
} else {
- playBeaverSequence(0x107CC);
+ playPlatypusSequence(0x107CC);
}
- } else if (rnd != 0 || _beaverSequenceId != 0x7C9) {
- if (rnd != 1 || _beaverSequenceId != 0x7C9) {
- if (rnd != 2 || _beaverSequenceId != 0x7C9)
- playBeaverSequence(0x107C9);
+ } else if (rnd != 0 || _platypusSequenceId != 0x7C9) {
+ if (rnd != 1 || _platypusSequenceId != 0x7C9) {
+ if (rnd != 2 || _platypusSequenceId != 0x7C9)
+ playPlatypusSequence(0x107C9);
else
- playBeaverSequence(0x108A4);
+ playPlatypusSequence(0x108A4);
} else {
- playBeaverSequence(0x10844);
+ playPlatypusSequence(0x10844);
}
} else {
- playBeaverSequence(0x107CB);
+ playPlatypusSequence(0x107CB);
}
}
} else {
_timers[0] = getRandom(75) + 75;
- beaverMakeRoom();
+ platypusMakeRoom();
}
} else {
_timers[0] = 100;
@@ -1968,27 +1968,27 @@ void GnapEngine::updateBeaverIdleSequence() {
}
}
-void GnapEngine::beaverSub426234() {
- if (_beaverActionStatus < 0 && _gnapActionStatus < 0) {
+void GnapEngine::platypusSub426234() {
+ if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
- if (_beaverFacing != kDirNone) {
- if (getRandom(10) >= 2 || _beaverSequenceId != 0x7CA)
- playBeaverSequence(0x107CA);
+ if (_platypusFacing != kDirNone) {
+ if (getRandom(10) >= 2 || _platypusSequenceId != 0x7CA)
+ playPlatypusSequence(0x107CA);
else
- playBeaverSequence(0x107CC);
+ playPlatypusSequence(0x107CC);
} else {
- if (getRandom(10) >= 2 || _beaverSequenceId != 0x7C9) {
- playBeaverSequence(0x107C9);
+ if (getRandom(10) >= 2 || _platypusSequenceId != 0x7C9) {
+ playPlatypusSequence(0x107C9);
} else {
- playBeaverSequence(0x107CB);
+ playPlatypusSequence(0x107CB);
}
}
}
} else {
_timers[0] = getRandom(75) + 75;
- beaverMakeRoom();
+ platypusMakeRoom();
}
} else {
_timers[0] = 100;
@@ -1996,24 +1996,24 @@ void GnapEngine::beaverSub426234() {
}
}
-void GnapEngine::initBeaverPos(int gridX, int gridY, Facing facing) {
+void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
_timers[0] = 50;
_timers[1] = 20;
_platX = gridX;
_platY = gridY;
if (facing == kDirNone)
- _beaverFacing = kDirNone;
+ _platypusFacing = kDirNone;
else
- _beaverFacing = facing;
- if (_beaverFacing == kDirUnk4) {
- _beaverSequenceId = 0x7D1;
+ _platypusFacing = facing;
+ if (_platypusFacing == kDirUnk4) {
+ _platypusSequenceId = 0x7D1;
} else {
- _beaverSequenceId = 0x7C1;
- _beaverFacing = kDirNone;
+ _platypusSequenceId = 0x7C1;
+ _platypusFacing = kDirNone;
}
- _beaverId = 20 * _platY;
- _beaverSequenceDatNum = 1;
- _gameSys->insertSequence(makeRid(1, _beaverSequenceId), 20 * _platY,
+ _platypusId = 20 * _platY;
+ _platypusSequenceDatNum = 1;
+ _gameSys->insertSequence(makeRid(1, _platypusSequenceId), 20 * _platY,
0, 0,
kSeqScale, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 9e389bc..3517838 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -528,21 +528,21 @@ public:
bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void gnapWalkStep();
- // Beaver walking
+ // Platypus walking
int _platWalkNodesCount;
GridStruct _platWalkNodes[kMaxGridStructs];
int _platX, _platY;
int _platWalkDestX, _platWalkDestY;
int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
- int getBeaverWalkSequenceId(int deltaX, int deltaY);
+ int getPlatypusWalkSequenceId(int deltaX, int deltaY);
bool gridSub423750(int gridX, int gridY);
bool gridSub423CC1(int gridX, int gridY, int index);
bool gridSub42419A(int gridX, int gridY, int index);
bool platFindPath3(int gridX, int gridY);
bool platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void platypusWalkStep();
- void beaverMakeRoom();
+ void platypusMakeRoom();
// Gnap
Facing _gnapIdleFacing;
@@ -570,22 +570,22 @@ public:
void updateGnapIdleSequence2();
void initGnapPos(int gridX, int gridY, Facing facing);
void gnapInitBrainPulseRndValue();
- void gnapUseDeviceOnBeaver();
+ void gnapUseDeviceOnPlatypuss();
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
void gnapKissPlatypus(int callback);
void gnapUseJointOnPlatypus();
void gnapUseDisguiseOnPlatypus();
- // Beaver
- Facing _beaverFacing;
- int _beaverActionStatus;
- int _beaverSequenceId, _beaverSequenceDatNum, _beaverId;
- int getBeaverSequenceId();
- void playBeaverSequence(int sequenceId);
- void updateBeaverIdleSequence();
- void beaverSub426234();
- void initBeaverPos(int gridX, int gridY, Facing facing);
+ // Platypus
+ Facing _platypusFacing;
+ int _platypusActionStatus;
+ int _platypusSequenceId, _platypusSequenceDatNum, _platypusId;
+ int getPlatypusSequenceId();
+ void playPlatypusSequence(int sequenceId);
+ void updatePlatypusIdleSequence();
+ void platypusSub426234();
+ void initPlatypusPos(int gridX, int gridY, Facing facing);
// Scenes
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 99add51..88e9693 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -555,7 +555,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
if (animationIndex >= 0 && _gnapWalkDestX == _platX && _gnapWalkDestY == _platY)
- beaverMakeRoom();
+ platypusMakeRoom();
if (gridSub41F5FC(_gnapX, _gnapY, 0))
done = true;
@@ -737,7 +737,7 @@ void GnapEngine::gnapWalkStep() {
////////////////////////////////////////////////////////////////////////////////
-int GnapEngine::getBeaverWalkSequenceId(int deltaX, int deltaY) {
+int GnapEngine::getPlatypusWalkSequenceId(int deltaX, int deltaY) {
static const int _beaverWalkSequenceIds[9] = {
0x7C5, 0x000, 0x7C8,
0x7C4, 0x000, 0x7C7,
@@ -1225,9 +1225,9 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (!done)
gridSub423750(_platX, _platY);
- int platSequenceId = _beaverSequenceId;
- int platId = _beaverId;
- int platSequenceDatNum = _beaverSequenceDatNum;
+ int platSequenceId = _platypusSequenceId;
+ int platId = _platypusId;
+ int platSequenceDatNum = _platypusSequenceDatNum;
for (int index = 0; index < _platWalkNodesCount; ++index) {
_platWalkNodes[index]._id = index + 20 * _platWalkNodes[index]._gridY1;
@@ -1264,7 +1264,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platWalkNodes[index]._id -= 10;
else
_platWalkNodes[index]._id += 10;
- int newSequenceId = getBeaverWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
+ int newSequenceId = getPlatypusWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
@@ -1277,72 +1277,72 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (flags & 8) {
if (_platWalkNodesCount > 0) {
- _beaverSequenceId = platSequenceId;
- _beaverId = platId;
- _beaverSequenceDatNum = datNum;
+ _platypusSequenceId = platSequenceId;
+ _platypusId = platId;
+ _platypusSequenceDatNum = datNum;
// CHECKME Not sure if this is correct...
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0)
- _beaverFacing = kDirNone;
+ _platypusFacing = kDirNone;
else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0)
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
else if (_platWalkNodes[_platWalkNodesCount - 1]._gridX1 % 2)
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
else
- _beaverFacing = kDirNone;
+ _platypusFacing = kDirNone;
if (animationIndex >= 0)
- _gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId, animationIndex);
+ _gameSys->setAnimation(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId, 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) {
- _beaverSequenceId = ridToEntryIndex(sequenceId);
- _beaverSequenceDatNum = ridToDatIndex(sequenceId);
- if (_beaverSequenceId == 0x7C2) {
- _beaverFacing = kDirNone;
- } else if (_beaverSequenceId == 0x7D2) {
- _beaverFacing = kDirUnk4;
+ _platypusSequenceId = ridToEntryIndex(sequenceId);
+ _platypusSequenceDatNum = ridToDatIndex(sequenceId);
+ if (_platypusSequenceId == 0x7C2) {
+ _platypusFacing = kDirNone;
+ } else if (_platypusSequenceId == 0x7D2) {
+ _platypusFacing = kDirUnk4;
}
} else {
if (_platWalkNodesCount > 0) {
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0) {
- _beaverSequenceId = 0x7C2;
- _beaverFacing = kDirNone;
+ _platypusSequenceId = 0x7C2;
+ _platypusFacing = kDirNone;
} else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0) {
- _beaverSequenceId = 0x7D2;
- _beaverFacing = kDirUnk4;
+ _platypusSequenceId = 0x7D2;
+ _platypusFacing = kDirUnk4;
} else if (_platWalkNodes[0]._deltaX > 0) {
- _beaverSequenceId = 0x7C2;
- _beaverFacing = kDirNone;
+ _platypusSequenceId = 0x7C2;
+ _platypusFacing = kDirNone;
} else if (_platWalkNodes[0]._deltaX < 0) {
- _beaverSequenceId = 0x7D2;
- _beaverFacing = kDirUnk4;
+ _platypusSequenceId = 0x7D2;
+ _platypusFacing = kDirUnk4;
} else {
- _beaverSequenceId = 0x7D2;
- _beaverFacing = kDirUnk4;
+ _platypusSequenceId = 0x7D2;
+ _platypusFacing = kDirUnk4;
}
- } else if (_beaverFacing != kDirNone) {
- _beaverSequenceId = 0x7D2;
+ } else if (_platypusFacing != kDirNone) {
+ _platypusSequenceId = 0x7D2;
} else {
- _beaverSequenceId = 0x7C2;
+ _platypusSequenceId = 0x7C2;
}
- _beaverSequenceDatNum = datNum;
+ _platypusSequenceDatNum = datNum;
}
if (animationIndex < 0) {
- _beaverId = 20 * _platWalkDestY;
+ _platypusId = 20 * _platWalkDestY;
} else {
- _beaverId = animationIndex + 20 * _platWalkDestY;
- _gameSys->setAnimation(makeRid(_beaverSequenceDatNum, _beaverSequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
+ _platypusId = animationIndex + 20 * _platWalkDestY;
+ _gameSys->setAnimation(makeRid(_platypusSequenceDatNum, _platypusSequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
}
if (flags & 4)
- _gameSys->insertSequence(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ _gameSys->insertSequence(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 0, 0);
else
- _gameSys->insertSequence(makeRid(_beaverSequenceDatNum, _beaverSequenceId), _beaverId,
+ _gameSys->insertSequence(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
makeRid(platSequenceDatNum, platSequenceId), platId,
9, 0, 75 * _platWalkDestX - _platGridX, 48 * _platWalkDestY - _platGridY);
}
@@ -1378,7 +1378,7 @@ void GnapEngine::platypusWalkStep() {
}
}
-void GnapEngine::beaverMakeRoom() {
+void GnapEngine::platypusMakeRoom() {
int rndGridX, rndGridY;
do {
rndGridY = getRandom(_gridMaxY);
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 08c807d..808c190 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -103,7 +103,7 @@ void GnapEngine::scene01_run() {
if (_prevSceneNum == 2) {
initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(kGFPlatypus))
- initBeaverPos(12, 6, kDirUnk4);
+ initPlatypusPos(12, 6, kDirUnk4);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
@@ -111,7 +111,7 @@ void GnapEngine::scene01_run() {
} else {
initGnapPos(1, 6, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(1, 7, kDirNone);
+ initPlatypusPos(1, 7, kDirNone);
endSceneInit();
}
@@ -152,7 +152,7 @@ void GnapEngine::scene01_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -272,8 +272,8 @@ void GnapEngine::scene01_run() {
playSound(0x1091C, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (_timers[4] == 0) {
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 3831c68..d7b5425 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -101,7 +101,7 @@ void GnapEngine::scene02_run() {
case 3:
initGnapPos(11, 6, kDirBottomLeft);
if (isFlag(kGFPlatypus))
- initBeaverPos(12, 6, kDirUnk4);
+ initPlatypusPos(12, 6, kDirUnk4);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(9, 6, -1, 0x107C2, 1);
@@ -110,7 +110,7 @@ void GnapEngine::scene02_run() {
case 4:
initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, kDirBottomLeft);
if (isFlag(kGFPlatypus))
- initBeaverPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, kDirUnk4);
+ initPlatypusPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, kDirUnk4);
endSceneInit();
gnapWalkTo(7, 6, 0, 0x107B9, 1);
if (isFlag(kGFPlatypus))
@@ -121,19 +121,19 @@ void GnapEngine::scene02_run() {
case 47:
clearFlag(kGFUnk25);
initGnapPos(5, 6, kDirBottomLeft);
- initBeaverPos(6, 7, kDirUnk4);
+ initPlatypusPos(6, 7, kDirUnk4);
endSceneInit();
break;
case 49:
initGnapPos(5, 6, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(6, 7, kDirNone);
+ initPlatypusPos(6, 7, kDirNone);
endSceneInit();
break;
default:
initGnapPos(-1, 6, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(-1, 7, kDirNone);
+ initPlatypusPos(-1, 7, kDirNone);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(2, 7, -1, 0x107C2, 1);
@@ -180,7 +180,7 @@ void GnapEngine::scene02_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -363,8 +363,8 @@ void GnapEngine::scene02_run() {
playSound(0x1091C, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 974b0d2..c5af2f3 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -103,13 +103,13 @@ void GnapEngine::scene03_run() {
_timers[5] = getRandom(100) + 200;
if (isFlag(kGFPlatypus)) {
- initBeaverPos(5, 4, kDirNone);
+ initPlatypusPos(5, 4, kDirNone);
} else {
_timers[1] = getRandom(40) + 20;
_gameSys->setAnimation(0x1C2, 99, 1);
_gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
- _beaverSequenceId = 0x1C2;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0x1C2;
+ _platypusSequenceDatNum = 0;
}
_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -154,7 +154,7 @@ void GnapEngine::scene03_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -319,18 +319,18 @@ void GnapEngine::scene03_run() {
playSound(0x10925, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[1] && !_s03_platypusScared) {
_timers[1] = getRandom(40) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && !isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && !isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
_s03_nextPlatSequenceId = 450;
}
if (!_timers[6]) {
_timers[6] = getRandom(20) + 30;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s03_nextFrogSequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s03_nextFrogSequenceId == -1) {
if (getRandom(5) == 1)
_s03_nextFrogSequenceId = 0x1C6;
else
@@ -340,12 +340,12 @@ void GnapEngine::scene03_run() {
if (!_timers[4]) {
// Update bird animation
_timers[4] = getRandom(100) + 300;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0)
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0)
_gameSys->insertSequence(getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_timers[5]) {
_timers[5] = getRandom(100) + 200;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
_gameSys->setAnimation(0x1C5, 253, 4);
_gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -385,13 +385,13 @@ void GnapEngine::scene03_updateAnimations() {
_gnapActionStatus = -1;
_platX = 6;
_platY = 6;
- _beaverFacing = kDirUnk4;
- _beaverId = 120;
- _gameSys->insertSequence(0x107CA, _beaverId, 0x1BC, 99,
+ _platypusFacing = kDirUnk4;
+ _platypusId = 120;
+ _gameSys->insertSequence(0x107CA, _platypusId, 0x1BC, 99,
kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
- _beaverSequenceDatNum = 1;
- _beaverSequenceId = 0x7CA;
+ _platypusSequenceDatNum = 1;
+ _platypusSequenceId = 0x7CA;
setFlag(kGFPlatypus);
_s03_nextPlatSequenceId = -1;
scene03_updateHotspots();
@@ -405,16 +405,16 @@ void GnapEngine::scene03_updateAnimations() {
gameUpdateTick();
removeFullScreenSprite();
_gameSys->setAnimation(0x1BA, 99, 1);
- _gameSys->insertSequence(0x1BA, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _beaverSequenceDatNum = 0;
- _beaverSequenceId = 0x1BA;
+ _gameSys->insertSequence(0x1BA, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _platypusSequenceDatNum = 0;
+ _platypusSequenceId = 0x1BA;
_gnapActionStatus = -1;
_s03_platypusHypnotized = true;
scene03_updateHotspots();
break;
case kASHypnotizeScaredPlat:
playGnapBrainPulsating(0, 0);
- _gameSys->insertSequence(0x1BF, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _gameSys->insertSequence(0x1BF, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_gameSys->setAnimation(0x1BF, 99, 1);
while (_gameSys->getAnimationStatus(1) != 2)
gameUpdateTick();
@@ -426,8 +426,8 @@ void GnapEngine::scene03_updateAnimations() {
removeFullScreenSprite();
_gameSys->setAnimation(0x1BA, 99, 1);
_gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceDatNum = 0;
- _beaverSequenceId = 0x1BA;
+ _platypusSequenceDatNum = 0;
+ _platypusSequenceId = 0x1BA;
_gnapActionStatus = -1;
_s03_platypusHypnotized = true;
scene03_updateHotspots();
@@ -458,12 +458,12 @@ void GnapEngine::scene03_updateAnimations() {
_gameSys->setAnimation(0, 0, 1);
_s03_platypusScared = true;
_gameSys->insertSequence(0x1B5, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x1B5;
_gnapSequenceDatNum = 0;
_gnapIdleFacing = kDirNone;
- _beaverSequenceId = _s03_nextPlatSequenceId;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = _s03_nextPlatSequenceId;
+ _platypusSequenceDatNum = 0;
_gameSys->setAnimation(_s03_nextPlatSequenceId, 99, 1);
_s03_nextPlatSequenceId = -1;
_gnapActionStatus = -1;
@@ -471,7 +471,7 @@ void GnapEngine::scene03_updateAnimations() {
_gnapX = 3;
_gnapY = 6;
_gameSys->insertSequence(0x1B6, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x1BC, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x1BC, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_gameSys->setAnimation(0x1BC, 99, 0);
_gnapId = 20 * _gnapY;
_gnapSequenceId = 0x1B6;
@@ -481,17 +481,17 @@ void GnapEngine::scene03_updateAnimations() {
_s03_nextPlatSequenceId = -1;
} else if (_s03_nextPlatSequenceId == 0x1C2 && !_s03_platypusScared) {
_gameSys->setAnimation(0, 0, 1);
- _gameSys->insertSequence(0x1C2, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0x1C2;
- _beaverSequenceDatNum = 0;
+ _gameSys->insertSequence(0x1C2, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0x1C2;
+ _platypusSequenceDatNum = 0;
_gameSys->setAnimation(0x1C2, 99, 1);
_s03_nextPlatSequenceId = -1;
} else if (_s03_nextPlatSequenceId == -1 && _s03_platypusScared && !_s03_platypusHypnotized) {
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0x1BE, 99, 1);
- _gameSys->insertSequence(0x1BE, 99, _beaverSequenceId | (_beaverSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0x1BE;
- _beaverSequenceDatNum = 0;
+ _gameSys->insertSequence(0x1BE, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0x1BE;
+ _platypusSequenceDatNum = 0;
_s03_nextPlatSequenceId = -1;
}
}
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 0f86eed..a233152 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -115,7 +115,7 @@ void GnapEngine::scene04_run() {
_gnapId = 140;
_platX = 6;
_platY = 7;
- _beaverId = 141;
+ _platypusId = 141;
_gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _gnapGridX, 336 - _gnapGridY);
_gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
@@ -125,9 +125,9 @@ void GnapEngine::scene04_run() {
invAdd(kItemKeys);
setFlag(kGFKeysTaken);
clearFlag(kGFPlatyPussDisguised);
- _beaverSequenceId = 0x20C;
- _beaverSequenceDatNum = 0;
- _beaverFacing = kDirBottomRight;
+ _platypusSequenceId = 0x20C;
+ _platypusSequenceDatNum = 0;
+ _platypusFacing = kDirBottomRight;
_gnapSequenceId = 0x7B5;
_gnapSequenceDatNum = 1;
_gameSys->waitForUpdate();
@@ -136,19 +136,19 @@ void GnapEngine::scene04_run() {
if (_prevSceneNum == 2) {
initGnapPos(5, 11, kDirUpRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 9, -1, 0x107BA, 1);
} else if (_prevSceneNum == 38) {
initGnapPos(5, 7, kDirBottomRight);
- initBeaverPos(4, 7, kDirNone);
+ initPlatypusPos(4, 7, kDirNone);
endSceneInit();
} else {
initGnapPos(12, 9, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(12, 8, kDirNone);
+ initPlatypusPos(12, 8, kDirNone);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(9, 8, -1, 0x107C2, 1);
@@ -197,7 +197,7 @@ void GnapEngine::scene04_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -398,8 +398,8 @@ void GnapEngine::scene04_run() {
playSound(0x1091C, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && isFlag(kGFPlatypus))
- beaverSub426234();
+ if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
+ platypusSub426234();
if (_gnapActionStatus < 0)
updateGnapIdleSequence2();
if (!_timers[5]) {
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index 4a60292..405bd2a 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -98,7 +98,7 @@ void GnapEngine::scene05_run() {
if (_prevSceneNum != 6 && _prevSceneNum != 36) {
initGnapPos(-1, 8, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(-1, 9, kDirNone);
+ initPlatypusPos(-1, 9, kDirNone);
endSceneInit();
if (isFlag(kGFPlatypus))
platypusWalkTo(2, 8, -1, 0x107C2, 1);
@@ -106,7 +106,7 @@ void GnapEngine::scene05_run() {
} else {
initGnapPos(6, 8, kDirBottomRight);
if (isFlag(kGFPlatypus))
- initBeaverPos(7, 9, kDirNone);
+ initPlatypusPos(7, 9, kDirNone);
endSceneInit();
}
@@ -148,7 +148,7 @@ void GnapEngine::scene05_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -159,7 +159,7 @@ void GnapEngine::scene05_run() {
break;
case kHSHaystack:
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
if (_grabCursorSpriteIndex >= 0) {
playGnapShowCurrItem(_hotspotsWalkPos[1].x - 2, _hotspotsWalkPos[1].y, 4, 5);
} else if (isFlag(kGFNeedleTaken)) {
@@ -175,10 +175,10 @@ void GnapEngine::scene05_run() {
break;
case PLAT_CURSOR:
if (isFlag(kGFPlatypus)) {
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
if (platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
- _beaverActionStatus = kASPlatSearchHaystack;
- _beaverFacing = kDirUnk4;
+ _platypusActionStatus = kASPlatSearchHaystack;
+ _platypusFacing = kDirUnk4;
}
if (_gnapX == 4 && (_gnapY == 8 || _gnapY == 7))
gnapWalkStep();
@@ -321,7 +321,7 @@ void GnapEngine::scene05_run() {
if (!_isLeavingScene) {
if (isFlag(kGFPlatypus))
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[5]) {
_timers[5] = getRandom(20) + 30;
@@ -417,28 +417,28 @@ void GnapEngine::scene05_updateAnimations() {
}
if (_gameSys->getAnimationStatus(1) == 2) {
- if (_beaverSequenceId == 0x146) {
+ if (_platypusSequenceId == 0x146) {
_platX = 4;
_platY = 8;
_gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _platGridX, 384 - _platGridY);
- _beaverSequenceId = 0x7C1;
- _beaverSequenceDatNum = 1;
- _beaverId = 20 * _platY;
+ _platypusSequenceId = 0x7C1;
+ _platypusSequenceDatNum = 1;
+ _platypusId = 20 * _platY;
invAdd(kItemNeedle);
setFlag(kGFNeedleTaken);
setGrabCursorSprite(kItemNeedle);
showCursor();
_timers[1] = 30;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
}
- if (_beaverActionStatus == kASPlatSearchHaystack) {
+ if (_platypusActionStatus == kASPlatSearchHaystack) {
_gameSys->setAnimation(0, 0, 1);
- _gameSys->insertSequence(0x145, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x146, 256, 0x145, _beaverId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x145, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x146, 256, 0x145, _platypusId, kSeqSyncWait, 0, 0, 0);
hideCursor();
setGrabCursorSprite(-1);
- _beaverSequenceId = 0x146;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0x146;
+ _platypusSequenceDatNum = 0;
_gameSys->setAnimation(0x146, 256, 1);
_timers[1] = 300;
}
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index cbe4fb4..a07c218 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -107,7 +107,7 @@ void GnapEngine::scene06_run() {
queueInsertDeviceIcon();
initGnapPos(5, 12, kDirBottomRight);
- initBeaverPos(6, 12, kDirNone);
+ initPlatypusPos(6, 12, kDirNone);
endSceneInit();
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -151,7 +151,7 @@ void GnapEngine::scene06_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -230,7 +230,7 @@ void GnapEngine::scene06_run() {
_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
_gnapIdleFacing = kDirUpLeft;
platypusWalkTo(6, 8, 1, 0x107C2, 1);
- _beaverFacing = kDirNone;
+ _platypusFacing = kDirNone;
_gnapActionStatus = kASUseTwigOnHorse;
setGrabCursorSprite(-1);
} else if (_grabCursorSpriteIndex >= 0) {
@@ -294,13 +294,13 @@ void GnapEngine::scene06_run() {
scene06_updateAnimations();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(40) + 25;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s06_nextHorseSequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s06_nextHorseSequenceId == -1) {
if (_s06_horseTurnedBack) {
_s06_nextHorseSequenceId = 0xF5;
} else {
@@ -379,18 +379,18 @@ void GnapEngine::scene06_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_beaverSequenceId == 0xFA) {
+ if (_platypusSequenceId == 0xFA) {
_gameSys->setAnimation(0, 0, 1);
invAdd(kItemGas);
setFlag(kGFGasTaken);
_hotspots[kHSLadder]._flags = SF_DISABLED;
setGrabCursorSprite(kItemGas);
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
_platX = 6;
_platY = 8;
- _gameSys->insertSequence(0x107C1, _beaverId, 0, 0, kSeqNone, 0, 450 - _platGridX, 384 - _platGridY);
- _beaverSequenceId = 0x7C1;
- _beaverSequenceDatNum = 1;
+ _gameSys->insertSequence(0x107C1, _platypusId, 0, 0, kSeqNone, 0, 450 - _platGridX, 384 - _platGridY);
+ _platypusSequenceId = 0x7C1;
+ _platypusSequenceDatNum = 1;
setFlag(kGFUnk04);
_gnapActionStatus = -1;
showCursor();
@@ -398,7 +398,7 @@ void GnapEngine::scene06_updateAnimations() {
if (_s06_nextPlatSequenceId == 0xFB) {
_gameSys->setAnimation(0, 0, 1);
_s06_nextHorseSequenceId = 0xF2;
- _beaverActionStatus = 6;
+ _platypusActionStatus = 6;
}
}
@@ -411,10 +411,10 @@ void GnapEngine::scene06_updateAnimations() {
_gameSys->insertSequence(0xF2, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x100, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFB, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFA, 256, 0xFB, _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0xFA;
- _beaverSequenceDatNum = 0;
+ _gameSys->insertSequence(0xFB, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0xFA, 256, 0xFB, _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0xFA;
+ _platypusSequenceDatNum = 0;
_gameSys->insertSequence(0x107B7, _gnapId, 0x100, _gnapId,
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = 0x7B7;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index d240378..3d392d6 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -72,7 +72,7 @@ void GnapEngine::scene07_run() {
if (_prevSceneNum == 8) {
initGnapPos(7, 7, kDirBottomLeft);
- initBeaverPos(9, 7, kDirUnk4);
+ initPlatypusPos(9, 7, kDirUnk4);
endSceneInit();
} else {
_gnapX = 6;
@@ -86,10 +86,10 @@ void GnapEngine::scene07_run() {
_gnapActionStatus = kASWait;
_platX = 3;
_platY = 8;
- _beaverId = 160;
- _beaverSequenceId = 0x91;
- _beaverSequenceDatNum = 0;
- _beaverFacing = kDirNone;
+ _platypusId = 160;
+ _platypusSequenceId = 0x91;
+ _platypusSequenceDatNum = 0;
+ _platypusFacing = kDirNone;
_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
}
@@ -123,7 +123,7 @@ void GnapEngine::scene07_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -197,38 +197,38 @@ void GnapEngine::scene07_run() {
if (!_isLeavingScene) {
updateGnapIdleSequence();
- if (_beaverActionStatus < 0 && _gnapActionStatus < 0) {
+ if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
int _gnapRandomValue = getRandom(20);
// TODO Cleanup
- if (_beaverFacing != kDirNone) {
- if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7CA) {
- if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7CA) {
+ if (_platypusFacing != kDirNone) {
+ if (_gnapRandomValue != 0 || _platypusSequenceId != 0x7CA) {
+ if (_gnapRandomValue != 1 || _platypusSequenceId != 0x7CA) {
if (_platY == 9)
- playBeaverSequence(0x107CA);
+ playPlatypusSequence(0x107CA);
} else {
- playBeaverSequence(0x10845);
+ playPlatypusSequence(0x10845);
}
} else {
- playBeaverSequence(0x107CC);
+ playPlatypusSequence(0x107CC);
}
- } else if (_gnapRandomValue != 0 || _beaverSequenceId != 0x7C9) {
- if (_gnapRandomValue != 1 || _beaverSequenceId != 0x7C9) {
+ } else if (_gnapRandomValue != 0 || _platypusSequenceId != 0x7C9) {
+ if (_gnapRandomValue != 1 || _platypusSequenceId != 0x7C9) {
if (_platY == 9)
- playBeaverSequence(0x107C9);
+ playPlatypusSequence(0x107C9);
} else {
- playBeaverSequence(0x10844);
+ playPlatypusSequence(0x10844);
}
} else {
- playBeaverSequence(0x107CB);
+ playPlatypusSequence(0x107CB);
}
- _gameSys->setAnimation(_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, 1);
+ _gameSys->setAnimation(_platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, 1);
}
} else {
_timers[0] = getRandom(75) + 75;
- beaverMakeRoom();
+ platypusMakeRoom();
}
} else {
_timers[0] = 100;
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index ed67669..f31c05d 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -117,7 +117,7 @@ void GnapEngine::scene08_run() {
_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-1, 7, kDirNone);
+ initPlatypusPos(-1, 7, kDirNone);
endSceneInit();
@@ -167,7 +167,7 @@ void GnapEngine::scene08_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -215,10 +215,10 @@ void GnapEngine::scene08_run() {
break;
case PLAT_CURSOR:
gnapActionIdle(0x14D);
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(6, 6, 1, 0x107C2, 1);
- _beaverActionStatus = kASPlatWithMan;
- _beaverFacing = kDirNone;
+ _platypusActionStatus = kASPlatWithMan;
+ _platypusFacing = kDirNone;
playGnapIdle(6, 6);
break;
}
@@ -251,10 +251,10 @@ void GnapEngine::scene08_run() {
case PLAT_CURSOR:
setFlag(kGFSceneFlag1);
gnapActionIdle(0x14D);
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(3, 7, 1, 0x107C2, 1);
- _beaverActionStatus = kASPlatWithDog;
- _beaverFacing = kDirNone;
+ _platypusActionStatus = kASPlatWithDog;
+ _platypusFacing = kDirNone;
playGnapIdle(3, 7);
break;
}
@@ -358,11 +358,11 @@ void GnapEngine::scene08_run() {
scene08_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(50) + 125;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s08_nextManSequenceId == -1 &&
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s08_nextManSequenceId == -1 &&
(_s08_currDogSequenceId == 0x134 || _s08_currDogSequenceId == 0x135)) {
int _gnapRandomValue = getRandom(4);
switch (_gnapRandomValue) {
@@ -438,13 +438,13 @@ void GnapEngine::scene08_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- switch (_beaverActionStatus) {
+ switch (_platypusActionStatus) {
case kASPlatWithDog:
_s08_nextDogSequenceId = 0x147;
break;
case kASPlatWithMan:
_s08_nextManSequenceId = 0x140;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
break;
}
}
@@ -458,7 +458,7 @@ void GnapEngine::scene08_updateAnimations() {
if (_gameSys->getAnimationStatus(3) == 2) {
if (_s08_currDogSequenceId == 0x147)
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
if (_s08_currDogSequenceId == 0x149 || _s08_currDogSequenceId == 0x14A || _s08_currDogSequenceId == 0x14B) {
if (getRandom(2) != 0)
_s08_nextManSequenceId = 0x13D;
@@ -491,15 +491,15 @@ void GnapEngine::scene08_updateAnimations() {
} else if (_s08_nextDogSequenceId == 0x147) {
_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x148, 160, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x148, 160, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
_s08_currDogSequenceId = _s08_nextDogSequenceId;
_s08_nextDogSequenceId = 0x134;
_platX = 1;
_platY = 8;
- _beaverId = 160;
- _beaverSequenceId = 0x148;
- _beaverFacing = kDirUnk4;
- _beaverSequenceDatNum = 0;
+ _platypusId = 160;
+ _platypusSequenceId = 0x148;
+ _platypusFacing = kDirUnk4;
+ _platypusSequenceDatNum = 0;
if (_gnapX == 1 && _gnapY == 8)
gnapWalkStep();
} else if (_s08_nextDogSequenceId != -1) {
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index cf1af00..7d9a4a9 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -68,13 +68,13 @@ void GnapEngine::scene09_run() {
if (_prevSceneNum == 8) {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 7, kDirUnk4);
+ initPlatypusPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
initGnapPos(4, 7, kDirBottomRight);
- initBeaverPos(5, 7, kDirNone);
+ initPlatypusPos(5, 7, kDirNone);
endSceneInit();
}
@@ -115,7 +115,7 @@ void GnapEngine::scene09_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -128,7 +128,7 @@ void GnapEngine::scene09_run() {
gnapWalkTo(4, 7, 0, 0x107BF, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
break;
case kHSExitHouse:
@@ -137,7 +137,7 @@ void GnapEngine::scene09_run() {
gnapWalkTo(10, -1, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(10, -1, -1, 0x107CD, 1);
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
break;
case kHSTrash:
@@ -178,7 +178,7 @@ void GnapEngine::scene09_run() {
scene09_updateAnimations();
if (!_isLeavingScene && _gnapActionStatus != 1 && _gnapActionStatus != 2) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(150) + 100;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 5650dd1..b750ea4 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -85,13 +85,13 @@ void GnapEngine::scene10_run() {
if (_prevSceneNum == 9) {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 7, kDirUnk4);
+ initPlatypusPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(9, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 8, kDirNone);
+ initPlatypusPos(-2, 8, kDirNone);
endSceneInit();
gnapWalkTo(1, 7, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
@@ -135,7 +135,7 @@ void GnapEngine::scene10_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -183,7 +183,7 @@ void GnapEngine::scene10_run() {
break;
case PLAT_CURSOR:
gnapActionIdle(0x10C);
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(4, 6, -1, -1, 1);
gnapWalkTo(4, 8, 0, 0x107BB, 1);
_gnapActionStatus = kASAnnoyCook;
@@ -220,7 +220,7 @@ void GnapEngine::scene10_run() {
playGnapMoan2(-1, -1);
else {
gnapActionIdle(0x10C);
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(3, 7, -1, -1, 1);
gnapWalkTo(4, 8, 0, 0x107BB, 1);
_gnapActionStatus = kASAnnoyCook;
@@ -253,10 +253,10 @@ void GnapEngine::scene10_run() {
invAdd(kItemTongs);
setFlag(kGFMudTaken);
gnapActionIdle(0x10C);
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(7, 6, 1, 0x107D2, 1);
- _beaverActionStatus = kASPlatWithBox;
- _beaverFacing = kDirUnk4;
+ _platypusActionStatus = kASPlatWithBox;
+ _platypusFacing = kDirUnk4;
_largeSprite = _gameSys->createSurface(0xC3);
playGnapIdle(7, 6);
}
@@ -321,7 +321,7 @@ void GnapEngine::scene10_run() {
scene10_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(80) + 150;
@@ -374,7 +374,7 @@ void GnapEngine::scene10_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- switch (_beaverActionStatus) {
+ switch (_platypusActionStatus) {
case kASPlatWithBox:
_s10_nextCookSequenceId = 0x109;
break;
@@ -389,16 +389,16 @@ void GnapEngine::scene10_updateAnimations() {
_platY = 8;
_gameSys->insertSequence(0x109, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x107C9, 160,
- _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
kSeqSyncWait, getSequenceTotalDuration(0x109) + getSequenceTotalDuration(0x10A) + getSequenceTotalDuration(0x10843),
75 * _platX - _platGridX, 48 * _platY - _platGridY);
_gameSys->removeSequence(0x107, 100, true);
_s10_currCookSequenceId = 0x109;
_s10_nextCookSequenceId = 0x843;
- _beaverSequenceId = 0x7C9;
- _beaverId = 160;
- _beaverFacing = kDirNone;
- _beaverSequenceDatNum = 1;
+ _platypusSequenceId = 0x7C9;
+ _platypusId = 160;
+ _platypusFacing = kDirNone;
+ _platypusSequenceDatNum = 1;
break;
case 0x843:
hideCursor();
@@ -416,8 +416,8 @@ void GnapEngine::scene10_updateAnimations() {
delayTicksCursor(5);
deleteSurface(&_largeSprite);
setGrabCursorSprite(kItemTongs);
- if (_beaverActionStatus == kASPlatWithBox)
- _beaverActionStatus = -1;
+ if (_platypusActionStatus == kASPlatWithBox)
+ _platypusActionStatus = -1;
if (_gnapX == 4 && _gnapY == 8)
gnapWalkStep();
break;
@@ -431,7 +431,7 @@ void GnapEngine::scene10_updateAnimations() {
case 0x106: {
// TODO: Refactor into a if + a switch
int rnd = getRandom(7);
- if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
+ if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
@@ -445,7 +445,7 @@ void GnapEngine::scene10_updateAnimations() {
}
break;
case 0x103:
- if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
+ if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (getRandom(7) == 0)
_s10_nextCookSequenceId = 0x104;
@@ -453,7 +453,7 @@ void GnapEngine::scene10_updateAnimations() {
_s10_nextCookSequenceId = 0x106;
break;
case 0x104:
- if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
+ if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (getRandom(7) == 0)
_s10_nextCookSequenceId = 0x103;
@@ -463,7 +463,7 @@ void GnapEngine::scene10_updateAnimations() {
case 0x105: {
// TODO: Refactor into a if + a switch
int rnd = getRandom(7);
- if (_gnapActionStatus >= 0 || _beaverActionStatus >= 0)
+ if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
@@ -478,7 +478,7 @@ void GnapEngine::scene10_updateAnimations() {
_gnapIdleFacing = kDirUpRight;
_gnapSequenceDatNum = 0;
_gnapActionStatus = -1;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
}
break;
}
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 68a261b..35a575c 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -94,22 +94,22 @@ void GnapEngine::scene11_run() {
switch (_prevSceneNum) {
case 13:
initGnapPos(8, 5, kDirBottomLeft);
- initBeaverPos(9, 6, kDirUnk4);
+ initPlatypusPos(9, 6, kDirUnk4);
break;
case 47:
initGnapPos(8, 5, kDirBottomLeft);
- initBeaverPos(9, 5, kDirUnk4);
+ initPlatypusPos(9, 5, kDirUnk4);
_s11_currGoggleGuySequenceId = 0x1FA;
_s11_currHookGuySequenceId = 0x1FF;
_timers[7] = 180;
break;
case 12:
initGnapPos(-1, 9, kDirBottomRight);
- initBeaverPos(-2, 8, kDirNone);
+ initPlatypusPos(-2, 8, kDirNone);
break;
default:
initGnapPos(6, 6, kDirBottomLeft);
- initBeaverPos(6, 5, kDirUnk4);
+ initPlatypusPos(6, 5, kDirUnk4);
break;
}
@@ -163,7 +163,7 @@ void GnapEngine::scene11_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -306,11 +306,11 @@ void GnapEngine::scene11_run() {
_gameSys->setAnimation(0x207, 257, 4);
_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
- beaverSub426234();
+ platypusSub426234();
updateGnapIdleSequence2();
if (!_timers[5]) {
_timers[5] = getRandom(100) + 75;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
if (getRandom(2))
_s11_nextGoggleGuySequenceId = 0x1F6;
else
@@ -319,7 +319,7 @@ void GnapEngine::scene11_run() {
}
if (!_timers[4]) {
_timers[4] = getRandom(40) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
if (_s11_currHookGuySequenceId == 0x201) {
switch (getRandom(7)) {
case 0:
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index dcd62a3..a60e6a2 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -112,11 +112,11 @@ void GnapEngine::scene12_run() {
if (_prevSceneNum == 15) {
initGnapPos(5, 6, kDirBottomRight);
- initBeaverPos(3, 7, kDirNone);
+ initPlatypusPos(3, 7, kDirNone);
endSceneInit();
} else {
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(12, 8, kDirUnk4);
+ initPlatypusPos(12, 8, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
@@ -152,7 +152,7 @@ void GnapEngine::scene12_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -200,10 +200,10 @@ void GnapEngine::scene12_run() {
_gnapActionStatus = kASTalkToothGuy;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(3, 7, 1, 0x107D2, 1);
- _beaverActionStatus = kASPlatWithToothGuy;
- _beaverFacing = kDirUnk4;
+ _platypusActionStatus = kASPlatWithToothGuy;
+ _platypusFacing = kDirUnk4;
playGnapIdle(2, 7);
break;
}
@@ -270,10 +270,10 @@ void GnapEngine::scene12_run() {
_gnapActionStatus = kASTalkBeardGuy;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(7, 6, 1, 0x107C2, 1);
- _beaverActionStatus = kASPlatWithBeardGuy;
- _beaverFacing = kDirNone;
+ _platypusActionStatus = kASPlatWithBeardGuy;
+ _platypusFacing = kDirNone;
playGnapIdle(7, 6);
break;
}
@@ -307,12 +307,12 @@ void GnapEngine::scene12_run() {
scene12_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = 15;
if (_s12_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _s12_currBeardGuySequenceId == 0x202 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (v18 == 0 && _s12_currBeardGuySequenceId == 0x202 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
if (getRandom(2) != 0)
_s12_nextToothGuySequenceId = 0x1EC;
else
@@ -324,8 +324,8 @@ void GnapEngine::scene12_run() {
}
if (!_timers[5]) {
_timers[5] = getRandom(30) + 20;
- if (_s12_nextBarkeeperSequenceId == -1 && _gnapActionStatus < 0 && _beaverActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBeardGuySequenceId == 0x202 && _gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (_s12_nextBarkeeperSequenceId == -1 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
+ if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBeardGuySequenceId == 0x202 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
if (getRandom(2) != 0)
_s12_nextBarkeeperSequenceId = 0x208;
else
@@ -337,8 +337,8 @@ void GnapEngine::scene12_run() {
}
if (!_timers[6]) {
_timers[6] = getRandom(30) + 15;
- if (_s12_nextBeardGuySequenceId == -1 && _gnapActionStatus < 0 && _beaverActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _beaverActionStatus < 0)
+ if (_s12_nextBeardGuySequenceId == -1 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
+ if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _platypusActionStatus < 0)
_s12_nextBeardGuySequenceId = 0x1F2;
else
_s12_nextBeardGuySequenceId = 0x202;
@@ -475,7 +475,7 @@ void GnapEngine::scene12_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- switch (_beaverActionStatus) {
+ switch (_platypusActionStatus) {
case kASPlatWithToothGuy:
_s12_nextToothGuySequenceId = 0x1EB;
break;
@@ -523,8 +523,8 @@ void GnapEngine::scene12_updateAnimations() {
if (_gnapActionStatus >= kASTalkToothGuy && _gnapActionStatus <= kASQuarterToToothGuy && _s12_currToothGuySequenceId != 0x1E9 &&
_s12_currToothGuySequenceId != 0x1EC && _s12_currToothGuySequenceId != 0x200)
_gnapActionStatus = -1;
- if (_beaverActionStatus == kASPlatWithToothGuy)
- _beaverActionStatus = -1;
+ if (_platypusActionStatus == kASPlatWithToothGuy)
+ _platypusActionStatus = -1;
}
}
@@ -554,8 +554,8 @@ void GnapEngine::scene12_updateAnimations() {
_timers[6] = getRandom(30) + 20;
if (_gnapActionStatus >= kASTalkBeardGuy && _gnapActionStatus <= kASShowItemToBeardGuy && _s12_currBeardGuySequenceId != 0x202 && _s12_currBeardGuySequenceId != 0x1F2)
_gnapActionStatus = -1;
- if (_beaverActionStatus == kASPlatWithBeardGuy)
- _beaverActionStatus = -1;
+ if (_platypusActionStatus == kASPlatWithBeardGuy)
+ _platypusActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index cff04bb..007c380 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -108,10 +108,10 @@ void GnapEngine::scene13_run() {
if (_prevSceneNum == 14) {
initGnapPos(6, 6, kDirBottomLeft);
- initBeaverPos(9, 8, kDirNone);
+ initPlatypusPos(9, 8, kDirNone);
} else {
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(2, 7, kDirNone);
+ initPlatypusPos(2, 7, kDirNone);
}
endSceneInit();
@@ -153,7 +153,7 @@ void GnapEngine::scene13_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -316,7 +316,7 @@ void GnapEngine::scene13_run() {
scene13_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
if (_platY == 5 || _platY == 6)
platypusWalkTo(-1, 7, -1, -1, 1);
if (_gnapActionStatus < 0)
@@ -445,7 +445,7 @@ void GnapEngine::scene13_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index 37427bd..cf5945d 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -94,19 +94,19 @@ void GnapEngine::scene17_update() {
void GnapEngine::scene17_platHangUpPhone() {
int savedGnapActionStatus = _gnapActionStatus;
- if (_beaverActionStatus == kASPlatPhoningAssistant) {
+ if (_platypusActionStatus == kASPlatPhoningAssistant) {
_gnapActionStatus = kASPlatHangUpPhone;
updateMouseCursor();
_s17_platPhoneCtr = 0;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
_gameSys->setAnimation(0x257, 254, 4);
_gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (_gameSys->getAnimationStatus(4) != 2)
gameUpdateTick();
- _gameSys->setAnimation(0x25B, _beaverId, 1);
- _gameSys->insertSequence(0x25B, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0x25B;
- _beaverSequenceDatNum = 0;
+ _gameSys->setAnimation(0x25B, _platypusId, 1);
+ _gameSys->insertSequence(0x25B, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0x25B;
+ _platypusSequenceDatNum = 0;
_s17_currPhoneSequenceId = -1;
_s17_nextPhoneSequenceId = -1;
clearFlag(kGFPlatypusTalkingToAssistant);
@@ -177,7 +177,7 @@ void GnapEngine::scene17_run() {
if (_prevSceneNum == 53 || _prevSceneNum == 18 || _prevSceneNum == 20 || _prevSceneNum == 19) {
if (_prevSceneNum == 20) {
initGnapPos(4, 6, kDirBottomRight);
- initBeaverPos(5, 6, kDirNone);
+ initPlatypusPos(5, 6, kDirNone);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
@@ -185,15 +185,15 @@ void GnapEngine::scene17_run() {
initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
_platY = _hotspotsWalkPos[2].y;
- _beaverId = 20 * _hotspotsWalkPos[2].y;
+ _platypusId = 20 * _hotspotsWalkPos[2].y;
_gameSys->insertSequence(0x25A, 20 * _hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
- _beaverSequenceId = 0x25A;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0x25A;
+ _platypusSequenceDatNum = 0;
endSceneInit();
clearFlag(kGFSpringTaken);
clearFlag(kGFUnk16);
- _beaverActionStatus = kASPlatPhoningAssistant;
+ _platypusActionStatus = kASPlatPhoningAssistant;
scene17_platHangUpPhone();
_gameSys->setAnimation(0, 0, 4);
clearFlag(kGFPlatypusTalkingToAssistant);
@@ -202,7 +202,7 @@ void GnapEngine::scene17_run() {
} else if (isFlag(kGFUnk25)) {
clearFlag(kGFSpringTaken);
clearFlag(kGFUnk16);
- initBeaverPos(7, 9, kDirNone);
+ initPlatypusPos(7, 9, kDirNone);
_gnapX = _hotspotsWalkPos[2].x;
_gnapY = _hotspotsWalkPos[2].y;
_gnapId = 20 * _hotspotsWalkPos[2].y;
@@ -222,30 +222,30 @@ void GnapEngine::scene17_run() {
initGnapPos(3, 9, kDirUpLeft);
_platX = _hotspotsWalkPos[2].x;
_platY = _hotspotsWalkPos[2].y;
- _beaverId = 20 * _hotspotsWalkPos[2].y;
+ _platypusId = 20 * _hotspotsWalkPos[2].y;
_s17_currPhoneSequenceId = 0x251;
_gameSys->insertSequence(0x25A, 20 * _hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(_s17_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- _beaverSequenceId = 0x25A;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0x25A;
+ _platypusSequenceDatNum = 0;
endSceneInit();
_gameSys->setAnimation(_s17_currPhoneSequenceId, 254, 1);
- _beaverActionStatus = kASPlatPhoningAssistant;
+ _platypusActionStatus = kASPlatPhoningAssistant;
scene17_updateHotspots();
} else if (_prevSceneNum == 18) {
initGnapPos(6, 6, kDirBottomRight);
- initBeaverPos(5, 6, kDirNone);
+ initPlatypusPos(5, 6, kDirNone);
endSceneInit();
platypusWalkTo(5, 9, -1, 0x107C2, 1);
gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
if (isFlag(kGFSpringTaken)) {
initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, kDirBottomRight);
- initBeaverPos(1, 9, kDirNone);
+ initPlatypusPos(1, 9, kDirNone);
endSceneInit();
} else {
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(1, 7, kDirNone);
+ initPlatypusPos(1, 7, kDirNone);
endSceneInit();
}
clearFlag(kGFSpringTaken);
@@ -262,16 +262,16 @@ void GnapEngine::scene17_run() {
_gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0, 0, kSeqNone, 0, 0, 0);
_platX = -1;
_platY = 8;
- _beaverId = 160;
+ _platypusId = 160;
_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x107C1, _beaverId, 0x241, _beaverId,
+ _gameSys->insertSequence(0x107C1, _platypusId, 0x241, _platypusId,
kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
endSceneInit();
- _beaverSequenceId = 0x7C1;
- _beaverSequenceDatNum = 1;
- _beaverFacing = kDirBottomRight;
+ _platypusSequenceId = 0x7C1;
+ _platypusSequenceDatNum = 1;
+ _platypusFacing = kDirBottomRight;
platypusWalkTo(2, 9, -1, 0x107C2, 1);
}
@@ -298,10 +298,10 @@ void GnapEngine::scene17_run() {
if (isFlag(kGFGrassTaken)) {
gnapUseJointOnPlatypus();
} else {
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 1, 0x107C2, 1);
gnapWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 0, 0x107BA, 1);
- _beaverActionStatus = kASGetWrench1;
+ _platypusActionStatus = kASGetWrench1;
_gnapActionStatus = kASGetWrench1;
_timers[5] = getRandom(30) + 80;
setGrabCursorSprite(-1);
@@ -317,7 +317,7 @@ void GnapEngine::scene17_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -345,9 +345,9 @@ void GnapEngine::scene17_run() {
case PLAT_CURSOR:
if (_s17_canTryGetWrench) {
scene17_platHangUpPhone();
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 1, 0x107C2, 1);
- _beaverActionStatus = kASTryGetWrench;
+ _platypusActionStatus = kASTryGetWrench;
_gnapActionStatus = kASTryGetWrench;
_timers[5] = getRandom(30) + 80;
} else
@@ -385,11 +385,11 @@ void GnapEngine::scene17_run() {
if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
- gnapUseDeviceOnBeaver();
- _beaverFacing = kDirUpLeft;
+ gnapUseDeviceOnPlatypuss();
+ _platypusFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
setFlag(kGFUnk16);
- _beaverActionStatus = kASPlatUsePhone;
+ _platypusActionStatus = kASPlatUsePhone;
_gnapActionStatus = kASPlatUsePhone;
} else
playGnapImpossible(0, 0);
@@ -429,11 +429,11 @@ void GnapEngine::scene17_run() {
if (isFlag(kGFUnk18)) {
scene17_platHangUpPhone();
_isLeavingScene = true;
- gnapUseDeviceOnBeaver();
- _beaverFacing = kDirUpLeft;
+ gnapUseDeviceOnPlatypuss();
+ _platypusFacing = kDirUpLeft;
platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
setFlag(kGFUnk16);
- _beaverActionStatus = kASPlatUsePhone;
+ _platypusActionStatus = kASPlatUsePhone;
_gnapActionStatus = kASPlatUsePhone;
} else
playGnapImpossible(0, 0);
@@ -450,7 +450,7 @@ void GnapEngine::scene17_run() {
_gnapIdleFacing = kDirUpRight;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
- if (_beaverActionStatus != kASPlatPhoningAssistant)
+ if (_platypusActionStatus != kASPlatPhoningAssistant)
platypusWalkTo(_hotspotsWalkPos[5].x - 1, _hotspotsWalkPos[5].y, -1, 0x107C2, 1);
}
break;
@@ -488,17 +488,17 @@ void GnapEngine::scene17_run() {
playSound(0x10940, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- beaverSub426234();
+ if (_platypusActionStatus < 0)
+ platypusSub426234();
updateGnapIdleSequence2();
if (!_timers[4]) {
_timers[4] = getRandom(100) + 200;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0)
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0)
_gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_timers[7]) {
_timers[7] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
switch (getRandom(3)) {
case 0:
_gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -512,7 +512,7 @@ void GnapEngine::scene17_run() {
}
}
}
- if (_beaverActionStatus < 0 && !_timers[5]) {
+ if (_platypusActionStatus < 0 && !_timers[5]) {
_timers[5] = getRandom(30) + 80;
if (isFlag(kGFGrassTaken) && _s17_nextWrenchSequenceId == -1) {
_s17_nextWrenchSequenceId = 0x236;
@@ -643,9 +643,9 @@ void GnapEngine::scene17_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- switch (_beaverActionStatus) {
+ switch (_platypusActionStatus) {
case kASTryGetWrench:
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
++_s17_platTryGetWrenchCtr;
if (_s17_platTryGetWrenchCtr % 2 != 0)
_s17_nextWrenchSequenceId = 0x233;
@@ -660,16 +660,16 @@ void GnapEngine::scene17_updateAnimations() {
_s17_nextCarWindowSequenceId = 0x249;
break;
case kASGetWrenchDone:
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
invAdd(kItemWrench);
setGrabCursorSprite(kItemWrench);
break;
case kASPlatUsePhone:
- _gameSys->setAnimation(0x24E, _beaverId, 1);
- _gameSys->insertSequence(0x24E, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceDatNum = 0;
- _beaverSequenceId = 0x24E;
- _beaverActionStatus = kASLeaveScene;
+ _gameSys->setAnimation(0x24E, _platypusId, 1);
+ _gameSys->insertSequence(0x24E, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceDatNum = 0;
+ _platypusSequenceId = 0x24E;
+ _platypusActionStatus = kASLeaveScene;
_newSceneNum = 53;
break;
case kASPlatPhoningAssistant:
@@ -678,10 +678,10 @@ void GnapEngine::scene17_updateAnimations() {
_s17_platPhoneCtr = 0;
_s17_nextPhoneSequenceId = -1;
_s17_currPhoneSequenceId = -1;
- _gameSys->insertSequence(0x25B, _beaverId, 0x25A, _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceDatNum = 0;
- _beaverSequenceId = 0x25B;
- _beaverActionStatus = -1;
+ _gameSys->insertSequence(0x25B, _platypusId, 0x25A, _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceDatNum = 0;
+ _platypusSequenceId = 0x25B;
+ _platypusActionStatus = -1;
clearFlag(kGFPlatypusTalkingToAssistant);
_sceneWaiting = false;
scene17_updateHotspots();
@@ -689,9 +689,9 @@ void GnapEngine::scene17_updateAnimations() {
_s17_nextPhoneSequenceId = kPlatPhoneSequenceIds[_s17_platPhoneCtr];
_gameSys->setAnimation(_s17_nextPhoneSequenceId, 254, 1);
_gameSys->insertSequence(_s17_nextPhoneSequenceId, 254, _s17_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x25A, _beaverId, 0x25A, _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceDatNum = 0;
- _beaverSequenceId = 0x25A;
+ _gameSys->insertSequence(0x25A, _platypusId, 0x25A, _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceDatNum = 0;
+ _platypusSequenceId = 0x25A;
_s17_currPhoneSequenceId = _s17_nextPhoneSequenceId;
}
break;
@@ -705,27 +705,27 @@ void GnapEngine::scene17_updateAnimations() {
switch (_s17_nextWrenchSequenceId) {
case 0x233:
_gnapActionStatus = -1;
- _gameSys->insertSequence(0x243, _beaverId,
- _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ _gameSys->insertSequence(0x243, _platypusId,
+ _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
- _beaverSequenceId = 0x243;
- _beaverSequenceDatNum = 0;
- _gameSys->setAnimation(0x243, _beaverId, 1);
+ _platypusSequenceId = 0x243;
+ _platypusSequenceDatNum = 0;
+ _gameSys->setAnimation(0x243, _platypusId, 1);
break;
case 0x234:
_gnapActionStatus = -1;
- _gameSys->insertSequence(0x242, _beaverId,
- _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ _gameSys->insertSequence(0x242, _platypusId,
+ _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
- _beaverSequenceId = 0x242;
- _beaverSequenceDatNum = 0;
- _gameSys->setAnimation(0x242, _beaverId, 1);
+ _platypusSequenceId = 0x242;
+ _platypusSequenceDatNum = 0;
+ _gameSys->setAnimation(0x242, _platypusId, 1);
break;
case 0x231:
if (getRandom(2) != 0)
@@ -758,17 +758,17 @@ void GnapEngine::scene17_updateAnimations() {
_s17_currWrenchSequenceId = 0x22E;
_s17_canTryGetWrench = false;
}
- _gameSys->setAnimation(0x23F, _beaverId, 1);
+ _gameSys->setAnimation(0x23F, _platypusId, 1);
_gameSys->insertSequence(0x10875, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x23F, _beaverId,
- _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId,
+ _gameSys->insertSequence(0x23F, _platypusId,
+ _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
kSeqSyncWait, 0, 0, 0);
_gnapSequenceDatNum = 1;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceDatNum = 0;
_gnapSequenceId = 0x875;
- _beaverSequenceId = 0x23F;
+ _platypusSequenceId = 0x23F;
gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _beaverActionStatus = kASGetWrench2;
+ _platypusActionStatus = kASGetWrench2;
}
break;
default:
@@ -806,15 +806,15 @@ void GnapEngine::scene17_updateAnimations() {
break;
case 0x249:
_gameSys->setAnimation(0x230, 40, 2);
- _gameSys->setAnimation(0x240, _beaverId, 1);
+ _gameSys->setAnimation(0x240, _platypusId, 1);
_gameSys->insertSequence(0x230, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x240, _beaverId, _beaverSequenceId, _beaverId, kSeqSyncWait, 0, 0, 0);
+ _gameSys->insertSequence(0x240, _platypusId, _platypusSequenceId, _platypusId, kSeqSyncWait, 0, 0, 0);
_gameSys->insertSequence(0x23E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x23E;
_gnapSequenceDatNum = 0;
- _beaverSequenceId = 0x240;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0x240;
+ _platypusSequenceDatNum = 0;
_gameSys->setAnimation(0x24A, 40, 3);
_gameSys->insertSequence(0x24A, 40, _s17_nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (_gameSys->getAnimationStatus(2) != 2) {
@@ -833,7 +833,7 @@ void GnapEngine::scene17_updateAnimations() {
_s17_nextWrenchSequenceId = -1;
setFlag(kGFGrassTaken);
_gnapActionStatus = -1;
- _beaverActionStatus = 2;
+ _platypusActionStatus = 2;
scene17_updateHotspots();
_timers[5] = getRandom(30) + 80;
break;
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index d1683b6..0e8065c 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -168,9 +168,9 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
if (_gnapY == _platY) {
if (v12 >= _gnapX) {
if (v12 >= _platX && _gnapX <= _platX)
- beaverMakeRoom();
+ platypusMakeRoom();
} else if (v12 <= _platX && _gnapX >= _platX) {
- beaverMakeRoom();
+ platypusMakeRoom();
}
}
gnapSeqId = _gnapSequenceId;
@@ -261,7 +261,7 @@ void GnapEngine::scene18_platEndPhoning(bool platFl) {
if (isFlag(kGFPlatypusTalkingToAssistant)) {
_s18_platPhoneIter = 0;
_s18_platPhoneCtr = 0;
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
if (_s18_currPhoneSequenceId != -1) {
_gameSys->setAnimation(0x21E, 254, 3);
_gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
@@ -272,7 +272,7 @@ void GnapEngine::scene18_platEndPhoning(bool platFl) {
_gameSys->setAnimation(0, 0, 3);
clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
- _beaverActionStatus = kASPlatComesHere;
+ _platypusActionStatus = kASPlatComesHere;
_timers[6] = 50;
_sceneWaiting = true;
}
@@ -378,19 +378,19 @@ void GnapEngine::scene18_run() {
}
if (_prevSceneNum == 17) {
initGnapPos(4, 11, kDirBottomRight);
- initBeaverPos(5, 11, kDirNone);
+ initPlatypusPos(5, 11, kDirNone);
endSceneInit();
gnapWalkTo(4, 8, -1, 0x107B9, 1);
platypusWalkTo(5, 9, -1, 0x107C2, 1);
} else if (_prevSceneNum == 19) {
initGnapPos(7, 7, kDirBottomRight);
- initBeaverPos(8, 7, kDirNone);
+ initPlatypusPos(8, 7, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
initGnapPos(-1, 10, kDirBottomRight);
- initBeaverPos(-1, 10, kDirNone);
+ initPlatypusPos(-1, 10, kDirNone);
endSceneInit();
gnapWalkTo(3, 7, -1, 0x107B9, 1);
platypusWalkTo(3, 8, -1, 0x107C2, 1);
@@ -435,7 +435,7 @@ void GnapEngine::scene18_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -726,18 +726,18 @@ void GnapEngine::scene18_run() {
if (!_isLeavingScene) {
if (!isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_beaverActionStatus == kASPlatComesHere) {
+ if (_platypusActionStatus == kASPlatComesHere) {
if (!_timers[6]) {
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
_sceneWaiting = false;
- initBeaverPos(-1, 10, kDirNone);
+ initPlatypusPos(-1, 10, kDirNone);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
_hotspots[kHSWalkArea1]._y2 += 48;
_hotspots[kHSWalkArea2]._x1 += 75;
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
_hotspots[kHSWalkArea2]._x1 -= 75;
_hotspots[kHSWalkArea1]._y2 -= 48;
}
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index fd8b421..4de51f8 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -127,7 +127,7 @@ void GnapEngine::scene19_run() {
_gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_timers[6] = getRandom(40) + 50;
initGnapPos(3, 6, kDirBottomRight);
- initBeaverPos(4, 6, kDirNone);
+ initPlatypusPos(4, 6, kDirNone);
endSceneInit();
gnapWalkTo(4, 9, -1, 0x107B9, 1);
platypusWalkTo(5, 9, -1, 0x107C2, 1);
@@ -168,7 +168,7 @@ void GnapEngine::scene19_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -311,7 +311,7 @@ void GnapEngine::scene19_run() {
if (!_isLeavingScene) {
updateGnapIdleSequence();
if (!isFlag(kGFPlatypusTalkingToAssistant)) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
if (!_timers[6] && _s19_nextShopAssistantSequenceId == -1) {
_timers[6] = getRandom(40) + 50;
if (getRandom(4) != 0) {
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 9298fc1..7982b07 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -229,42 +229,42 @@ void GnapEngine::scene20_run() {
gameUpdateTick();
}
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(11, 9, kDirUnk4);
+ initPlatypusPos(11, 9, kDirUnk4);
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
switch (_prevSceneNum) {
case 17:
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, kDirNone);
+ initPlatypusPos(6, 11, kDirNone);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
initGnapPos(11, 8, kDirBottomLeft);
- initBeaverPos(11, 9, kDirUnk4);
+ initPlatypusPos(11, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
initGnapPos(-1, 8, kDirBottomLeft);
- initBeaverPos(-1, 9, kDirUnk4);
+ initPlatypusPos(-1, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
initGnapPos(7, 6, kDirBottomRight);
- initBeaverPos(8, 6, kDirNone);
+ initPlatypusPos(8, 6, kDirNone);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
initGnapPos(8, 6, kDirBottomLeft);
- initBeaverPos(9, 6, kDirUnk4);
+ initPlatypusPos(9, 6, kDirUnk4);
endSceneInit();
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(8, 8, -1, 0x107BA, 1);
@@ -310,7 +310,7 @@ void GnapEngine::scene20_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -329,7 +329,7 @@ void GnapEngine::scene20_run() {
gnapWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y + 1, -1, 0x107CF, 1);
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
}
break;
@@ -368,7 +368,7 @@ void GnapEngine::scene20_run() {
gnapWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x, _hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitInsideGrubCity].y, -1, 0x107C2, 1);
- _beaverFacing = kDirUnk4;
+ _platypusFacing = kDirUnk4;
}
break;
@@ -493,9 +493,9 @@ void GnapEngine::scene20_run() {
playSound(0x10940, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0) {
+ if (_platypusActionStatus < 0) {
_hotspots[kHSWalkArea1]._y2 += 48;
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
_hotspots[kHSWalkArea1]._y2 -= 48;
}
if (_gnapActionStatus < 0)
@@ -509,7 +509,7 @@ void GnapEngine::scene20_run() {
}
if (!_timers[7]) {
_timers[7] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
switch (getRandom(3)) {
case 0:
_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index 9d2b171..b04c8c9 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -77,7 +77,7 @@ void GnapEngine::scene21_run() {
if (isFlag(kGFTwigTaken)) {
if (isFlag(kGFKeysTaken)) {
initGnapPos(5, 8, kDirBottomRight);
- initBeaverPos(6, 8, kDirNone);
+ initPlatypusPos(6, 8, kDirNone);
_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!isFlag(kGFUnk04))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
@@ -85,7 +85,7 @@ void GnapEngine::scene21_run() {
clearFlag(kGFKeysTaken);
} else {
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, kDirNone);
+ initPlatypusPos(6, 11, kDirNone);
if (!isFlag(kGFUnk04))
_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
@@ -94,7 +94,7 @@ void GnapEngine::scene21_run() {
}
} else {
initGnapPos(5, 11, kDirBottomRight);
- initBeaverPos(6, 11, kDirNone);
+ initPlatypusPos(6, 11, kDirNone);
_s21_currOldLadySequenceId = 0x89;
_gameSys->setAnimation(0x89, 79, 3);
_gameSys->insertSequence(_s21_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
@@ -138,7 +138,7 @@ void GnapEngine::scene21_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -234,7 +234,7 @@ void GnapEngine::scene21_run() {
playSound(0x10940, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!isFlag(kGFTwigTaken) && !_timers[4] && _s21_nextOldLadySequenceId == -1 && _gnapActionStatus == -1) {
_timers[4] = getRandom(30) + 50;
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 3a196da..80f3843 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -72,11 +72,11 @@ void GnapEngine::scene22_run() {
if (_prevSceneNum == 20) {
initGnapPos(2, 8, kDirBottomRight);
- initBeaverPos(1, 8, kDirNone);
+ initPlatypusPos(1, 8, kDirNone);
endSceneInit();
} else {
initGnapPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
- initBeaverPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
+ initPlatypusPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107B9, 1);
platypusWalkTo(9, 8, -1, 0x107C2, 1);
@@ -150,7 +150,7 @@ void GnapEngine::scene22_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -199,7 +199,7 @@ void GnapEngine::scene22_run() {
_gnapActionStatus = kASTalkCashier;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
break;
}
}
@@ -223,7 +223,7 @@ void GnapEngine::scene22_run() {
scene22_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[6] && _s22_nextCashierSequenceId == -1) {
_timers[6] = getRandom(30) + 20;
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index 70437eb..a6b4c1f 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -70,7 +70,7 @@ void GnapEngine::scene23_run() {
queueInsertDeviceIcon();
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 7, kDirNone);
+ initPlatypusPos(-2, 7, kDirNone);
_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
endSceneInit();
@@ -122,7 +122,7 @@ void GnapEngine::scene23_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -196,7 +196,7 @@ void GnapEngine::scene23_run() {
scene23_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4] && _gnapActionStatus == -1) {
_timers[4] = getRandom(100) + 200;
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index 1c67c50..e244a0d 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -85,13 +85,13 @@ void GnapEngine::scene24_run() {
if (_prevSceneNum == 20) {
initGnapPos(1, 8, kDirBottomRight);
- initBeaverPos(2, 8, kDirNone);
+ initPlatypusPos(2, 8, kDirNone);
endSceneInit();
gnapWalkTo(1, 9, -1, 0x107B9, 1);
platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(8, 8, kDirUnk4);
+ initPlatypusPos(8, 8, kDirUnk4);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107BA, 1);
platypusWalkTo(3, 8, -1, 0x107C2, 1);
@@ -132,7 +132,7 @@ void GnapEngine::scene24_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -185,7 +185,7 @@ void GnapEngine::scene24_run() {
playSound(0x10940, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 50;
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index 427536b..fe6c7d8 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -121,13 +121,13 @@ void GnapEngine::scene25_run() {
if (_prevSceneNum == 24) {
initGnapPos(5, 11, kDirUpLeft);
- initBeaverPos(6, 11, kDirUnk4);
+ initPlatypusPos(6, 11, kDirUnk4);
endSceneInit();
gnapWalkTo(5, 7, -1, 0x107BA, 1);
platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
initGnapPos(5, 6, kDirBottomRight);
- initBeaverPos(6, 6, kDirNone);
+ initPlatypusPos(6, 6, kDirNone);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -166,7 +166,7 @@ void GnapEngine::scene25_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -284,7 +284,7 @@ void GnapEngine::scene25_run() {
scene25_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4] && _s25_nextTicketVendorSequenceId == -1 && _gnapActionStatus == -1) {
_timers[4] = getRandom(20) + 20;
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index f2ced59..b446fbb 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -82,13 +82,13 @@ void GnapEngine::scene26_run() {
if (_prevSceneNum == 25) {
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-2, 8, kDirNone);
+ initPlatypusPos(-2, 8, kDirNone);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
initGnapPos(2, 8, kDirBottomRight);
- initBeaverPos(3, 8, kDirNone);
+ initPlatypusPos(3, 8, kDirNone);
endSceneInit();
}
@@ -125,7 +125,7 @@ void GnapEngine::scene26_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -201,7 +201,7 @@ void GnapEngine::scene26_run() {
playSound(0x1093B, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[5] && _s26_nextKidSequenceId == -1) {
_timers[5] = getRandom(20) + 50;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index ad25092..2c5a8f1 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -93,28 +93,28 @@ void GnapEngine::scene27_run() {
switch (_prevSceneNum) {
case 26:
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, kDirNone);
+ initPlatypusPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
initGnapPos(-1, 8, kDirBottomRight);
- initBeaverPos(-1, 9, kDirNone);
+ initPlatypusPos(-1, 9, kDirNone);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107B9, 1);
platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
initGnapPos(12, 8, kDirBottomLeft);
- initBeaverPos(12, 9, kDirUnk4);
+ initPlatypusPos(12, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
initGnapPos(6, 8, kDirBottomRight);
- initBeaverPos(5, 9, kDirNone);
+ initPlatypusPos(5, 9, kDirNone);
endSceneInit();
break;
}
@@ -153,7 +153,7 @@ void GnapEngine::scene27_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -280,7 +280,7 @@ void GnapEngine::scene27_run() {
playSound(0x1093B, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (_debugLevel == 4)
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 86df88b..93723e6 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -94,12 +94,12 @@ void GnapEngine::scene28_run() {
_timers[4] = getRandom(20) + 80;
}
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(9, 8, kDirUnk4);
+ initPlatypusPos(9, 8, kDirUnk4);
endSceneInit();
} else {
_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
initGnapPos(8, 8, kDirBottomLeft);
- initBeaverPos(9, 8, kDirUnk4);
+ initPlatypusPos(9, 8, kDirUnk4);
endSceneInit();
playSequences(0xF7, 0x121, 0x122, 0x123);
_s28_currClownSequenceId = 0x115;
@@ -149,7 +149,7 @@ void GnapEngine::scene28_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -289,7 +289,7 @@ void GnapEngine::scene28_run() {
playSound(0x1093C, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 80;
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 6ab5744..3528141 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -86,13 +86,13 @@ void GnapEngine::scene29_run() {
if (_prevSceneNum == 27) {
initGnapPos(12, 7, kDirBottomRight);
- initBeaverPos(12, 8, kDirNone);
+ initPlatypusPos(12, 8, kDirNone);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107B9, 1);
platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
initGnapPos(-1, 7, kDirBottomRight);
- initBeaverPos(-2, 7, kDirNone);
+ initPlatypusPos(-2, 7, kDirNone);
endSceneInit();
gnapWalkTo(2, 7, -1, 0x107B9, 1);
platypusWalkTo(1, 7, -1, 0x107C2, 1);
@@ -131,7 +131,7 @@ void GnapEngine::scene29_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -236,7 +236,7 @@ void GnapEngine::scene29_run() {
if (!_isLeavingScene) {
if (_gnapActionStatus < 0) {
updateGnapIdleSequence();
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
}
if (!_timers[4]) {
if (invHas(kItemHorn)) {
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index b394baf..33a374c 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -76,7 +76,7 @@ void GnapEngine::scene30_run() {
_s30_kidSequenceId = 0x101;
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, kDirNone);
+ initPlatypusPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107B9, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -112,7 +112,7 @@ void GnapEngine::scene30_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -183,7 +183,7 @@ void GnapEngine::scene30_run() {
playSound(0x1093B, true);
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 3adfcbd..027a4b5 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -79,13 +79,13 @@ void GnapEngine::scene31_run() {
if (_prevSceneNum == 27) {
initGnapPos(-1, 8, kDirBottomLeft);
- initBeaverPos(-1, 9, kDirUnk4);
+ initPlatypusPos(-1, 9, kDirUnk4);
endSceneInit();
gnapWalkTo(3, 8, -1, 0x107BA, 1);
platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
initGnapPos(7, 12, kDirBottomRight);
- initBeaverPos(6, 12, kDirNone);
+ initPlatypusPos(6, 12, kDirNone);
endSceneInit();
gnapWalkTo(7, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107D2, 1);
@@ -124,7 +124,7 @@ void GnapEngine::scene31_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(0, 0);
@@ -161,12 +161,12 @@ void GnapEngine::scene31_run() {
break;
case PLAT_CURSOR:
if (!invHas(kItemBucketWithBeer)) {
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, 1, 0x107C2, 1);
_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _beaverActionStatus = kASPlatMeasuringClown;
+ _platypusActionStatus = kASPlatMeasuringClown;
_gnapActionStatus = kASPlatMeasuringClown;
_timers[4] = 300;
} else
@@ -253,8 +253,8 @@ void GnapEngine::scene31_run() {
playSound(0x1093B, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
@@ -343,7 +343,7 @@ void GnapEngine::scene31_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_beaverActionStatus == kASPlatMeasuringClown) {
+ if (_platypusActionStatus == kASPlatMeasuringClown) {
_sceneWaiting = true;
_s31_beerGuyDistracted = true;
_s28_nextClerkSequenceId = 0xFA;
@@ -364,7 +364,7 @@ void GnapEngine::scene31_updateAnimations() {
++_s31_clerkMeasureCtr;
if (_s31_clerkMeasureCtr >= _s31_clerkMeasureMaxCtr) {
if (_gnapActionStatus != 5)
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
_timers[0] = 40;
_gameSys->insertSequence(0xFD, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_s28_currClerkSequenceId = 0xFD;
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index ff52604..6eac47e 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -72,13 +72,13 @@ void GnapEngine::scene32_run() {
if (_prevSceneNum == 33) {
initGnapPos(11, 6, kDirBottomLeft);
- initBeaverPos(12, 6, kDirUnk4);
+ initPlatypusPos(12, 6, kDirUnk4);
endSceneInit();
platypusWalkTo(9, 6, -1, 0x107D2, 1);
gnapWalkTo(8, 6, -1, 0x107BA, 1);
} else {
initGnapPos(1, 6, kDirBottomRight);
- initBeaverPos(1, 7, kDirNone);
+ initPlatypusPos(1, 7, kDirNone);
endSceneInit();
}
@@ -112,7 +112,7 @@ void GnapEngine::scene32_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -158,8 +158,8 @@ void GnapEngine::scene32_run() {
playSound(0x1091C, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index bad0f88..3c24dd2 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -77,26 +77,26 @@ void GnapEngine::scene33_run() {
switch (_prevSceneNum) {
case 34:
initGnapPos(11, 7, kDirBottomLeft);
- initBeaverPos(12, 7, kDirUnk4);
+ initPlatypusPos(12, 7, kDirUnk4);
endSceneInit();
gnapWalkTo(8, 7, -1, 0x107BA, 1);
platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
initGnapPos(7, 7, kDirBottomRight);
- initBeaverPos(8, 7, kDirNone);
+ initPlatypusPos(8, 7, kDirNone);
endSceneInit();
break;
case 32:
initGnapPos(-1, 6, kDirBottomRight);
- initBeaverPos(-1, 7, kDirNone);
+ initPlatypusPos(-1, 7, kDirNone);
endSceneInit();
platypusWalkTo(2, 7, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
default:
initGnapPos(3, 7, kDirBottomRight);
- initBeaverPos(2, 7, kDirNone);
+ initPlatypusPos(2, 7, kDirNone);
endSceneInit();
break;
}
@@ -133,7 +133,7 @@ void GnapEngine::scene33_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -235,8 +235,8 @@ void GnapEngine::scene33_run() {
playSound(0x1091C, true);
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[4]) {
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index b60c832..ce8f1c7 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -72,21 +72,21 @@ void GnapEngine::scene38_updateHotspots() {
setHotspot(kHSWalkArea5, 770, 0, 799, 445);
setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_hotspots[kHSWalkArea6]._flags = SF_NONE;
_hotspotsCount = 13;
}
@@ -98,10 +98,10 @@ void GnapEngine::scene38_run() {
if (_prevSceneNum == 39) {
initGnapPos(3, 7, kDirBottomLeft);
- initBeaverPos(4, 7, kDirUnk4);
+ initPlatypusPos(4, 7, kDirUnk4);
} else {
initGnapPos(3, 8, kDirBottomRight);
- initBeaverPos(4, 8, kDirNone);
+ initPlatypusPos(4, 8, kDirNone);
}
endSceneInit();
@@ -135,7 +135,7 @@ void GnapEngine::scene38_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -158,9 +158,9 @@ void GnapEngine::scene38_run() {
case kHSExitCave:
if (_gnapActionStatus == kASHoldingHuntingTrophy) {
_gnapActionStatus = kASReleaseHuntingTrophy;
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
_isLeavingScene = true;
- } else if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
+ } else if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
_sceneWaiting = false;
_isLeavingScene = true;
gnapWalkTo(5, 7, 0, 0x107BB, 1);
@@ -172,7 +172,7 @@ void GnapEngine::scene38_run() {
case kHSTrapDoorLid1:
case kHSTrapDoorLid2:
if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- if (_verbCursor == PLAT_CURSOR && _beaverActionStatus != kASBeaverHoldingTrapDoor)
+ if (_verbCursor == PLAT_CURSOR && _platypusActionStatus != kASBeaverHoldingTrapDoor)
_gnapActionStatus = kASUseBeaverWithTrapDoor;
else
_gnapActionStatus = kASReleaseHuntingTrophy;
@@ -189,7 +189,7 @@ void GnapEngine::scene38_run() {
playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
playGnapImpossible(0, 0);
else {
gnapWalkTo(3, 6, 0, 0x107BB, 1);
@@ -238,7 +238,7 @@ void GnapEngine::scene38_run() {
scene38_updateAnimations();
if (!_isLeavingScene) {
- updateBeaverIdleSequence();
+ updatePlatypusIdleSequence();
updateGnapIdleSequence();
}
@@ -265,7 +265,7 @@ void GnapEngine::scene38_updateAnimations() {
_sceneDone = true;
break;
case kASExitCave:
- _gameSys->removeSequence(_beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, true);
+ _gameSys->removeSequence(_platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, true);
_gameSys->insertSequence(0xA3, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA3;
_gnapSequenceDatNum = 0;
@@ -282,7 +282,7 @@ void GnapEngine::scene38_updateAnimations() {
scene38_updateHotspots();
break;
case kASHoldingHuntingTrophy:
- if (_beaverActionStatus != kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus != kASBeaverHoldingTrapDoor)
_sceneWaiting = true;
if (_gnapSequenceId == 0xA4) {
_gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
@@ -298,7 +298,7 @@ void GnapEngine::scene38_updateAnimations() {
if (_gnapSequenceId == 0x9E) {
_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_gnapActionStatus = -1;
- } else if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
+ } else if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
_gameSys->insertSequence(0xA0, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA0;
_gnapSequenceDatNum = 0;
@@ -332,17 +332,17 @@ void GnapEngine::scene38_updateAnimations() {
_gnapSequenceDatNum = 0;
_gameSys->setAnimation(0x9F, _gnapId, 0);
_gnapActionStatus = kASHoldingHuntingTrophy;
- if (_beaverFacing != kDirNone)
- playBeaverSequence(0x107D5);
+ if (_platypusFacing != kDirNone)
+ playPlatypusSequence(0x107D5);
else
- playBeaverSequence(0x107D4);
+ playPlatypusSequence(0x107D4);
platypusWalkTo(8, 7, -1, 0x107D2, 1);
- _gameSys->insertSequence(0xA1, _gnapId + 1, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0xA1;
- _beaverSequenceDatNum = 0;
- _beaverId = _gnapId + 1;
+ _gameSys->insertSequence(0xA1, _gnapId + 1, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0xA1;
+ _platypusSequenceDatNum = 0;
+ _platypusId = _gnapId + 1;
_gameSys->setAnimation(0xA1, _gnapId + 1, 1);
- _beaverActionStatus = kASBeaverHoldingTrapDoor;
+ _platypusActionStatus = kASBeaverHoldingTrapDoor;
scene38_updateHotspots();
break;
}
@@ -350,10 +350,10 @@ void GnapEngine::scene38_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_beaverActionStatus == kASBeaverHoldingTrapDoor) {
- _gameSys->insertSequence(0xA2, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0xA2;
- _beaverSequenceDatNum = 0;
+ if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
+ _gameSys->insertSequence(0xA2, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0xA2;
+ _platypusSequenceDatNum = 0;
scene38_updateHotspots();
_sceneWaiting = true;
}
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index a89fea8..bc506c1 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -71,11 +71,11 @@ void GnapEngine::scene39_run() {
_s39_nextGuySequenceId = -1;
if (_prevSceneNum == 38) {
initGnapPos(3, 7, kDirUpRight);
- initBeaverPos(2, 7, kDirUpLeft);
+ initPlatypusPos(2, 7, kDirUpLeft);
endSceneInit();
} else {
initGnapPos(4, 7, kDirBottomRight);
- initBeaverPos(5, 7, kDirNone);
+ initPlatypusPos(5, 7, kDirNone);
endSceneInit();
}
@@ -116,7 +116,7 @@ void GnapEngine::scene39_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -183,8 +183,8 @@ void GnapEngine::scene39_run() {
scene39_updateAnimations();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0)
updateGnapIdleSequence();
if (!_timers[5]) {
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index c2b8291..001a923 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -96,7 +96,7 @@ void GnapEngine::scene40_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 23ac6ca..c7f2789 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -138,23 +138,23 @@ void GnapEngine::scene41_run() {
_gnapId = 140;
_gameSys->insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- initBeaverPos(8, 10, kDirBottomLeft);
+ initPlatypusPos(8, 10, kDirBottomLeft);
endSceneInit();
} else if (_prevSceneNum == 45) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-2, 8, kDirUpLeft);
+ initPlatypusPos(-2, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 42) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, kDirUpLeft);
+ initPlatypusPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 8, kDirBottomRight);
- initBeaverPos(6, 8, kDirBottomLeft);
+ initPlatypusPos(6, 8, kDirBottomLeft);
endSceneInit();
}
@@ -236,7 +236,7 @@ void GnapEngine::scene41_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -384,13 +384,13 @@ void GnapEngine::scene41_run() {
scene41_updateAnimations();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
switch (getRandom(3)) {
case 0:
_s41_nextToyVendorSequenceId = 0x113;
@@ -408,7 +408,7 @@ void GnapEngine::scene41_run() {
}
if (!_timers[5]) {
_timers[5] = getRandom(30) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
if (isFlag(kGFGnapControlsToyUFO))
_s41_nextKidSequenceId = 0x11B;
else if (getRandom(3) != 0)
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 6b719d2..2ecce59 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -126,19 +126,19 @@ void GnapEngine::scene42_run() {
setGrabCursorSprite(-1);
} else if (_prevSceneNum == 41) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, kDirUpLeft);
+ initPlatypusPos(-1, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else if (_prevSceneNum == 43) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, kDirUpLeft);
+ initPlatypusPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -214,7 +214,7 @@ void GnapEngine::scene42_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -318,13 +318,13 @@ void GnapEngine::scene42_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 30;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
switch (getRandom(8)) {
case 0:
_s42_nextBBQVendorSequenceId = 0x14C;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index dcf03cb..e371d4a 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -114,27 +114,27 @@ void GnapEngine::scene43_run() {
switch (_prevSceneNum) {
case 42:
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, kDirUpLeft);
+ initPlatypusPos(-1, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, kDirUpLeft);
+ initPlatypusPos(11, 9, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
initGnapPos(4, 7, kDirBottomLeft);
- initBeaverPos(11, 8, kDirUpLeft);
+ initPlatypusPos(11, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
default:
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
gnapWalkTo(5, 8, -1, 0x107BA, 1);
platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -220,7 +220,7 @@ void GnapEngine::scene43_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -320,13 +320,13 @@ void GnapEngine::scene43_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4] && (!isFlag(kGFGnapControlsToyUFO) || !isFlag(kGFGroceryStoreHatTaken))) {
_timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
switch (getRandom(5)) {
case 0:
_s43_nextTwoHeadedGuySequenceId = 0x13C;
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 3b2633b..5b53f11 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -128,14 +128,14 @@ void GnapEngine::scene44_run() {
switch (_prevSceneNum) {
case 43:
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 7, kDirUpLeft);
+ initPlatypusPos(-1, 7, kDirUpLeft);
endSceneInit();
gnapWalkTo(2, 8, -1, 0x107B9, 1);
platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 8, kDirUpLeft);
+ initPlatypusPos(11, 8, kDirUpLeft);
endSceneInit();
gnapWalkTo(6, 8, -1, 0x107BA, 1);
platypusWalkTo(7, 8, -1, 0x107D2, 1);
@@ -143,23 +143,23 @@ void GnapEngine::scene44_run() {
case 50:
initGnapPos(4, 8, kDirBottomRight);
if (_sceneSavegameLoaded) {
- initBeaverPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, kDirUnk4);
+ initPlatypusPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, kDirUnk4);
} else if (!isFlag(kGFUnk13)) {
_timers[0] = 50;
_timers[1] = 20;
_platX = 5;
_platY = 8;
- _beaverSequenceId = 0xFD;
- _beaverFacing = kDirNone;
- _beaverId = 160;
- _beaverSequenceDatNum = 0;
+ _platypusSequenceId = 0xFD;
+ _platypusFacing = kDirNone;
+ _platypusId = 160;
+ _platypusSequenceDatNum = 0;
_gameSys->insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
}
endSceneInit();
break;
default:
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(6, 8, -1, 0x107C2, 1);
gnapWalkTo(5, 8, -1, 0x107BA, 1);
@@ -231,7 +231,7 @@ void GnapEngine::scene44_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -282,12 +282,12 @@ void GnapEngine::scene44_run() {
_gnapActionStatus = 1;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnBeaver();
+ gnapUseDeviceOnPlatypuss();
platypusWalkTo(6, 7, 1, 0x107D2, 1);
if (_gnapX == 7 && _gnapY == 7)
gnapWalkStep();
playGnapIdle(5, 7);
- _beaverActionStatus = 4;
+ _platypusActionStatus = 4;
break;
}
}
@@ -366,13 +366,13 @@ void GnapEngine::scene44_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
switch (getRandom(20)) {
case 0:
_s44_nextKissingLadySequenceId = 0xED;
@@ -399,7 +399,7 @@ void GnapEngine::scene44_run() {
}
if (!_timers[5]) {
_timers[5] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
if (getRandom(5) != 0) {
if (!isFlag(kGFSpringTaken))
_s44_nextSpringGuySequenceId = 0xF9;
@@ -445,15 +445,15 @@ void GnapEngine::scene44_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- switch (_beaverActionStatus) {
+ switch (_platypusActionStatus) {
case 4:
if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->insertSequence(0xFE, _beaverId, _beaverSequenceId | (_beaverSequenceDatNum << 16), _beaverId, kSeqSyncWait, 0, 0, 0);
- _beaverSequenceId = 0xFE;
- _beaverSequenceDatNum = 0;
- _gameSys->setAnimation(0xFE, _beaverId, 1);
+ _gameSys->insertSequence(0xFE, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _platypusSequenceId = 0xFE;
+ _platypusSequenceDatNum = 0;
+ _gameSys->setAnimation(0xFE, _platypusId, 1);
_gameSys->removeSequence(_s44_currKissingLadySequenceId, 1, true);
- _beaverActionStatus = 5;
+ _platypusActionStatus = 5;
}
break;
case 5:
@@ -461,7 +461,7 @@ void GnapEngine::scene44_updateAnimations() {
_newSceneNum = 50;
break;
default:
- _beaverActionStatus = -1;
+ _platypusActionStatus = -1;
break;
}
}
@@ -469,7 +469,7 @@ void GnapEngine::scene44_updateAnimations() {
if (_gameSys->getAnimationStatus(2) == 2) {
if (_s44_nextKissingLadySequenceId == 0xF6) {
_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- initBeaverPos(5, 8, kDirNone);
+ initPlatypusPos(5, 8, kDirNone);
_s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
_s44_nextKissingLadySequenceId = -1;
_gameSys->setAnimation(0, 0, 2);
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 8581e55..e8d4214 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -115,23 +115,23 @@ void GnapEngine::scene45_run() {
_gameSys->setAnimation(0x9E, 1, 0);
_gnapActionStatus = 1;
_gameSys->insertSequence(_gnapSequenceId, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- initBeaverPos(4, 8, kDirNone);
+ initPlatypusPos(4, 8, kDirNone);
endSceneInit();
} else if (_prevSceneNum == 46) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 9, kDirUpLeft);
+ initPlatypusPos(-1, 9, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else if (_prevSceneNum == 41) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(11, 9, kDirUpLeft);
+ initPlatypusPos(11, 9, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107D2, 1);
gnapWalkTo(10, 9, -1, 0x107BA, 1);
} else {
initGnapPos(2, 11, kDirUpRight);
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(4, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 7, -1, 0x107B9, 1);
@@ -176,8 +176,8 @@ void GnapEngine::scene45_run() {
_gnapSequenceDatNum = 1;
}
- playBeaverSequence(0x9A);
- _gameSys->setAnimation(_beaverSequenceId, _beaverId, 1);
+ playPlatypusSequence(0x9A);
+ _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
while (!_sceneDone) {
if (!isSoundPlaying(0x1094A))
@@ -240,12 +240,12 @@ void GnapEngine::scene45_run() {
break;
case GRAB_CURSOR:
gnapKissPlatypus(0);
- playBeaverSequence(0x9A);
- _gameSys->setAnimation(_beaverSequenceId, _beaverId, 1);
+ playPlatypusSequence(0x9A);
+ _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -382,10 +382,10 @@ void GnapEngine::scene45_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
if (getRandom(2) != 0)
- playBeaverSequence(0x9B);
+ playPlatypusSequence(0x9B);
else
- playBeaverSequence(0x9C);
- _gameSys->setAnimation(_beaverSequenceId, _beaverId, 1);
+ playPlatypusSequence(0x9C);
+ _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
}
if (_gameSys->getAnimationStatus(2) == 2) {
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 4a1ba25..26a3be0 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -102,19 +102,19 @@ void GnapEngine::scene46_run() {
endSceneInit();
} else if (_prevSceneNum == 44) {
initGnapPos(-1, 8, kDirUpRight);
- initBeaverPos(-1, 8, kDirUpLeft);
+ initPlatypusPos(-1, 8, kDirUpLeft);
endSceneInit();
platypusWalkTo(1, 8, -1, 0x107C2, 1);
gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_prevSceneNum == 45) {
initGnapPos(11, 8, kDirUpRight);
- initBeaverPos(12, 8, kDirUpLeft);
+ initPlatypusPos(12, 8, kDirUpLeft);
endSceneInit();
gnapWalkTo(8, 8, -1, 0x107BA, 1);
platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
initGnapPos(5, 11, kDirUpRight);
- initBeaverPos(6, 11, kDirUpLeft);
+ initPlatypusPos(6, 11, kDirUpLeft);
endSceneInit();
platypusWalkTo(5, 8, -1, 0x107C2, 1);
gnapWalkTo(6, 8, -1, 0x107BA, 1);
@@ -183,7 +183,7 @@ void GnapEngine::scene46_run() {
break;
case TALK_CURSOR:
playGnapBrainPulsating(_platX, _platY);
- playBeaverSequence(getBeaverSequenceId());
+ playPlatypusSequence(getPlatypusSequenceId());
break;
case PLAT_CURSOR:
playGnapImpossible(_platX, _platY);
@@ -280,13 +280,13 @@ void GnapEngine::scene46_run() {
toyUfoCheckTimer();
if (!_isLeavingScene) {
- if (_beaverActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateBeaverIdleSequence();
+ if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
+ updatePlatypusIdleSequence();
if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
updateGnapIdleSequence();
if (!_timers[4]) {
_timers[4] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
if (getRandom(2) != 0)
_s46_nextItchyGuySequenceId = 0x49;
else
@@ -295,7 +295,7 @@ void GnapEngine::scene46_run() {
}
if (!_timers[5]) {
_timers[5] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _beaverActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
+ if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
_s46_nextSackGuySequenceId = 0x4C;
}
}
Commit: 70fec4db2cbc89893c45beb27c54dc87699a7265
https://github.com/scummvm/scummvm/commit/70fec4db2cbc89893c45beb27c54dc87699a7265
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: More renaming of 'beaver' variables
Changed paths:
engines/gnap/grid.cpp
engines/gnap/scenes/scene38.cpp
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 88e9693..0e10a71 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -738,13 +738,13 @@ void GnapEngine::gnapWalkStep() {
////////////////////////////////////////////////////////////////////////////////
int GnapEngine::getPlatypusWalkSequenceId(int deltaX, int deltaY) {
- static const int _beaverWalkSequenceIds[9] = {
+ static const int _platypusWalkSequenceIds[9] = {
0x7C5, 0x000, 0x7C8,
0x7C4, 0x000, 0x7C7,
0x7C3, 0x000, 0x7C6
};
// CHECKME This is a little weird
- return _beaverWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+ return _platypusWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
}
bool GnapEngine::gridSub423750(int gridX, int gridY) {
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index ce8f1c7..81da764 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -48,8 +48,8 @@ enum {
kASUseHuntingTrophy = 2,
kASHoldingHuntingTrophy = 3,
kASReleaseHuntingTrophy = 4,
- kASUseBeaverWithTrapDoor = 5,
- kASBeaverHoldingTrapDoor = 6
+ kASUsePlatypusWithTrapDoor = 5,
+ kASPlatypusHoldingTrapDoor = 6
};
int GnapEngine::scene38_init() {
@@ -72,21 +72,21 @@ void GnapEngine::scene38_updateHotspots() {
setHotspot(kHSWalkArea5, 770, 0, 799, 445);
setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
else if (_gnapActionStatus == kASHoldingHuntingTrophy)
_hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_hotspots[kHSWalkArea6]._flags = SF_NONE;
_hotspotsCount = 13;
}
@@ -158,9 +158,9 @@ void GnapEngine::scene38_run() {
case kHSExitCave:
if (_gnapActionStatus == kASHoldingHuntingTrophy) {
_gnapActionStatus = kASReleaseHuntingTrophy;
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
_isLeavingScene = true;
- } else if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
+ } else if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
_sceneWaiting = false;
_isLeavingScene = true;
gnapWalkTo(5, 7, 0, 0x107BB, 1);
@@ -172,8 +172,8 @@ void GnapEngine::scene38_run() {
case kHSTrapDoorLid1:
case kHSTrapDoorLid2:
if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- if (_verbCursor == PLAT_CURSOR && _platypusActionStatus != kASBeaverHoldingTrapDoor)
- _gnapActionStatus = kASUseBeaverWithTrapDoor;
+ if (_verbCursor == PLAT_CURSOR && _platypusActionStatus != kASPlatypusHoldingTrapDoor)
+ _gnapActionStatus = kASUsePlatypusWithTrapDoor;
else
_gnapActionStatus = kASReleaseHuntingTrophy;
}
@@ -189,7 +189,7 @@ void GnapEngine::scene38_run() {
playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
playGnapImpossible(0, 0);
else {
gnapWalkTo(3, 6, 0, 0x107BB, 1);
@@ -282,7 +282,7 @@ void GnapEngine::scene38_updateAnimations() {
scene38_updateHotspots();
break;
case kASHoldingHuntingTrophy:
- if (_platypusActionStatus != kASBeaverHoldingTrapDoor)
+ if (_platypusActionStatus != kASPlatypusHoldingTrapDoor)
_sceneWaiting = true;
if (_gnapSequenceId == 0xA4) {
_gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
@@ -298,7 +298,7 @@ void GnapEngine::scene38_updateAnimations() {
if (_gnapSequenceId == 0x9E) {
_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_gnapActionStatus = -1;
- } else if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
+ } else if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
_gameSys->insertSequence(0xA0, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0xA0;
_gnapSequenceDatNum = 0;
@@ -325,7 +325,7 @@ void GnapEngine::scene38_updateAnimations() {
scene38_updateHotspots();
}
break;
- case kASUseBeaverWithTrapDoor:
+ case kASUsePlatypusWithTrapDoor:
_sceneWaiting = false;
_gameSys->insertSequence(0x9F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
_gnapSequenceId = 0x9F;
@@ -342,7 +342,7 @@ void GnapEngine::scene38_updateAnimations() {
_platypusSequenceDatNum = 0;
_platypusId = _gnapId + 1;
_gameSys->setAnimation(0xA1, _gnapId + 1, 1);
- _platypusActionStatus = kASBeaverHoldingTrapDoor;
+ _platypusActionStatus = kASPlatypusHoldingTrapDoor;
scene38_updateHotspots();
break;
}
@@ -350,7 +350,7 @@ void GnapEngine::scene38_updateAnimations() {
if (_gameSys->getAnimationStatus(1) == 2) {
_gameSys->setAnimation(0, 0, 1);
- if (_platypusActionStatus == kASBeaverHoldingTrapDoor) {
+ if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
_gameSys->insertSequence(0xA2, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
_platypusSequenceId = 0xA2;
_platypusSequenceDatNum = 0;
Commit: 145b3751199219c4707e8f3462e2c63916b46460
https://github.com/scummvm/scummvm/commit/145b3751199219c4707e8f3462e2c63916b46460
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor Scene01 (WIP)
Changed paths:
A engines/gnap/scenes/scene01.h
A engines/gnap/scenes/scenecore.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 15c949a..dbe081c 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -98,6 +98,7 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
DebugMan.addDebugChannel(kDebugBasic, "basic", "Basic debug level");
Engine::syncSoundSettings();
+ _scene = nullptr;
}
GnapEngine::~GnapEngine() {
@@ -2021,12 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
-
- // Scene 1
- _s01_pigsIdCtr = 0;
- _s01_smokeIdCtr = 0;
- _s01_spaceshipSurface = 0;
-
// Scene 2
_s02_truckGrillCtr = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 3517838..a56df31 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -41,6 +41,7 @@
#include "gnap/debugger.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scenecore.h"
struct ADGameDescription;
@@ -312,7 +313,8 @@ public:
GameSys *_gameSys;
SoundMan *_soundMan;
Debugger *_debugger;
-
+ Scene *_scene;
+
int _lastUpdateClock;
int _debugLevel;
@@ -604,15 +606,7 @@ public:
// Scene 0
int scene00_init();
void scene00_run();
-
- // Scene 1
- int _s01_pigsIdCtr, _s01_smokeIdCtr;
- Graphics::Surface *_s01_spaceshipSurface;
- int scene01_init();
- void scene01_updateHotspots();
- void scene01_run();
- void scene01_updateAnimations();
-
+
// Scene 2
int _s02_truckGrillCtr;
int _s02_nextChickenSequenceId, _s02_currChickenSequenceId;
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 808c190..be104a2 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene01.h"
namespace Gnap {
@@ -52,110 +53,115 @@ enum {
kASUsePigs = 7
};
-int GnapEngine::scene01_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 3);
+Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
+ _s01_pigsIdCtr = 0;
+ _s01_smokeIdCtr = 0;
+ _s01_spaceshipSurface = nullptr;
+}
+
+int Scene01::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
return 0x88;
}
-void GnapEngine::scene01_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
- setHotspot(kHSMud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
- setHotspot(kHSPigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
- setHotspot(kHSSpaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
- setHotspot(kHSWalkArea1, 0, 0, 162, 426);
- setHotspot(kHSWalkArea2, 162, 0, 237, 396);
- setHotspot(kHSWalkArea3, 237, 0, 319, 363);
- setHotspot(kHSWalkArea4, 520, 0, 800, 404);
- setHotspot(kHSWalkArea5, 300, 447, 800, 600);
- setHotspot(kHSWalkArea6, 678, 0, 800, 404);
- setHotspot(kHSWalkArea7, 0, 0, 520, 351);
- setHotspot(kHSWalkArea8, 0, 546, 300, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(kGFMudTaken))
- _hotspots[kHSMud]._flags = SF_WALKABLE | SF_DISABLED;
- _hotspotsCount = 14;
+void Scene01::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ _vm->setHotspot(kHSMud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ _vm->setHotspot(kHSPigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
+ _vm->setHotspot(kHSSpaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 162, 426);
+ _vm->setHotspot(kHSWalkArea2, 162, 0, 237, 396);
+ _vm->setHotspot(kHSWalkArea3, 237, 0, 319, 363);
+ _vm->setHotspot(kHSWalkArea4, 520, 0, 800, 404);
+ _vm->setHotspot(kHSWalkArea5, 300, 447, 800, 600);
+ _vm->setHotspot(kHSWalkArea6, 678, 0, 800, 404);
+ _vm->setHotspot(kHSWalkArea7, 0, 0, 520, 351);
+ _vm->setHotspot(kHSWalkArea8, 0, 546, 300, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->_hotspots[kHSMud]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspotsCount = 14;
}
-void GnapEngine::scene01_run() {
+void Scene01::run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
- playSound(0x1091C, true);
- startSoundTimerC(5);
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(5);
- _gameSys->setAnimation(134, 20, 4);
- _gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(134, 20, 4);
+ _vm->_gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0x7F, 40, 2);
- _gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x7F, 40, 2);
+ _vm->_gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
- _timers[4] = getRandom(100) + 300;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (!isFlag(kGFMudTaken))
- _gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFMudTaken))
+ _vm->_gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum == 2) {
- initGnapPos(11, 6, kDirBottomLeft);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(12, 6, kDirUnk4);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(9, 6, -1, 0x107C2, 1);
- gnapWalkTo(8, 6, -1, 0x107B9, 1);
+ if (_vm->_prevSceneNum == 2) {
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107B9, 1);
} else {
- initGnapPos(1, 6, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(1, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(1, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
- testWalk(0, 3, -1, -1, -1, -1);
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 3, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene01_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -163,20 +169,20 @@ void GnapEngine::scene01_run() {
break;
case kHSSpaceship:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- if (gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _gnapActionStatus = kASLookSpaceship;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASLookSpaceship;
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -184,21 +190,21 @@ void GnapEngine::scene01_run() {
break;
case kHSMud:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 2, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(3, 3);
+ _vm->playGnapScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
- _gnapActionStatus = kASTakeMud;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTakeMud;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -206,28 +212,28 @@ void GnapEngine::scene01_run() {
break;
case kHSPigs:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 7, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _gnapActionStatus = kASLookPigs;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASLookPigs;
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _gnapActionStatus = kASUsePigs;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASUsePigs;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
- _gnapActionStatus = kASLookPigs;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASLookPigs;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -235,13 +241,13 @@ void GnapEngine::scene01_run() {
break;
case kHSExitTruck:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
- _newSceneNum = 2;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 2;
}
break;
@@ -253,120 +259,121 @@ void GnapEngine::scene01_run() {
case kHSWalkArea6:
case kHSWalkArea7:
case kHSWalkArea8:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene01_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (_timers[4] == 0) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_timers[4] == 0) {
// Update bird animation
- _timers[4] = getRandom(100) + 300;
- if (getRandom(1) == 0)
- _gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(1) == 0)
+ _vm->_gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene01_updateHotspots();
+ _vm->checkGameKeys();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene01_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene01::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLookSpaceship:
- _s01_spaceshipSurface = _gameSys->createSurface(47);
- _gameSys->insertSpriteDrawItem(_s01_spaceshipSurface, 0, 0, 255);
- _gameSys->setAnimation(133, 256, 0);
- _gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = kASLookSpaceshipDone;
+ _s01_spaceshipSurface = _vm->_gameSys->createSurface(47);
+ _vm->_gameSys->insertSpriteDrawItem(_s01_spaceshipSurface, 0, 0, 255);
+ _vm->_gameSys->setAnimation(133, 256, 0);
+ _vm->_gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = kASLookSpaceshipDone;
break;
+
case kASLookSpaceshipDone:
- _gameSys->removeSequence(133, 256, true);
- _gameSys->removeSpriteDrawItem(_s01_spaceshipSurface, 255);
- deleteSurface(&_s01_spaceshipSurface);
- _gnapActionStatus = -1;
+ _vm->_gameSys->removeSequence(133, 256, true);
+ _vm->_gameSys->removeSpriteDrawItem(_s01_spaceshipSurface, 255);
+ _vm->deleteSurface(&_s01_spaceshipSurface);
+ _vm->_gnapActionStatus = -1;
break;
+
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
+
case kASTakeMud:
- playGnapPullOutDevice(2, 3);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(128, 40, 3);
- _gnapActionStatus = -1;
+ _vm->playGnapPullOutDevice(2, 3);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(128, 40, 3);
+ _vm->_gnapActionStatus = -1;
break;
+
case kASLookPigs:
- playSound(138, false);
- playSound(139, false);
- playSound(140, false);
- _gnapActionStatus = -1;
+ _vm->playSound(138, false);
+ _vm->playSound(139, false);
+ _vm->playSound(140, false);
+ _vm->_gnapActionStatus = -1;
break;
+
case kASUsePigs:
- playGnapPullOutDevice(7, 2);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, getRandom(140) - 40, 0);
- _gnapActionStatus = -1;
+ _vm->playGnapPullOutDevice(7, 2);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- _gameSys->setAnimation(0, 0, 3);
- invAdd(kItemMud);
- setGrabCursorSprite(kItemMud);
- setFlag(kGFMudTaken);
- scene01_updateHotspots();
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->invAdd(kItemMud);
+ _vm->setGrabCursorSprite(kItemMud);
+ _vm->setFlag(kGFMudTaken);
+ updateHotspots();
}
- if (_gameSys->getAnimationStatus(4) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
_s01_smokeIdCtr = (_s01_smokeIdCtr + 1) % 2;
- _gameSys->setAnimation(0x86, _s01_smokeIdCtr + 20, 4);
- _gameSys->insertSequence(0x86, _s01_smokeIdCtr + 20,
+ _vm->_gameSys->setAnimation(0x86, _s01_smokeIdCtr + 20, 4);
+ _vm->_gameSys->insertSequence(0x86, _s01_smokeIdCtr + 20,
0x86, (_s01_smokeIdCtr + 1) % 2 + 20,
kSeqSyncWait, 0, 0, 0);
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
_s01_pigsIdCtr = (_s01_pigsIdCtr + 1) % 2;
- _gameSys->setAnimation(0x7F, _s01_pigsIdCtr + 40, 2);
- _gameSys->insertSequence(0x7F, _s01_pigsIdCtr + 40,
+ _vm->_gameSys->setAnimation(0x7F, _s01_pigsIdCtr + 40, 2);
+ _vm->_gameSys->insertSequence(0x7F, _s01_pigsIdCtr + 40,
0x7F, (_s01_pigsIdCtr + 1) % 2 + 40,
kSeqSyncWait, 0, 0, 0);
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene01.h b/engines/gnap/scenes/scene01.h
new file mode 100644
index 0000000..b24ae53
--- /dev/null
+++ b/engines/gnap/scenes/scene01.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE01_H
+#define GNAP_SCENE01_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene01: public Scene {
+public:
+ Scene01(GnapEngine *vm);
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ int _s01_pigsIdCtr, _s01_smokeIdCtr;
+ Graphics::Surface *_s01_spaceshipSurface;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE01_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index ba1ea40..104eea0 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -23,6 +23,9 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scenecore.h"
+
+#include "gnap/scenes/scene01.h"
namespace Gnap {
@@ -36,8 +39,9 @@ int GnapEngine::initSceneLogic() {
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 1:
- backgroundId = scene01_init();
- scene01_updateHotspots();
+ _scene = new Scene01(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -350,7 +354,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 8;
break;
case 1:
- scene01_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
new file mode 100644
index 0000000..a97bf5c
--- /dev/null
+++ b/engines/gnap/scenes/scenecore.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENECORE_H
+#define GNAP_SCENECORE_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene {
+public:
+ Scene(GnapEngine *vm) : _vm(vm) {};
+ ~Scene() {};
+
+ virtual int init() = 0;
+ virtual void updateHotspots() = 0;
+ virtual void run() = 0;
+ virtual void updateAnimations() = 0;
+
+protected:
+ GnapEngine *_vm;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENECORE_H
Commit: a176945b606197462bdd3cda157b295d298f986b
https://github.com/scummvm/scummvm/commit/a176945b606197462bdd3cda157b295d298f986b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 0
Changed paths:
A engines/gnap/scenes/scene00.h
engines/gnap/scenes/scene00.cpp
diff --git a/engines/gnap/scenes/scene00.cpp b/engines/gnap/scenes/scene00.cpp
index 7be508e..9ee0eb3 100644
--- a/engines/gnap/scenes/scene00.cpp
+++ b/engines/gnap/scenes/scene00.cpp
@@ -25,14 +25,18 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene00.h"
namespace Gnap {
-int GnapEngine::scene00_init() {
+Scene00::Scene00(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene00::init() {
return 0x37C;
}
-void GnapEngine::scene00_run() {
+void Scene00::run() {
const int animIdArr[] = {
0x356, 0x357, 0x358, 0x35A, 0x35F,
0x360, 0x361, 0x362, 0x363, 0x364,
@@ -53,8 +57,9 @@ void GnapEngine::scene00_run() {
int index = 0;
bool skip = false;
- hideCursor();
- _dat->open(1, "musop_n.dat");
+
+ _vm->hideCursor();
+ _vm->_dat->open(1, "musop_n.dat");
Video::VideoDecoder *videoDecoder = new Video::AVIDecoder();
if (!videoDecoder->loadFile("hoffman.avi")) {
@@ -68,17 +73,17 @@ void GnapEngine::scene00_run() {
int vidPosY = (600 - videoDecoder->getHeight()) / 2;
bool skipVideo = false;
- screenEffect(1, 255, 255, 255);
+ _vm->screenEffect(1, 255, 255, 255);
- while (!shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) {
+ while (!_vm->shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) {
if (videoDecoder->needsUpdate()) {
const Graphics::Surface *frame = videoDecoder->decodeNextFrame();
if (frame) {
if (frame->format.bytesPerPixel == 1) {
- _system->copyRectToScreen(frame->getPixels(), frame->pitch, vidPosX, vidPosY, frame->w, frame->h);
+ _vm->_system->copyRectToScreen(frame->getPixels(), frame->pitch, vidPosX, vidPosY, frame->w, frame->h);
} else if (frame->format.bytesPerPixel != 4) {
- Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
- _system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
+ _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
frame1->free();
delete frame1;
} else {
@@ -95,12 +100,12 @@ void GnapEngine::scene00_run() {
}
}
- Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
- _system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
+ _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
frame1->free();
delete frame1;
}
- _system->updateScreen();
+ _vm->_system->updateScreen();
}
}
@@ -111,66 +116,66 @@ void GnapEngine::scene00_run() {
skipVideo = true;
}
- _system->delayMillis(10);
+ _vm->_system->delayMillis(10);
}
delete videoDecoder;
- _gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0x356, 2, 0);
+ _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _vm->_gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x356, 2, 0);
- while (!_sceneDone) {
- gameUpdateTick();
+ while (!_vm->_sceneDone) {
+ _vm->gameUpdateTick();
- if (_gameSys->getAnimationStatus(0) == 2 || skip ) {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip ) {
skip = false;
- _gameSys->requestClear2(false);
- _gameSys->requestClear1();
+ _vm->_gameSys->requestClear2(false);
+ _vm->_gameSys->requestClear1();
if ( index == 11 || index == 1 )
- screenEffect(0, 0, 0, 0);
+ _vm->screenEffect(0, 0, 0, 0);
- _gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 0);
if (++index >= 31)
- _sceneDone = true;
+ _vm->_sceneDone = true;
else {
- _gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
if (index == 2) {
- playSound(0x10000, false);
- _gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
+ _vm->playSound(0x10000, false);
+ _vm->_gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
} else if (index == 3)
- _gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
else if (index == 12)
- _gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _gameSys->setAnimation(animIdArr[index], 2, 0);
+ _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _vm->_gameSys->setAnimation(animIdArr[index], 2, 0);
if (index == 11)
- stopSound(0x10000);
+ _vm->stopSound(0x10000);
}
}
- if (isKeyStatus1(Common::KEYCODE_ESCAPE) || isKeyStatus1(Common::KEYCODE_SPACE) || isKeyStatus1(29)) {
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(29);
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(29);
if (index == 0) {
skip = true;
- stopSound(0x3CF);
+ _vm->stopSound(0x3CF);
} else if (index == 1)
skip = true;
else
- _sceneDone = true;
+ _vm->_sceneDone = true;
}
}
- stopSound(0x10000);
+ _vm->stopSound(0x10000);
- _newSceneNum = 1;
- _newCursorValue = 1;
+ _vm->_newSceneNum = 1;
+ _vm->_newCursorValue = 1;
- _dat->open(1, "stock_n.dat");
+ _vm->_dat->open(1, "stock_n.dat");
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene00.h b/engines/gnap/scenes/scene00.h
new file mode 100644
index 0000000..7edcab4
--- /dev/null
+++ b/engines/gnap/scenes/scene00.h
@@ -0,0 +1,46 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE00_H
+#define GNAP_SCENE00_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene00: public Scene {
+public:
+ Scene00(GnapEngine *vm);
+ ~Scene00() {}
+
+ virtual int init();
+ virtual void updateHotspots() {}
+ virtual void run();
+ virtual void updateAnimations() {}
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE00_H
Commit: 65f8a72b16e19a7c14528e918549bdbbfa79dac3
https://github.com/scummvm/scummvm/commit/65f8a72b16e19a7c14528e918549bdbbfa79dac3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: REfactor scene 2
Changed paths:
A engines/gnap/scenes/scene02.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index dbe081c..251ce55 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2022,9 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 2
- _s02_truckGrillCtr = 0;
-
// Scene 3
_s03_nextPlatSequenceId = -1;
_s03_platypusScared = false;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index a56df31..e626771 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,19 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 0
- int scene00_init();
- void scene00_run();
-
- // Scene 2
- int _s02_truckGrillCtr;
- int _s02_nextChickenSequenceId, _s02_currChickenSequenceId;
- int _s02_gnapTruckSequenceId;
- int scene02_init();
- void scene02_updateHotspots();
- void scene02_run();
- void scene02_updateAnimations();
-
// Scene 3
bool _s03_platypusHypnotized;
bool _s03_platypusScared;
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index d7b5425..6d5991f 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene02.h"
namespace Gnap {
@@ -58,132 +59,136 @@ enum {
kASUseTwigWithChicken = 16
};
-int GnapEngine::scene02_init() {
- _gameSys->setAnimation(0, 0, 0);
- return isFlag(kGFTruckKeysUsed) ? 0x15A : 0x15B;
+Scene02::Scene02(GnapEngine *vm) : Scene(vm) {
+ _s02_truckGrillCtr = 0;
+ _s02_nextChickenSequenceId = 0;
+ _s02_currChickenSequenceId = 0;
+ _s02_gnapTruckSequenceId = 0;
}
-void GnapEngine::scene02_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
- setHotspot(kHSChicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSTruck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
- setHotspot(kHSTruck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
- setHotspot(kHSTruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
- setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
- setHotspot(kHSExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
- setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- setHotspot(kHSWalkArea1, 92, 140, 304, 430, 0, 3, 1);
- setHotspot(kHSWalkArea2, 0, 0, 800, 380);
- setHotspot(kHSWalkArea3, 0, 0, 386, 445);
- setHotspot(kHSWalkArea4, 386, 0, 509, 410);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspotsCount = 14;
+int Scene02::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ return _vm->isFlag(kGFTruckKeysUsed) ? 0x15A : 0x15B;
}
-void GnapEngine::scene02_run() {
- playSound(0x1091C, true);
- startSoundTimerC(6);
+void Scene02::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
+ _vm->setHotspot(kHSChicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSTruck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
+ _vm->setHotspot(kHSTruck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
+ _vm->setHotspot(kHSTruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
+ _vm->setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
+ _vm->setHotspot(kHSExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
+ _vm->setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHSWalkArea1, 92, 140, 304, 430, 0, 3, 1);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 800, 380);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 386, 445);
+ _vm->setHotspot(kHSWalkArea4, 386, 0, 509, 410);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 14;
+}
+
+void Scene02::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(6);
_s02_currChickenSequenceId = 0x14B;
- _gameSys->setAnimation(0x14B, 179, 2);
- _gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x14B, 179, 2);
+ _vm->_gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
_s02_nextChickenSequenceId = -1;
- _timers[5] = getRandom(20) + 30;
- _timers[4] = getRandom(100) + 300;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 3:
- initGnapPos(11, 6, kDirBottomLeft);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(12, 6, kDirUnk4);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(9, 6, -1, 0x107C2, 1);
- gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
break;
case 4:
- initGnapPos(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, kDirBottomLeft);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, kDirUnk4);
- endSceneInit();
- gnapWalkTo(7, 6, 0, 0x107B9, 1);
- if (isFlag(kGFPlatypus))
- platypusWalkTo(8, 6, 1, 0x107C2, 1);
- scene02_updateHotspots();
- _gameSys->waitForUpdate();
+ _vm->initGnapPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 6, 0, 0x107B9, 1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
+ updateHotspots();
+ _vm->_gameSys->waitForUpdate();
break;
case 47:
- clearFlag(kGFUnk25);
- initGnapPos(5, 6, kDirBottomLeft);
- initPlatypusPos(6, 7, kDirUnk4);
- endSceneInit();
+ _vm->clearFlag(kGFUnk25);
+ _vm->initGnapPos(5, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(6, 7, kDirUnk4);
+ _vm->endSceneInit();
break;
case 49:
- initGnapPos(5, 6, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(6, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(6, 7, kDirNone);
+ _vm->endSceneInit();
break;
default:
- initGnapPos(-1, 6, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(-1, 7, kDirNone);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(2, 7, -1, 0x107C2, 1);
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->initGnapPos(-1, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
}
- while (!_sceneDone) {
-
- updateMouseCursor();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateCursorByHotspot();
+ _vm->testWalk(0, 6, 7, 6, 8, 6);
- testWalk(0, 6, 7, 6, 8, 6);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene02_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -191,33 +196,33 @@ void GnapEngine::scene02_run() {
break;
case kHSChicken:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemTwig) {
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1,
- 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASUseTwigWithChicken;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y + 1, 9, 8);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASUseTwigWithChicken;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(9, 8);
+ _vm->playGnapMoan2(9, 8);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- if (gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _gnapActionStatus = kASGrabChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASGrabChicken;
else
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkChicken;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -226,45 +231,45 @@ void GnapEngine::scene02_run() {
case kHSTruck1:
case kHSTruck2:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemKeys) {
- if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
- setGrabCursorSprite(-1);
- invRemove(kItemKeys);
- if (isFlag(kGFTruckFilledWithGas))
- _gnapActionStatus = kASUseTruckGas;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemKeys) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemKeys);
+ if (_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_gnapActionStatus = kASUseTruckGas;
else
- _gnapActionStatus = kASUseTruckNoGas;
+ _vm->_gnapActionStatus = kASUseTruckNoGas;
}
- } else if (_grabCursorSpriteIndex == kItemGas) {
- _hotspots[kHSWalkArea4]._flags |= SF_WALKABLE;
- if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
- _gnapActionStatus = kASUseGasWithTruck;
- _hotspots[kHSWalkArea4]._flags &= ~SF_WALKABLE;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 2, 2);
+ } else if (_vm->_grabCursorSpriteIndex == kItemGas) {
+ _vm->_hotspots[kHSWalkArea4]._flags |= SF_WALKABLE;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASUseGasWithTruck;
+ _vm->_hotspots[kHSWalkArea4]._flags &= ~SF_WALKABLE;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(2, 2);
+ _vm->playGnapScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- if (isFlag(kGFTruckKeysUsed)) {
- if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
- if (isFlag(kGFTruckFilledWithGas))
- _gnapActionStatus = kASUseTruckGas;
+ 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->isFlag(kGFTruckFilledWithGas))
+ _vm->_gnapActionStatus = kASUseTruckGas;
else
- _gnapActionStatus = kASUseTruckNoGas;
+ _vm->_gnapActionStatus = kASUseTruckNoGas;
}
} else {
- _gnapIdleFacing = kDirUnk4;
- if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
- _gnapActionStatus = kASUseTruckNoKeys;
+ _vm->_gnapIdleFacing = kDirUnk4;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASUseTruckNoKeys;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -272,22 +277,22 @@ void GnapEngine::scene02_run() {
break;
case kHSTruckGrill:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 2, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(2, 4);
+ _vm->playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabTruckGrill;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabTruckGrill;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -295,48 +300,48 @@ void GnapEngine::scene02_run() {
break;
case kHSExitHouse:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- gnapWalkTo(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 0, 0x107AD, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, -1, 0x107C1, 1);
- scene02_updateHotspots();
- _newSceneNum = 4;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = 1;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
+ updateHotspots();
+ _vm->_newSceneNum = 4;
}
break;
case kHSExitBarn:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- gnapWalkTo(_hotspotsWalkPos[7].x, _hotspotsWalkPos[7].y, 0, 0x107AD, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[7].x + 1, _hotspotsWalkPos[7].y, -1, 0x107C1, 1);
- scene02_updateHotspots();
- _newSceneNum = 5;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = 1;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
+ updateHotspots();
+ _vm->_newSceneNum = 5;
}
break;
case kHSExitCreek:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, -1, 0x107CD, 1);
- _newSceneNum = 3;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = 1;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 3;
}
break;
case kHSExitPigpen:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
- gnapWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[9].x, _hotspotsWalkPos[9].y, -1, 0x107CF, 1);
- _newSceneNum = 1;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = 1;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 1;
}
break;
@@ -344,117 +349,113 @@ void GnapEngine::scene02_run() {
case kHSWalkArea2:
case kHSWalkArea3:
case kHSWalkArea4:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene02_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
// Update bird animation
- _timers[4] = getRandom(100) + 300;
- if (getRandom(2) != 0)
- _gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[5] && _s02_nextChickenSequenceId == -1 && _gnapActionStatus != 7 && _gnapActionStatus != 8) {
- if (getRandom(6) != 0) {
+ if (!_vm->_timers[5] && _s02_nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
+ if (_vm->getRandom(6) != 0) {
_s02_nextChickenSequenceId = 0x14B;
- _timers[5] = getRandom(20) + 30;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
} else {
_s02_nextChickenSequenceId = 0x14D;
- _timers[5] = getRandom(20) + 50;
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
}
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene02_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene02_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- switch (_gnapActionStatus) {
+void Scene02::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
case kASUseTruckNoKeys:
- _gameSys->insertSequence(0x14E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x14E, _gnapId, 0);
- _gnapSequenceId = 0x14E;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASUseTruckNoKeysDone;
+ _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x14E, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x14E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASUseTruckNoKeysDone;
break;
case kASUseGasWithTruck:
- _gameSys->insertSequence(0x151, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x151, _gnapId, 0);
- _gnapSequenceId = 0x151;
- _gnapSequenceDatNum = 0;
- invRemove(kItemGas);
- setGrabCursorSprite(-1);
- setFlag(kGFTruckFilledWithGas);
- _gnapActionStatus = kASUseGasWithTruckDone;
+ _vm->_gameSys->insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x151, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x151;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemGas);
+ _vm->setGrabCursorSprite(-1);
+ _vm->setFlag(kGFTruckFilledWithGas);
+ _vm->_gnapActionStatus = kASUseGasWithTruckDone;
break;
case kASUseTruckGas:
- _timers[5] = 9999;
- _timers[4] = 9999;
- hideCursor();
- setGrabCursorSprite(-1);
- if (!isFlag(kGFTruckKeysUsed)) {
- _gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->waitForUpdate();
- setFlag(kGFTruckKeysUsed);
- _gnapSequenceId = 0x14F;
- _gnapSequenceDatNum = 0;
- invRemove(kItemKeys);
- setGrabCursorSprite(-1);
+ _vm->_timers[5] = 9999;
+ _vm->_timers[4] = 9999;
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->waitForUpdate();
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_gnapSequenceId = 0x14F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemKeys);
+ _vm->setGrabCursorSprite(-1);
}
- _newSceneNum = 47;
- _sceneDone = true;
+ _vm->_newSceneNum = 47;
+ _vm->_sceneDone = true;
break;
case kASUseTruckNoGas:
- hideCursor();
- setGrabCursorSprite(-1);
- _timers[4] = 250;
- if (!isFlag(kGFTruckKeysUsed)) {
- _gameSys->insertSequence(0x14F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->waitForUpdate();
- setFlag(kGFTruckKeysUsed);
- _gnapSequenceId = 0x14F;
- _gnapSequenceDatNum = 0;
- invRemove(kItemKeys);
- setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->_timers[4] = 250;
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->waitForUpdate();
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_gnapSequenceId = 0x14F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemKeys);
+ _vm->setGrabCursorSprite(-1);
}
- _newSceneNum = 47;
- _sceneDone = true;
- setFlag(kGFUnk25);
+ _vm->_newSceneNum = 47;
+ _vm->_sceneDone = true;
+ _vm->setFlag(kGFUnk25);
break;
case kASGrabTruckGrill:
switch (_s02_truckGrillCtr) {
@@ -469,70 +470,69 @@ void GnapEngine::scene02_updateAnimations() {
break;
}
_s02_truckGrillCtr = (_s02_truckGrillCtr + 1) % 3;
- _gameSys->insertSequence(_s02_gnapTruckSequenceId, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s02_gnapTruckSequenceId, _gnapId, 0);
- _gnapSequenceId = _s02_gnapTruckSequenceId;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_s02_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s02_gnapTruckSequenceId, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = _s02_gnapTruckSequenceId;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASTalkChicken:
_s02_nextChickenSequenceId = 0x14C;
break;
case kASGrabChicken:
_s02_nextChickenSequenceId = 0x150;
- _timers[2] = 100;
+ _vm->_timers[2] = 100;
break;
case kASGrabChickenDone:
- _gameSys->insertSequence(0x107B5, _gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
_s02_currChickenSequenceId = 0x14B;
- _gameSys->setAnimation(0x14B, 179, 2);
- _gameSys->insertSequence(_s02_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = -1;
- _timers[5] = 30;
+ _vm->_gameSys->setAnimation(0x14B, 179, 2);
+ _vm->_gameSys->insertSequence(_s02_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[5] = 30;
break;
case kASUseTwigWithChicken:
- playGnapShowItem(5, 0, 0);
- _gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
+ _vm->playGnapShowItem(5, 0, 0);
+ _vm->_gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_s02_currChickenSequenceId = 0x155;
_s02_nextChickenSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASUseTruckNoKeysDone:
case kASUseGasWithTruckDone:
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_s02_nextChickenSequenceId == 0x150) {
- _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 0);
- _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(_s02_currChickenSequenceId, 179, true);
+ _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 0);
+ _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(_s02_currChickenSequenceId, 179, true);
_s02_nextChickenSequenceId = -1;
_s02_currChickenSequenceId = -1;
- _gnapActionStatus = kASGrabChickenDone;
- _timers[5] = 500;
+ _vm->_gnapActionStatus = kASGrabChickenDone;
+ _vm->_timers[5] = 500;
} else if (_s02_nextChickenSequenceId == 0x14C) {
- _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
- _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_s02_currChickenSequenceId = _s02_nextChickenSequenceId;
_s02_nextChickenSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
} else if (_s02_nextChickenSequenceId != -1) {
- _gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
- _gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_s02_currChickenSequenceId = _s02_nextChickenSequenceId;
_s02_nextChickenSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene02.h b/engines/gnap/scenes/scene02.h
new file mode 100644
index 0000000..70f0591
--- /dev/null
+++ b/engines/gnap/scenes/scene02.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE02_H
+#define GNAP_SCENE02_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene02: public Scene {
+public:
+ Scene02(GnapEngine *vm);
+ ~Scene02() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ int _s02_truckGrillCtr;
+ int _s02_nextChickenSequenceId;
+ int _s02_currChickenSequenceId;
+ int _s02_gnapTruckSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE02_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 104eea0..7d37793 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -25,6 +25,7 @@
#include "gnap/resource.h"
#include "gnap/scenes/scenecore.h"
+#include "gnap/scenes/scene00.h"
#include "gnap/scenes/scene01.h"
namespace Gnap {
@@ -35,7 +36,8 @@ int GnapEngine::initSceneLogic() {
switch (_currentSceneNum) {
case 0:
- backgroundId = scene00_init();
+ _scene = new Scene00(this);
+ backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 1:
@@ -46,8 +48,8 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 2:
- backgroundId = scene02_init();
- scene02_updateHotspots();
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -349,7 +351,8 @@ int GnapEngine::initSceneLogic() {
void GnapEngine::runSceneLogic() {
switch (_currentSceneNum) {
case 0:
- scene00_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 8;
break;
@@ -360,7 +363,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 2:
- scene02_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
Commit: 880bc07ae1dd18049078ad664ff5fb3c932d0fb6
https://github.com/scummvm/scummvm/commit/880bc07ae1dd18049078ad664ff5fb3c932d0fb6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add destructor to scene 1
Changed paths:
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene01.h
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index be104a2..39d21fc 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -59,6 +59,10 @@ Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
_s01_spaceshipSurface = nullptr;
}
+Scene01::~Scene01() {
+ delete _s01_spaceshipSurface;
+}
+
int Scene01::init() {
_vm->_gameSys->setAnimation(0, 0, 0);
_vm->_gameSys->setAnimation(0, 0, 3);
diff --git a/engines/gnap/scenes/scene01.h b/engines/gnap/scenes/scene01.h
index b24ae53..e7d3a33 100644
--- a/engines/gnap/scenes/scene01.h
+++ b/engines/gnap/scenes/scene01.h
@@ -33,6 +33,7 @@ class GnapEngine;
class Scene01: public Scene {
public:
Scene01(GnapEngine *vm);
+ ~Scene01();
virtual int init();
virtual void updateHotspots();
Commit: 55618fa005b40cbbed75cbee30f7513ec5fd6d94
https://github.com/scummvm/scummvm/commit/55618fa005b40cbbed75cbee30f7513ec5fd6d94
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Enforce the use of boolean values for _isLeavingScene
Changed paths:
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene46.cpp
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 6d5991f..47ac557 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -301,7 +301,7 @@ void Scene02::run() {
case kHSExitHouse:
if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = 1;
+ _vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
_vm->_gnapActionStatus = kASLeaveScene;
if (_vm->isFlag(kGFPlatypus))
@@ -313,7 +313,7 @@ void Scene02::run() {
case kHSExitBarn:
if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = 1;
+ _vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
_vm->_gnapActionStatus = kASLeaveScene;
if (_vm->isFlag(kGFPlatypus))
@@ -325,7 +325,7 @@ void Scene02::run() {
case kHSExitCreek:
if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = 1;
+ _vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = kASLeaveScene;
if (_vm->isFlag(kGFPlatypus))
@@ -336,7 +336,7 @@ void Scene02::run() {
case kHSExitPigpen:
if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = 1;
+ _vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = kASLeaveScene;
if (_vm->isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index c5af2f3..77a9ade 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -193,7 +193,7 @@ void GnapEngine::scene03_run() {
case kHSExitTruck:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107AD, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index a233152..cbe5d05 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -321,7 +321,7 @@ void GnapEngine::scene04_run() {
case kHSExitTruck:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(kGFPlatypus))
@@ -365,7 +365,7 @@ void GnapEngine::scene04_run() {
case kHSExitBarn:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
if (isFlag(kGFPlatypus))
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index a07c218..f908b1d 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -262,7 +262,7 @@ void GnapEngine::scene06_run() {
case kHSExitOutsideBarn:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
if (_cursorValue == 1)
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 3d392d6..953dbeb 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -59,7 +59,6 @@ void GnapEngine::scene07_updateHotspots() {
}
void GnapEngine::scene07_run() {
-
queueInsertDeviceIcon();
_gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
_gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index f31c05d..ca777aa 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -176,7 +176,7 @@ void GnapEngine::scene08_run() {
break;
case kHSExitBackdoor:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapActionIdle(0x14D);
gnapWalkTo(0, 6, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
@@ -185,7 +185,7 @@ void GnapEngine::scene08_run() {
break;
case kHSExitCrash:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapActionIdle(0x14D);
gnapWalkTo(3, 9, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 7d9a4a9..4183b34 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -123,7 +123,7 @@ void GnapEngine::scene09_run() {
break;
case kHSExitKitchen:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 10;
gnapWalkTo(4, 7, 0, 0x107BF, 1);
_gnapActionStatus = kASLeaveScene;
@@ -132,7 +132,7 @@ void GnapEngine::scene09_run() {
break;
case kHSExitHouse:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 8;
gnapWalkTo(10, -1, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index b750ea4..311045d 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -144,7 +144,7 @@ void GnapEngine::scene10_run() {
break;
case kHSExitBar:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapActionIdle(0x10C);
gnapWalkTo(0, 7, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
@@ -153,7 +153,7 @@ void GnapEngine::scene10_run() {
break;
case kHSExitBackdoor:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapActionIdle(0x10C);
gnapWalkTo(2, 9, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index a60e6a2..4d3958c 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -160,7 +160,7 @@ void GnapEngine::scene12_run() {
break;
case kHSExitRight:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(10, -1, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(10, -1, -1, -1, 1);
@@ -282,7 +282,7 @@ void GnapEngine::scene12_run() {
case kHSJukebox:
_newSceneNum = 15;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(5, 6, 0, 0x107BC, 1);
_gnapActionStatus = kASLeaveScene;
break;
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index 007c380..d832927 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -161,7 +161,7 @@ void GnapEngine::scene13_run() {
break;
case kHSExitBar:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(2, 7, 0, 0x107C0, 1);
_gnapActionStatus = kASLeaveScene;
platypusWalkTo(2, 8, -1, -1, 1);
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 0e8065c..c88f7b2 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -638,7 +638,7 @@ void GnapEngine::scene18_run() {
if (isFlag(kGFPictureTaken)) {
playGnapImpossible(0, 0);
} else {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 19;
gnapWalkTo(_hotspotsWalkPos[kHSExitToyStore].x, _hotspotsWalkPos[kHSExitToyStore].y, 0, 0x107C0, 1);
_gnapActionStatus = kASLeaveScene;
@@ -655,7 +655,7 @@ void GnapEngine::scene18_run() {
scene18_putDownGarbageCan(0);
}
scene18_closeHydrantValve();
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 17;
gnapWalkTo(_hotspotsWalkPos[kHSExitPhoneBooth].x, _hotspotsWalkPos[kHSExitPhoneBooth].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
@@ -673,7 +673,7 @@ void GnapEngine::scene18_run() {
scene18_putDownGarbageCan(0);
}
scene18_closeHydrantValve();
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 20;
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 7982b07..54a8438 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -324,7 +324,7 @@ void GnapEngine::scene20_run() {
if (_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
_timers[4] = 0;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 21;
gnapWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
@@ -337,7 +337,7 @@ void GnapEngine::scene20_run() {
if (_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
_timers[4] = 0;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 17;
gnapWalkTo(_hotspotsWalkPos[kHSExitPhone].x, _hotspotsWalkPos[kHSExitPhone].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
@@ -349,7 +349,7 @@ void GnapEngine::scene20_run() {
if (_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
_timers[4] = 0;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 18;
_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideToyStore].x, _hotspotsWalkPos[kHSExitOutsideToyStore].y, 0, 0x107AB, 1);
@@ -363,7 +363,7 @@ void GnapEngine::scene20_run() {
if (_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
_timers[4] = 0;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 22;
gnapWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x, _hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
@@ -376,7 +376,7 @@ void GnapEngine::scene20_run() {
if (_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
_timers[4] = 0;
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 24;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107BB, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index b04c8c9..fcc7f51 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -206,7 +206,7 @@ void GnapEngine::scene21_run() {
case kHSExitOutsideGrubCity:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 20;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107B3, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 80f3843..364e42f 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -162,7 +162,7 @@ void GnapEngine::scene22_run() {
case kHSExitOutsideGrubCity:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 20;
gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
@@ -172,7 +172,7 @@ void GnapEngine::scene22_run() {
case kHSExitBackGrubCity:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 23;
gnapWalkTo(_hotspotsWalkPos[kHSExitBackGrubCity].x, _hotspotsWalkPos[kHSExitBackGrubCity].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 2c5a8f1..881007e 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -235,7 +235,7 @@ void GnapEngine::scene27_run() {
case kHSExitBeerStand:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 31;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107AB, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 027a4b5..7a58c4d 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -216,7 +216,7 @@ void GnapEngine::scene31_run() {
case kHSExitCircus:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 26;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
_gnapActionStatus = kASLeaveScene;
@@ -226,7 +226,7 @@ void GnapEngine::scene31_run() {
case kHSExitOutsideClown:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_newSceneNum = 27;
gnapWalkTo(-1, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AF, 1);
_gnapActionStatus = kASLeaveScene;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index e371d4a..5f74dfa 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -166,7 +166,7 @@ void GnapEngine::scene43_run() {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 4;
_newSceneNum = 42;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
@@ -175,7 +175,7 @@ void GnapEngine::scene43_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 4;
_newSceneNum = 44;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
@@ -231,7 +231,7 @@ void GnapEngine::scene43_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
@@ -239,7 +239,7 @@ void GnapEngine::scene43_run() {
break;
case kHSExitBBQ:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, _gnapY, 0, 0x107AF, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, _hotspotsWalkPos[kHSExitBBQ].y, -1, 0x107CF, 1);
@@ -247,7 +247,7 @@ void GnapEngine::scene43_run() {
break;
case kHSExitKissinBooth:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _gnapY, 0, 0x107AB, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _hotspotsWalkPos[kHSExitKissinBooth].y, -1, 0x107CD, 1);
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 5b53f11..ffd639d 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -183,7 +183,7 @@ void GnapEngine::scene44_run() {
switch (_sceneClickedHotspot) {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 6;
_newSceneNum = 43;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
@@ -192,7 +192,7 @@ void GnapEngine::scene44_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 6;
_newSceneNum = 46;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
@@ -242,14 +242,14 @@ void GnapEngine::scene44_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
_gnapActionStatus = 0;
_newSceneNum = 40;
break;
case kHSExitUfo:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _gnapY, 0, 0x107AF, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _platY, -1, 0x107CF, 1);
@@ -257,7 +257,7 @@ void GnapEngine::scene44_run() {
break;
case kHSExitShow:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitShow].x, _hotspotsWalkPos[kHSExitShow].y, 0, 0x107AB, 1);
_gnapActionStatus = 0;
_newSceneNum = 46;
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index e8d4214..1a87506 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -197,7 +197,7 @@ void GnapEngine::scene45_run() {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 2;
_newSceneNum = 46;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 5);
@@ -206,7 +206,7 @@ void GnapEngine::scene45_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 2;
_newSceneNum = 41;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 5);
@@ -257,7 +257,7 @@ void GnapEngine::scene45_run() {
case kHSExitUfoParty:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
_gnapActionStatus = 0;
_newSceneNum = 40;
@@ -266,7 +266,7 @@ void GnapEngine::scene45_run() {
case kHSExitShoe:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitShoe].x, _gnapY, 0, 0x107AF, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitShoe].x, _platY, -1, 0x107CF, 1);
@@ -276,7 +276,7 @@ void GnapEngine::scene45_run() {
case kHSExitRight:
if (_gnapActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitRight].x, _gnapY, 0, 0x107AB, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitRight].x, _platY, -1, 0x107CD, 1);
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 26a3be0..0f26181 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -141,7 +141,7 @@ void GnapEngine::scene46_run() {
case kHSUfoExitLeft:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 3;
_newSceneNum = 44;
toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
@@ -150,7 +150,7 @@ void GnapEngine::scene46_run() {
case kHSUfoExitRight:
if (_toyUfoActionStatus < 0) {
- _isLeavingScene = 1;
+ _isLeavingScene = true;
_toyUfoActionStatus = 3;
_newSceneNum = 45;
toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
@@ -236,14 +236,14 @@ void GnapEngine::scene46_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
_gnapActionStatus = 0;
_newSceneNum = 40;
break;
case kHSExitKissinBooth:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _gnapY, 0, 0x107AF, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _platY, -1, 0x107CF, 1);
@@ -251,7 +251,7 @@ void GnapEngine::scene46_run() {
break;
case kHSExitDisco:
- _isLeavingScene = 1;
+ _isLeavingScene = true;
gnapWalkTo(_hotspotsWalkPos[kHSExitDisco].x, _gnapY, 0, 0x107AB, 1);
_gnapActionStatus = 0;
platypusWalkTo(_hotspotsWalkPos[kHSExitDisco].x, _platY, -1, 0x107CD, 1);
Commit: 7a6c02ca0470023ae57a1775dbc347ff5f62be1b
https://github.com/scummvm/scummvm/commit/7a6c02ca0470023ae57a1775dbc347ff5f62be1b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 3
Changed paths:
A engines/gnap/scenes/scene03.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 251ce55..cb5c889 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2022,11 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 3
- _s03_nextPlatSequenceId = -1;
- _s03_platypusScared = false;
- _s03_platypusHypnotized = false;
-
// Scene 4
_s04_dogIdCtr = 0;
//_s04_triedWindow = true;//??
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index e626771..b6e7425 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,16 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 3
- bool _s03_platypusHypnotized;
- bool _s03_platypusScared;
- int _s03_nextPlatSequenceId;
- int _s03_nextFrogSequenceId, _s03_currFrogSequenceId;
- int scene03_init();
- void scene03_updateHotspots();
- void scene03_run();
- void scene03_updateAnimations();
-
// Scene 4
bool _s04_triedWindow;
int _s04_dogIdCtr;
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 77a9ade..2bcbe40 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -23,7 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
-
+#include "gnap/scenes/scene03.h"
namespace Gnap {
enum {
@@ -51,113 +51,118 @@ enum {
kASGrabScaredPlatypus = 8
};
-int GnapEngine::scene03_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 5);
+Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
+ _s03_nextPlatSequenceId = -1;
+ _s03_platypusScared = false;
+ _s03_platypusHypnotized = false;
+ _s03_nextFrogSequenceId = -1;
+ _s03_currFrogSequenceId = -1;
+}
+
+int Scene03::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 5);
return 0x1CC;
}
-void GnapEngine::scene03_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSGrass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- setHotspot(kHSExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
- setHotspot(kHSCreek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- setHotspot(kHSTrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
- setHotspot(kHSWalkAreas1, 0, 500, 300, 600);
- setHotspot(kHSWalkAreas2, 300, 447, 800, 600);
- setHotspot(kHSPlatypusWalkArea, 235, 0, 800, 600);
- setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(kGFGrassTaken))
- _hotspots[kHSGrass]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(kGFPlatypus))
- _hotspots[kHSTrappedPlatypus]._flags = SF_DISABLED;
- if (isFlag(kGFPlatypus) || _s03_platypusHypnotized)
- _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
- _hotspotsCount = 10;
+void Scene03::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSGrass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHSExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
+ _vm->setHotspot(kHSCreek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHSTrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
+ _vm->setHotspot(kHSWalkAreas1, 0, 500, 300, 600);
+ _vm->setHotspot(kHSWalkAreas2, 300, 447, 800, 600);
+ _vm->setHotspot(kHSPlatypusWalkArea, 235, 0, 800, 600);
+ _vm->setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFGrassTaken))
+ _vm->_hotspots[kHSGrass]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSTrappedPlatypus]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypus) || _s03_platypusHypnotized)
+ _vm->_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->_hotspotsCount = 10;
}
-void GnapEngine::scene03_run() {
- playSound(0x10925, true);
-
- startSoundTimerC(7);
+void Scene03::run() {
+ _vm->playSound(0x10925, true);
+ _vm->startSoundTimerC(7);
- _gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
_s03_platypusHypnotized = false;
- initGnapPos(3, 4, kDirBottomRight);
+ _vm->initGnapPos(3, 4, kDirBottomRight);
- _gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
_s03_currFrogSequenceId = 0x1C6;
_s03_nextFrogSequenceId = -1;
- _gameSys->setAnimation(0x1C6, 253, 2);
+ _vm->_gameSys->setAnimation(0x1C6, 253, 2);
- _timers[6] = getRandom(20) + 30;
- _timers[4] = getRandom(100) + 300;
- _timers[5] = getRandom(100) + 200;
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
- if (isFlag(kGFPlatypus)) {
- initPlatypusPos(5, 4, kDirNone);
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->initPlatypusPos(5, 4, kDirNone);
} else {
- _timers[1] = getRandom(40) + 20;
- _gameSys->setAnimation(0x1C2, 99, 1);
- _gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
- _platypusSequenceId = 0x1C2;
- _platypusSequenceDatNum = 0;
+ _vm->_timers[1] = _vm->getRandom(40) + 20;
+ _vm->_gameSys->setAnimation(0x1C2, 99, 1);
+ _vm->_gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1C2;
+ _vm->_platypusSequenceDatNum = 0;
}
- _gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!isFlag(kGFGrassTaken))
- _gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ if (!_vm->isFlag(kGFGrassTaken))
+ _vm->_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(4, 7, -1, 0x107C2, 1);
- gnapWalkTo(3, 6, -1, 0x107B9, 1);
+ _vm->endSceneInit();
- while (!_sceneDone) {
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(3, 6, -1, 0x107B9, 1);
- updateMouseCursor();
- updateCursorByHotspot();
-
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -165,26 +170,26 @@ void GnapEngine::scene03_run() {
break;
case kHSGrass:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFGrassTaken)) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 9, 6);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(9, 6);
+ _vm->playGnapScratchingHead(9, 6);
break;
case GRAB_CURSOR:
- playGnapPullOutDevice(9, 6);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x1B3, 253, 5);
- _hotspots[kHSGrass]._flags |= SF_WALKABLE | SF_DISABLED;
+ _vm->playGnapPullOutDevice(9, 6);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1B3, 253, 5);
+ _vm->_hotspots[kHSGrass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -192,41 +197,41 @@ void GnapEngine::scene03_run() {
break;
case kHSExitTruck:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107AD, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, -1, 0x107C2, 1);
- _hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
- if (_cursorValue == 1)
- _newSceneNum = 2;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
+ _vm->_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 2;
else
- _newSceneNum = 33;
+ _vm->_newSceneNum = 33;
}
break;
case kHSCreek:
- if (_gnapActionStatus == -1) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus == -1) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(2, 8);
+ _vm->playGnapMoan2(2, 8);
break;
case GRAB_CURSOR:
- if (!isFlag(kGFPlatypus))
- _hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
- if (gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[3].x + 1, _hotspotsWalkPos[3].y + 1) | 0x10000, 1))
- _gnapActionStatus = kASGrabCreek;
- if (!isFlag(kGFPlatypus))
- _hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ if (!_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypusWalkArea]._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))
+ _vm->_gnapActionStatus = kASGrabCreek;
+ if (!_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -234,42 +239,42 @@ void GnapEngine::scene03_run() {
break;
case kHSTrappedPlatypus:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatypus)) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 8, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 4);
+ _vm->playGnapScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_s03_platypusHypnotized) {
- gnapWalkTo(7, 6, 0, 0x107B5, 1);
- _gnapActionStatus = kASFreePlatypus;
+ _vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
+ _vm->_gnapActionStatus = kASFreePlatypus;
} else {
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_s03_platypusScared)
- _gnapActionStatus = kASGrabScaredPlatypus;
+ _vm->_gnapActionStatus = kASGrabScaredPlatypus;
else
- _gnapActionStatus = kASGrabPlatypus;
+ _vm->_gnapActionStatus = kASGrabPlatypus;
}
break;
case TALK_CURSOR:
if (_s03_platypusHypnotized) {
- playGnapBrainPulsating(8, 4);
+ _vm->playGnapBrainPulsating(8, 4);
} else {
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_s03_platypusScared)
- _gnapActionStatus = kASHypnotizeScaredPlat;
+ _vm->_gnapActionStatus = kASHypnotizeScaredPlat;
else
- _gnapActionStatus = kASHypnotizePlat;
+ _vm->_gnapActionStatus = kASHypnotizePlat;
}
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -277,160 +282,157 @@ void GnapEngine::scene03_run() {
break;
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene03_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSWalkAreas1:
case kHSWalkAreas2:
case kHSWalkAreas3:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSPlatypusWalkArea:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatypus) || _s03_platypusHypnotized) {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus) || _s03_platypusHypnotized) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
} else {
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107B5, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
if (_s03_platypusScared)
- _gnapActionStatus = kASGrabScaredPlatypus;
+ _vm->_gnapActionStatus = kASGrabScaredPlatypus;
else
- _gnapActionStatus = kASGrabPlatypus;
+ _vm->_gnapActionStatus = kASGrabPlatypus;
}
}
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene03_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10925))
- playSound(0x10925, true);
+ if (!_vm->isSoundPlaying(0x10925))
+ _vm->playSound(0x10925, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[1] && !_s03_platypusScared) {
- _timers[1] = getRandom(40) + 20;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && !isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[1] && !_s03_platypusScared) {
+ _vm->_timers[1] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
_s03_nextPlatSequenceId = 450;
}
- if (!_timers[6]) {
- _timers[6] = getRandom(20) + 30;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s03_nextFrogSequenceId == -1) {
- if (getRandom(5) == 1)
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s03_nextFrogSequenceId == -1) {
+ if (_vm->getRandom(5) == 1)
_s03_nextFrogSequenceId = 0x1C6;
else
_s03_nextFrogSequenceId = 0x1C7;
}
}
- if (!_timers[4]) {
+ if (!_vm->_timers[4]) {
// Update bird animation
- _timers[4] = getRandom(100) + 300;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0)
- _gameSys->insertSequence(getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ _vm->_gameSys->insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 200;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
- _gameSys->setAnimation(0x1C5, 253, 4);
- _gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ _vm->_gameSys->setAnimation(0x1C5, 253, 4);
+ _vm->_gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene03_updateHotspots();
- _timers[5] = getRandom(100) + 200;
- _timers[4] = getRandom(100) + 300;
- _timers[6] = getRandom(20) + 30;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene03_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene03::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASFreePlatypus:
_s03_nextPlatSequenceId = 0x1BC;
break;
case kASFreePlatypusDone:
- _gnapActionStatus = -1;
- _platX = 6;
- _platY = 6;
- _platypusFacing = kDirUnk4;
- _platypusId = 120;
- _gameSys->insertSequence(0x107CA, _platypusId, 0x1BC, 99,
- kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
- _platypusSequenceDatNum = 1;
- _platypusSequenceId = 0x7CA;
- setFlag(kGFPlatypus);
+ _vm->_gnapActionStatus = -1;
+ _vm->_platX = 6;
+ _vm->_platY = 6;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_platypusId = 120;
+ _vm->_gameSys->insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
+ kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusSequenceId = 0x7CA;
+ _vm->setFlag(kGFPlatypus);
_s03_nextPlatSequenceId = -1;
- scene03_updateHotspots();
+ updateHotspots();
break;
case kASHypnotizePlat:
- playGnapBrainPulsating(0, 0);
- addFullScreenSprite(0x106, 255);
- _gameSys->setAnimation(0x1C9, 256, 1);
- _gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(1) != 2)
- gameUpdateTick();
- removeFullScreenSprite();
- _gameSys->setAnimation(0x1BA, 99, 1);
- _gameSys->insertSequence(0x1BA, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _platypusSequenceDatNum = 0;
- _platypusSequenceId = 0x1BA;
- _gnapActionStatus = -1;
+ _vm->playGnapBrainPulsating(0, 0);
+ _vm->addFullScreenSprite(0x106, 255);
+ _vm->_gameSys->setAnimation(0x1C9, 256, 1);
+ _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->_gameSys->setAnimation(0x1BA, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x1BA;
+ _vm->_gnapActionStatus = -1;
_s03_platypusHypnotized = true;
- scene03_updateHotspots();
+ updateHotspots();
break;
case kASHypnotizeScaredPlat:
- playGnapBrainPulsating(0, 0);
- _gameSys->insertSequence(0x1BF, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _gameSys->setAnimation(0x1BF, 99, 1);
- while (_gameSys->getAnimationStatus(1) != 2)
- gameUpdateTick();
- addFullScreenSprite(0x106, 255);
- _gameSys->setAnimation(0x1C9, 256, 1);
- _gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(1) != 2)
- gameUpdateTick();
- removeFullScreenSprite();
- _gameSys->setAnimation(0x1BA, 99, 1);
- _gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceDatNum = 0;
- _platypusSequenceId = 0x1BA;
- _gnapActionStatus = -1;
+ _vm->playGnapBrainPulsating(0, 0);
+ _vm->_gameSys->insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1BF, 99, 1);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->addFullScreenSprite(0x106, 255);
+ _vm->_gameSys->setAnimation(0x1C9, 256, 1);
+ _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->_gameSys->setAnimation(0x1BA, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x1BA;
+ _vm->_gnapActionStatus = -1;
_s03_platypusHypnotized = true;
- scene03_updateHotspots();
+ updateHotspots();
break;
case kASGrabPlatypus:
_s03_nextPlatSequenceId = 0x1BD;
@@ -441,76 +443,75 @@ void GnapEngine::scene03_updateAnimations() {
_s03_platypusHypnotized = false;
break;
case kASGrabCreek:
- _gameSys->insertSequence(0x1B4, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x1B4, _gnapId, 0);
- _gnapSequenceId = 0x1B4;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASGrabCreekDone;
+ _vm->_gameSys->insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1B4, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x1B4;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASGrabCreekDone;
break;
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
if (_s03_nextPlatSequenceId == 0x1BD || _s03_nextPlatSequenceId == 0x1C0) {
- _gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 1);
_s03_platypusScared = true;
- _gameSys->insertSequence(0x1B5, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x1B5;
- _gnapSequenceDatNum = 0;
- _gnapIdleFacing = kDirNone;
- _platypusSequenceId = _s03_nextPlatSequenceId;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(_s03_nextPlatSequenceId, 99, 1);
+ _vm->_gameSys->insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x1B5;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirNone;
+ _vm->_platypusSequenceId = _s03_nextPlatSequenceId;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(_s03_nextPlatSequenceId, 99, 1);
_s03_nextPlatSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
} else if (_s03_nextPlatSequenceId == 0x1BC) {
- _gnapX = 3;
- _gnapY = 6;
- _gameSys->insertSequence(0x1B6, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x1BC, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x1BC, 99, 0);
- _gnapId = 20 * _gnapY;
- _gnapSequenceId = 0x1B6;
- _gnapSequenceDatNum = 0;
- _gnapIdleFacing = kDirNone;
- _gnapActionStatus = kASFreePlatypusDone;
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gameSys->insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1BC, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1BC, 99, 0);
+ _vm->_gnapId = 20 * _vm->_gnapY;
+ _vm->_gnapSequenceId = 0x1B6;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirNone;
+ _vm->_gnapActionStatus = kASFreePlatypusDone;
_s03_nextPlatSequenceId = -1;
} else if (_s03_nextPlatSequenceId == 0x1C2 && !_s03_platypusScared) {
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->insertSequence(0x1C2, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0x1C2;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0x1C2, 99, 1);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1C2;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x1C2, 99, 1);
_s03_nextPlatSequenceId = -1;
} else if (_s03_nextPlatSequenceId == -1 && _s03_platypusScared && !_s03_platypusHypnotized) {
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0x1BE, 99, 1);
- _gameSys->insertSequence(0x1BE, 99, _platypusSequenceId | (_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0x1BE;
- _platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0x1BE, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1BE;
+ _vm->_platypusSequenceDatNum = 0;
_s03_nextPlatSequenceId = -1;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s03_nextFrogSequenceId != -1) {
- _gameSys->setAnimation(_s03_nextFrogSequenceId, 253, 2);
- _gameSys->insertSequence(_s03_nextFrogSequenceId, 253, _s03_currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s03_nextFrogSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_s03_nextFrogSequenceId, 253, 2);
+ _vm->_gameSys->insertSequence(_s03_nextFrogSequenceId, 253, _s03_currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
_s03_currFrogSequenceId = _s03_nextFrogSequenceId;
_s03_nextFrogSequenceId = -1;
}
- if (_gameSys->getAnimationStatus(5) == 2) {
- _gameSys->setAnimation(0, 0, 5);
- invAdd(kItemGrass);
- setGrabCursorSprite(kItemGrass);
- setFlag(kGFGrassTaken);
- scene03_updateHotspots();
+ if (_vm->_gameSys->getAnimationStatus(5) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ _vm->invAdd(kItemGrass);
+ _vm->setGrabCursorSprite(kItemGrass);
+ _vm->setFlag(kGFGrassTaken);
+ updateHotspots();
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene03.h b/engines/gnap/scenes/scene03.h
new file mode 100644
index 0000000..2ccb1cd
--- /dev/null
+++ b/engines/gnap/scenes/scene03.h
@@ -0,0 +1,53 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE03_H
+#define GNAP_SCENE03_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene03: public Scene {
+public:
+ Scene03(GnapEngine *vm);
+ ~Scene03() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ bool _s03_platypusHypnotized;
+ bool _s03_platypusScared;
+ int _s03_nextPlatSequenceId;
+ int _s03_nextFrogSequenceId;
+ int _s03_currFrogSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE03_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 7d37793..e88843d 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -27,11 +27,12 @@
#include "gnap/scenes/scene00.h"
#include "gnap/scenes/scene01.h"
+#include "gnap/scenes/scene02.h"
+#include "gnap/scenes/scene03.h"
namespace Gnap {
int GnapEngine::initSceneLogic() {
-
int backgroundId = -1;
switch (_currentSceneNum) {
@@ -48,14 +49,16 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 2:
+ _scene = new Scene02(this);
backgroundId = _scene->init();
_scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 3:
- backgroundId = scene03_init();
- scene03_updateHotspots();
+ _scene = new Scene03(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -239,8 +242,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 34:
- backgroundId = scene03_init();
- scene03_updateHotspots();
+ _scene = new Scene03(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -369,7 +373,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 3:
- scene03_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
@@ -525,7 +530,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 34:
- scene03_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 729b82a428adf062894b67263485abe11507c416
https://github.com/scummvm/scummvm/commit/729b82a428adf062894b67263485abe11507c416
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Use enum value for a flag instead of number
Changed paths:
engines/gnap/scenes/scene07.cpp
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 953dbeb..dab9051 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -50,7 +50,7 @@ void GnapEngine::scene07_updateHotspots() {
setHotspot(kHSExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
setHotspot(kHSDice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
setHotspot(kHSWalkArea1, 0, 0, 325, 445);
- setHotspot(kHSWalkArea2, 325, 0, 799, 445, _isLeavingScene ? SF_WALKABLE : 0);
+ setHotspot(kHSWalkArea2, 325, 0, 799, 445, _isLeavingScene ? SF_WALKABLE : SF_NONE);
setHotspot(kHSWalkArea3, 160, 0, 325, 495);
setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
if (isFlag(kGFPlatypus))
Commit: 58827530140a94c17053d02774884b23fd1dcab2
https://github.com/scummvm/scummvm/commit/58827530140a94c17053d02774884b23fd1dcab2
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 4
Changed paths:
A engines/gnap/scenes/scene04.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index cb5c889..f706dd3 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2022,10 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 4
- _s04_dogIdCtr = 0;
- //_s04_triedWindow = true;//??
- _s04_triedWindow = false;
// Scene 5
_s05_nextChickenSequenceId = -1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b6e7425..ce1a8ab 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,15 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 4
- bool _s04_triedWindow;
- int _s04_dogIdCtr;
- int _s04_nextDogSequenceId, _s04_currDogSequenceId;
- int scene04_init();
- void scene04_updateHotspots();
- void scene04_run();
- void scene04_updateAnimations();
-
// Scene 5
int _s05_nextChickenSequenceId, _s05_currChickenSequenceId;
int scene05_init();
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index cbe5d05..299656c 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene04.h"
namespace Gnap {
@@ -54,153 +55,158 @@ enum {
kASGrabAxe = 13
};
-int GnapEngine::scene04_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
+Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
+ _s04_dogIdCtr = 0;
+ _s04_triedWindow = false;
+ _s04_nextDogSequenceId = -1;
+ _s04_currDogSequenceId = -1;
+}
+
+int Scene04::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
return 0x214;
}
-void GnapEngine::scene04_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSTwig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- setHotspot(kHSDog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- setHotspot(kHSAxe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- setHotspot(kHSDoor, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- setHotspot(kHSExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSWindow, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- setHotspot(kHSExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
- setHotspot(kHSWalkArea1, 0, 0, 562, 461);
- setHotspot(kHSWalkArea2, 562, 0, 800, 500);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(kGFTwigTaken))
- _hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(kGFPlatypusTalkingToAssistant) || _cursorValue == 1)
- _hotspots[kHSAxe]._flags = SF_DISABLED;
- _hotspotsCount = 11;
+void Scene04::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSTwig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHSDog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHSAxe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHSDoor, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHSExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSWindow, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHSExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 562, 461);
+ _vm->setHotspot(kHSWalkArea2, 562, 0, 800, 500);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant) || _vm->_cursorValue == 1)
+ _vm->_hotspots[kHSAxe]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene04_run() {
- playSound(0x1091C, true);
- startSoundTimerC(4);
+void Scene04::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(4);
- _gameSys->insertSequence(0x210, 139 - _s04_dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x210, 139 - _s04_dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
_s04_currDogSequenceId = 0x210;
_s04_nextDogSequenceId = -1;
- _gameSys->setAnimation(0x210, 139 - _s04_dogIdCtr, 3);
+ _vm->_gameSys->setAnimation(0x210, 139 - _s04_dogIdCtr, 3);
_s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
- _timers[6] = getRandom(20) + 60;
- _timers[5] = getRandom(150) + 300;
- _timers[7] = getRandom(150) + 200;
- _timers[8] = getRandom(150) + 400;
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
+ _vm->_timers[5] = _vm->getRandom(150) + 300;
+ _vm->_timers[7] = _vm->getRandom(150) + 200;
+ _vm->_timers[8] = _vm->getRandom(150) + 400;
- if (!isFlag(kGFPlatypusTalkingToAssistant) && _cursorValue == 4)
- _gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant) && _vm->_cursorValue == 4)
+ _vm->_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFTwigTaken))
- _gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFTwigTaken))
+ _vm->_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFPlatyPussDisguised)) {
- _timers[3] = 300;
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ _vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
- setGrabCursorSprite(kItemKeys);
- _gnapX = 4;
- _gnapY = 7;
- _gnapId = 140;
- _platX = 6;
- _platY = 7;
- _platypusId = 141;
- _gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _gnapGridX, 336 - _gnapGridY);
- _gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
- endSceneInit();
- invRemove(kItemDisguise);
- invAdd(kItemKeys);
- setFlag(kGFKeysTaken);
- clearFlag(kGFPlatyPussDisguised);
- _platypusSequenceId = 0x20C;
- _platypusSequenceDatNum = 0;
- _platypusFacing = kDirBottomRight;
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
- _gameSys->waitForUpdate();
+ _vm->setGrabCursorSprite(kItemKeys);
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ _vm->_platX = 6;
+ _vm->_platY = 7;
+ _vm->_platypusId = 141;
+ _vm->_gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ _vm->_gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->invRemove(kItemDisguise);
+ _vm->invAdd(kItemKeys);
+ _vm->setFlag(kGFKeysTaken);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_platypusSequenceId = 0x20C;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusFacing = kDirBottomRight;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->waitForUpdate();
} else {
- _gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
- if (_prevSceneNum == 2) {
- initGnapPos(5, 11, kDirUpRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(5, 8, -1, 0x107C2, 1);
- gnapWalkTo(6, 9, -1, 0x107BA, 1);
- } else if (_prevSceneNum == 38) {
- initGnapPos(5, 7, kDirBottomRight);
- initPlatypusPos(4, 7, kDirNone);
- endSceneInit();
+ _vm->_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->_prevSceneNum == 2) {
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(6, 9, -1, 0x107BA, 1);
+ } else if (_vm->_prevSceneNum == 38) {
+ _vm->initGnapPos(5, 7, kDirBottomRight);
+ _vm->initPlatypusPos(4, 7, kDirNone);
+ _vm->endSceneInit();
} else {
- initGnapPos(12, 9, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(12, 8, kDirNone);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(9, 8, -1, 0x107C2, 1);
- gnapWalkTo(9, 9, -1, 0x107BA, 1);
+ _vm->initGnapPos(12, 9, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(9, 9, -1, 0x107BA, 1);
}
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 4, -1, -1, -1, -1);
+ _vm->testWalk(0, 4, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene04_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- if (_cursorValue == 4)
- gnapKissPlatypus(0);
+ if (_vm->_cursorValue == 4)
+ _vm->gnapKissPlatypus(0);
else
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -208,23 +214,23 @@ void GnapEngine::scene04_run() {
break;
case kHSTwig:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 9, 6);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
break;
case GRAB_CURSOR:
- playGnapPullOutDevice(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y);
- playGnapUseDevice(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y);
- _gameSys->insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x1FD, 100, 2);
+ _vm->playGnapPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->playGnapUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gameSys->insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1FD, 100, 2);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -232,24 +238,24 @@ void GnapEngine::scene04_run() {
break;
case kHSAxe:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 9, 5);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y);
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabAxe;
- setFlag(kGFPlatypusTalkingToAssistant);
- scene04_updateHotspots();
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabAxe;
+ _vm->setFlag(kGFPlatypusTalkingToAssistant);
+ updateHotspots();
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -257,31 +263,31 @@ void GnapEngine::scene04_run() {
break;
case kHSDog:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 9, 7);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (gnapWalkTo(_gnapX, _gnapY, 0, -1, 1)) {
- playGnapMoan2(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y);
+ if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_s04_nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _gnapActionStatus = kASGrabDog;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASGrabDog;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- if (gnapWalkTo(_gnapX, _gnapY, 0, -1, 1)) {
- playGnapBrainPulsating(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_s04_nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -289,30 +295,30 @@ void GnapEngine::scene04_run() {
break;
case kHSDoor:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 4, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case PLAT_CURSOR:
- playGnapScratchingHead(4, 3);
+ _vm->playGnapScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- if (_cursorValue == 1) {
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASOpenDoor;
- _timers[5] = 300;
- _gnapIdleFacing = kDirUpLeft;
+ if (_vm->_cursorValue == 1) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASOpenDoor;
+ _vm->_timers[5] = 300;
+ _vm->_gnapIdleFacing = kDirUpLeft;
} else {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 38;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 38;
}
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -320,43 +326,43 @@ void GnapEngine::scene04_run() {
break;
case kHSExitTruck:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, -1, 0x107C7, 1);
- if (_cursorValue == 1)
- _newSceneNum = 2;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 2;
else
- _newSceneNum = 33;
+ _vm->_newSceneNum = 33;
}
break;
case kHSWindow:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 2, 3);
- } else if (isFlag(kGFKeysTaken)) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ } else if (_vm->isFlag(kGFKeysTaken)) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (gnapWalkTo(_hotspotsWalkPos[7].x, _hotspotsWalkPos[7].y, 0, getGnapSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, _vm->getGnapSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
if (_s04_triedWindow) {
- _gnapActionStatus = kASGetKeyAnother;
+ _vm->_gnapActionStatus = kASGetKeyAnother;
} else {
- _gnapActionStatus = kASGetKeyFirst;
+ _vm->_gnapActionStatus = kASGetKeyFirst;
_s04_triedWindow = true;
}
}
break;
case GRAB_CURSOR:
- playGnapScratchingHead(_hotspotsWalkPos[7].x, _hotspotsWalkPos[7].y);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -364,207 +370,203 @@ void GnapEngine::scene04_run() {
break;
case kHSExitBarn:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[8].x, _hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
- if (_cursorValue == 1)
- _newSceneNum = 5;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 5;
else
- _newSceneNum = 35;
+ _vm->_newSceneNum = 35;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene04_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && isFlag(kGFPlatypus))
- platypusSub426234();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence2();
- if (!_timers[5]) {
- _timers[5] = getRandom(150) + 300;
- if (_gnapActionStatus < 0)
- _gameSys->insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->platypusSub426234();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(150) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[7]) {
- _timers[7] = getRandom(150) + 200;
- _gameSys->insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(150) + 200;
+ _vm->_gameSys->insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[6]) {
- _timers[6] = getRandom(20) + 60;
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
if (_s04_nextDogSequenceId == -1)
_s04_nextDogSequenceId = 0x210;
}
- if (!_timers[8]) {
- _timers[8] = getRandom(150) + 400;
- _gameSys->insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[8]) {
+ _vm->_timers[8] = _vm->getRandom(150) + 400;
+ _vm->_gameSys->insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene04_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene04_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene04::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASOpenDoor:
- _gameSys->insertSequence(0x205, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
- _gnapX = 6;
- _gnapY = 7;
- _gameSys->insertSequence(0x107B5, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, getSequenceTotalDuration(0x205) - 1, 450 - _gnapGridX, 336 - _gnapGridY);
- _gameSys->setAnimation(0x107B5, _gnapId, 0);
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
- _gnapActionStatus = kASOpenDoorDone;
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ _vm->_gameSys->setAnimation(0x107B5, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapActionStatus = kASOpenDoorDone;
break;
case kASOpenDoorDone:
- _gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
break;
case kASGetKeyFirst:
- _gameSys->insertSequence(0x204, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x204, _gnapId, 0);
- _gnapSequenceId = 0x204;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASGetKeyFirst2;
+ _vm->_gameSys->insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x204, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x204;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASGetKeyFirst2;
break;
case kASGetKeyFirst2:
- _gameSys->insertSequence(0x206, 255, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 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);
- _gnapSequenceId = 0x206;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASGetKeyFirstDone;
+ _vm->_gameSys->insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20B, 256, 0);
+ _vm->_gnapSequenceId = 0x206;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASGetKeyFirstDone;
break;
case kASGetKeyFirstDone:
- _gameSys->requestRemoveSequence(0x1FF, 256);
- _gameSys->requestRemoveSequence(0x20B, 256);
- _gameSys->insertSequence(0x107B5, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapIdleFacing = kDirBottomRight;
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
- _gnapActionStatus = -1;
+ _vm->_gameSys->requestRemoveSequence(0x1FF, 256);
+ _vm->_gameSys->requestRemoveSequence(0x20B, 256);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGetKeyAnother:
- _gameSys->insertSequence(0x202, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x202, _gnapId, 0);
- _gnapSequenceId = 0x202;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASGetKeyAnother2;
+ _vm->_gameSys->insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x202, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x202;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASGetKeyAnother2;
break;
case kASGetKeyAnother2:
- _gameSys->insertSequence(0x203, 255, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 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);
- _gnapSequenceId = 0x203;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASGetKeyAnotherDone;
+ _vm->_gameSys->insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20A, 256, 0);
+ _vm->_gnapSequenceId = 0x203;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASGetKeyAnotherDone;
break;
case kASGetKeyAnotherDone:
- _gameSys->removeSequence(0x1FF, 256, true);
- _gameSys->removeSequence(0x20A, 256, true);
- _gameSys->insertSequence(0x107B5, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
- _gnapIdleFacing = kDirBottomRight;
- _gnapActionStatus = -1;
+ _vm->_gameSys->removeSequence(0x1FF, 256, true);
+ _vm->_gameSys->removeSequence(0x20A, 256, true);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabDog:
_s04_nextDogSequenceId = 0x201;
break;
case kASGrabAxe:
- _gameSys->insertSequence(0x211, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->requestRemoveSequence(0x212, 100);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x211;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0x212, 100);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x211;
+ _vm->_gnapActionStatus = -1;
break;
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->setAnimation(0, 0, 2);
- invAdd(kItemTwig);
- setGrabCursorSprite(kItemTwig);
- setFlag(kGFTwigTaken);
- scene04_updateHotspots();
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->invAdd(kItemTwig);
+ _vm->setGrabCursorSprite(kItemTwig);
+ _vm->setFlag(kGFTwigTaken);
+ updateHotspots();
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_s04_nextDogSequenceId == 0x201) {
- _gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
+ _vm->_gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
_s04_currDogSequenceId, 139 - (_s04_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x200, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
+ _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
_s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
_s04_currDogSequenceId = 0x201;
- _gnapSequenceId = 0x200;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
- _timers[6] = getRandom(20) + 60;
+ _vm->_gnapSequenceId = 0x200;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
_s04_nextDogSequenceId = -1;
} else if (_s04_nextDogSequenceId != -1) {
- _gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
+ _vm->_gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
_s04_currDogSequenceId, 139 - (_s04_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
+ _vm->_gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
_s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
_s04_currDogSequenceId = _s04_nextDogSequenceId;
_s04_nextDogSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene04.h b/engines/gnap/scenes/scene04.h
new file mode 100644
index 0000000..11a7eeb
--- /dev/null
+++ b/engines/gnap/scenes/scene04.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE04_H
+#define GNAP_SCENE04_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene04: public Scene {
+public:
+ Scene04(GnapEngine *vm);
+ ~Scene04() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ bool _s04_triedWindow;
+ int _s04_dogIdCtr;
+ int _s04_nextDogSequenceId;
+ int _s04_currDogSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE04_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index e88843d..3837b7c 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -29,6 +29,7 @@
#include "gnap/scenes/scene01.h"
#include "gnap/scenes/scene02.h"
#include "gnap/scenes/scene03.h"
+#include "gnap/scenes/scene04.h"
namespace Gnap {
@@ -63,8 +64,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 4:
- backgroundId = scene04_init();
- scene04_updateHotspots();
+ _scene = new Scene04(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -261,8 +263,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 37:
- backgroundId = scene04_init();
- scene04_updateHotspots();
+ _scene = new Scene04(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -379,7 +382,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 4:
- scene04_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
@@ -546,7 +550,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 37:
- scene04_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: ca21ed461514939da5a126482c164c089c23051e
https://github.com/scummvm/scummvm/commit/ca21ed461514939da5a126482c164c089c23051e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 5
Changed paths:
A engines/gnap/scenes/scene05.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index f706dd3..b682d02 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2022,10 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
-
- // Scene 5
- _s05_nextChickenSequenceId = -1;
-
// Scene 6
_s06_nextPlatSequenceId = -1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ce1a8ab..ece6835 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,13 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 5
- int _s05_nextChickenSequenceId, _s05_currChickenSequenceId;
- int scene05_init();
- void scene05_updateHotspots();
- void scene05_run();
- void scene05_updateAnimations();
-
// Scene 6
bool _s06_horseTurnedBack;
int _s06_nextPlatSequenceId;
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index 405bd2a..f28a37d 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene05.h"
namespace Gnap {
@@ -51,107 +52,109 @@ enum {
kASLeaveScene = 12
};
-int GnapEngine::scene05_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 3);
- return isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
+Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
+ _s05_nextChickenSequenceId = -1;
+ _s05_currChickenSequenceId = -1;
}
-void GnapEngine::scene05_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSHaystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- setHotspot(kHSPadlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- setHotspot(kHSLadder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- setHotspot(kHSChicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSWalkArea1, 104, 0, 421, 480);
- setHotspot(kHSWalkArea2, 422, 0, 800, 487);
- setHotspot(kHSWalkArea3, 0, 0, 104, 499);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (isFlag(kGFBarnPadlockOpen))
- _hotspots[kHSPadlock]._flags = SF_EXIT_U_CURSOR;
- _hotspotsCount = 10;
+int Scene05::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return _vm->isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
}
-void GnapEngine::scene05_run() {
+void Scene05::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSHaystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHSPadlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHSLadder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHSChicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSWalkArea1, 104, 0, 421, 480);
+ _vm->setHotspot(kHSWalkArea2, 422, 0, 800, 487);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 104, 499);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_hotspots[kHSPadlock]._flags = SF_EXIT_U_CURSOR;
+ _vm->_hotspotsCount = 10;
+}
- playSound(0x1091C, true);
- startSoundTimerC(7);
+void Scene05::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(7);
_s05_currChickenSequenceId = 0x142;
- _gameSys->setAnimation(0x142, 100, 3);
- _gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x142, 100, 3);
+ _vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
_s05_nextChickenSequenceId = -1;
- _timers[5] = getRandom(10) + 30;
- _timers[6] = getRandom(150) + 300;
+ _vm->_timers[5] = _vm->getRandom(10) + 30;
+ _vm->_timers[6] = _vm->getRandom(150) + 300;
- if (isFlag(kGFBarnPadlockOpen))
- _gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum != 6 && _prevSceneNum != 36) {
- initGnapPos(-1, 8, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(-1, 9, kDirNone);
- endSceneInit();
- if (isFlag(kGFPlatypus))
- platypusWalkTo(2, 8, -1, 0x107C2, 1);
- gnapWalkTo(2, 9, -1, 0x107B9, 1);
+ if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 9, -1, 0x107B9, 1);
} else {
- initGnapPos(6, 8, kDirBottomRight);
- if (isFlag(kGFPlatypus))
- initPlatypusPos(7, 9, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(6, 8, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->endSceneInit();
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->testWalk(0, 12, -1, -1, -1, -1);
- testWalk(0, 12, -1, -1, -1, -1);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene05_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0 && isFlag(kGFPlatypus)) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -159,30 +162,30 @@ void GnapEngine::scene05_run() {
break;
case kHSHaystack:
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[1].x - 2, _hotspotsWalkPos[1].y, 4, 5);
- } else if (isFlag(kGFNeedleTaken)) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ } else if (_vm->isFlag(kGFNeedleTaken)) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y - 1);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(kGFPlatypus)) {
- gnapUseDeviceOnPlatypuss();
- if (platypusWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
- _platypusActionStatus = kASPlatSearchHaystack;
- _platypusFacing = kDirUnk4;
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->gnapUseDeviceOnPlatypuss();
+ if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
+ _vm->_platypusActionStatus = kASPlatSearchHaystack;
+ _vm->_platypusFacing = kDirUnk4;
}
- if (_gnapX == 4 && (_gnapY == 8 || _gnapY == 7))
- gnapWalkStep();
- playGnapIdle(_platX, _platY);
+ if (_vm->_gnapX == 4 && (_vm->_gnapY == 8 || _vm->_gnapY == 7))
+ _vm->gnapWalkStep();
+ _vm->playGnapIdle(_vm->_platX, _vm->_platY);
}
break;
}
@@ -191,31 +194,31 @@ void GnapEngine::scene05_run() {
break;
case kHSChicken:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemTwig) {
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1,
- 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASUseTwigWithChicken;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y + 1, 9, 7);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASUseTwigWithChicken;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(9, 7);
+ _vm->playGnapMoan2(9, 7);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabChicken;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkChicken;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -223,22 +226,22 @@ void GnapEngine::scene05_run() {
break;
case kHSLadder:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 2, 5);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(2, 4);
+ _vm->playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirBottomLeft;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabLadder;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabLadder;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -246,35 +249,35 @@ void GnapEngine::scene05_run() {
break;
case kHSPadlock:
- if (isFlag(kGFBarnPadlockOpen)) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[2].x - 1, _hotspotsWalkPos[2].y + 1, 0, -1, 1);
- _gnapActionStatus = kASEnterBarn;
- if (_cursorValue == 1)
- _newSceneNum = 6;
+ if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
+ _vm->_gnapActionStatus = kASEnterBarn;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 6;
else
- _newSceneNum = 36;
- } else if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemNeedle) {
- if (gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0,
- getGnapSequenceId(gskIdle, _hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y) | 0x10000, 1))
- _gnapActionStatus = kASPickPadlock;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 7, 4);
+ _vm->_newSceneNum = 36;
+ } else if (_vm->_gnapActionStatus < 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->_gnapActionStatus = kASPickPadlock;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(7, 4);
+ _vm->playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y,
- 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTryPickPadlock;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTryPickPadlock;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -282,23 +285,23 @@ void GnapEngine::scene05_run() {
break;
case kHSExitHouse:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypus))
- platypusWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
- if (_cursorValue == 1)
- _newSceneNum = 4;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 4;
else
- _newSceneNum = 37;
+ _vm->_newSceneNum = 37;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSWalkArea3:
@@ -306,162 +309,158 @@ void GnapEngine::scene05_run() {
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene05_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (isFlag(kGFPlatypus))
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[5]) {
- _timers[5] = getRandom(20) + 30;
- if (_gnapActionStatus != kASTalkChicken && _s05_nextChickenSequenceId == -1) {
- if (getRandom(4) != 0)
+ if (!_vm->_isLeavingScene) {
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus != kASTalkChicken && _s05_nextChickenSequenceId == -1) {
+ if (_vm->getRandom(4) != 0)
_s05_nextChickenSequenceId = 0x142;
else
_s05_nextChickenSequenceId = 0x143;
}
}
- if (!_timers[6]) {
- _timers[6] = getRandom(150) + 300;
- if (_gnapActionStatus < 0)
- _gameSys->insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(150) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene05_updateHotspots();
- _timers[5] = getRandom(20) + 30;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene05_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene05::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASTryPickPadlock:
- _gameSys->insertSequence(0x148, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x148;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x148;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
break;
case kASPickPadlock:
- _gameSys->setAnimation(0x147, _gnapId, 0);
- _gameSys->insertSequence(0x147, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x147;
- _gnapSequenceDatNum = 0;
- setFlag(kGFBarnPadlockOpen);
- setFlag(kGFSceneFlag1);
- setGrabCursorSprite(-1);
- _newSceneNum = 6;
- _timers[2] = 100;
- invRemove(kItemNeedle);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_gameSys->setAnimation(0x147, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x147;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->setFlag(kGFBarnPadlockOpen);
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_newSceneNum = 6;
+ _vm->_timers[2] = 100;
+ _vm->invRemove(kItemNeedle);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kASTalkChicken:
_s05_nextChickenSequenceId = 0x144;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabChicken:
_s05_nextChickenSequenceId = 0x14B;
break;
case kASGrabLadder:
- while (_gameSys->isSequenceActive(0x149, 39))
- gameUpdateTick();
- _gameSys->insertSequence(0x14E, _gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x14D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x14D;
- _gnapSequenceDatNum = 0;
- _timers[2] = 200;
- _timers[6] = 300;
- _gnapActionStatus = -1;
+ while (_vm->_gameSys->isSequenceActive(0x149, 39))
+ _vm->gameUpdateTick();
+ _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x14D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[2] = 200;
+ _vm->_timers[6] = 300;
+ _vm->_gnapActionStatus = -1;
break;
case kASEnterBarn:
- _gameSys->insertSequence(0x107B1, 1,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gameSys->setAnimation(0x107B1, 1, 0);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_gameSys->insertSequence(0x107B1, 1,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gameSys->setAnimation(0x107B1, 1, 0);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kASUseTwigWithChicken:
- playGnapShowItem(5, 0, 0);
+ _vm->playGnapShowItem(5, 0, 0);
_s05_nextChickenSequenceId = 0x14F;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- if (_platypusSequenceId == 0x146) {
- _platX = 4;
- _platY = 8;
- _gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _platGridX, 384 - _platGridY);
- _platypusSequenceId = 0x7C1;
- _platypusSequenceDatNum = 1;
- _platypusId = 20 * _platY;
- invAdd(kItemNeedle);
- setFlag(kGFNeedleTaken);
- setGrabCursorSprite(kItemNeedle);
- showCursor();
- _timers[1] = 30;
- _platypusActionStatus = -1;
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (_vm->_platypusSequenceId == 0x146) {
+ _vm->_platX = 4;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusId = 20 * _vm->_platY;
+ _vm->invAdd(kItemNeedle);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->setGrabCursorSprite(kItemNeedle);
+ _vm->showCursor();
+ _vm->_timers[1] = 30;
+ _vm->_platypusActionStatus = -1;
}
- if (_platypusActionStatus == kASPlatSearchHaystack) {
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->insertSequence(0x145, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x146, 256, 0x145, _platypusId, kSeqSyncWait, 0, 0, 0);
- hideCursor();
- setGrabCursorSprite(-1);
- _platypusSequenceId = 0x146;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0x146, 256, 1);
- _timers[1] = 300;
+ if (_vm->_platypusActionStatus == kASPlatSearchHaystack) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->_platypusSequenceId = 0x146;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x146, 256, 1);
+ _vm->_timers[1] = 300;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_s05_nextChickenSequenceId == 0x14B) {
- _gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
- _gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x14C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x14C;
+ _vm->_gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x14C;
_s05_currChickenSequenceId = _s05_nextChickenSequenceId;
_s05_nextChickenSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
} else if (_s05_nextChickenSequenceId != -1) {
- _gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
- _gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s05_currChickenSequenceId = _s05_nextChickenSequenceId;
_s05_nextChickenSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene05.h b/engines/gnap/scenes/scene05.h
new file mode 100644
index 0000000..f79adc0
--- /dev/null
+++ b/engines/gnap/scenes/scene05.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE05_H
+#define GNAP_SCENE05_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene05: public Scene {
+public:
+ Scene05(GnapEngine *vm);
+ ~Scene05() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ int _s05_nextChickenSequenceId;
+ int _s05_currChickenSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE05_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 3837b7c..8183419 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -30,6 +30,7 @@
#include "gnap/scenes/scene02.h"
#include "gnap/scenes/scene03.h"
#include "gnap/scenes/scene04.h"
+#include "gnap/scenes/scene05.h"
namespace Gnap {
@@ -71,8 +72,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 5:
- backgroundId = scene05_init();
- scene05_updateHotspots();
+ _scene = new Scene05(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -251,8 +253,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 35:
- backgroundId = scene05_init();
- scene05_updateHotspots();
+ _scene = new Scene05(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -388,7 +391,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 5:
- scene05_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
@@ -540,7 +544,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 35:
- scene05_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: aea51e0d40a0be2a724e7a6650382b7157b01952
https://github.com/scummvm/scummvm/commit/aea51e0d40a0be2a724e7a6650382b7157b01952
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 6
Changed paths:
A engines/gnap/scenes/scene06.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index b682d02..ddaa9f6 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2022,9 +2022,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 6
- _s06_nextPlatSequenceId = -1;
-
// Scene 11
_s11_billardBallCtr = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ece6835..43b2f6a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,15 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 6
- bool _s06_horseTurnedBack;
- int _s06_nextPlatSequenceId;
- int _s06_nextHorseSequenceId, _s06_currHorseSequenceId;
- int scene06_init();
- void scene06_updateHotspots();
- void scene06_run();
- void scene06_updateAnimations();
-
// Scene 7
int scene07_init();
void scene07_updateHotspots();
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index f908b1d..3bd79fd 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene06.h"
namespace Gnap {
@@ -49,112 +50,116 @@ enum {
kASLeaveScene = 5
};
-int GnapEngine::scene06_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- if (isFlag(kGFSceneFlag1)) {
- playSound(0x11B, false);
- clearFlag(kGFSceneFlag1);
+Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
+ _s06_horseTurnedBack = false;;
+ _s06_nextPlatSequenceId = -1;
+ _s06_nextHorseSequenceId = -1;
+ _s06_currHorseSequenceId = -1;
+}
+
+int Scene06::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_vm->isFlag(kGFSceneFlag1)) {
+ _vm->playSound(0x11B, false);
+ _vm->clearFlag(kGFSceneFlag1);
}
return 0x101;
}
-void GnapEngine::scene06_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSGas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSLadder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- setHotspot(kHSHorse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- setHotspot(kHSWalkArea1, 0, 0, 200, 515);
- setHotspot(kHSWalkArea2, 200, 0, 285, 499);
- setHotspot(kHSWalkArea3, 688, 0, 800, 499);
- setHotspot(kHSWalkArea4, 475, 469, 800, 505);
- setHotspot(kHSWalkArea5, 0, 0, 800, 504);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFGasTaken))
- _hotspots[kHSLadder]._flags = SF_DISABLED;
- if (_cursorValue == 4) {
- _hotspots[kHSLadder]._flags = SF_DISABLED;
- _hotspots[kHSGas]._flags = SF_DISABLED;
+void Scene06::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSGas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSLadder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHSHorse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 200, 515);
+ _vm->setHotspot(kHSWalkArea2, 200, 0, 285, 499);
+ _vm->setHotspot(kHSWalkArea3, 688, 0, 800, 499);
+ _vm->setHotspot(kHSWalkArea4, 475, 469, 800, 505);
+ _vm->setHotspot(kHSWalkArea5, 0, 0, 800, 504);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFGasTaken))
+ _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
+ if (_vm->_cursorValue == 4) {
+ _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSGas]._flags = SF_DISABLED;
}
- _hotspotsCount = 11;
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene06_run() {
+void Scene06::run() {
bool triedDeviceOnGas = false;
- startSoundTimerC(7);
+ _vm->startSoundTimerC(7);
_s06_horseTurnedBack = false;
- _gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
_s06_currHorseSequenceId = 0xF1;
_s06_nextHorseSequenceId = -1;
- _gameSys->setAnimation(0xF1, 120, 2);
-
- _timers[4] = getRandom(40) + 25;
+ _vm->_gameSys->setAnimation(0xF1, 120, 2);
+ _vm->_timers[4] = _vm->getRandom(40) + 25;
- if (isFlag(kGFUnk04))
- _gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFGasTaken) && _cursorValue != 4)
- _gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFGasTaken) && _vm->_cursorValue != 4)
+ _vm->_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- initGnapPos(5, 12, kDirBottomRight);
- initPlatypusPos(6, 12, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(5, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
- gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 5, -1, -1, -1, -1);
+ _vm->testWalk(0, 5, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene06_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDisguise) {
- gnapUseDisguiseOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFKeysTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -162,33 +167,33 @@ void GnapEngine::scene06_run() {
break;
case kHSGas:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 5, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(5, 0);
+ _vm->playGnapScratchingHead(5, 0);
break;
case GRAB_CURSOR:
- if (isFlag(kGFUnk04)) {
- playGnapImpossible(0, 0);
+ if (_vm->isFlag(kGFUnk04)) {
+ _vm->playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
- _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASTryToGetGas;
+ _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASTryToGetGas;
} else {
triedDeviceOnGas = true;
- playGnapPullOutDeviceNonWorking(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y);
+ _vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- if (isFlag(kGFUnk04))
- playGnapImpossible(0, 0);
+ if (_vm->isFlag(kGFUnk04))
+ _vm->playGnapImpossible(0, 0);
else
- playGnapScratchingHead(5, 0);
+ _vm->playGnapScratchingHead(5, 0);
break;
}
}
@@ -196,26 +201,26 @@ void GnapEngine::scene06_run() {
break;
case kHSLadder:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 8, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 4);
+ _vm->playGnapScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- if (isFlag(kGFGasTaken))
- playGnapImpossible(0, 0);
+ if (_vm->isFlag(kGFGasTaken))
+ _vm->playGnapImpossible(0, 0);
else {
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, 0x107BB, 1);
- _gnapActionStatus = kASTryToClimbLadder;
- setFlag(kGFGasTaken);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASTryToClimbLadder;
+ _vm->setFlag(kGFGasTaken);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -223,37 +228,37 @@ void GnapEngine::scene06_run() {
break;
case kHSHorse:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemTwig && _s06_horseTurnedBack) {
- _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _gnapIdleFacing = kDirUpLeft;
- platypusWalkTo(6, 8, 1, 0x107C2, 1);
- _platypusFacing = kDirNone;
- _gnapActionStatus = kASUseTwigOnHorse;
- setGrabCursorSprite(-1);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 3, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig && _s06_horseTurnedBack) {
+ _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
+ _vm->_platypusFacing = kDirNone;
+ _vm->_gnapActionStatus = kASUseTwigOnHorse;
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(3, 2);
+ _vm->playGnapScratchingHead(3, 2);
break;
case TALK_CURSOR:
if (_s06_horseTurnedBack) {
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
- _gnapIdleFacing = kDirBottomLeft;
- _hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASTalkToHorse;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASTalkToHorse;
}
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -261,14 +266,14 @@ void GnapEngine::scene06_run() {
break;
case kHSExitOutsideBarn:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- if (_cursorValue == 1)
- _newSceneNum = 5;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 5;
else
- _newSceneNum = 35;
+ _vm->_newSceneNum = 35;
}
break;
@@ -277,34 +282,33 @@ void GnapEngine::scene06_run() {
case kHSWalkArea3:
case kHSWalkArea4:
case kHSWalkArea5:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
+
+ updateAnimations();
-
- scene06_updateAnimations();
-
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(40) + 25;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s06_nextHorseSequenceId == -1) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(40) + 25;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s06_nextHorseSequenceId == -1) {
if (_s06_horseTurnedBack) {
_s06_nextHorseSequenceId = 0xF5;
} else {
- switch (getRandom(5)) {
+ switch (_vm->getRandom(5)) {
case 0:
case 1:
case 2:
@@ -320,50 +324,47 @@ void GnapEngine::scene06_run() {
}
}
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene06_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene06_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene06::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASTryToGetGas:
- _gameSys->insertSequence(0xFC, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xFC;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xFC;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
break;
case kASTryToClimbLadder:
- _gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0xFD, _gnapId, 0);
- _gameSys->insertSequence(0xFD, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xFD;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASTryToClimbLadderDone;
+ _vm->_gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xFD, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xFD;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASTryToClimbLadderDone;
break;
case kASTryToClimbLadderDone:
- _gnapX = 6;
- _gnapY = 7;
- _gnapActionStatus = -1;
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gnapActionStatus = -1;
break;
case kASTalkToHorse:
_s06_nextHorseSequenceId = 0xF6;
@@ -372,75 +373,74 @@ void GnapEngine::scene06_updateAnimations() {
_s06_nextPlatSequenceId = 0xFB;
break;
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- if (_platypusSequenceId == 0xFA) {
- _gameSys->setAnimation(0, 0, 1);
- invAdd(kItemGas);
- setFlag(kGFGasTaken);
- _hotspots[kHSLadder]._flags = SF_DISABLED;
- setGrabCursorSprite(kItemGas);
- _platypusActionStatus = -1;
- _platX = 6;
- _platY = 8;
- _gameSys->insertSequence(0x107C1, _platypusId, 0, 0, kSeqNone, 0, 450 - _platGridX, 384 - _platGridY);
- _platypusSequenceId = 0x7C1;
- _platypusSequenceDatNum = 1;
- setFlag(kGFUnk04);
- _gnapActionStatus = -1;
- showCursor();
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusSequenceId == 0xFA) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->invAdd(kItemGas);
+ _vm->setFlag(kGFGasTaken);
+ _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
+ _vm->setGrabCursorSprite(kItemGas);
+ _vm->_platypusActionStatus = -1;
+ _vm->_platX = 6;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->setFlag(kGFUnk04);
+ _vm->_gnapActionStatus = -1;
+ _vm->showCursor();
}
if (_s06_nextPlatSequenceId == 0xFB) {
- _gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 1);
_s06_nextHorseSequenceId = 0xF2;
- _platypusActionStatus = 6;
+ _vm->_platypusActionStatus = 6;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s06_nextHorseSequenceId != -1) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s06_nextHorseSequenceId != -1) {
switch (_s06_nextHorseSequenceId) {
case 0xF2:
- setGrabCursorSprite(-1);
- hideCursor();
- _gameSys->setAnimation(0xFA, 256, 1);
- _gameSys->insertSequence(0xF2, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x100, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFB, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFA, 256, 0xFB, _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0xFA;
- _platypusSequenceDatNum = 0;
- _gameSys->insertSequence(0x107B7, _gnapId, 0x100, _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B7;
- _gnapSequenceDatNum = 1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0xFA, 256, 1);
+ _vm->_gameSys->insertSequence(0xF2, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFA, 256, 0xFB, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xFA;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B7;
+ _vm->_gnapSequenceDatNum = 1;
_s06_currHorseSequenceId = _s06_nextHorseSequenceId;
_s06_nextHorseSequenceId = -1;
_s06_nextPlatSequenceId = -1;
- invRemove(kItemTwig);
+ _vm->invRemove(kItemTwig);
break;
case 0xF6:
- _gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
- _gameSys->insertSequence(0xF6, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(0xF6, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_s06_horseTurnedBack = true;
_s06_currHorseSequenceId = _s06_nextHorseSequenceId;
_s06_nextHorseSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
default:
- _gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
- _gameSys->insertSequence(_s06_nextHorseSequenceId, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(_s06_nextHorseSequenceId, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_s06_currHorseSequenceId = _s06_nextHorseSequenceId;
_s06_nextHorseSequenceId = -1;
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene06.h b/engines/gnap/scenes/scene06.h
new file mode 100644
index 0000000..43f7f8c
--- /dev/null
+++ b/engines/gnap/scenes/scene06.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE06_H
+#define GNAP_SCENE06_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene06: public Scene {
+public:
+ Scene06(GnapEngine *vm);
+ ~Scene06() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+ bool _s06_horseTurnedBack;
+ int _s06_nextPlatSequenceId;
+ int _s06_nextHorseSequenceId;
+ int _s06_currHorseSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE05_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 8183419..f5d82ce 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -31,6 +31,7 @@
#include "gnap/scenes/scene03.h"
#include "gnap/scenes/scene04.h"
#include "gnap/scenes/scene05.h"
+#include "gnap/scenes/scene06.h"
namespace Gnap {
@@ -79,8 +80,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 6:
- backgroundId = scene06_init();
- scene06_updateHotspots();
+ _scene = new Scene06(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -260,8 +262,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 36:
- backgroundId = scene06_init();
- scene06_updateHotspots();
+ _scene = new Scene06(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -397,7 +400,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 6:
- scene06_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 4;
break;
@@ -550,7 +554,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 36:
- scene06_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 0f43db94a201864ea596e82660831f9ea634dd42
https://github.com/scummvm/scummvm/commit/0f43db94a201864ea596e82660831f9ea634dd42
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 7
Changed paths:
A engines/gnap/scenes/scene07.h
engines/gnap/gnap.h
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 43b2f6a..651d24e 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,12 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 7
- int scene07_init();
- void scene07_updateHotspots();
- void scene07_run();
- void scene07_updateAnimations();
-
// Scene 8
int _s08_nextDogSequenceId, _s08_currDogSequenceId;
int _s08_nextManSequenceId, _s08_currManSequenceId;
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index dab9051..c944082 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -24,6 +24,8 @@
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene07.h"
+
namespace Gnap {
enum {
@@ -41,88 +43,89 @@ enum {
kASLeaveScene = 1
};
-int GnapEngine::scene07_init() {
+Scene07::Scene07(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene07::init() {
return 0x92;
}
-void GnapEngine::scene07_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
- setHotspot(kHSDice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 325, 445);
- setHotspot(kHSWalkArea2, 325, 0, 799, 445, _isLeavingScene ? SF_WALKABLE : SF_NONE);
- setHotspot(kHSWalkArea3, 160, 0, 325, 495);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypus))
- _hotspots[kHSDice]._flags = SF_DISABLED;
- _hotspotsCount = 7;
+void Scene07::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
+ _vm->setHotspot(kHSDice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 325, 445);
+ _vm->setHotspot(kHSWalkArea2, 325, 0, 799, 445, _vm->_isLeavingScene ? SF_WALKABLE : SF_NONE);
+ _vm->setHotspot(kHSWalkArea3, 160, 0, 325, 495);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHSDice]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 7;
}
-void GnapEngine::scene07_run() {
- queueInsertDeviceIcon();
- _gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
+void Scene07::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
- invRemove(kItemGas);
- invRemove(kItemNeedle);
+ _vm->invRemove(kItemGas);
+ _vm->invRemove(kItemNeedle);
- if (!isFlag(kGFPlatypus))
- _gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFPlatypus))
+ _vm->_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (_prevSceneNum == 8) {
- initGnapPos(7, 7, kDirBottomLeft);
- initPlatypusPos(9, 7, kDirUnk4);
- endSceneInit();
+ if (_vm->_prevSceneNum == 8) {
+ _vm->initGnapPos(7, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 7, kDirUnk4);
+ _vm->endSceneInit();
} else {
- _gnapX = 6;
- _gnapY = 7;
- _gnapId = 140;
- _gnapSequenceId = 0x8F;
- _gnapSequenceDatNum = 0;
- _gnapIdleFacing = kDirBottomRight;
- _gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASWait;
- _platX = 3;
- _platY = 8;
- _platypusId = 160;
- _platypusSequenceId = 0x91;
- _platypusSequenceDatNum = 0;
- _platypusFacing = kDirNone;
- _gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ _vm->_gnapSequenceId = 0x8F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASWait;
+ _vm->_platX = 3;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceId = 0x91;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
}
- _timers[3] = 600;
- _timers[4] = getRandom(40) + 50;
-
- while (!_sceneDone) {
-
- if (!isSoundPlaying(0x10919))
- playSound(0x10919, true);
+ _vm->_timers[3] = 600;
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
- if (testWalk(0, 1, 8, 7, 6, 7))
- scene07_updateHotspots();
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ if (_vm->testWalk(0, 1, 8, 7, 6, 7))
+ updateHotspots();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSPlatypus:
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -130,53 +133,53 @@ void GnapEngine::scene07_run() {
break;
case kHSExitHouse:
- _isLeavingScene = true;
- if (_gnapX > 8)
- gnapWalkTo(_gnapX, 7, 0, 0x107AD, 1);
+ _vm->_isLeavingScene = true;
+ if (_vm->_gnapX > 8)
+ _vm->gnapWalkTo(_vm->_gnapX, 7, 0, 0x107AD, 1);
else
- gnapWalkTo(8, 7, 0, 0x107AD, 1);
- _gnapActionStatus = kASLeaveScene;
+ _vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kHSDice:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(4, 8, 3, 3);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 8, 3, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
break;
case GRAB_CURSOR:
- setFlag(kGFPlatypus);
- invAdd(kItemDice);
- scene07_updateHotspots();
- playGnapPullOutDevice(3, 3);
- _gameSys->setAnimation(0x8E, 1, 2);
- _gameSys->insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
- _gnapSequenceDatNum = 1;
+ _vm->setFlag(kGFPlatypus);
+ _vm->invAdd(kItemDice);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(3, 3);
+ _vm->_gameSys->setAnimation(0x8E, 1, 2);
+ _vm->_gameSys->insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_vm->getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = _vm->getGnapSequenceId(gskUseDevice, 0, 0);
+ _vm->_gnapSequenceDatNum = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene07_updateHotspots();
- _timers[4] = getRandom(40) + 50;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSWalkArea3:
@@ -184,91 +187,85 @@ void GnapEngine::scene07_run() {
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene07_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updateGnapIdleSequence();
- if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
- if (_timers[0]) {
- if (!_timers[1]) {
- _timers[1] = getRandom(20) + 30;
- int _gnapRandomValue = getRandom(20);
+ if (!_vm->_isLeavingScene) {
+ _vm->updateGnapIdleSequence();
+ if (_vm->_platypusActionStatus < 0 && _vm->_gnapActionStatus < 0) {
+ if (_vm->_timers[0]) {
+ if (!_vm->_timers[1]) {
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ int gnapRandomValue = _vm->getRandom(20);
// TODO Cleanup
- if (_platypusFacing != kDirNone) {
- if (_gnapRandomValue != 0 || _platypusSequenceId != 0x7CA) {
- if (_gnapRandomValue != 1 || _platypusSequenceId != 0x7CA) {
- if (_platY == 9)
- playPlatypusSequence(0x107CA);
+ if (_vm->_platypusFacing != kDirNone) {
+ if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7CA) {
+ if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7CA) {
+ if (_vm->_platY == 9)
+ _vm->playPlatypusSequence(0x107CA);
} else {
- playPlatypusSequence(0x10845);
+ _vm->playPlatypusSequence(0x10845);
}
} else {
- playPlatypusSequence(0x107CC);
+ _vm->playPlatypusSequence(0x107CC);
}
- } else if (_gnapRandomValue != 0 || _platypusSequenceId != 0x7C9) {
- if (_gnapRandomValue != 1 || _platypusSequenceId != 0x7C9) {
- if (_platY == 9)
- playPlatypusSequence(0x107C9);
+ } else if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7C9) {
+ if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7C9) {
+ if (_vm->_platY == 9)
+ _vm->playPlatypusSequence(0x107C9);
} else {
- playPlatypusSequence(0x10844);
+ _vm->playPlatypusSequence(0x10844);
}
} else {
- playPlatypusSequence(0x107CB);
+ _vm->playPlatypusSequence(0x107CB);
}
- _gameSys->setAnimation(_platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, 1);
+ _vm->_gameSys->setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
}
} else {
- _timers[0] = getRandom(75) + 75;
- platypusMakeRoom();
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
+ _vm->platypusMakeRoom();
}
} else {
- _timers[0] = 100;
- _timers[1] = 35;
+ _vm->_timers[0] = 100;
+ _vm->_timers[1] = 35;
}
- sceneXX_playRandomSound(4);
+ _vm->sceneXX_playRandomSound(4);
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene07_updateHotspots();
- _timers[4] = getRandom(40) + 50;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene07_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene07::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _newSceneNum = 8;
- _sceneDone = true;
+ _vm->_newSceneNum = 8;
+ _vm->_sceneDone = true;
break;
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->setAnimation(0, 0, 2);
- setGrabCursorSprite(kItemDice);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->setGrabCursorSprite(kItemDice);
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene07.h b/engines/gnap/scenes/scene07.h
new file mode 100644
index 0000000..08fdab2
--- /dev/null
+++ b/engines/gnap/scenes/scene07.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE07_H
+#define GNAP_SCENE07_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene07: public Scene {
+public:
+ Scene07(GnapEngine *vm);
+ ~Scene07() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+
+private:
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_SCENE05_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index f5d82ce..ba14f12 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -32,6 +32,7 @@
#include "gnap/scenes/scene04.h"
#include "gnap/scenes/scene05.h"
#include "gnap/scenes/scene06.h"
+#include "gnap/scenes/scene07.h"
namespace Gnap {
@@ -87,8 +88,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 7:
- backgroundId = scene07_init();
- scene07_updateHotspots();
+ _scene = new Scene07(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -406,7 +408,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 4;
break;
case 7:
- scene07_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 8;
break;
Commit: 84bd15a525aa630d12551eac259abc3e3b6ad217
https://github.com/scummvm/scummvm/commit/84bd15a525aa630d12551eac259abc3e3b6ad217
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 8, Add updateAnimationsCb to Scene
Changed paths:
A engines/gnap/scenes/scene08.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene00.h
engines/gnap/scenes/scene01.h
engines/gnap/scenes/scene02.h
engines/gnap/scenes/scene03.h
engines/gnap/scenes/scene04.h
engines/gnap/scenes/scene05.h
engines/gnap/scenes/scene06.h
engines/gnap/scenes/scene07.h
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scenecore.cpp
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index ddaa9f6..d0bbd8d 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1797,13 +1797,9 @@ void GnapEngine::gnapUseDeviceOnPlatypuss() {
void GnapEngine::doCallback(int callback) {
switch (callback) {
case 8:
- scene08_updateAnimationsCb();
- break;
case 10:
- scene10_updateAnimationsCb();
- break;
case 20:
- scene20_updateAnimationsCb();
+ _scene->updateAnimationsCb();
break;
}
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 651d24e..fbc97fe 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,15 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 8
- int _s08_nextDogSequenceId, _s08_currDogSequenceId;
- int _s08_nextManSequenceId, _s08_currManSequenceId;
- int scene08_init();
- void scene08_updateHotspots();
- void scene08_updateAnimationsCb();
- void scene08_run();
- void scene08_updateAnimations();
-
// Scene 9
int scene09_init();
void scene09_updateHotspots();
diff --git a/engines/gnap/scenes/scene00.h b/engines/gnap/scenes/scene00.h
index 7edcab4..d71722b 100644
--- a/engines/gnap/scenes/scene00.h
+++ b/engines/gnap/scenes/scene00.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots() {}
virtual void run();
virtual void updateAnimations() {}
+ virtual void updateAnimationsCb() {}
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene01.h b/engines/gnap/scenes/scene01.h
index e7d3a33..c6de546 100644
--- a/engines/gnap/scenes/scene01.h
+++ b/engines/gnap/scenes/scene01.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
int _s01_pigsIdCtr, _s01_smokeIdCtr;
diff --git a/engines/gnap/scenes/scene02.h b/engines/gnap/scenes/scene02.h
index 70f0591..d9c341c 100644
--- a/engines/gnap/scenes/scene02.h
+++ b/engines/gnap/scenes/scene02.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
int _s02_truckGrillCtr;
diff --git a/engines/gnap/scenes/scene03.h b/engines/gnap/scenes/scene03.h
index 2ccb1cd..e8a7ccf 100644
--- a/engines/gnap/scenes/scene03.h
+++ b/engines/gnap/scenes/scene03.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
bool _s03_platypusHypnotized;
diff --git a/engines/gnap/scenes/scene04.h b/engines/gnap/scenes/scene04.h
index 11a7eeb..519799b 100644
--- a/engines/gnap/scenes/scene04.h
+++ b/engines/gnap/scenes/scene04.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
bool _s04_triedWindow;
diff --git a/engines/gnap/scenes/scene05.h b/engines/gnap/scenes/scene05.h
index f79adc0..083abe5 100644
--- a/engines/gnap/scenes/scene05.h
+++ b/engines/gnap/scenes/scene05.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
int _s05_nextChickenSequenceId;
diff --git a/engines/gnap/scenes/scene06.h b/engines/gnap/scenes/scene06.h
index 43f7f8c..1f15be5 100644
--- a/engines/gnap/scenes/scene06.h
+++ b/engines/gnap/scenes/scene06.h
@@ -39,6 +39,7 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
private:
bool _s06_horseTurnedBack;
@@ -49,4 +50,4 @@ private:
} // End of namespace Gnap
-#endif // GNAP_SCENE05_H
+#endif // GNAP_SCENE06_H
diff --git a/engines/gnap/scenes/scene07.h b/engines/gnap/scenes/scene07.h
index 08fdab2..1afc1f8 100644
--- a/engines/gnap/scenes/scene07.h
+++ b/engines/gnap/scenes/scene07.h
@@ -39,10 +39,9 @@ public:
virtual void updateHotspots();
virtual void run();
virtual void updateAnimations();
-
-private:
+ virtual void updateAnimationsCb() {}
};
} // End of namespace Gnap
-#endif // GNAP_SCENE05_H
+#endif // GNAP_SCENE07_H
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index ca777aa..d13f763 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene08.h"
namespace Gnap {
@@ -51,123 +52,127 @@ enum {
kASPlatWithDog = 7
};
-int GnapEngine::scene08_init() {
+Scene08::Scene08(GnapEngine *vm) : Scene(vm) {
+ _s08_nextDogSequenceId = -1;
+ _s08_currDogSequenceId = -1;
+ _s08_nextManSequenceId = -1;
+ _s08_currManSequenceId = -1;
+}
+
+int Scene08::init() {
return 0x150;
}
-void GnapEngine::scene08_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
- setHotspot(kHSExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
- setHotspot(kHSMan, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSDoor, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSMeat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSToy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 290, 340, -1, -1);
- setHotspot(kHSWalkArea2, 0, 0, 799, 420);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFBarnPadlockOpen))
- _hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(kGFTruckFilledWithGas))
- _hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(kGFTruckKeysUsed))
- _hotspots[kHSToy]._flags = SF_WALKABLE | SF_DISABLED;
- _hotspotsCount = 11;
+void Scene08::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHSExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHSMan, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSDoor, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSMeat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSToy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 290, 340, -1, -1);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 799, 420);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_hotspots[kHSToy]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene08_updateAnimationsCb() {
- if (_gameSys->getAnimationStatus(3) == 2) {
- _gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+void Scene08::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s08_currDogSequenceId = _s08_nextDogSequenceId;
if ( _s08_nextDogSequenceId != 0x135 )
_s08_nextDogSequenceId = 0x134;
}
}
-void GnapEngine::scene08_run() {
-
- queueInsertDeviceIcon();
+void Scene08::run() {
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
_s08_currDogSequenceId = 0x135;
_s08_nextDogSequenceId = 0x135;
- _gameSys->setAnimation(0x135, 100, 3);
- _gameSys->insertSequence(_s08_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x135, 100, 3);
+ _vm->_gameSys->insertSequence(_s08_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
_s08_currManSequenceId = 0x140;
_s08_nextManSequenceId = -1;
- _gameSys->setAnimation(0x140, 100, 2);
- _gameSys->insertSequence(_s08_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _timers[4] = getRandom(50) + 75;
+ _vm->_gameSys->setAnimation(0x140, 100, 2);
+ _vm->_gameSys->insertSequence(_s08_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFBarnPadlockOpen))
- _gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
- if (!isFlag(kGFTruckFilledWithGas))
- _gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFTruckKeysUsed))
- _gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
- initGnapPos(-1, 8, kDirBottomRight);
- initPlatypusPos(-1, 7, kDirNone);
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 7, kDirNone);
- gnapWalkTo(1, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->endSceneInit();
- _timers[5] = getRandom(40) + 50;
+ _vm->gnapWalkTo(1, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
- while (!_sceneDone) {
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
- if (!isSoundPlaying(0x10919))
- playSound(0x10919, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene08_updateHotspots();
- _timers[4] = getRandom(50) + 75;
- _timers[5] = getRandom(40) + 50;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
}
break;
case kHSPlatypus:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFSceneFlag1))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapActionIdle(0x14D);
- gnapKissPlatypus(8);
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapKissPlatypus(8);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -176,164 +181,164 @@ void GnapEngine::scene08_run() {
break;
case kHSExitBackdoor:
- _isLeavingScene = true;
- gnapActionIdle(0x14D);
- gnapWalkTo(0, 6, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(0, 7, 1, 0x107CF, 1);
- _newSceneNum = 9;
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
+ _vm->_newSceneNum = 9;
break;
case kHSExitCrash:
- _isLeavingScene = true;
- gnapActionIdle(0x14D);
- gnapWalkTo(3, 9, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(4, 9, 1, 0x107C1, 1);
- _newSceneNum = 7;
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
+ _vm->_newSceneNum = 7;
break;
case kHSMan:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(6, 6, 7, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 6, 7, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapActionIdle(0x14D);
- gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _gnapActionStatus = kASLookMan;
- _gnapIdleFacing = kDirUpRight;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLookMan;
+ _vm->_gnapIdleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapActionIdle(0x14D);
- gnapWalkTo(8, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkMan;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkMan;
break;
case PLAT_CURSOR:
- gnapActionIdle(0x14D);
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(6, 6, 1, 0x107C2, 1);
- _platypusActionStatus = kASPlatWithMan;
- _platypusFacing = kDirNone;
- playGnapIdle(6, 6);
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kASPlatWithMan;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(6, 6);
break;
}
}
break;
case kHSDoor:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(4, 7, 5, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASGrabDog;
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 7, 5, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASGrabDog;
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASLookDog;
+ _vm->playGnapScratchingHead(6, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASLookDog;
break;
case GRAB_CURSOR:
- gnapWalkTo(4, 7, 0, 0x107BB, 1);
- _gnapActionStatus = kASGrabDog;
- _gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASGrabDog;
+ _vm->_gnapIdleFacing = kDirUpRight;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapActionIdle(0x14D);
- gnapWalkTo(4, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkDog;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkDog;
break;
case PLAT_CURSOR:
- setFlag(kGFSceneFlag1);
- gnapActionIdle(0x14D);
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(3, 7, 1, 0x107C2, 1);
- _platypusActionStatus = kASPlatWithDog;
- _platypusFacing = kDirNone;
- playGnapIdle(3, 7);
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kASPlatWithDog;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(3, 7);
break;
}
}
break;
case kHSMeat:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(6, 8, 5, 6);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 8, 5, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 7);
+ _vm->playGnapScratchingHead(6, 7);
break;
case GRAB_CURSOR:
if (_s08_currDogSequenceId == 0x135) {
- playGnapScratchingHead(6, 7);
+ _vm->playGnapScratchingHead(6, 7);
} else {
- gnapActionIdle(0x14D);
- playGnapPullOutDevice(6, 7);
- playGnapUseDevice(0, 0);
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(6, 7);
+ _vm->playGnapUseDevice(0, 0);
_s08_nextDogSequenceId = 0x149;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSBone:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(2, 7, 3, 6);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(2, 7, 3, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(3, 6);
+ _vm->playGnapScratchingHead(3, 6);
break;
case GRAB_CURSOR:
if (_s08_currDogSequenceId == 0x135) {
- playGnapScratchingHead(3, 6);
+ _vm->playGnapScratchingHead(3, 6);
} else {
- gnapActionIdle(0x14D);
- playGnapPullOutDevice(3, 6);
- playGnapUseDevice(0, 0);
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(3, 6);
+ _vm->playGnapUseDevice(0, 0);
_s08_nextDogSequenceId = 0x14A;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSToy:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(8, 7, 7, 6);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(8, 7, 7, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(7, 6);
+ _vm->playGnapScratchingHead(7, 6);
break;
case GRAB_CURSOR:
if (_s08_currDogSequenceId == 0x135) {
- playGnapScratchingHead(7, 6);
+ _vm->playGnapScratchingHead(7, 6);
} else {
- gnapActionIdle(0x14D);
- playGnapPullOutDevice(7, 6);
- playGnapUseDevice(0, 0);
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(7, 6);
+ _vm->playGnapUseDevice(0, 0);
_s08_nextDogSequenceId = 0x14B;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -341,30 +346,29 @@ void GnapEngine::scene08_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- gnapActionIdle(0x14D);
- gnapWalkTo(-1, 6, -1, -1, 1);
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(-1, 6, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapActionIdle(0x14D);
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene08_updateAnimations();
-
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(50) + 125;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s08_nextManSequenceId == -1 &&
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(50) + 125;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s08_nextManSequenceId == -1 &&
(_s08_currDogSequenceId == 0x134 || _s08_currDogSequenceId == 0x135)) {
- int _gnapRandomValue = getRandom(4);
+ int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
case 0:
_s08_nextManSequenceId = 0x138;
@@ -381,141 +385,140 @@ void GnapEngine::scene08_run() {
}
}
}
- sceneXX_playRandomSound(5);
+ _vm->sceneXX_playRandomSound(5);
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene08_updateHotspots();
- _timers[4] = getRandom(50) + 75;
- _timers[5] = getRandom(40) + 50;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene08_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene08::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASTalkMan:
_s08_nextManSequenceId = 0x13F;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASLookMan:
_s08_nextManSequenceId = 0x140;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASLookDog:
_s08_nextManSequenceId = 0x137;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabDog:
if (_s08_currDogSequenceId == 0x135)
_s08_nextDogSequenceId = 0x133;
else
_s08_nextDogSequenceId = 0x13C;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASTalkDog:
if (_s08_currDogSequenceId == 0x135)
_s08_nextDogSequenceId = 0x133;
else
_s08_nextDogSequenceId = 0x13C;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- switch (_platypusActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
case kASPlatWithDog:
_s08_nextDogSequenceId = 0x147;
break;
case kASPlatWithMan:
_s08_nextManSequenceId = 0x140;
- _platypusActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s08_nextManSequenceId != -1) {
- _gameSys->setAnimation(_s08_nextManSequenceId, 100, 2);
- _gameSys->insertSequence(_s08_nextManSequenceId, 100, _s08_currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s08_nextManSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_s08_nextManSequenceId, 100, 2);
+ _vm->_gameSys->insertSequence(_s08_nextManSequenceId, 100, _s08_currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s08_currManSequenceId = _s08_nextManSequenceId;
_s08_nextManSequenceId = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_s08_currDogSequenceId == 0x147)
- _platypusActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
if (_s08_currDogSequenceId == 0x149 || _s08_currDogSequenceId == 0x14A || _s08_currDogSequenceId == 0x14B) {
- if (getRandom(2) != 0)
+ if (_vm->getRandom(2) != 0)
_s08_nextManSequenceId = 0x13D;
else
_s08_nextManSequenceId = 0x13E;
} else if (_s08_currDogSequenceId == 0x133)
_s08_nextManSequenceId = 0x139;
if (_s08_nextDogSequenceId == 0x149 || _s08_nextDogSequenceId == 0x14A || _s08_nextDogSequenceId == 0x14B) {
- _gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
switch (_s08_nextDogSequenceId) {
case 0x149:
- setFlag(kGFBarnPadlockOpen);
- _hotspots[kHSMeat]._flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x144, 1, true);
+ _vm->setFlag(kGFBarnPadlockOpen);
+ _vm->_hotspots[kHSMeat]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x144, 1, true);
break;
case 0x14A:
- setFlag(kGFTruckFilledWithGas);
- _hotspots[kHSBone]._flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x145, 1, true);
+ _vm->setFlag(kGFTruckFilledWithGas);
+ _vm->_hotspots[kHSBone]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x145, 1, true);
break;
case 0x14B:
- setFlag(kGFTruckKeysUsed);
- _hotspots[kHSToy]._flags = SF_DISABLED | SF_WALKABLE;
- _gameSys->removeSequence(0x146, 1, true);
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_hotspots[kHSToy]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x146, 1, true);
break;
}
_s08_currDogSequenceId = _s08_nextDogSequenceId;
_s08_nextDogSequenceId = 0x134;
} else if (_s08_nextDogSequenceId == 0x147) {
- _gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x148, 160, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_s08_currDogSequenceId = _s08_nextDogSequenceId;
_s08_nextDogSequenceId = 0x134;
- _platX = 1;
- _platY = 8;
- _platypusId = 160;
- _platypusSequenceId = 0x148;
- _platypusFacing = kDirUnk4;
- _platypusSequenceDatNum = 0;
- if (_gnapX == 1 && _gnapY == 8)
- gnapWalkStep();
+ _vm->_platX = 1;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceId = 0x148;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_platypusSequenceDatNum = 0;
+ if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
+ _vm->gnapWalkStep();
} else if (_s08_nextDogSequenceId != -1) {
- _gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s08_currDogSequenceId = _s08_nextDogSequenceId;
if (_s08_nextDogSequenceId != 0x135)
_s08_nextDogSequenceId = 0x134;
if (_s08_currDogSequenceId == 0x133) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- _gameSys->insertSequence(0x14D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x14D;
- _gnapIdleFacing = kDirUpRight;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x14D;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
}
}
}
diff --git a/engines/gnap/scenes/scene08.h b/engines/gnap/scenes/scene08.h
new file mode 100644
index 0000000..ab538ce
--- /dev/null
+++ b/engines/gnap/scenes/scene08.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE08_H
+#define GNAP_SCENE08_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene08: public Scene {
+public:
+ Scene08(GnapEngine *vm);
+ ~Scene08() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _s08_nextDogSequenceId;
+ int _s08_currDogSequenceId;
+ int _s08_nextManSequenceId;
+ int _s08_currManSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE08_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index ba14f12..f93f995 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -33,6 +33,7 @@
#include "gnap/scenes/scene05.h"
#include "gnap/scenes/scene06.h"
#include "gnap/scenes/scene07.h"
+#include "gnap/scenes/scene08.h"
namespace Gnap {
@@ -95,8 +96,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 8:
- backgroundId = scene08_init();
- scene08_updateHotspots();
+ _scene = new Scene08(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -414,7 +416,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 8;
break;
case 8:
- scene08_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 9;
break;
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index a97bf5c..63f11b9 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -38,6 +38,7 @@ public:
virtual void updateHotspots() = 0;
virtual void run() = 0;
virtual void updateAnimations() = 0;
+ virtual void updateAnimationsCb() = 0;
protected:
GnapEngine *_vm;
Commit: 4e8119b262df0a933d67646f561ba630cb9cf746
https://github.com/scummvm/scummvm/commit/4e8119b262df0a933d67646f561ba630cb9cf746
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 9
Changed paths:
A engines/gnap/scenes/scene09.h
engines/gnap/gnap.h
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index fbc97fe..4331029 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,12 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 9
- int scene09_init();
- void scene09_updateHotspots();
- void scene09_run();
- void scene09_updateAnimations();
-
// Scene 10
int _s10_nextCookSequenceId, _s10_currCookSequenceId;
int scene10_init();
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 4183b34..ac0b1be 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene09.h"
namespace Gnap {
@@ -43,79 +44,79 @@ enum {
kASSearchTrashDone = 2
};
-int GnapEngine::scene09_init() {
+Scene09::Scene09(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene09::init() {
return 0x4E;
}
-void GnapEngine::scene09_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
- setHotspot(kHSExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
- setHotspot(kHSTrash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 799, 400);
- setHotspot(kHSWalkArea2, 0, 0, 630, 450);
- setHotspot(kHSWalkArea2, 0, 0, 175, 495);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 8;
+void Scene09::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
+ _vm->setHotspot(kHSExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHSTrash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 799, 400);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 630, 450);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 175, 495);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 8;
}
-void GnapEngine::scene09_run() {
+void Scene09::run() {
+ _vm->queueInsertDeviceIcon();
- queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_prevSceneNum == 8) {
- initGnapPos(11, 8, kDirBottomLeft);
- initPlatypusPos(12, 7, kDirUnk4);
- endSceneInit();
- gnapWalkTo(9, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ if (_vm->_prevSceneNum == 8) {
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- initGnapPos(4, 7, kDirBottomRight);
- initPlatypusPos(5, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->endSceneInit();
}
- _timers[4] = getRandom(150) + 50;
- _timers[5] = getRandom(40) + 50;
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
- while (!_sceneDone) {
-
- if (!isSoundPlaying(0x10919))
- playSound(0x10919, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene09_updateHotspots();
- _timers[4] = getRandom(150) + 50;
- _timers[5] = getRandom(40) + 50;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
}
break;
case kHSPlatypus:
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -123,38 +124,38 @@ void GnapEngine::scene09_run() {
break;
case kHSExitKitchen:
- _isLeavingScene = true;
- _newSceneNum = 10;
- gnapWalkTo(4, 7, 0, 0x107BF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _platypusFacing = kDirUnk4;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 10;
+ _vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->_platypusFacing = kDirUnk4;
break;
case kHSExitHouse:
- _isLeavingScene = true;
- _newSceneNum = 8;
- gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(10, -1, -1, 0x107CD, 1);
- _platypusFacing = kDirUnk4;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 8;
+ _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
+ _vm->_platypusFacing = kDirUnk4;
break;
case kHSTrash:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(9, 6, 8, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(9, 6, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 3);
+ _vm->playGnapScratchingHead(8, 3);
break;
case GRAB_CURSOR:
- _gnapActionStatus = kASSearchTrash;
- gnapWalkTo(9, 6, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASSearchTrash;
+ _vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -163,79 +164,74 @@ void GnapEngine::scene09_run() {
case kHSWalkArea1:
case kHSWalkArea2:
case kHSWalkArea3:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene09_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene && _gnapActionStatus != 1 && _gnapActionStatus != 2) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(150) + 100;
- if (_timers[4] & 1)
- _gameSys->insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(150) + 100;
+ if (_vm->_timers[4] & 1)
+ _vm->_gameSys->insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
}
- sceneXX_playRandomSound(5);
+ _vm->sceneXX_playRandomSound(5);
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene09_updateHotspots();
- _timers[4] = getRandom(150) + 50;
- _timers[5] = getRandom(40) + 50;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene09_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene09::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASSearchTrash:
- _gameSys->setAnimation(0x4C, 120, 0);
- _gameSys->insertSequence(0x4C, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x4B, 2, true);
- _gnapSequenceId = 0x4C;
- _gnapId = 120;
- _gnapIdleFacing = kDirUpLeft;
- _gnapSequenceDatNum = 0;
- _gnapX = 9;
- _gnapY = 6;
- _gnapActionStatus = kASSearchTrashDone;
+ _vm->_gameSys->setAnimation(0x4C, 120, 0);
+ _vm->_gameSys->insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x4B, 2, true);
+ _vm->_gnapSequenceId = 0x4C;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 9;
+ _vm->_gnapY = 6;
+ _vm->_gnapActionStatus = kASSearchTrashDone;
break;
case kASSearchTrashDone:
- _gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
- _timers[2] = 360;
- _timers[4] = getRandom(150) + 100;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[2] = 360;
+ _vm->_timers[4] = _vm->getRandom(150) + 100;
+ _vm->_gnapActionStatus = -1;
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene09.h b/engines/gnap/scenes/scene09.h
new file mode 100644
index 0000000..c914d16
--- /dev/null
+++ b/engines/gnap/scenes/scene09.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE09_H
+#define GNAP_SCENE09_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene09: public Scene {
+public:
+ Scene09(GnapEngine *vm);
+ ~Scene09() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE09_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index f93f995..3c0c89e 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -34,6 +34,7 @@
#include "gnap/scenes/scene06.h"
#include "gnap/scenes/scene07.h"
#include "gnap/scenes/scene08.h"
+#include "gnap/scenes/scene09.h"
namespace Gnap {
@@ -103,8 +104,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 9:
- backgroundId = scene09_init();
- scene09_updateHotspots();
+ _scene = new Scene09(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -422,7 +424,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 9;
break;
case 9:
- scene09_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 10;
break;
Commit: 076d23fdb6494285cb54b6cbb0c0cd27d085a0db
https://github.com/scummvm/scummvm/commit/076d23fdb6494285cb54b6cbb0c0cd27d085a0db
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 10
Changed paths:
A engines/gnap/scenes/scene10.h
engines/gnap/gnap.h
engines/gnap/scenes/scene10.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4331029..4b95dbc 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,14 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 10
- int _s10_nextCookSequenceId, _s10_currCookSequenceId;
- int scene10_init();
- void scene10_updateHotspots();
- void scene10_run();
- void scene10_updateAnimations();
- void scene10_updateAnimationsCb();
-
// Scene 11
int _s11_billardBallCtr;
int _s11_nextHookGuySequenceId, _s11_currHookGuySequenceId;
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
index 311045d..9f987ba 100644
--- a/engines/gnap/scenes/scene10.cpp
+++ b/engines/gnap/scenes/scene10.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene10.h"
namespace Gnap {
@@ -47,95 +48,97 @@ enum {
kASPlatWithBox = 4
};
-int GnapEngine::scene10_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- return 0x10F;
+Scene10::Scene10(GnapEngine *vm) : Scene(vm) {
+ _s10_nextCookSequenceId = -1;
+ _s10_currCookSequenceId = -1;
}
-void GnapEngine::scene10_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitBar, 0, 75, 85, 455, SF_EXIT_NW_CURSOR);
- setHotspot(kHSExitBackdoor, 75, 590, 500, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
- setHotspot(kHSCook, 370, 205, 495, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSTongs, 250, 290, 350, 337, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBox, 510, 275, 565, 330, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSOven, 690, 280, 799, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 59, 0, 495, 460);
- setHotspot(kHSWalkArea2, 495, 0, 650, 420);
- setHotspot(kHSWalkArea3, 651, 0, 725, 400);
- setHotspot(kHSWalkArea4, 725, 0, 799, 441);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 12;
+int Scene10::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ return 0x10F;
}
-void GnapEngine::scene10_run() {
+void Scene10::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitBar, 0, 75, 85, 455, SF_EXIT_NW_CURSOR);
+ _vm->setHotspot(kHSExitBackdoor, 75, 590, 500, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHSCook, 370, 205, 495, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSTongs, 250, 290, 350, 337, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBox, 510, 275, 565, 330, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSOven, 690, 280, 799, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 59, 0, 495, 460);
+ _vm->setHotspot(kHSWalkArea2, 495, 0, 650, 420);
+ _vm->setHotspot(kHSWalkArea3, 651, 0, 725, 400);
+ _vm->setHotspot(kHSWalkArea4, 725, 0, 799, 441);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 12;
+}
+void Scene10::run() {
_s10_currCookSequenceId = 0x103;
- _gameSys->setAnimation(0x103, 100, 2);
- _gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x103, 100, 2);
+ _vm->_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
_s10_nextCookSequenceId = 0x106;
- if (!isFlag(kGFMudTaken))
- _gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFMudTaken))
+ _vm->_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum == 9) {
- initGnapPos(11, 8, kDirBottomLeft);
- initPlatypusPos(12, 7, kDirUnk4);
- endSceneInit();
- gnapWalkTo(9, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ if (_vm->_prevSceneNum == 9) {
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- initGnapPos(-1, 7, kDirBottomRight);
- initPlatypusPos(-2, 8, kDirNone);
- endSceneInit();
- gnapWalkTo(1, 7, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(1, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
- _timers[4] = getRandom(80) + 150;
- _timers[5] = getRandom(100) + 100;
+ _vm->_timers[4] = _vm->getRandom(80) + 150;
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1091E))
+ _vm->playSound(0x1091E, true);
- if (!isSoundPlaying(0x1091E))
- playSound(0x1091E, true);
+ if (!_vm->isSoundPlaying(0x1091A))
+ _vm->playSound(0x1091A, true);
- if (!isSoundPlaying(0x1091A))
- playSound(0x1091A, true);
+ _vm->updateMouseCursor();
- updateMouseCursor();
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->updateCursorByHotspot();
- updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSPlatypus:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFMudTaken))
- playGnapMoan1(_platX, _platY);
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
else
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(10);
+ _vm->gnapKissPlatypus(10);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -144,86 +147,86 @@ void GnapEngine::scene10_run() {
break;
case kHSExitBar:
- _isLeavingScene = true;
- gnapActionIdle(0x10C);
- gnapWalkTo(0, 7, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(0, 7, -1, 0x107CF, 1);
- _newSceneNum = 11;
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(0, 7, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 11;
break;
case kHSExitBackdoor:
- _isLeavingScene = true;
- gnapActionIdle(0x10C);
- gnapWalkTo(2, 9, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(3, 9, -1, 0x107C7, 1);
- _newSceneNum = 9;
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(2, 9, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 9;
break;
case kHSCook:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(4, 8, 6, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASAnnoyCook;
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 8, 6, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASAnnoyCook;
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 0);
+ _vm->playGnapScratchingHead(6, 0);
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
- _gnapIdleFacing = kDirBottomRight;
+ _vm->playGnapImpossible(0, 0);
+ _vm->_gnapIdleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapActionIdle(0x10C);
- gnapWalkTo(4, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASAnnoyCook;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASAnnoyCook;
break;
case PLAT_CURSOR:
- gnapActionIdle(0x10C);
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(4, 6, -1, -1, 1);
- gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _gnapActionStatus = kASAnnoyCook;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(4, 6, -1, -1, 1);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASAnnoyCook;
break;
}
}
break;
case kHSTongs:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(3, 7, 4, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 4, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFMudTaken))
- playGnapMoan2(-1, -1);
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
else
- playGnapScratchingHead(4, 3);
+ _vm->playGnapScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- if (isFlag(kGFMudTaken))
- playGnapMoan2(-1, -1);
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
else {
- gnapActionIdle(0x10C);
- gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _gnapActionStatus = kASAnnoyCook;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASAnnoyCook;
}
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(kGFMudTaken))
- playGnapMoan2(-1, -1);
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
else {
- gnapActionIdle(0x10C);
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(3, 7, -1, -1, 1);
- gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _gnapActionStatus = kASAnnoyCook;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, -1, -1, 1);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASAnnoyCook;
}
break;
}
@@ -231,34 +234,34 @@ void GnapEngine::scene10_run() {
break;
case kHSBox:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(7, 6, 6, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 6, 6, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(7, 3);
+ _vm->playGnapScratchingHead(7, 3);
break;
case GRAB_CURSOR:
- gnapActionIdle(0x10C);
- gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _gnapActionStatus = kASAnnoyCook;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASAnnoyCook;
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(kGFMudTaken))
- playGnapMoan2(-1, -1);
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
else {
- invAdd(kItemTongs);
- setFlag(kGFMudTaken);
- gnapActionIdle(0x10C);
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(7, 6, 1, 0x107D2, 1);
- _platypusActionStatus = kASPlatWithBox;
- _platypusFacing = kDirUnk4;
- _largeSprite = _gameSys->createSurface(0xC3);
- playGnapIdle(7, 6);
+ _vm->invAdd(kItemTongs);
+ _vm->setFlag(kGFMudTaken);
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
+ _vm->_platypusActionStatus = kASPlatWithBox;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0xC3);
+ _vm->playGnapIdle(7, 6);
}
break;
}
@@ -266,28 +269,28 @@ void GnapEngine::scene10_run() {
break;
case kHSOven:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(9, 6, 10, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(9, 6, 10, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapSequence(getGnapSequenceId(gskDeflect, 10, 5) | 0x10000);
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 10, 5) | 0x10000);
break;
case GRAB_CURSOR:
- gnapActionIdle(0x10C);
- gnapWalkTo(9, 6, 0, 0x107BB, 1);
- _gameSys->insertSequence(0x10E, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x10E;
- _gnapId = 120;
- _gnapIdleFacing = kDirUpRight;
- _gnapSequenceDatNum = 0;
- _gnapX = 9;
- _gnapY = 6;
- _timers[2] = 360;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
+ _vm->_gameSys->insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x10E;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 9;
+ _vm->_gnapY = 6;
+ _vm->_timers[2] = 360;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -297,39 +300,38 @@ void GnapEngine::scene10_run() {
case kHSWalkArea2:
case kHSWalkArea3:
case kHSWalkArea4:
- gnapActionIdle(0x10C);
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene10_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
default:
- if (_mouseClickState._left) {
- gnapActionIdle(0x10C);
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene10_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(80) + 150;
- playSound(0x12B, false);
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(80) + 150;
+ _vm->playSound(0x12B, false);
}
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 100;
- int _gnapRandomValue = getRandom(4);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(4);
if (_gnapRandomValue) {
int sequenceId;
if (_gnapRandomValue == 1) {
@@ -339,32 +341,29 @@ void GnapEngine::scene10_run() {
} else {
sequenceId = 0x8A7;
}
- _gameSys->insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
}
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene10_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene10_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene10::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASAnnoyCook:
_s10_nextCookSequenceId = 0x105;
@@ -372,57 +371,57 @@ void GnapEngine::scene10_updateAnimations() {
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- switch (_platypusActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
case kASPlatWithBox:
_s10_nextCookSequenceId = 0x109;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s10_nextCookSequenceId != -1) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s10_nextCookSequenceId != -1) {
switch (_s10_nextCookSequenceId) {
case 0x109:
- _platX = 4;
- _platY = 8;
- _gameSys->insertSequence(0x109, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x107C9, 160,
- _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
- kSeqSyncWait, getSequenceTotalDuration(0x109) + getSequenceTotalDuration(0x10A) + getSequenceTotalDuration(0x10843),
- 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _gameSys->removeSequence(0x107, 100, true);
+ _vm->_platX = 4;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x109, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107C9, 160,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
+ 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->removeSequence(0x107, 100, true);
_s10_currCookSequenceId = 0x109;
_s10_nextCookSequenceId = 0x843;
- _platypusSequenceId = 0x7C9;
- _platypusId = 160;
- _platypusFacing = kDirNone;
- _platypusSequenceDatNum = 1;
+ _vm->_platypusSequenceId = 0x7C9;
+ _vm->_platypusId = 160;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_platypusSequenceDatNum = 1;
break;
case 0x843:
- hideCursor();
- _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- _gameSys->insertSequence(0x10843, 301, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->hideCursor();
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->insertSequence(0x10843, 301, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s10_currCookSequenceId = 0x843;
_s10_nextCookSequenceId = 0x10A;
break;
case 0x10A:
- _gameSys->insertSequence(_s10_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
_s10_currCookSequenceId = _s10_nextCookSequenceId;
_s10_nextCookSequenceId = 0x104;
- showCursor();
- _gameSys->removeSpriteDrawItem(_largeSprite, 300);
- delayTicksCursor(5);
- deleteSurface(&_largeSprite);
- setGrabCursorSprite(kItemTongs);
- if (_platypusActionStatus == kASPlatWithBox)
- _platypusActionStatus = -1;
- if (_gnapX == 4 && _gnapY == 8)
- gnapWalkStep();
+ _vm->showCursor();
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->delayTicksCursor(5);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->setGrabCursorSprite(kItemTongs);
+ if (_vm->_platypusActionStatus == kASPlatWithBox)
+ _vm->_platypusActionStatus = -1;
+ if (_vm->_gnapX == 4 && _vm->_gnapY == 8)
+ _vm->gnapWalkStep();
break;
default:
- _gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s10_currCookSequenceId = _s10_nextCookSequenceId;
break;
}
@@ -430,8 +429,8 @@ void GnapEngine::scene10_updateAnimations() {
switch (_s10_currCookSequenceId) {
case 0x106: {
// TODO: Refactor into a if + a switch
- int rnd = getRandom(7);
- if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
+ int rnd = _vm->getRandom(7);
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
@@ -439,31 +438,31 @@ void GnapEngine::scene10_updateAnimations() {
_s10_nextCookSequenceId = 0x103;
else if (rnd == 2) {
_s10_nextCookSequenceId = 0x106;
- _gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
} else
_s10_nextCookSequenceId = 0x106;
}
break;
case 0x103:
- if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (getRandom(7) == 0)
+ else if (_vm->getRandom(7) == 0)
_s10_nextCookSequenceId = 0x104;
else
_s10_nextCookSequenceId = 0x106;
break;
case 0x104:
- if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
- else if (getRandom(7) == 0)
+ else if (_vm->getRandom(7) == 0)
_s10_nextCookSequenceId = 0x103;
else
_s10_nextCookSequenceId = 0x106;
break;
case 0x105: {
// TODO: Refactor into a if + a switch
- int rnd = getRandom(7);
- if (_gnapActionStatus >= 0 || _platypusActionStatus >= 0)
+ int rnd = _vm->getRandom(7);
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
_s10_nextCookSequenceId = 0x106;
else if (rnd == 0)
_s10_nextCookSequenceId = 0x104;
@@ -471,28 +470,28 @@ void GnapEngine::scene10_updateAnimations() {
_s10_nextCookSequenceId = 0x103;
else
_s10_nextCookSequenceId = 0x106;
- _timers[2] = getRandom(30) + 20;
- _timers[3] = 300;
- _gameSys->insertSequence(0x10C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x10C;
- _gnapIdleFacing = kDirUpRight;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
- _platypusActionStatus = -1;
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 300;
+ _vm->_gameSys->insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x10C;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
}
break;
}
if (_s10_currCookSequenceId == 0x843)
- _gameSys->setAnimation(_s10_currCookSequenceId | 0x10000, 301, 2);
+ _vm->_gameSys->setAnimation(_s10_currCookSequenceId | 0x10000, 301, 2);
else
- _gameSys->setAnimation(_s10_currCookSequenceId, 100, 2);
+ _vm->_gameSys->setAnimation(_s10_currCookSequenceId, 100, 2);
}
}
-void GnapEngine::scene10_updateAnimationsCb() {
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->setAnimation(_s10_nextCookSequenceId, 100, 2);
- _gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+void Scene10::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(_s10_nextCookSequenceId, 100, 2);
+ _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_s10_currCookSequenceId = _s10_nextCookSequenceId;
_s10_nextCookSequenceId = 0x106;
}
diff --git a/engines/gnap/scenes/scene10.h b/engines/gnap/scenes/scene10.h
new file mode 100644
index 0000000..987c059
--- /dev/null
+++ b/engines/gnap/scenes/scene10.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE10_H
+#define GNAP_SCENE10_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene10: public Scene {
+public:
+ Scene10(GnapEngine *vm);
+ ~Scene10() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _s10_nextCookSequenceId;
+ int _s10_currCookSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE10_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 3c0c89e..508c163 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -35,6 +35,7 @@
#include "gnap/scenes/scene07.h"
#include "gnap/scenes/scene08.h"
#include "gnap/scenes/scene09.h"
+#include "gnap/scenes/scene10.h"
namespace Gnap {
@@ -111,8 +112,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 10:
- backgroundId = scene10_init();
- scene10_updateHotspots();
+ _scene = new Scene10(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -430,7 +432,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 10;
break;
case 10:
- scene10_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 11;
break;
Commit: b535ef3abe397d4ce8457fb95e3a8ab89d94ae9e
https://github.com/scummvm/scummvm/commit/b535ef3abe397d4ce8457fb95e3a8ab89d94ae9e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 11
Changed paths:
A engines/gnap/scenes/scene11.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene11.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d0bbd8d..daf8308 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2018,9 +2018,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 11
- _s11_billardBallCtr = 0;
-
// Scene 13
_s13_backToiletCtr = -1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4b95dbc..939212a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,15 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 11
- int _s11_billardBallCtr;
- int _s11_nextHookGuySequenceId, _s11_currHookGuySequenceId;
- int _s11_nextGoggleGuySequenceId, _s11_currGoggleGuySequenceId;
- int scene11_init();
- void scene11_updateHotspots();
- void scene11_run();
- void scene11_updateAnimations();
-
// Scene 12
int _s12_nextBeardGuySequenceId, _s12_currBeardGuySequenceId;
int _s12_nextToothGuySequenceId, _s12_currToothGuySequenceId;
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
index 35a575c..ae264dc 100644
--- a/engines/gnap/scenes/scene11.cpp
+++ b/engines/gnap/scenes/scene11.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene11.h"
namespace Gnap {
@@ -52,118 +53,122 @@ enum {
kASGrabBillardBall = 11
};
-int GnapEngine::scene11_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 3);
- _gameSys->setAnimation(0, 0, 2);
- if (_prevSceneNum == 10 || _prevSceneNum == 13) {
- playSound(0x108EC, false);
- playSound(0x10928, false);
+Scene11::Scene11(GnapEngine *vm) : Scene(vm) {
+ _s11_billardBallCtr = 0;
+ _s11_nextHookGuySequenceId = -1;
+ _s11_currHookGuySequenceId = -1;
+ _s11_nextGoggleGuySequenceId = -1;
+ _s11_currGoggleGuySequenceId = -1;
+}
+
+int Scene11::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_vm->_prevSceneNum == 10 || _vm->_prevSceneNum == 13) {
+ _vm->playSound(0x108EC, false);
+ _vm->playSound(0x10928, false);
}
return 0x209;
}
-void GnapEngine::scene11_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitKitchen, 420, 140, 520, 345, SF_EXIT_U_CURSOR);
- setHotspot(kHSExitToilet, 666, 130, 740, 364, SF_EXIT_R_CURSOR);
- setHotspot(kHSExitLeft, 0, 350, 10, 599, SF_EXIT_L_CURSOR | SF_WALKABLE);
- setHotspot(kHSGoggleGuy, 90, 185, 185, 340, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSHookGuy, 210, 240, 340, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBillard, 640, 475, 700, 530, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 365, 453);
- setHotspot(kHSWalkArea2, 0, 0, 629, 353);
- setHotspot(kHSWalkArea3, 629, 0, 799, 364);
- setHotspot(kHSWalkArea4, 735, 0, 799, 397);
- setHotspot(kHSWalkArea5, 510, 540, 799, 599);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 13;
+void Scene11::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitKitchen, 420, 140, 520, 345, SF_EXIT_U_CURSOR);
+ _vm->setHotspot(kHSExitToilet, 666, 130, 740, 364, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHSExitLeft, 0, 350, 10, 599, SF_EXIT_L_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHSGoggleGuy, 90, 185, 185, 340, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSHookGuy, 210, 240, 340, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBillard, 640, 475, 700, 530, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 365, 453);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 629, 353);
+ _vm->setHotspot(kHSWalkArea3, 629, 0, 799, 364);
+ _vm->setHotspot(kHSWalkArea4, 735, 0, 799, 397);
+ _vm->setHotspot(kHSWalkArea5, 510, 540, 799, 599);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 13;
}
-void GnapEngine::scene11_run() {
+void Scene11::run() {
bool flag = true;
- _timers[7] = 50;
-
- _hotspots[kHSBillard]._flags |= SF_DISABLED;
+ _vm->_timers[7] = 50;
+ _vm->_hotspots[kHSBillard]._flags |= SF_DISABLED;
_s11_currGoggleGuySequenceId = 0x1F9;
-
_s11_currHookGuySequenceId = 0x201;
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 13:
- initGnapPos(8, 5, kDirBottomLeft);
- initPlatypusPos(9, 6, kDirUnk4);
+ _vm->initGnapPos(8, 5, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 6, kDirUnk4);
break;
case 47:
- initGnapPos(8, 5, kDirBottomLeft);
- initPlatypusPos(9, 5, kDirUnk4);
+ _vm->initGnapPos(8, 5, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 5, kDirUnk4);
_s11_currGoggleGuySequenceId = 0x1FA;
_s11_currHookGuySequenceId = 0x1FF;
- _timers[7] = 180;
+ _vm->_timers[7] = 180;
break;
case 12:
- initGnapPos(-1, 9, kDirBottomRight);
- initPlatypusPos(-2, 8, kDirNone);
+ _vm->initGnapPos(-1, 9, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
break;
default:
- initGnapPos(6, 6, kDirBottomLeft);
- initPlatypusPos(6, 5, kDirUnk4);
+ _vm->initGnapPos(6, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(6, 5, kDirUnk4);
break;
}
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(_s11_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s11_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
_s11_nextHookGuySequenceId = -1;
- _gameSys->setAnimation(_s11_currHookGuySequenceId, 120, 3);
- _gameSys->insertSequence(_s11_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_currHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(_s11_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
_s11_nextGoggleGuySequenceId = -1;
- _gameSys->setAnimation(_s11_currGoggleGuySequenceId, 121, 2);
+ _vm->_gameSys->setAnimation(_s11_currGoggleGuySequenceId, 121, 2);
- _timers[5] = getRandom(100) + 75;
- _timers[4] = getRandom(40) + 20;
- _timers[6] = getRandom(100) + 100;
- endSceneInit();
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_timers[6] = _vm->getRandom(100) + 100;
+ _vm->endSceneInit();
- if (_prevSceneNum == 12) {
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 12) {
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
- _gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
+ _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSPlatypus:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -172,50 +177,50 @@ void GnapEngine::scene11_run() {
break;
case kHSExitKitchen:
- _isLeavingScene = true;
- gnapWalkTo(6, 5, 0, 0x107BF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(6, 6, -1, -1, 1);
- _newSceneNum = 10;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(6, 5, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(6, 6, -1, -1, 1);
+ _vm->_newSceneNum = 10;
break;
case kHSExitToilet:
- _isLeavingScene = true;
- gnapWalkTo(8, 5, 0, 0x107BF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(8, 6, -1, -1, 1);
- _newSceneNum = 13;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(8, 5, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(8, 6, -1, -1, 1);
+ _vm->_newSceneNum = 13;
break;
case kHSExitLeft:
- _isLeavingScene = true;
- gnapWalkTo(-1, 8, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(-1, 9, -1, 0x107CF, 1);
- _newSceneNum = 12;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 12;
break;
case kHSGoggleGuy:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemMagazine) {
- gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _gnapActionStatus = kASShowMagazineToGoggleGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(3, 7, 2, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASShowMagazineToGoggleGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 2, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 6);
+ _vm->playGnapScratchingHead(1, 6);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(3, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkGoggleGuy;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkGoggleGuy;
break;
}
}
@@ -223,28 +228,28 @@ void GnapEngine::scene11_run() {
break;
case kHSHookGuy:
- if (_gnapActionStatus < 0) {
- _gnapIdleFacing = kDirUpRight;
- if (_grabCursorSpriteIndex >= 0) {
- gnapWalkTo(5, 6, 0, 0x107BC, 9);
- _gnapActionStatus = kASShowItemToHookGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 4, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
+ _vm->_gnapActionStatus = kASShowItemToHookGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapSequence(getGnapSequenceId(gskDeflect, 3, 6) | 0x10000);
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 3, 6) | 0x10000);
break;
case GRAB_CURSOR:
- gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _gnapActionStatus = kASGrabHookGuy;
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASGrabHookGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirBottomLeft;
- gnapWalkTo(5, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkHookGuy;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkHookGuy;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -252,21 +257,21 @@ void GnapEngine::scene11_run() {
break;
case kHSBillard:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(9, 8);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(9, 8);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(9, 8);
+ _vm->playGnapScratchingHead(9, 8);
break;
case GRAB_CURSOR:
- gnapWalkTo(9, 8, 0, 0x107BA, 1);
- _gnapActionStatus = kASGrabBillardBall;
+ _vm->gnapWalkTo(9, 8, 0, 0x107BA, 1);
+ _vm->_gnapActionStatus = kASGrabBillardBall;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(9, 8);
+ _vm->playGnapImpossible(9, 8);
break;
}
}
@@ -278,50 +283,50 @@ void GnapEngine::scene11_run() {
case kHSWalkArea3:
case kHSWalkArea4:
case kHSWalkArea5:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene11_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene11_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- if (flag && !_timers[7]) {
+ if (!_vm->_isLeavingScene) {
+ if (flag && !_vm->_timers[7]) {
flag = false;
- _gameSys->setAnimation(0x207, 257, 4);
- _gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x207, 257, 4);
+ _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
- platypusSub426234();
- updateGnapIdleSequence2();
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 75;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
- if (getRandom(2))
+ _vm->platypusSub426234();
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
+ if (_vm->getRandom(2))
_s11_nextGoggleGuySequenceId = 0x1F6;
else
_s11_nextGoggleGuySequenceId = 0x1F9;
}
}
- if (!_timers[4]) {
- _timers[4] = getRandom(40) + 20;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
if (_s11_currHookGuySequenceId == 0x201) {
- switch (getRandom(7)) {
+ switch (_vm->getRandom(7)) {
case 0:
_s11_nextHookGuySequenceId = 0x200;
break;
@@ -340,47 +345,44 @@ void GnapEngine::scene11_run() {
}
}
}
- if (!_timers[6]) {
- _timers[6] = getRandom(100) + 100;
- int _gnapRandomValue = getRandom(3);
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(3);
switch (_gnapRandomValue) {
case 0:
- _gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene11_updateHotspots();
- _timers[5] = getRandom(50) + 75;
- _timers[4] = getRandom(40) + 20;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(50) + 75;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene11_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- if (_gnapActionStatus != kASGrabBillardBall)
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene11::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (_vm->_gnapActionStatus != kASGrabBillardBall)
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASShowMagazineToGoggleGuy:
_s11_nextGoggleGuySequenceId = 0x1F7;
@@ -398,20 +400,20 @@ void GnapEngine::scene11_updateAnimations() {
_s11_nextHookGuySequenceId = 0x206;
break;
case kASGrabBillardBall:
- if (_gameSys->getAnimationStatus(2) == 2 && _gameSys->getAnimationStatus(3) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- _gameSys->insertSequence(0x1F4, 255, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x1F4;
- _gnapId = 255;
- _gnapSequenceDatNum = 0;
- _gameSys->removeSequence(0x207, 257, true);
- _gameSys->removeSequence(0x208, 256, true);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x1F4;
+ _vm->_gnapId = 255;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->removeSequence(0x207, 257, true);
+ _vm->_gameSys->removeSequence(0x208, 256, true);
_s11_nextGoggleGuySequenceId = 0x1F8;
- _timers[5] = getRandom(100) + 75;
- _gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
_s11_currGoggleGuySequenceId = _s11_nextGoggleGuySequenceId;
_s11_nextGoggleGuySequenceId = -1;
switch (_s11_billardBallCtr) {
@@ -426,61 +428,60 @@ void GnapEngine::scene11_updateAnimations() {
break;
}
++_s11_billardBallCtr;
- _gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
_s11_currHookGuySequenceId = _s11_nextHookGuySequenceId;
_s11_nextHookGuySequenceId = -1;
- _timers[4] = getRandom(40) + 20;
- _gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, getSequenceTotalDuration(0x1F4) - 5, 0, 0);
- _hotspots[kHSBillard]._flags |= SF_DISABLED;
- _gameSys->setAnimation(0x207, 257, 4);
- _gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, getSequenceTotalDuration(0x1FE), 0, 0);
- _gnapActionStatus = -1;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1F4) - 5, 0, 0);
+ _vm->_hotspots[kHSBillard]._flags |= SF_DISABLED;
+ _vm->_gameSys->setAnimation(0x207, 257, 4);
+ _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
+ _vm->_gnapActionStatus = -1;
}
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s11_nextGoggleGuySequenceId != -1) {
- _timers[5] = getRandom(100) + 75;
- _gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s11_nextGoggleGuySequenceId != -1) {
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
_s11_currGoggleGuySequenceId = _s11_nextGoggleGuySequenceId;
_s11_nextGoggleGuySequenceId = -1;
- if (_gnapActionStatus >= 1 && _gnapActionStatus <= 4)
- _gnapActionStatus = -1;
+ if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_s11_nextHookGuySequenceId == 0x204) {
- _gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
- _gameSys->insertSequence(0x204, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x1F5, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(0x204, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1F5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_s11_currHookGuySequenceId = 0x204;
_s11_nextHookGuySequenceId = -1;
- _gnapSequenceId = 0x1F5;
- _gnapSequenceDatNum = 0;
- _timers[4] = getRandom(40) + 20;
- _timers[2] = getRandom(20) + 70;
- _timers[3] = getRandom(50) + 200;
- if (_gnapActionStatus == kASGrabHookGuy)
- _gnapActionStatus = -1;
+ _vm->_gnapSequenceId = 0x1F5;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_timers[2] = _vm->getRandom(20) + 70;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ if (_vm->_gnapActionStatus == kASGrabHookGuy)
+ _vm->_gnapActionStatus = -1;
} else if (_s11_nextHookGuySequenceId != -1) {
- _gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
_s11_currHookGuySequenceId = _s11_nextHookGuySequenceId;
_s11_nextHookGuySequenceId = -1;
- _timers[4] = getRandom(40) + 20;
- if (_gnapActionStatus >= 6 && _gnapActionStatus <= 9)
- _gnapActionStatus = -1;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus >= 6 && _vm->_gnapActionStatus <= 9)
+ _vm->_gnapActionStatus = -1;
}
}
- if (_gameSys->getAnimationStatus(4) == 2) {
- _gameSys->setAnimation(0, 0, 4);
- _hotspots[kHSBillard]._flags &= ~SF_DISABLED;
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->_hotspots[kHSBillard]._flags &= ~SF_DISABLED;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene11.h b/engines/gnap/scenes/scene11.h
new file mode 100644
index 0000000..e37f0bd
--- /dev/null
+++ b/engines/gnap/scenes/scene11.h
@@ -0,0 +1,53 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE11_H
+#define GNAP_SCENE11_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene11: public Scene {
+public:
+ Scene11(GnapEngine *vm);
+ ~Scene11() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s11_billardBallCtr;
+ int _s11_nextHookGuySequenceId;
+ int _s11_currHookGuySequenceId;
+ int _s11_nextGoggleGuySequenceId;
+ int _s11_currGoggleGuySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE11_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 508c163..c4b5a55 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -36,6 +36,7 @@
#include "gnap/scenes/scene08.h"
#include "gnap/scenes/scene09.h"
#include "gnap/scenes/scene10.h"
+#include "gnap/scenes/scene11.h"
namespace Gnap {
@@ -119,8 +120,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 11:
- backgroundId = scene11_init();
- scene11_updateHotspots();
+ _scene = new Scene11(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -438,7 +440,7 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 11;
break;
case 11:
- scene11_run();
+ _scene->run();
if (_newSceneNum == 55)
_newSceneNum = 12;
break;
Commit: e8db252fc3cb78d7d07381764000b0a801850a2f
https://github.com/scummvm/scummvm/commit/e8db252fc3cb78d7d07381764000b0a801850a2f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 12
Changed paths:
A engines/gnap/scenes/scene12.h
engines/gnap/gnap.h
engines/gnap/scenes/scene12.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 939212a..c3458d2 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,15 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 12
- int _s12_nextBeardGuySequenceId, _s12_currBeardGuySequenceId;
- int _s12_nextToothGuySequenceId, _s12_currToothGuySequenceId;
- int _s12_nextBarkeeperSequenceId, _s12_currBarkeeperSequenceId;
- int scene12_init();
- void scene12_updateHotspots();
- void scene12_run();
- void scene12_updateAnimations();
-
// Scene 13
int _s13_backToiletCtr;
int scene13_init();
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
index 4d3958c..6b63c9f 100644
--- a/engines/gnap/scenes/scene12.cpp
+++ b/engines/gnap/scenes/scene12.cpp
@@ -24,6 +24,8 @@
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene12.h"
+
namespace Gnap {
enum {
@@ -61,98 +63,105 @@ enum {
kASPlatWithBeardGuy = 19
};
-int GnapEngine::scene12_init() {
+Scene12::Scene12(GnapEngine *vm) : Scene(vm) {
+ _s12_nextBeardGuySequenceId = -1;
+ _s12_currBeardGuySequenceId = -1;
+ _s12_nextToothGuySequenceId = -1;
+ _s12_currToothGuySequenceId = -1;
+ _s12_nextBarkeeperSequenceId = -1;
+ _s12_currBarkeeperSequenceId = -1;
+}
+
+int Scene12::init() {
return 0x209;
}
-void GnapEngine::scene12_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitRight, 790, 360, 799, 599, SF_EXIT_R_CURSOR);
- setHotspot(kHSToothGuy, 80, 180, 160, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBarkeeper, 490, 175, 580, 238, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBeardGuy, 620, 215, 720, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSJukebox, 300, 170, 410, 355, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 260, 460);
- setHotspot(kHSWalkArea2, 0, 0, 380, 410);
- setHotspot(kHSWalkArea3, 0, 0, 799, 395);
- setHotspot(kHSWalkArea4, 585, 0, 799, 455);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 11;
+void Scene12::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitRight, 790, 360, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHSToothGuy, 80, 180, 160, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBarkeeper, 490, 175, 580, 238, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBeardGuy, 620, 215, 720, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSJukebox, 300, 170, 410, 355, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 260, 460);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 380, 410);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 799, 395);
+ _vm->setHotspot(kHSWalkArea4, 585, 0, 799, 455);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene12_run() {
+void Scene12::run() {
int v18 = 1;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
_s12_currToothGuySequenceId = 0x200;
_s12_nextToothGuySequenceId = -1;
- _gameSys->setAnimation(0x200, 50, 2);
- _gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x200, 50, 2);
+ _vm->_gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
_s12_currBeardGuySequenceId = 0x202;
_s12_nextBeardGuySequenceId = -1;
- _gameSys->setAnimation(0x202, 50, 4);
- _gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x202, 50, 4);
+ _vm->_gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
_s12_currBarkeeperSequenceId = 0x203;
_s12_nextBarkeeperSequenceId = -1;
- _gameSys->setAnimation(0x203, 50, 3);
+ _vm->_gameSys->setAnimation(0x203, 50, 3);
- _timers[4] = 30;
- _timers[6] = getRandom(30) + 20;
- _timers[5] = getRandom(30) + 20;
- _timers[7] = getRandom(100) + 100;
+ _vm->_timers[4] = 30;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_prevSceneNum == 15) {
- initGnapPos(5, 6, kDirBottomRight);
- initPlatypusPos(3, 7, kDirNone);
- endSceneInit();
+ if (_vm->_prevSceneNum == 15) {
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ _vm->initPlatypusPos(3, 7, kDirNone);
+ _vm->endSceneInit();
} else {
- initGnapPos(11, 8, kDirBottomLeft);
- initPlatypusPos(12, 8, kDirUnk4);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->updateGrabCursorSprite(0, 0);
- updateMouseCursor();
- updateCursorByHotspot();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene12_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -160,160 +169,160 @@ void GnapEngine::scene12_run() {
break;
case kHSExitRight:
- _isLeavingScene = true;
- gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(10, -1, -1, -1, 1);
- _newSceneNum = 11;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(10, -1, -1, -1, 1);
+ _vm->_newSceneNum = 11;
break;
case kHSToothGuy:
- if (_grabCursorSpriteIndex == kItemQuarter) {
- _largeSprite = _gameSys->createSurface(0x141);
- gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = kDirUpLeft;
- _gnapActionStatus = kASQuarterToToothGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
- setGrabCursorSprite(-1);
- } else if (_grabCursorSpriteIndex == kItemQuarterWithHole) {
- gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = kDirUpLeft;
- _gnapActionStatus = kASQuarterWithHoleToToothGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _gnapIdleFacing = kDirUpLeft;
- _gnapActionStatus = kASShowItemToToothGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 2, 0);
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x141);
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kASQuarterToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kASQuarterWithHoleToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kASShowItemToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 2);
+ _vm->playGnapScratchingHead(1, 2);
break;
case GRAB_CURSOR:
- gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _gnapActionStatus = kASGrabToothGuy;
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASGrabToothGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(3, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkToothGuy;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkToothGuy;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(3, 7, 1, 0x107D2, 1);
- _platypusActionStatus = kASPlatWithToothGuy;
- _platypusFacing = kDirUnk4;
- playGnapIdle(2, 7);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
+ _vm->_platypusActionStatus = kASPlatWithToothGuy;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->playGnapIdle(2, 7);
break;
}
}
break;
case kHSBarkeeper:
- if (_grabCursorSpriteIndex == kItemQuarter || _grabCursorSpriteIndex == kItemQuarterWithHole) {
- gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASQuarterWithBarkeeper;
- playGnapShowItem(_grabCursorSpriteIndex, 7, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASShowItemToBarkeeper;
- playGnapShowItem(_grabCursorSpriteIndex, 7, 0);
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASQuarterWithBarkeeper;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASShowItemToBarkeeper;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASLookBarkeeper;
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASLookBarkeeper;
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(6, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkBarkeeper;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkBarkeeper;
break;
case PLAT_CURSOR:
- playGnapPullOutDevice(_platX, _platY);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASPlatWithBarkeeper;
+ _vm->playGnapPullOutDevice(_vm->_platX, _vm->_platY);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASPlatWithBarkeeper;
break;
}
}
break;
case kHSBeardGuy:
- if (_grabCursorSpriteIndex >= 0) {
- gnapWalkTo(7, 6, 0, 0x107BB, 9);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASShowItemToBeardGuy;
- playGnapShowItem(_grabCursorSpriteIndex, 8, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASShowItemToBeardGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASLookBeardGuy;
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASLookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
- gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASGrabBeardGuy;
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASGrabBeardGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(7, 6, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkBeardGuy;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkBeardGuy;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(7, 6, 1, 0x107C2, 1);
- _platypusActionStatus = kASPlatWithBeardGuy;
- _platypusFacing = kDirNone;
- playGnapIdle(7, 6);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kASPlatWithBeardGuy;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(7, 6);
break;
}
}
break;
case kHSJukebox:
- _newSceneNum = 15;
- _isLeavingScene = true;
- gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 15;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kHSWalkArea1:
case kHSWalkArea2:
case kHSWalkArea3:
case kHSWalkArea4:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene12_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = 15;
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = 15;
if (_s12_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _s12_currBeardGuySequenceId == 0x202 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
- if (getRandom(2) != 0)
+ if (v18 == 0 && _s12_currBeardGuySequenceId == 0x202 && _s12_currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
_s12_nextToothGuySequenceId = 0x1EC;
else
_s12_nextToothGuySequenceId = 0x204;
@@ -322,11 +331,11 @@ void GnapEngine::scene12_run() {
v18 = (v18 + 1) % 15;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(30) + 20;
- if (_s12_nextBarkeeperSequenceId == -1 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBeardGuySequenceId == 0x202 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
- if (getRandom(2) != 0)
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_s12_nextBarkeeperSequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBeardGuySequenceId == 0x202 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
_s12_nextBarkeeperSequenceId = 0x208;
else
_s12_nextBarkeeperSequenceId = 0x1FB;
@@ -335,62 +344,59 @@ void GnapEngine::scene12_run() {
v18 = (v18 + 1) % 15;
}
}
- if (!_timers[6]) {
- _timers[6] = getRandom(30) + 15;
- if (_s12_nextBeardGuySequenceId == -1 && _gnapActionStatus < 0 && _platypusActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBarkeeperSequenceId == 0x203 && _gnapActionStatus < 0 && _platypusActionStatus < 0)
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(30) + 15;
+ if (_s12_nextBeardGuySequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
_s12_nextBeardGuySequenceId = 0x1F2;
else
_s12_nextBeardGuySequenceId = 0x202;
v18 = (v18 + 1) % 15;
}
}
- if (!_timers[7]) {
- _timers[7] = getRandom(100) + 100;
- int _gnapRandomValue = getRandom(3);
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(3);
switch (_gnapRandomValue) {
case 0:
- _gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene12_updateHotspots();
- _timers[4] = 30;
- _timers[5] = getRandom(30) + 20;
- _timers[6] = getRandom(30) + 20;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = 30;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene12_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene12::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASTalkToothGuy:
- if (isKeyStatus1(Common::KEYCODE_j)) {
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
// Easter egg
- clearKeyStatus1(Common::KEYCODE_j);
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
_s12_nextToothGuySequenceId = 0x206;
} else {
_s12_nextToothGuySequenceId = 0x1EE;
@@ -399,43 +405,43 @@ void GnapEngine::scene12_updateAnimations() {
case 3:
break;
case kASGrabToothGuy:
- if (isKeyStatus1(Common::KEYCODE_j)) {
- clearKeyStatus1(Common::KEYCODE_j);
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
_s12_nextToothGuySequenceId = 0x206;
} else {
_s12_nextToothGuySequenceId = 0x1EF;
}
break;
case kASShowItemToToothGuy:
- if (isKeyStatus1(Common::KEYCODE_j)) {
- clearKeyStatus1(Common::KEYCODE_j);
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
_s12_nextToothGuySequenceId = 0x206;
} else {
_s12_nextToothGuySequenceId = 0x1ED;
}
break;
case kASQuarterWithHoleToToothGuy:
- if (isKeyStatus1(Common::KEYCODE_j)) {
- clearKeyStatus1(Common::KEYCODE_j);
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
_s12_nextToothGuySequenceId = 0x206;
} else {
_s12_nextToothGuySequenceId = 0x1EA;
}
break;
case kASQuarterToToothGuy:
- if (isKeyStatus1(Common::KEYCODE_j)) {
- clearKeyStatus1(Common::KEYCODE_j);
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
_s12_nextToothGuySequenceId = 0x206;
} else {
_s12_nextToothGuySequenceId = 0x1E9;
}
break;
case kASQuarterToToothGuyDone:
- _gnapActionStatus = -1;
- showCursor();
- _gameSys->removeSpriteDrawItem(_largeSprite, 300);
- deleteSurface(&_largeSprite);
- setGrabCursorSprite(kItemQuarterWithHole);
+ _vm->_gnapActionStatus = -1;
+ _vm->showCursor();
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->setGrabCursorSprite(kItemQuarterWithHole);
break;
case kASTalkBeardGuy:
_s12_nextBeardGuySequenceId = 0x1F4;
@@ -450,7 +456,7 @@ void GnapEngine::scene12_updateAnimations() {
_s12_nextBeardGuySequenceId = 0x1F0;
break;
case kASTalkBarkeeper:
- if (getRandom(2) != 0)
+ if (_vm->getRandom(2) != 0)
_s12_nextBarkeeperSequenceId = 0x1FD;
else
_s12_nextBarkeeperSequenceId = 0x1FF;
@@ -473,9 +479,9 @@ void GnapEngine::scene12_updateAnimations() {
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- switch (_platypusActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
case kASPlatWithToothGuy:
_s12_nextToothGuySequenceId = 0x1EB;
break;
@@ -485,79 +491,78 @@ void GnapEngine::scene12_updateAnimations() {
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_s12_currToothGuySequenceId == 0x1E9) {
- _gameSys->setAnimation(0, 0, 2);
- hideCursor();
- _gameSys->setAnimation(0x10843, 301, 0);
- _gnapActionStatus = kASQuarterToToothGuyDone;
- _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- _gameSys->insertSequence(0x10843, 301, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x107B7, _gnapId, 0x10843, 301,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B7;
- _gnapSequenceDatNum = 1;
- setFlag(kGFTwigTaken);
- invAdd(kItemQuarterWithHole);
- invRemove(kItemQuarter);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0x10843, 301, 0);
+ _vm->_gnapActionStatus = kASQuarterToToothGuyDone;
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B7;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->setFlag(kGFTwigTaken);
+ _vm->invAdd(kItemQuarterWithHole);
+ _vm->invRemove(kItemQuarter);
}
if (_s12_nextToothGuySequenceId == 0x1EF) {
- _gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
- _gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x205, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
+ _vm->_gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_s12_currToothGuySequenceId = _s12_nextToothGuySequenceId;
_s12_nextToothGuySequenceId = -1;
- _gnapSequenceId = 0x205;
- _gnapSequenceDatNum = 0;
- _timers[4] = 40;
- _timers[2] = getRandom(20) + 70;
- _timers[3] = getRandom(50) + 200;
- if (_gnapActionStatus == kASGrabToothGuy)
- _gnapActionStatus = -1;
+ _vm->_gnapSequenceId = 0x205;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[4] = 40;
+ _vm->_timers[2] = _vm->getRandom(20) + 70;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ if (_vm->_gnapActionStatus == kASGrabToothGuy)
+ _vm->_gnapActionStatus = -1;
} else if (_s12_nextToothGuySequenceId != -1) {
- _gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
+ _vm->_gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
_s12_currToothGuySequenceId = _s12_nextToothGuySequenceId;
_s12_nextToothGuySequenceId = -1;
- _timers[4] = 50;
- if (_gnapActionStatus >= kASTalkToothGuy && _gnapActionStatus <= kASQuarterToToothGuy && _s12_currToothGuySequenceId != 0x1E9 &&
+ _vm->_timers[4] = 50;
+ if (_vm->_gnapActionStatus >= kASTalkToothGuy && _vm->_gnapActionStatus <= kASQuarterToToothGuy && _s12_currToothGuySequenceId != 0x1E9 &&
_s12_currToothGuySequenceId != 0x1EC && _s12_currToothGuySequenceId != 0x200)
- _gnapActionStatus = -1;
- if (_platypusActionStatus == kASPlatWithToothGuy)
- _platypusActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
+ if (_vm->_platypusActionStatus == kASPlatWithToothGuy)
+ _vm->_platypusActionStatus = -1;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- if (_gnapActionStatus == kASPlatWithBarkeeper && _s12_currBarkeeperSequenceId == 0x1F9) {
- _gnapActionStatus = -1;
- playGnapIdle(7, 6);
- _timers[5] = 0;
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gnapActionStatus == kASPlatWithBarkeeper && _s12_currBarkeeperSequenceId == 0x1F9) {
+ _vm->_gnapActionStatus = -1;
+ _vm->playGnapIdle(7, 6);
+ _vm->_timers[5] = 0;
}
if (_s12_nextBarkeeperSequenceId != -1) {
- _gameSys->insertSequence(_s12_nextBarkeeperSequenceId, 50, _s12_currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s12_nextBarkeeperSequenceId, 50, 3);
+ _vm->_gameSys->insertSequence(_s12_nextBarkeeperSequenceId, 50, _s12_currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s12_nextBarkeeperSequenceId, 50, 3);
_s12_currBarkeeperSequenceId = _s12_nextBarkeeperSequenceId;
_s12_nextBarkeeperSequenceId = -1;
- _timers[5] = getRandom(30) + 20;
- if (_gnapActionStatus >= kASTalkBarkeeper && _gnapActionStatus <= kASQuarterWithBarkeeper && _s12_currBarkeeperSequenceId != 0x203 &&
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus >= kASTalkBarkeeper && _vm->_gnapActionStatus <= kASQuarterWithBarkeeper && _s12_currBarkeeperSequenceId != 0x203 &&
_s12_currBarkeeperSequenceId != 0x1FB && _s12_currBarkeeperSequenceId != 0x208)
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s12_nextBeardGuySequenceId != -1) {
- _gameSys->insertSequence(_s12_nextBeardGuySequenceId, 50, _s12_currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s12_nextBeardGuySequenceId, 50, 4);
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s12_nextBeardGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s12_nextBeardGuySequenceId, 50, _s12_currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s12_nextBeardGuySequenceId, 50, 4);
_s12_currBeardGuySequenceId = _s12_nextBeardGuySequenceId;
_s12_nextBeardGuySequenceId = -1;
- _timers[6] = getRandom(30) + 20;
- if (_gnapActionStatus >= kASTalkBeardGuy && _gnapActionStatus <= kASShowItemToBeardGuy && _s12_currBeardGuySequenceId != 0x202 && _s12_currBeardGuySequenceId != 0x1F2)
- _gnapActionStatus = -1;
- if (_platypusActionStatus == kASPlatWithBeardGuy)
- _platypusActionStatus = -1;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus >= kASTalkBeardGuy && _vm->_gnapActionStatus <= kASShowItemToBeardGuy && _s12_currBeardGuySequenceId != 0x202 && _s12_currBeardGuySequenceId != 0x1F2)
+ _vm->_gnapActionStatus = -1;
+ if (_vm->_platypusActionStatus == kASPlatWithBeardGuy)
+ _vm->_platypusActionStatus = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene12.h b/engines/gnap/scenes/scene12.h
new file mode 100644
index 0000000..5050471
--- /dev/null
+++ b/engines/gnap/scenes/scene12.h
@@ -0,0 +1,54 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE12_H
+#define GNAP_SCENE12_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene12: public Scene {
+public:
+ Scene12(GnapEngine *vm);
+ ~Scene12() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s12_nextBeardGuySequenceId;
+ int _s12_currBeardGuySequenceId;
+ int _s12_nextToothGuySequenceId;
+ int _s12_currToothGuySequenceId;
+ int _s12_nextBarkeeperSequenceId;
+ int _s12_currBarkeeperSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE12_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c4b5a55..2cf75ca 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -37,6 +37,7 @@
#include "gnap/scenes/scene09.h"
#include "gnap/scenes/scene10.h"
#include "gnap/scenes/scene11.h"
+#include "gnap/scenes/scene12.h"
namespace Gnap {
@@ -127,8 +128,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 12:
- backgroundId = scene12_init();
- scene12_updateHotspots();
+ _scene = new Scene12(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -441,11 +443,13 @@ void GnapEngine::runSceneLogic() {
break;
case 11:
_scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 12;
break;
case 12:
- scene12_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 11;
break;
Commit: cc5bfede08504c433f56b2c91e25f409a47ee21a
https://github.com/scummvm/scummvm/commit/cc5bfede08504c433f56b2c91e25f409a47ee21a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 13
Changed paths:
A engines/gnap/scenes/scene13.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene13.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index daf8308..7d097fd 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2018,9 +2018,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 13
- _s13_backToiletCtr = -1;
-
// Scene 17
_s17_platTryGetWrenchCtr = 0;
_s17_wrenchCtr = 2;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index c3458d2..115015c 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -602,14 +602,6 @@ public:
bool sceneXX_sub_4466B1();
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
-
- // Scene 13
- int _s13_backToiletCtr;
- int scene13_init();
- void scene13_updateHotspots();
- void scene13_showScribble();
- void scene13_run();
- void scene13_updateAnimations();
// Scene 14
int scene14_init();
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
index d832927..a8f89ec 100644
--- a/engines/gnap/scenes/scene13.cpp
+++ b/engines/gnap/scenes/scene13.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene13.h"
namespace Gnap {
@@ -57,103 +58,105 @@ enum {
kASGrabUrinal = 13
};
-int GnapEngine::scene13_init() {
- playSound(0x108EC, false);
+Scene13::Scene13(GnapEngine *vm) : Scene(vm) {
+ _s13_backToiletCtr = -1;
+}
+
+int Scene13::init() {
+ _vm->playSound(0x108EC, false);
return 0xAC;
}
-void GnapEngine::scene13_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitBar, 113, 160, 170, 455, SF_EXIT_L_CURSOR);
- setHotspot(kHSBackToilet, 385, 195, 478, 367, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSFrontToilet, 497, 182, 545, 432, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSUrinal, 680, 265, 760, 445, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSScribble, 560, 270, 660, 370, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSSink, 310, 520, 560, 599, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 268, 270, 325, 385);
- setHotspot(kHSWalkArea2, 0, 0, 52, 599);
- setHotspot(kHSWalkArea3, 0, 0, 113, 550);
- setHotspot(kHSWalkArea4, 0, 0, 226, 438);
- setHotspot(kHSWalkArea5, 0, 0, 268, 400);
- setHotspot(kHSWalkArea6, 0, 0, 799, 367);
- setHotspot(kHSWalkArea7, 478, 0, 799, 401);
- setHotspot(kHSWalkArea8, 545, 0, 799, 473);
- setHotspot(kHSWalkArea9, 0, 549, 799, 599);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 17;
+void Scene13::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitBar, 113, 160, 170, 455, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSBackToilet, 385, 195, 478, 367, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSFrontToilet, 497, 182, 545, 432, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSUrinal, 680, 265, 760, 445, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSScribble, 560, 270, 660, 370, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSSink, 310, 520, 560, 599, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 268, 270, 325, 385);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 52, 599);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 113, 550);
+ _vm->setHotspot(kHSWalkArea4, 0, 0, 226, 438);
+ _vm->setHotspot(kHSWalkArea5, 0, 0, 268, 400);
+ _vm->setHotspot(kHSWalkArea6, 0, 0, 799, 367);
+ _vm->setHotspot(kHSWalkArea7, 478, 0, 799, 401);
+ _vm->setHotspot(kHSWalkArea8, 545, 0, 799, 473);
+ _vm->setHotspot(kHSWalkArea9, 0, 549, 799, 599);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 17;
}
-void GnapEngine::scene13_showScribble() {
- hideCursor();
- _largeSprite = _gameSys->createSurface(0x6F);
- _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29))
- gameUpdateTick();
- _mouseClickState._left = false;
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(29);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- _gameSys->removeSpriteDrawItem(_largeSprite, 300);
- deleteSurface(&_largeSprite);
- showCursor();
+void Scene13::showScribble() {
+ _vm->hideCursor();
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x6F);
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
+ !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29))
+ _vm->gameUpdateTick();
+ _vm->_mouseClickState._left = false;
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->showCursor();
}
-void GnapEngine::scene13_run() {
+void Scene13::run() {
int currSoundId = 0;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
- if (_prevSceneNum == 14) {
- initGnapPos(6, 6, kDirBottomLeft);
- initPlatypusPos(9, 8, kDirNone);
+ if (_vm->_prevSceneNum == 14) {
+ _vm->initGnapPos(6, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirNone);
} else {
- initGnapPos(3, 7, kDirBottomRight);
- initPlatypusPos(2, 7, kDirNone);
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(2, 7, kDirNone);
}
- endSceneInit();
+ _vm->endSceneInit();
- _timers[4] = getRandom(20) + 20;
- _timers[5] = getRandom(50) + 50;
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
- while (!_sceneDone) {
-
- if (!isSoundPlaying(0x1091A))
- playSound(0x1091A, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1091A))
+ _vm->playSound(0x1091A, true);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene13_updateHotspots();
- _timers[4] = getRandom(20) + 20;
- _timers[5] = getRandom(50) + 50;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
}
break;
case kHSPlatypus:
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -161,129 +164,129 @@ void GnapEngine::scene13_run() {
break;
case kHSExitBar:
- _isLeavingScene = true;
- gnapWalkTo(2, 7, 0, 0x107C0, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(2, 8, -1, -1, 1);
- if (isFlag(kGFUnk14) || isFlag(kGFSpringTaken)) {
- _newSceneNum = 11;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(2, 7, 0, 0x107C0, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(2, 8, -1, -1, 1);
+ if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
+ _vm->_newSceneNum = 11;
} else {
- setFlag(kGFSpringTaken);
- _newSceneNum = 47;
+ _vm->setFlag(kGFSpringTaken);
+ _vm->_newSceneNum = 47;
}
break;
case kHSBackToilet:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(5, 5, 6, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(5, 5, 6, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
case TALK_CURSOR:
- if (_gnapX == 5 && _gnapY == 5) {
+ if (_vm->_gnapX == 5 && _vm->_gnapY == 5) {
_s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
- _gameSys->setAnimation(_s13_backToiletCtr + 0xA3, _gnapId, 0);
- _gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _vm->_gameSys->setAnimation(_s13_backToiletCtr + 0xA3, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqScale | kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASWait;
- _gnapSequenceId = _s13_backToiletCtr + 0xA3;
- _gnapIdleFacing = kDirUpRight;
- _gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASWait;
+ _vm->_gnapSequenceId = _s13_backToiletCtr + 0xA3;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
} else {
- gnapWalkTo(5, 5, 0, 0x107BB, 1);
- _gnapActionStatus = kASBackToilet;
- _gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASBackToilet;
+ _vm->_gnapIdleFacing = kDirUpRight;
}
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSFrontToilet:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(6, 7, 7, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 7, 7, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnapWalkTo(6, 7, 0, 0xA9, 5);
- _gnapActionStatus = kASFrontToilet;
- _gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
+ _vm->_gnapActionStatus = kASFrontToilet;
+ _vm->_gnapIdleFacing = kDirBottomRight;
break;
}
}
break;
case kHSScribble:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(7, 7, 8, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 7, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _gnapActionStatus = kASLookScribble;
- _gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLookScribble;
+ _vm->_gnapIdleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- playGnapScratchingHead(0, 0);
+ _vm->playGnapScratchingHead(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(7, 7, -1, getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 7, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSUrinal:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(8, 7, 9, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(8, 7, 9, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapSequence(getGnapSequenceId(gskDeflect, 9, 6));
- gnapWalkTo(_gnapX, _gnapY, 0, -1, 1);
- _gnapActionStatus = kASWait;
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->_gnapActionStatus = kASWait;
break;
case GRAB_CURSOR:
- gnapWalkTo(8, 7, 0, -1, 1);
- _gnapActionStatus = kASGrabUrinal;
+ _vm->gnapWalkTo(8, 7, 0, -1, 1);
+ _vm->_gnapActionStatus = kASGrabUrinal;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSSink:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapSequence(getGnapSequenceId(gskDeflect, 5, 9));
- gnapWalkTo(_gnapX, _gnapY, 0, -1, 1);
- _gnapActionStatus = kASWait;
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->_gnapActionStatus = kASWait;
break;
case GRAB_CURSOR:
- gnapWalkTo(4, 8, 0, 0x107B9, 1);
- _gnapActionStatus = kASGrabSink;
+ _vm->gnapWalkTo(4, 8, 0, 0x107B9, 1);
+ _vm->_gnapActionStatus = kASGrabSink;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -297,7 +300,7 @@ void GnapEngine::scene13_run() {
case kHSWalkArea7:
case kHSWalkArea8:
case kHSWalkArea9:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHSWalkArea1:
@@ -305,49 +308,48 @@ void GnapEngine::scene13_run() {
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene13_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- if (_platY == 5 || _platY == 6)
- platypusWalkTo(-1, 7, -1, -1, 1);
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 20;
- switch (getRandom(5)) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_platY == 5 || _vm->_platY == 6)
+ _vm->platypusWalkTo(-1, 7, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ switch (_vm->getRandom(5)) {
case 0:
- playSound(0xD2, false);
+ _vm->playSound(0xD2, false);
break;
case 1:
- playSound(0xD3, false);
+ _vm->playSound(0xD3, false);
break;
case 2:
- playSound(0xD4, false);
+ _vm->playSound(0xD4, false);
break;
case 3:
- playSound(0xD5, false);
+ _vm->playSound(0xD5, false);
break;
case 4:
- playSound(0xD6, false);
+ _vm->playSound(0xD6, false);
break;
}
}
- if (!_timers[5]) {
+ if (!_vm->_timers[5]) {
int newSoundId;
- _timers[5] = getRandom(50) + 50;
- switch (getRandom(7)) {
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
+ switch (_vm->getRandom(7)) {
case 0:
newSoundId = 0xD7;
- _timers[5] = 2 * getRandom(50) + 100;
+ _vm->_timers[5] = 2 * _vm->getRandom(50) + 100;
break;
case 1:
case 2:
@@ -362,92 +364,88 @@ void GnapEngine::scene13_run() {
break;
}
if (newSoundId != currSoundId) {
- playSound(newSoundId, false);
+ _vm->playSound(newSoundId, false);
currSoundId = newSoundId;
}
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene13_updateHotspots();
- _timers[4] = getRandom(20) + 20;
- _timers[5] = getRandom(50) + 50;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene13_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene13::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASBackToilet:
_s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
- _gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 9, 0, 0, 0);
- _gnapSequenceId = _s13_backToiletCtr + 0xA3;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
+ _vm->_gnapSequenceId = _s13_backToiletCtr + 0xA3;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
break;
case kASFrontToilet:
- _sceneDone = true;
- _newSceneNum = 14;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 14;
break;
case kASLookScribble:
- _gnapActionStatus = -1;
- scene13_showScribble();
+ _vm->_gnapActionStatus = -1;
+ showScribble();
break;
case kASGrabSink:
- _gameSys->setAnimation(0xAB, 160, 0);
- _gameSys->insertSequence(0xAB, 160, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0xAA, 256, true);
- _gnapSequenceId = 0xAB;
- _gnapId = 160;
- _gnapIdleFacing = kDirBottomRight;
- _gnapSequenceDatNum = 0;
- _gnapX = 4;
- _gnapY = 8;
- _timers[2] = 360;
- _gnapActionStatus = kASGrabSinkDone;
+ _vm->_gameSys->setAnimation(0xAB, 160, 0);
+ _vm->_gameSys->insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0xAA, 256, true);
+ _vm->_gnapSequenceId = 0xAB;
+ _vm->_gnapId = 160;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 8;
+ _vm->_timers[2] = 360;
+ _vm->_gnapActionStatus = kASGrabSinkDone;
break;
case kASGrabSinkDone:
- _gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
break;
case kASWait:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabUrinal:
- _gameSys->setAnimation(0xA2, 120, 0);
- _gameSys->insertSequence(0xA2, 120, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xA2;
- _gnapId = 120;
- _gnapIdleFacing = kDirBottomLeft;
- _gnapSequenceDatNum = 0;
- _gnapX = 4;
- _gnapY = 6;
- _timers[2] = 360;
- _gnapActionStatus = kASWait;
+ _vm->_gameSys->setAnimation(0xA2, 120, 0);
+ _vm->_gameSys->insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA2;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 6;
+ _vm->_timers[2] = 360;
+ _vm->_gnapActionStatus = kASWait;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- _platypusActionStatus = -1;
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_platypusActionStatus = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene13.h b/engines/gnap/scenes/scene13.h
new file mode 100644
index 0000000..53085dd
--- /dev/null
+++ b/engines/gnap/scenes/scene13.h
@@ -0,0 +1,51 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE13_H
+#define GNAP_SCENE13_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene13: public Scene {
+public:
+ Scene13(GnapEngine *vm);
+ ~Scene13() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s13_backToiletCtr;
+
+ void showScribble();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE13_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 2cf75ca..c5ba9d2 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -38,6 +38,7 @@
#include "gnap/scenes/scene10.h"
#include "gnap/scenes/scene11.h"
#include "gnap/scenes/scene12.h"
+#include "gnap/scenes/scene13.h"
namespace Gnap {
@@ -135,8 +136,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 13:
- backgroundId = scene13_init();
- scene13_updateHotspots();
+ _scene = new Scene13(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -454,7 +456,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 11;
break;
case 13:
- scene13_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 11;
break;
Commit: 2409d89eb597587e78f7453ec2f09c10e9b01465
https://github.com/scummvm/scummvm/commit/2409d89eb597587e78f7453ec2f09c10e9b01465
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 14
Changed paths:
A engines/gnap/scenes/scene14.h
engines/gnap/gnap.h
engines/gnap/scenes/scene14.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 115015c..258bba4 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,12 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 14
- int scene14_init();
- void scene14_updateHotspots();
- void scene14_run();
- void scene14_updateAnimations();
-
// Scene 15
int _s15_nextRecordSequenceId, _s15_currRecordSequenceId;
int _s15_nextSlotSequenceId, _s15_currSlotSequenceId;
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 25db3a6..46e3c6d 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -24,6 +24,8 @@
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene14.h"
+
namespace Gnap {
enum {
@@ -34,160 +36,156 @@ enum {
kHSDevice = 4
};
-int GnapEngine::scene14_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
+Scene14::Scene14(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene14::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
return 0x27;
}
-void GnapEngine::scene14_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0);
- setHotspot(kHSExit, 0, 590, 799, 599, SF_EXIT_D_CURSOR);
- setHotspot(kHSCoin, 330, 390, 375, 440, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSToilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFNeedleTaken))
- _hotspots[kHSCoin]._flags = SF_DISABLED;
- _hotspotsCount = 5;
+void Scene14::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0);
+ _vm->setHotspot(kHSExit, 0, 590, 799, 599, SF_EXIT_D_CURSOR);
+ _vm->setHotspot(kHSCoin, 330, 390, 375, 440, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSToilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFNeedleTaken))
+ _vm->_hotspots[kHSCoin]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 5;
}
-void GnapEngine::scene14_run() {
- _largeSprite = nullptr;
+void Scene14::run() {
+ _vm->_largeSprite = nullptr;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (!isFlag(kGFNeedleTaken))
- _gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFNeedleTaken))
+ _vm->_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->endSceneInit();
- if (!isFlag(kGFNeedleTaken) && invHas(kItemTongs))
- _largeSprite = _gameSys->createSurface(1);
+ if (!_vm->isFlag(kGFNeedleTaken) && _vm->invHas(kItemTongs))
+ _vm->_largeSprite = _vm->_gameSys->createSurface(1);
- if (!isFlag(kGFNeedleTaken)) {
- _gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x24;
- _timers[2] = getRandom(40) + 50;
+ if (!_vm->isFlag(kGFNeedleTaken)) {
+ _vm->_gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x24;
+ _vm->_timers[2] = _vm->getRandom(40) + 50;
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene14_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSExit:
- _sceneDone = true;
- _newSceneNum = 13;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 13;
break;
case kHSCoin:
- if (_grabCursorSpriteIndex == kItemTongs) {
- invAdd(kItemQuarter);
- setFlag(kGFNeedleTaken);
- setGrabCursorSprite(-1);
- hideCursor();
- _gameSys->setAnimation(0x26, 10, 0);
- _gameSys->insertSequence(0x26, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playSound(0x108E9, false);
+ if (_vm->_grabCursorSpriteIndex == kItemTongs) {
+ _vm->invAdd(kItemQuarter);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0x26, 10, 0);
+ _vm->_gameSys->insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playSound(0x108E9, false);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, false);
+ _vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- _gameSys->insertSequence(0x25, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x23;
+ _vm->_gameSys->insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x23;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
break;
case kHSToilet:
- if (_grabCursorSpriteIndex >= 0) {
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playSound(0x108B1, false);
+ _vm->playSound(0x108B1, false);
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
break;
default:
- _mouseClickState._left = false;
+ _vm->_mouseClickState._left = false;
break;
-
}
- scene14_updateAnimations();
-
- checkGameKeys();
+ updateAnimations();
+ _vm->checkGameKeys();
- if (!isFlag(kGFNeedleTaken) && !_timers[2]) {
- _gameSys->insertSequence(0x24, 10, _gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x24;
- _timers[2] = getRandom(40) + 50;
+ if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
+ _vm->_gameSys->insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x24;
+ _vm->_timers[2] = _vm->getRandom(40) + 50;
}
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene14_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- if (_largeSprite)
- deleteSurface(&_largeSprite);
-
+ if (_vm->_largeSprite)
+ _vm->deleteSurface(&_vm->_largeSprite);
}
-void GnapEngine::scene14_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- _gameSys->setAnimation(0x10843, 301, 1);
- _gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
+void Scene14::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->setAnimation(0x10843, 301, 1);
+ _vm->_gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- _sceneDone = true;
- _newSceneNum = 13;
- _grabCursorSpriteIndex = kItemQuarter;
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 13;
+ _vm->_grabCursorSpriteIndex = kItemQuarter;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene14.h b/engines/gnap/scenes/scene14.h
new file mode 100644
index 0000000..32f0907
--- /dev/null
+++ b/engines/gnap/scenes/scene14.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE14_H
+#define GNAP_SCENE14_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene14: public Scene {
+public:
+ Scene14(GnapEngine *vm);
+ ~Scene14() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE14_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c5ba9d2..9016d8a 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -39,6 +39,7 @@
#include "gnap/scenes/scene11.h"
#include "gnap/scenes/scene12.h"
#include "gnap/scenes/scene13.h"
+#include "gnap/scenes/scene14.h"
namespace Gnap {
@@ -143,8 +144,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 14:
- backgroundId = scene14_init();
- scene14_updateHotspots();
+ _scene = new Scene14(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 15:
@@ -462,7 +464,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 11;
break;
case 14:
- scene14_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 13;
break;
Commit: 4f4c25534c3e7597c67ced3c5d790380b8a1d787
https://github.com/scummvm/scummvm/commit/4f4c25534c3e7597c67ced3c5d790380b8a1d787
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Use a nullptr instead of 0 in deleteSurface()
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/scene14.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 7d097fd..77039c0 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1029,7 +1029,7 @@ void GnapEngine::deleteSurface(Graphics::Surface **surface) {
if (surface && *surface) {
(*surface)->free();
delete *surface;
- *surface = 0;
+ *surface = nullptr;
}
}
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
index 46e3c6d..6fafc2d 100644
--- a/engines/gnap/scenes/scene14.cpp
+++ b/engines/gnap/scenes/scene14.cpp
@@ -165,7 +165,6 @@ void Scene14::run() {
}
_vm->gameUpdateTick();
-
}
if (_vm->_largeSprite)
Commit: c30810c933111857a914fc904e71051e861ec125
https://github.com/scummvm/scummvm/commit/c30810c933111857a914fc904e71051e861ec125
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 15
Changed paths:
A engines/gnap/scenes/scene15.h
engines/gnap/gnap.h
engines/gnap/scenes/scene15.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 258bba4..137275b 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,16 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 15
- int _s15_nextRecordSequenceId, _s15_currRecordSequenceId;
- int _s15_nextSlotSequenceId, _s15_currSlotSequenceId;
- int _s15_nextUpperButtonSequenceId, _s15_currUpperButtonSequenceId;
- int _s15_nextLowerButtonSequenceId, _s15_currLowerButtonSequenceId;
- int scene15_init();
- void scene15_updateHotspots();
- void scene15_run();
- void scene15_updateAnimations();
-
// Scene 16
void scene16_initCutscene();
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
index 7bdfc81..1052d57 100644
--- a/engines/gnap/scenes/scene15.cpp
+++ b/engines/gnap/scenes/scene15.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene15.h"
namespace Gnap {
@@ -46,33 +47,43 @@ enum {
kHSDevice = 16
};
-int GnapEngine::scene15_init() {
+Scene15::Scene15(GnapEngine *vm) : Scene(vm) {
+ _s15_nextRecordSequenceId = -1;
+ _s15_currRecordSequenceId = -1;
+ _s15_nextSlotSequenceId = -1;
+ _s15_currSlotSequenceId = -1;
+ _s15_nextUpperButtonSequenceId = -1;
+ _s15_currUpperButtonSequenceId = -1;
+ _s15_nextLowerButtonSequenceId = -1;
+ _s15_currLowerButtonSequenceId = -1;
+}
+
+int Scene15::init() {
return 0xDD;
}
-void GnapEngine::scene15_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSExit, 50, 590, 750, 599, SF_EXIT_D_CURSOR);
- setHotspot(kHSButton1, 210, 425, 260, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButton2, 280, 425, 325, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButton3, 340, 425, 385, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButton4, 400, 425, 445, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButton5, 460, 425, 510, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButton6, 520, 425, 560, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonA, 205, 480, 250, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonB, 270, 480, 320, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonC, 335, 480, 380, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonD, 395, 480, 445, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonE, 460, 480, 505, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSButtonF, 515, 480, 560, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSCoinSlot, 585, 475, 620, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSPlayButton, 622, 431, 650, 482, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 17;
+void Scene15::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSExit, 50, 590, 750, 599, SF_EXIT_D_CURSOR);
+ _vm->setHotspot(kHSButton1, 210, 425, 260, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButton2, 280, 425, 325, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButton3, 340, 425, 385, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButton4, 400, 425, 445, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButton5, 460, 425, 510, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButton6, 520, 425, 560, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonA, 205, 480, 250, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonB, 270, 480, 320, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonC, 335, 480, 380, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonD, 395, 480, 445, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonE, 460, 480, 505, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSButtonF, 515, 480, 560, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSCoinSlot, 585, 475, 620, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSPlayButton, 622, 431, 650, 482, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 17;
}
-void GnapEngine::scene15_run() {
-
+void Scene15::run() {
_s15_currSlotSequenceId = -1;
_s15_currUpperButtonSequenceId = -1;
_s15_currLowerButtonSequenceId = -1;
@@ -82,84 +93,83 @@ void GnapEngine::scene15_run() {
_s15_currRecordSequenceId = 0xD5;
_s15_nextRecordSequenceId = -1;
- _gameSys->setAnimation(0xD5, 1, 0);
- _gameSys->insertSequence(_s15_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- queueInsertDeviceIcon();
+ _vm->_gameSys->setAnimation(0xD5, 1, 0);
+ _vm->_gameSys->insertSequence(_s15_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->queueInsertDeviceIcon();
- while (!_sceneDone) {
+ _vm->endSceneInit();
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _hotspots[kHSPlatypus]._x1 = 0;
- _hotspots[kHSPlatypus]._y1 = 0;
- _hotspots[kHSPlatypus]._x2 = 0;
- _hotspots[kHSPlatypus]._y2 = 0;
+ _vm->_hotspots[kHSPlatypus]._x1 = 0;
+ _vm->_hotspots[kHSPlatypus]._y1 = 0;
+ _vm->_hotspots[kHSPlatypus]._x2 = 0;
+ _vm->_hotspots[kHSPlatypus]._y2 = 0;
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene15_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSExit:
- _newSceneNum = 12;
- _isLeavingScene = true;
+ _vm->_newSceneNum = 12;
+ _vm->_isLeavingScene = true;
break;
case kHSCoinSlot:
- if (_grabCursorSpriteIndex == kItemQuarter || _grabCursorSpriteIndex == kItemQuarterWithHole) {
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_s15_nextSlotSequenceId = 0xDC; // Insert coin
- } else if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ } else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_s15_nextSlotSequenceId = 0xDB;
- } else if (_grabCursorSpriteIndex >= 0) {
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playSound(0x108E9, false);
+ _vm->playSound(0x108E9, false);
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
break;
case kHSPlayButton:
- if (_grabCursorSpriteIndex >= 0) {
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk13))
- playSound(0x108E9, false);
+ if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
+ _vm->playSound(0x108E9, false);
else
_s15_nextSlotSequenceId = 0xDA;
break;
case GRAB_CURSOR:
- if (isFlag(kGFGnapControlsToyUFO) || isFlag(kGFUnk13))
+ if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
_s15_nextSlotSequenceId = 0xD9;
else
_s15_nextSlotSequenceId = 0xDA;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -171,21 +181,21 @@ void GnapEngine::scene15_run() {
case kHSButton4:
case kHSButton5:
case kHSButton6:
- if (_grabCursorSpriteIndex >= 0) {
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, false);
+ _vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- _s15_nextUpperButtonSequenceId = _sceneClickedHotspot + 0xC5;
+ _s15_nextUpperButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -197,132 +207,131 @@ void GnapEngine::scene15_run() {
case kHSButtonD:
case kHSButtonE:
case kHSButtonF:
- if (_grabCursorSpriteIndex >= 0) {
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playSound(0x108E9, false);
+ _vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- _s15_nextLowerButtonSequenceId = _sceneClickedHotspot + 0xC5;
+ _s15_nextLowerButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
break;
case TALK_CURSOR:
- playSound((getRandom(5) + 0x8D5) | 0x10000, false);
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _gnapGridX, 576 - _gnapGridY);
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
break;
default:
- _mouseClickState._left = false;
+ _vm->_mouseClickState._left = false;
break;
}
- scene15_updateAnimations();
-
- checkGameKeys();
+ updateAnimations();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene15_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene15_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- if (_isLeavingScene) {
- _sceneDone = true;
+void Scene15::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (_vm->_isLeavingScene) {
+ _vm->_sceneDone = true;
} else if (_s15_nextSlotSequenceId != -1) {
- _gameSys->setAnimation(_s15_nextSlotSequenceId, 1, 0);
- _gameSys->insertSequence(_s15_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s15_nextSlotSequenceId, 1, 0);
+ _vm->_gameSys->insertSequence(_s15_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_s15_currSlotSequenceId = _s15_nextSlotSequenceId;
_s15_nextSlotSequenceId = -1;
switch (_s15_currSlotSequenceId) {
case 0xDC:
- if (_grabCursorSpriteIndex == kItemQuarter) {
- invRemove(kItemQuarter);
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
+ _vm->invRemove(kItemQuarter);
} else {
- invRemove(kItemQuarterWithHole);
- setFlag(kGFUnk13);
+ _vm->invRemove(kItemQuarterWithHole);
+ _vm->setFlag(kGFUnk13);
}
- setGrabCursorSprite(-1);
+ _vm->setGrabCursorSprite(-1);
break;
case 0xDB:
- setFlag(kGFUnk14);
- setGrabCursorSprite(-1);
+ _vm->setFlag(kGFUnk14);
+ _vm->setGrabCursorSprite(-1);
_s15_nextSlotSequenceId = 0xD8;
break;
case 0xD9:
- if (isFlag(kGFGnapControlsToyUFO)) {
- clearFlag(kGFGnapControlsToyUFO);
- invAdd(kItemQuarter);
- _newGrabCursorSpriteIndex = kItemQuarter;
- } else if (isFlag(kGFUnk13)) {
- clearFlag(kGFUnk13);
- invAdd(kItemQuarterWithHole);
- _newGrabCursorSpriteIndex = kItemQuarterWithHole;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ _vm->invAdd(kItemQuarter);
+ _vm->_newGrabCursorSpriteIndex = kItemQuarter;
+ } else if (_vm->isFlag(kGFUnk13)) {
+ _vm->clearFlag(kGFUnk13);
+ _vm->invAdd(kItemQuarterWithHole);
+ _vm->_newGrabCursorSpriteIndex = kItemQuarterWithHole;
}
- _newSceneNum = 12;
- _isLeavingScene = true;
+ _vm->_newSceneNum = 12;
+ _vm->_isLeavingScene = true;
break;
case 0xD8:
case 0xDA:
if (_s15_currUpperButtonSequenceId != -1) {
- _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
+ _vm->_gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
_s15_currUpperButtonSequenceId = -1;
}
if (_s15_currLowerButtonSequenceId != -1) {
- _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
+ _vm->_gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
_s15_currLowerButtonSequenceId = -1;
}
break;
}
} else if (_s15_nextRecordSequenceId != -1) {
- _gameSys->setAnimation(_s15_nextRecordSequenceId, 1, 0);
- _gameSys->insertSequence(_s15_nextRecordSequenceId, 1, _s15_currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s15_nextRecordSequenceId, 1, 0);
+ _vm->_gameSys->insertSequence(_s15_nextRecordSequenceId, 1, _s15_currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s15_currRecordSequenceId = _s15_nextRecordSequenceId;
_s15_nextRecordSequenceId = -1;
if (_s15_currRecordSequenceId == 0xD3) {
- invRemove(kItemDiceQuarterHole);
- _newSceneNum = 16;
- _isLeavingScene = true;
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->_newSceneNum = 16;
+ _vm->_isLeavingScene = true;
}
- _gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
+ _vm->_gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
_s15_currUpperButtonSequenceId = -1;
- _gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
+ _vm->_gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
_s15_currLowerButtonSequenceId = -1;
} else if (_s15_nextUpperButtonSequenceId != -1) {
- _gameSys->setAnimation(_s15_nextUpperButtonSequenceId, 1, 0);
+ _vm->_gameSys->setAnimation(_s15_nextUpperButtonSequenceId, 1, 0);
if (_s15_currUpperButtonSequenceId == -1)
- _gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, _s15_currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, _s15_currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s15_currUpperButtonSequenceId = _s15_nextUpperButtonSequenceId;
_s15_nextUpperButtonSequenceId = -1;
- if (_s15_currLowerButtonSequenceId != -1 && isFlag(kGFUnk14)) {
+ if (_s15_currLowerButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
_s15_nextRecordSequenceId = 0xD3;
else
_s15_nextRecordSequenceId = 0xD4;
}
} else if (_s15_nextLowerButtonSequenceId != -1) {
- _gameSys->setAnimation(_s15_nextLowerButtonSequenceId, 1, 0);
+ _vm->_gameSys->setAnimation(_s15_nextLowerButtonSequenceId, 1, 0);
if (_s15_currLowerButtonSequenceId == -1)
- _gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, _s15_currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, _s15_currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s15_currLowerButtonSequenceId = _s15_nextLowerButtonSequenceId;
_s15_nextLowerButtonSequenceId = -1;
- if (_s15_currUpperButtonSequenceId != -1 && isFlag(kGFUnk14)) {
+ if (_s15_currUpperButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
_s15_nextRecordSequenceId = 0xD3;
else
diff --git a/engines/gnap/scenes/scene15.h b/engines/gnap/scenes/scene15.h
new file mode 100644
index 0000000..584efbb
--- /dev/null
+++ b/engines/gnap/scenes/scene15.h
@@ -0,0 +1,56 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE15_H
+#define GNAP_SCENE15_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene15: public Scene {
+public:
+ Scene15(GnapEngine *vm);
+ ~Scene15() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s15_nextRecordSequenceId;
+ int _s15_currRecordSequenceId;
+ int _s15_nextSlotSequenceId;
+ int _s15_currSlotSequenceId;
+ int _s15_nextUpperButtonSequenceId;
+ int _s15_currUpperButtonSequenceId;
+ int _s15_nextLowerButtonSequenceId;
+ int _s15_currLowerButtonSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE15_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 9016d8a..6d54e4b 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -40,6 +40,7 @@
#include "gnap/scenes/scene12.h"
#include "gnap/scenes/scene13.h"
#include "gnap/scenes/scene14.h"
+#include "gnap/scenes/scene15.h"
namespace Gnap {
@@ -150,8 +151,9 @@ int GnapEngine::initSceneLogic() {
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 15:
- backgroundId = scene15_init();
- scene15_updateHotspots();
+ _scene = new Scene15(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 16:
@@ -470,7 +472,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 13;
break;
case 15:
- scene15_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 12;
break;
Commit: 861e5c10677d1493fc00542fec9ed1f0a030cb25
https://github.com/scummvm/scummvm/commit/861e5c10677d1493fc00542fec9ed1f0a030cb25
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 16, 47, 48, 54 (cutscenes)
Changed paths:
A engines/gnap/scenes/scene16.h
A engines/gnap/scenes/scene47.h
A engines/gnap/scenes/scene48.h
A engines/gnap/scenes/scene54.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene16.cpp
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene48.cpp
engines/gnap/scenes/scene54.cpp
engines/gnap/scenes/scenecore.cpp
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 77039c0..07978cb 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2077,11 +2077,9 @@ void GnapEngine::initGlobalSceneVars() {
_toyUfoActionStatus = -1;
_toyUfoX = 0;
_toyUfoY = 50;
-
}
bool GnapEngine::sceneXX_sub_4466B1() {
-
if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
clearKeyStatus1(Common::KEYCODE_ESCAPE);
clearKeyStatus1(Common::KEYCODE_UP);
@@ -2098,7 +2096,6 @@ bool GnapEngine::sceneXX_sub_4466B1() {
}
return false;
-
}
void GnapEngine::sceneXX_playRandomSound(int timerIndex) {
@@ -2271,82 +2268,4 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
}
}
-// Scene 99
-
-int GnapEngine::cutscene_init() {
- return -1;
-}
-
-void GnapEngine::cutscene_run() {
-
- int itemIndex = 0;
- int soundId = -1;
- int volume = 100;
- int duration = 0;
- bool skip = false;
-
- if (_prevSceneNum == 2) {
- soundId = 0x36B;
- duration = MAX(1, 300 / getSequenceTotalDuration(_s99_sequenceIdArr[_s99_itemsCount - 1]));//CHECKME
- _timers[0] = 0;
- }
-
- if (soundId != -1)
- playSound(soundId, false);
-
- hideCursor();
-
- _gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[0]);
-
- for (int j = 0; j < _s99_sequenceCountArr[0]; ++j)
- _gameSys->insertSequence(_s99_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(_s99_sequenceIdArr[0], 2, 0);
-
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(29);
-
- _mouseClickState._left = false;
-
- int firstSequenceIndex = 0;
- while (!_sceneDone) {
- gameUpdateTick();
-
- if (_gameSys->getAnimationStatus(0) == 2 || skip) {
- skip = false;
- _gameSys->requestClear2(false);
- _gameSys->requestClear1();
- _gameSys->setAnimation(0, 0, 0);
- firstSequenceIndex += _s99_sequenceCountArr[itemIndex++];
- if (itemIndex >= _s99_itemsCount) {
- _sceneDone = true;
- } else {
- for (int m = 0; m < _s99_sequenceCountArr[itemIndex]; ++m)
- _gameSys->insertSequence(_s99_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[itemIndex]);
- _gameSys->setAnimation(_s99_sequenceIdArr[firstSequenceIndex], 2, 0);
- }
- }
-
- if (isKeyStatus1(Common::KEYCODE_ESCAPE) || isKeyStatus1(Common::KEYCODE_SPACE) || isKeyStatus1(29)) {
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(29);
- if (_s99_canSkip[itemIndex])
- skip = true;
- else
- _sceneDone = true;
- }
-
- if (!_timers[0] && itemIndex == _s99_itemsCount - 1) {
- _timers[0] = 2;
- volume = MAX(1, volume - duration);
- setSoundVolume(soundId, volume);
- }
- }
-
- if (soundId != -1)
- stopSound(soundId);
-}
-
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 137275b..cbe711a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,9 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 16
- void scene16_initCutscene();
-
// Scene 17
bool _s17_canTryGetWrench;
int _s17_wrenchCtr, _s17_platPhoneCtr, _s17_platTryGetWrenchCtr;
@@ -836,18 +833,6 @@ public:
void scene46_run();
void scene46_updateAnimations();
- // Scene 47
- void scene47_initCutscene1();
- void scene47_initCutscene2();
- void scene47_initCutscene3();
- void scene47_initCutscene4();
- void scene47_initCutscene5();
- void scene47_initCutscene6();
- void scene47_initCutscene7();
-
- // Scene 48
- void scene48_initCutscene();
-
// Scene 49
int _s49_scoreBarPos, _s49_scoreLevel;
bool _s49_scoreBarFlash;
@@ -1026,15 +1011,6 @@ public:
// Scene 54
void scene54_initCutscene1();
void scene54_initCutscene2();
-
- // Scene 99
- int _s99_itemsCount;
- int _s99_resourceIdArr[16];
- int _s99_sequenceCountArr[16];
- int _s99_sequenceIdArr[50];
- bool _s99_canSkip[16];
- int cutscene_init();
- void cutscene_run();
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene16.cpp b/engines/gnap/scenes/scene16.cpp
index 64db758..bfe9afa 100644
--- a/engines/gnap/scenes/scene16.cpp
+++ b/engines/gnap/scenes/scene16.cpp
@@ -23,10 +23,13 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene16.h"
namespace Gnap {
-void GnapEngine::scene16_initCutscene() {
+Scene16::Scene16(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene16::init() {
_s99_sequenceIdArr[0] = 0x1F2;
_s99_sequenceIdArr[1] = 0x201;
_s99_sequenceIdArr[2] = 0x1FC;
@@ -77,6 +80,8 @@ void GnapEngine::scene16_initCutscene() {
_s99_sequenceCountArr[11] = 1;
_s99_sequenceCountArr[12] = 1;
_s99_itemsCount = 13;
+
+ return -1;
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene16.h b/engines/gnap/scenes/scene16.h
new file mode 100644
index 0000000..e9d3b7f
--- /dev/null
+++ b/engines/gnap/scenes/scene16.h
@@ -0,0 +1,42 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE16_H
+#define GNAP_SCENE16_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene16: public CutScene {
+public:
+ Scene16(GnapEngine *vm);
+ ~Scene16() {}
+
+ virtual int init();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE16_H
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index 50c8c39..ec0be02 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -23,10 +23,13 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene47.h"
namespace Gnap {
-void GnapEngine::scene47_initCutscene1() {
+Scene471::Scene471(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene471::init() {
_s99_sequenceIdArr[0] = 0x301;
_s99_sequenceIdArr[1] = 0x305;
_s99_sequenceIdArr[2] = 0x302;
@@ -48,9 +51,13 @@ void GnapEngine::scene47_initCutscene1() {
_s99_canSkip[3] = false;
_s99_canSkip[4] = false;
_s99_itemsCount = 5;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene2() {
+Scene472::Scene472(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene472::init() {
_s99_sequenceIdArr[0] = 0x306;
_s99_sequenceIdArr[1] = 0x309;
_s99_sequenceIdArr[2] = 0x307;
@@ -69,9 +76,13 @@ void GnapEngine::scene47_initCutscene2() {
_s99_canSkip[2] = false;
_s99_canSkip[3] = false;
_s99_itemsCount = 4;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene3() {
+Scene473::Scene473(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene473::init() {
_s99_sequenceIdArr[0] = 0x320;
_s99_sequenceIdArr[1] = 0x321;
_s99_resourceIdArr[0] = 0x142;
@@ -81,9 +92,13 @@ void GnapEngine::scene47_initCutscene3() {
_s99_canSkip[0] = false;
_s99_canSkip[1] = false;
_s99_itemsCount = 2;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene4() {
+Scene474::Scene474(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene474::init() {
_s99_sequenceIdArr[0] = 0x30C;
_s99_sequenceIdArr[1] = 0x30D;
_s99_sequenceIdArr[2] = 0x30B;
@@ -97,9 +112,13 @@ void GnapEngine::scene47_initCutscene4() {
_s99_canSkip[1] = false;
_s99_canSkip[2] = false;
_s99_itemsCount = 3;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene5() {
+Scene475::Scene475(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene475::init() {
_s99_sequenceIdArr[0] = 0x30E;
_s99_sequenceIdArr[1] = 0x30F;
_s99_sequenceIdArr[2] = 0x310;
@@ -111,18 +130,26 @@ void GnapEngine::scene47_initCutscene5() {
_s99_canSkip[0] = false;
_s99_canSkip[1] = false;
_s99_itemsCount = 2;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene6() {
+Scene476::Scene476(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene476::init() {
_s99_sequenceIdArr[0] = 0x31E;
_s99_sequenceIdArr[1] = 0x31F;
_s99_resourceIdArr[0] = 0x2FA;
_s99_sequenceCountArr[0] = 2;
_s99_canSkip[0] = false;
_s99_itemsCount = 1;
+
+ return -1;
}
-void GnapEngine::scene47_initCutscene7() {
+Scene477::Scene477(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene477::init() {
int v0, v4, v2, v3;
_s99_sequenceIdArr[0] = 0x316;
@@ -130,11 +157,11 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceIdArr[2] = 0x314;
_s99_sequenceIdArr[3] = 0x31B;
int v1 = 4;
- if (!isFlag(kGFTwigTaken)) {
+ if (!_vm->isFlag(kGFTwigTaken)) {
_s99_sequenceIdArr[4] = 0x31C;
v1 = 5;
}
- if (!isFlag(kGFPlatypusTalkingToAssistant))
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
_s99_sequenceIdArr[v1++] = 0x31D;
v4 = v1;
_s99_sequenceIdArr[v1] = 0x319;
@@ -144,9 +171,9 @@ void GnapEngine::scene47_initCutscene7() {
_s99_sequenceIdArr[v0++] = 0x312;
_s99_sequenceIdArr[v0] = 0x31A;
v2 = v0 + 1;
- if (!isFlag(kGFTwigTaken))
+ if (!_vm->isFlag(kGFTwigTaken))
_s99_sequenceIdArr[v2++] = 0x31C;
- if (!isFlag(kGFPlatypusTalkingToAssistant))
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
_s99_sequenceIdArr[v2++] = 0x31D;
_s99_sequenceIdArr[v2] = 0x313;
_s99_sequenceIdArr[v2 + 1] = 0x315;
@@ -166,6 +193,8 @@ void GnapEngine::scene47_initCutscene7() {
_s99_canSkip[3] = false;
_s99_canSkip[4] = false;
_s99_itemsCount = 5;
+
+ return -1;
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene47.h b/engines/gnap/scenes/scene47.h
new file mode 100644
index 0000000..f1c1034
--- /dev/null
+++ b/engines/gnap/scenes/scene47.h
@@ -0,0 +1,89 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE47_H
+#define GNAP_SCENE47_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene471: public CutScene {
+public:
+ Scene471(GnapEngine *vm);
+ ~Scene471() {}
+
+ virtual int init();
+};
+
+class Scene472: public CutScene {
+public:
+ Scene472(GnapEngine *vm);
+ ~Scene472() {}
+
+ virtual int init();
+};
+
+class Scene473: public CutScene {
+public:
+ Scene473(GnapEngine *vm);
+ ~Scene473() {}
+
+ virtual int init();
+};
+
+class Scene474: public CutScene {
+public:
+ Scene474(GnapEngine *vm);
+ ~Scene474() {}
+
+ virtual int init();
+};
+
+class Scene475: public CutScene {
+public:
+ Scene475(GnapEngine *vm);
+ ~Scene475() {}
+
+ virtual int init();
+};
+
+class Scene476: public CutScene {
+public:
+ Scene476(GnapEngine *vm);
+ ~Scene476() {}
+
+ virtual int init();
+};
+
+class Scene477: public CutScene {
+public:
+ Scene477(GnapEngine *vm);
+ ~Scene477() {}
+
+ virtual int init();
+};
+} // End of namespace Gnap
+#endif // GNAP_SCENE47_H
diff --git a/engines/gnap/scenes/scene48.cpp b/engines/gnap/scenes/scene48.cpp
index a614ca4..46d624e 100644
--- a/engines/gnap/scenes/scene48.cpp
+++ b/engines/gnap/scenes/scene48.cpp
@@ -23,10 +23,13 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene48.h"
namespace Gnap {
-void GnapEngine::scene48_initCutscene() {
+Scene48::Scene48(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene48::init() {
_s99_sequenceIdArr[0] = 390;
_s99_sequenceIdArr[1] = 391;
_s99_sequenceIdArr[2] = 392;
@@ -80,6 +83,8 @@ void GnapEngine::scene48_initCutscene() {
_s99_canSkip[11] = false;
_s99_canSkip[12] = false;
_s99_itemsCount = 13;
+
+ return -1;
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene48.h b/engines/gnap/scenes/scene48.h
new file mode 100644
index 0000000..24e54b4
--- /dev/null
+++ b/engines/gnap/scenes/scene48.h
@@ -0,0 +1,42 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE48_H
+#define GNAP_SCENE48_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene48: public CutScene {
+public:
+ Scene48(GnapEngine *vm);
+ ~Scene48() {}
+
+ virtual int init();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE48_H
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
index b6e4be9..935a166 100644
--- a/engines/gnap/scenes/scene54.cpp
+++ b/engines/gnap/scenes/scene54.cpp
@@ -23,10 +23,13 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene54.h"
namespace Gnap {
-void GnapEngine::scene54_initCutscene1() {
+Scene541::Scene541(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene541::init() {
_s99_sequenceIdArr[0] = 0x1BE;
_s99_sequenceIdArr[1] = 0x1BF;
_s99_sequenceIdArr[2] = 0x1BA;
@@ -36,7 +39,7 @@ void GnapEngine::scene54_initCutscene1() {
_s99_resourceIdArr[0] = 0x3C;
_s99_resourceIdArr[1] = 0x43;
_s99_resourceIdArr[2] = 0x44;
- if (isFlag(kGFPictureTaken))
+ if (_vm->isFlag(kGFPictureTaken))
_s99_resourceIdArr[3] = 0x47;
else
_s99_resourceIdArr[3] = 0x46;
@@ -52,9 +55,13 @@ void GnapEngine::scene54_initCutscene1() {
_s99_canSkip[3] = false;
_s99_canSkip[4] = false;
_s99_itemsCount = 5;
+
+ return -1;
}
-void GnapEngine::scene54_initCutscene2() {
+Scene542::Scene542(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene542::init() {
_s99_sequenceIdArr[0] = 0x1C9;
_s99_sequenceIdArr[1] = 0x1C7;
_s99_sequenceIdArr[2] = 0x1CC;
@@ -122,6 +129,8 @@ void GnapEngine::scene54_initCutscene2() {
_s99_canSkip[14] = true;
_s99_canSkip[15] = false;
_s99_itemsCount = 16;
+
+ return -1;
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene54.h b/engines/gnap/scenes/scene54.h
new file mode 100644
index 0000000..a27d157
--- /dev/null
+++ b/engines/gnap/scenes/scene54.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE54_H
+#define GNAP_SCENE54_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene541: public CutScene {
+public:
+ Scene541(GnapEngine *vm);
+ ~Scene541() {}
+
+ virtual int init();
+};
+
+class Scene542: public CutScene {
+public:
+ Scene542(GnapEngine *vm);
+ ~Scene542() {}
+
+ virtual int init();
+};
+} // End of namespace Gnap
+#endif // GNAP_SCENE54_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 6d54e4b..2f93098 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -41,6 +41,10 @@
#include "gnap/scenes/scene13.h"
#include "gnap/scenes/scene14.h"
#include "gnap/scenes/scene15.h"
+#include "gnap/scenes/scene16.h"
+#include "gnap/scenes/scene47.h"
+#include "gnap/scenes/scene48.h"
+#include "gnap/scenes/scene54.h"
namespace Gnap {
@@ -160,7 +164,7 @@ int GnapEngine::initSceneLogic() {
case 47:
case 48:
case 54:
- backgroundId = cutscene_init();
+ backgroundId = -1;
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 17:
@@ -478,10 +482,12 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 12;
break;
case 16:
- scene16_initCutscene();
+ _scene = new Scene16(this);
+ _scene->init();
_newSceneNum = 17;
_newCursorValue = 3;
- cutscene_run();
+ _scene->run();
+ delete _scene;
break;
case 17:
scene17_run();
@@ -639,39 +645,49 @@ void GnapEngine::runSceneLogic() {
break;
case 47:
if (_prevSceneNum == 49) {
- scene47_initCutscene1();
+ _scene = new Scene471(this);
+ _scene->init();
_newSceneNum = 7;
_newCursorValue = 2;
} else if (_prevSceneNum == 13) {
- scene47_initCutscene2();
+ _scene = new Scene472(this);
+ _scene->init();
_newSceneNum = 11;
} else if (!isFlag(kGFPlatyPussDisguised) && _prevSceneNum == 2) {//CHECKME
if (isFlag(kGFUnk25)) {
- scene47_initCutscene3();
+ _scene = new Scene473(this);
+ _scene->init();
_newSceneNum = 2;
} else {
- scene47_initCutscene4();
+ _scene = new Scene474(this);
+ _scene->init();
_newSceneNum = 49;
}
} else if (_prevSceneNum == 21) {
- scene47_initCutscene5();
+ _scene = new Scene475(this);
+ _scene->init();
_newSceneNum = 21;
setFlag(kGFTwigTaken);
setFlag(kGFKeysTaken);
} else if (_prevSceneNum == 30) {
- scene47_initCutscene6();
+ _scene = new Scene476(this);
+ _scene->init();
_newSceneNum = 26;
} else if (isFlag(kGFPlatyPussDisguised) && _cursorValue == 1) {
- scene47_initCutscene7();
+ _scene = new Scene477(this);
+ _scene->init();
_newSceneNum = 4;
}
- cutscene_run();
+ _scene->run();
+ delete _scene;
break;
case 48:
- scene48_initCutscene();
+ _scene = new Scene48(this);
+ _scene->init();
_newSceneNum = 33;
_newCursorValue = 4;
- cutscene_run();
+ _scene->run();
+ delete _scene;
break;
case 49:
scene49_run();
@@ -696,16 +712,91 @@ void GnapEngine::runSceneLogic() {
break;
case 54:
if (_prevSceneNum == 45) {
- scene54_initCutscene1();
+ _scene = new Scene541(this);
+ _scene->init();
_newSceneNum = 43;
- cutscene_run();
+ _scene->run();
+ delete _scene;
} else {
- scene54_initCutscene2();
- cutscene_run();
+ _scene = new Scene542(this);
+ _scene->init();
+ _scene->run();
+ delete _scene;
_gameDone = true;
}
break;
}
}
+void CutScene::run() {
+ int itemIndex = 0;
+ int soundId = -1;
+ int volume = 100;
+ int duration = 0;
+ bool skip = false;
+
+ if (_vm->_prevSceneNum == 2) {
+ soundId = 0x36B;
+ duration = MAX(1, 300 / _vm->getSequenceTotalDuration(_s99_sequenceIdArr[_s99_itemsCount - 1]));//CHECKME
+ _vm->_timers[0] = 0;
+ }
+
+ if (soundId != -1)
+ _vm->playSound(soundId, false);
+
+ _vm->hideCursor();
+
+ _vm->_gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[0]);
+
+ for (int j = 0; j < _s99_sequenceCountArr[0]; ++j)
+ _vm->_gameSys->insertSequence(_s99_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s99_sequenceIdArr[0], 2, 0);
+
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(29);
+
+ _vm->_mouseClickState._left = false;
+
+ int firstSequenceIndex = 0;
+ while (!_vm->_sceneDone) {
+ _vm->gameUpdateTick();
+
+ if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip) {
+ skip = false;
+ _vm->_gameSys->requestClear2(false);
+ _vm->_gameSys->requestClear1();
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ firstSequenceIndex += _s99_sequenceCountArr[itemIndex++];
+ if (itemIndex >= _s99_itemsCount) {
+ _vm->_sceneDone = true;
+ } else {
+ for (int m = 0; m < _s99_sequenceCountArr[itemIndex]; ++m)
+ _vm->_gameSys->insertSequence(_s99_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[itemIndex]);
+ _vm->_gameSys->setAnimation(_s99_sequenceIdArr[firstSequenceIndex], 2, 0);
+ }
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(29);
+ if (_s99_canSkip[itemIndex])
+ skip = true;
+ else
+ _vm->_sceneDone = true;
+ }
+
+ if (!_vm->_timers[0] && itemIndex == _s99_itemsCount - 1) {
+ _vm->_timers[0] = 2;
+ volume = MAX(1, volume - duration);
+ _vm->setSoundVolume(soundId, volume);
+ }
+ }
+
+ if (soundId != -1)
+ _vm->stopSound(soundId);
+}
+
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index 63f11b9..1f49fd8 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -44,6 +44,26 @@ protected:
GnapEngine *_vm;
};
+class CutScene : public Scene {
+public:
+ CutScene(GnapEngine *vm) : Scene(vm) {};
+ ~CutScene() {};
+
+ virtual int init() = 0;
+ void updateHotspots() {}
+ void run();
+ void updateAnimations() {}
+ void updateAnimationsCb() {}
+
+protected:
+ GnapEngine *_vm;
+
+ int _s99_itemsCount;
+ int _s99_resourceIdArr[16];
+ int _s99_sequenceCountArr[16];
+ int _s99_sequenceIdArr[50];
+ bool _s99_canSkip[16];
+};
} // End of namespace Gnap
#endif // GNAP_SCENECORE_H
Commit: 453194b48b5692e7fb8719092d9998e371cbd0e8
https://github.com/scummvm/scummvm/commit/453194b48b5692e7fb8719092d9998e371cbd0e8
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 17
Changed paths:
A engines/gnap/scenes/scene17.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene17.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 07978cb..e002bb5 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2018,16 +2018,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 17
- _s17_platTryGetWrenchCtr = 0;
- _s17_wrenchCtr = 2;
- _s17_nextCarWindowSequenceId = -1;
- _s17_nextWrenchSequenceId = -1;
- _s17_canTryGetWrench = true;
- _s17_platPhoneCtr = 0;
- _s17_nextPhoneSequenceId = -1;
- _s17_currPhoneSequenceId = -1;
-
// Scene 18
_s18_garbageCanPos = 8;
_s18_platPhoneCtr = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index cbe711a..0fa110b 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,19 +603,6 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 17
- bool _s17_canTryGetWrench;
- int _s17_wrenchCtr, _s17_platPhoneCtr, _s17_platTryGetWrenchCtr;
- int _s17_nextPhoneSequenceId, _s17_currPhoneSequenceId;
- int _s17_nextWrenchSequenceId, _s17_currWrenchSequenceId;
- int _s17_nextCarWindowSequenceId, _s17_currCarWindowSequenceId;
- int scene17_init();
- void scene17_updateHotspots();
- void scene17_update();
- void scene17_platHangUpPhone();
- void scene17_run();
- void scene17_updateAnimations();
-
// Scene 18
int _s18_garbageCanPos;
int _s18_platPhoneCtr;
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
index cf5945d..00b3f19 100644
--- a/engines/gnap/scenes/scene17.cpp
+++ b/engines/gnap/scenes/scene17.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene17.h"
namespace Gnap {
@@ -57,270 +58,279 @@ enum {
kASLeaveScene = 15
};
-int GnapEngine::scene17_init() {
+Scene17::Scene17(GnapEngine *vm) : Scene(vm) {
+ _s17_platTryGetWrenchCtr = 0;
+ _s17_wrenchCtr = 2;
+ _s17_nextCarWindowSequenceId = -1;
+ _s17_nextWrenchSequenceId = -1;
+ _s17_canTryGetWrench = true;
+ _s17_platPhoneCtr = 0;
+ _s17_nextPhoneSequenceId = -1;
+ _s17_currPhoneSequenceId = -1;
+}
+
+int Scene17::init() {
return 0x263;
}
-void GnapEngine::scene17_updateHotspots() {
- setHotspot(kHSPlatypus, 1, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSPhone1, 61, 280, 97, 322, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- setHotspot(kHSPhone2, 80, 204, 178, 468, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- setHotspot(kHSExitGrubCity, 196, 207, 280, 304, SF_EXIT_U_CURSOR, 3, 5);
- setHotspot(kHSExitToyStore, 567, 211, 716, 322, SF_EXIT_U_CURSOR, 5, 6);
- setHotspot(kHSWrench, 586, 455, 681, 547, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- setHotspot(kHSWalkArea1, 0, 0, 800, 434);
- setHotspot(kHSWalkArea2, 541, 0, 800, 600);
- setHotspot(kHSWalkArea3, 0, 204, 173, 468);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFGrassTaken))
- _hotspots[kHSWrench]._flags = SF_NONE;
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
- _hotspots[kHSDevice]._flags = SF_DISABLED;
- _hotspots[kHSPlatypus]._flags = SF_DISABLED;
+void Scene17::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 1, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSPhone1, 61, 280, 97, 322, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHSPhone2, 80, 204, 178, 468, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHSExitGrubCity, 196, 207, 280, 304, SF_EXIT_U_CURSOR, 3, 5);
+ _vm->setHotspot(kHSExitToyStore, 567, 211, 716, 322, SF_EXIT_U_CURSOR, 5, 6);
+ _vm->setHotspot(kHSWrench, 586, 455, 681, 547, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 434);
+ _vm->setHotspot(kHSWalkArea2, 541, 0, 800, 600);
+ _vm->setHotspot(kHSWalkArea3, 0, 204, 173, 468);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFGrassTaken))
+ _vm->_hotspots[kHSWrench]._flags = SF_NONE;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
- _hotspotsCount = 10;
+ _vm->_hotspotsCount = 10;
}
-void GnapEngine::scene17_update() {
- gameUpdateTick();
- updateMouseCursor();
- updateGrabCursorSprite(0, 0);
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+void Scene17::update() {
+ _vm->gameUpdateTick();
+ _vm->updateMouseCursor();
+ _vm->updateGrabCursorSprite(0, 0);
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
}
-void GnapEngine::scene17_platHangUpPhone() {
- int savedGnapActionStatus = _gnapActionStatus;
+void Scene17::platHangUpPhone() {
+ int savedGnapActionStatus = _vm->_gnapActionStatus;
- if (_platypusActionStatus == kASPlatPhoningAssistant) {
- _gnapActionStatus = kASPlatHangUpPhone;
- updateMouseCursor();
+ if (_vm->_platypusActionStatus == kASPlatPhoningAssistant) {
+ _vm->_gnapActionStatus = kASPlatHangUpPhone;
+ _vm->updateMouseCursor();
_s17_platPhoneCtr = 0;
- _platypusActionStatus = -1;
- _gameSys->setAnimation(0x257, 254, 4);
- _gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_gameSys->getAnimationStatus(4) != 2)
- gameUpdateTick();
- _gameSys->setAnimation(0x25B, _platypusId, 1);
- _gameSys->insertSequence(0x25B, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0x25B;
- _platypusSequenceDatNum = 0;
+ _vm->_platypusActionStatus = -1;
+ _vm->_gameSys->setAnimation(0x257, 254, 4);
+ _vm->_gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x25B, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25B;
+ _vm->_platypusSequenceDatNum = 0;
_s17_currPhoneSequenceId = -1;
_s17_nextPhoneSequenceId = -1;
- clearFlag(kGFPlatypusTalkingToAssistant);
- while (_gameSys->getAnimationStatus(1) != 2)
- gameUpdateTick();
- _gnapActionStatus = savedGnapActionStatus;
- updateMouseCursor();
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gnapActionStatus = savedGnapActionStatus;
+ _vm->updateMouseCursor();
}
- scene17_updateHotspots();
+ updateHotspots();
}
-void GnapEngine::scene17_run() {
- playSound(0x10940, true);
- startSoundTimerA(8);
- _sceneWaiting = false;
- _timers[4] = getRandom(100) + 200;
- _timers[3] = 200;
- _timers[5] = getRandom(30) + 80;
- _timers[6] = getRandom(30) + 200;
- _timers[7] = getRandom(100) + 100;
-
- if (isFlag(kGFTruckKeysUsed)) {
- _gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
+void Scene17::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(8);
+ _vm->_sceneWaiting = false;
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ _vm->_timers[3] = 200;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ _vm->_timers[6] = _vm->getRandom(30) + 200;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
} else {
- if (_s18_garbageCanPos >= 8) {
- _gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
- } else if (_s18_garbageCanPos >= 6) {
- _gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
- } else if (_s18_garbageCanPos >= 5) {
- _gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
- } else if (_s18_garbageCanPos >= 4) {
- _gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
+ if (_vm->_s18_garbageCanPos >= 8) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
+ } else if (_vm->_s18_garbageCanPos >= 6) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
+ } else if (_vm->_s18_garbageCanPos >= 5) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
+ } else if (_vm->_s18_garbageCanPos >= 4) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
} else {
- _gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
}
}
- if (isFlag(kGFGroceryStoreHatTaken))
- _gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFGrassTaken))
+ if (_vm->isFlag(kGFGrassTaken))
_s17_currWrenchSequenceId = 0x22D;
else
_s17_currWrenchSequenceId = 0x22F;
_s17_currCarWindowSequenceId = 0x244;
- if (isFlag(kGFUnk14))
- _gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(_s17_currWrenchSequenceId, 40, 2);
- _gameSys->insertSequence(_s17_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_currWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_s17_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGrassTaken)) {
- _gameSys->setAnimation(0, 0, 3);
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
} else {
- _gameSys->setAnimation(_s17_currCarWindowSequenceId, 40, 3);
- _gameSys->insertSequence(_s17_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_currCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_s17_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
}
_s17_canTryGetWrench = true;
- if (isFlag(kGFUnk18))
- _gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_prevSceneNum == 53 || _prevSceneNum == 18 || _prevSceneNum == 20 || _prevSceneNum == 19) {
- if (_prevSceneNum == 20) {
- initGnapPos(4, 6, kDirBottomRight);
- initPlatypusPos(5, 6, kDirNone);
- endSceneInit();
- platypusWalkTo(5, 9, -1, 0x107C2, 1);
- gnapWalkTo(4, 8, -1, 0x107B9, 1);
- } else if (isFlag(kGFUnk27)) {
- initGnapPos(3, 9, kDirUpLeft);
- _platX = _hotspotsWalkPos[2].x;
- _platY = _hotspotsWalkPos[2].y;
- _platypusId = 20 * _hotspotsWalkPos[2].y;
- _gameSys->insertSequence(0x25A, 20 * _hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
- _platypusSequenceId = 0x25A;
- _platypusSequenceDatNum = 0;
- endSceneInit();
- clearFlag(kGFSpringTaken);
- clearFlag(kGFUnk16);
- _platypusActionStatus = kASPlatPhoningAssistant;
- scene17_platHangUpPhone();
- _gameSys->setAnimation(0, 0, 4);
- clearFlag(kGFPlatypusTalkingToAssistant);
- clearFlag(kGFUnk27);
- scene17_updateHotspots();
- } else if (isFlag(kGFUnk25)) {
- clearFlag(kGFSpringTaken);
- clearFlag(kGFUnk16);
- initPlatypusPos(7, 9, kDirNone);
- _gnapX = _hotspotsWalkPos[2].x;
- _gnapY = _hotspotsWalkPos[2].y;
- _gnapId = 20 * _hotspotsWalkPos[2].y;
- _gameSys->insertSequence(601, 20 * _hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 601;
- _gnapActionStatus = kASGnapHangUpPhone;
- clearFlag(kGFUnk25);
- _gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
- _gameSys->setAnimation(0x257, 254, 0);
- _gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
- } else if (isFlag(kGFPlatypusTalkingToAssistant)) {
- clearFlag(kGFSpringTaken);
- clearFlag(kGFUnk16);
- _sceneWaiting = true;
- initGnapPos(3, 9, kDirUpLeft);
- _platX = _hotspotsWalkPos[2].x;
- _platY = _hotspotsWalkPos[2].y;
- _platypusId = 20 * _hotspotsWalkPos[2].y;
+ if (_vm->isFlag(kGFUnk18))
+ _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(4, 6, kDirBottomRight);
+ _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ } else if (_vm->isFlag(kGFUnk27)) {
+ _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_platX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25A;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->endSceneInit();
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kASPlatPhoningAssistant;
+ platHangUpPhone();
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ _vm->clearFlag(kGFUnk27);
+ updateHotspots();
+ } else if (_vm->isFlag(kGFUnk25)) {
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->_gnapX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_gnapY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_gameSys->insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 601;
+ _vm->_gnapActionStatus = kASGnapHangUpPhone;
+ _vm->clearFlag(kGFUnk25);
+ _vm->_gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(0x257, 254, 0);
+ _vm->_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
+ } else if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->_sceneWaiting = true;
+ _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_platX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
_s17_currPhoneSequenceId = 0x251;
- _gameSys->insertSequence(0x25A, 20 * _hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(_s17_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- _platypusSequenceId = 0x25A;
- _platypusSequenceDatNum = 0;
- endSceneInit();
- _gameSys->setAnimation(_s17_currPhoneSequenceId, 254, 1);
- _platypusActionStatus = kASPlatPhoningAssistant;
- scene17_updateHotspots();
- } else if (_prevSceneNum == 18) {
- initGnapPos(6, 6, kDirBottomRight);
- initPlatypusPos(5, 6, kDirNone);
- endSceneInit();
- platypusWalkTo(5, 9, -1, 0x107C2, 1);
- gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s17_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25A;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(_s17_currPhoneSequenceId, 254, 1);
+ _vm->_platypusActionStatus = kASPlatPhoningAssistant;
+ updateHotspots();
+ } else if (_vm->_prevSceneNum == 18) {
+ _vm->initGnapPos(6, 6, kDirBottomRight);
+ _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
- if (isFlag(kGFSpringTaken)) {
- initGnapPos(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, kDirBottomRight);
- initPlatypusPos(1, 9, kDirNone);
- endSceneInit();
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->initGnapPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
+ _vm->initPlatypusPos(1, 9, kDirNone);
+ _vm->endSceneInit();
} else {
- initGnapPos(3, 7, kDirBottomRight);
- initPlatypusPos(1, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
}
- clearFlag(kGFSpringTaken);
- clearFlag(kGFUnk16);
- endSceneInit();
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->endSceneInit();
}
} else {
- _gnapX = 3;
- _gnapY = 6;
- _gnapId = 120;
- _gnapSequenceId = 0x23D;
- _gnapSequenceDatNum = 0;
- _gnapIdleFacing = kDirBottomRight;
- _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _platX = -1;
- _platY = 8;
- _platypusId = 160;
- _gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x107C1, _platypusId, 0x241, _platypusId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
- _gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapId = 120;
+ _vm->_gnapSequenceId = 0x23D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platX = -1;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
- endSceneInit();
- _platypusSequenceId = 0x7C1;
- _platypusSequenceDatNum = 1;
- _platypusFacing = kDirBottomRight;
- platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ _vm->endSceneInit();
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusFacing = kDirBottomRight;
+ _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0 || _gnapActionStatus == 3) {
- runMenu();
- scene17_updateHotspots();
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- if (isFlag(kGFGrassTaken)) {
- gnapUseJointOnPlatypus();
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->gnapUseJointOnPlatypus();
} else {
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(_hotspotsWalkPos[6].x, _hotspotsWalkPos[6].y, 1, 0x107C2, 1);
- gnapWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 0, 0x107BA, 1);
- _platypusActionStatus = kASGetWrench1;
- _gnapActionStatus = kASGetWrench1;
- _timers[5] = getRandom(30) + 80;
- setGrabCursorSprite(-1);
- invRemove(kItemJoint);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _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->_platypusActionStatus = kASGetWrench1;
+ _vm->_gnapActionStatus = kASGetWrench1;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemJoint);
}
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapScratchingHead(_platX, _platY);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -328,30 +338,30 @@ void GnapEngine::scene17_run() {
break;
case kHSWrench:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFGrassTaken)) {
- playGnapImpossible(0, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 8, 7);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- playGnapScratchingHead(8, 7);
+ _vm->playGnapScratchingHead(8, 7);
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_s17_canTryGetWrench) {
- scene17_platHangUpPhone();
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(_hotspotsWalkPos[6].x + 1, _hotspotsWalkPos[6].y, 1, 0x107C2, 1);
- _platypusActionStatus = kASTryGetWrench;
- _gnapActionStatus = kASTryGetWrench;
- _timers[5] = getRandom(30) + 80;
+ platHangUpPhone();
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kASTryGetWrench;
+ _vm->_gnapActionStatus = kASTryGetWrench;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -359,40 +369,40 @@ void GnapEngine::scene17_run() {
break;
case kHSPhone1:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASPutCoinIntoPhone;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASPutCoinIntoPhone;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 3);
+ _vm->playGnapScratchingHead(1, 3);
break;
case GRAB_CURSOR:
- if (isFlag(kGFUnk18)) {
- scene17_platHangUpPhone();
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y) | 0x10000, 1);
- _gnapActionStatus = kASGetCoinFromPhone;
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGetCoinFromPhone;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(kGFUnk18)) {
- scene17_platHangUpPhone();
- _isLeavingScene = true;
- gnapUseDeviceOnPlatypuss();
- _platypusFacing = kDirUpLeft;
- platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- setFlag(kGFUnk16);
- _platypusActionStatus = kASPlatUsePhone;
- _gnapActionStatus = kASPlatUsePhone;
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->_platypusFacing = kDirUpLeft;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->setFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kASPlatUsePhone;
+ _vm->_gnapActionStatus = kASPlatUsePhone;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -400,43 +410,43 @@ void GnapEngine::scene17_run() {
break;
case kHSPhone2:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASPutCoinIntoPhone;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASPutCoinIntoPhone;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 3);
+ _vm->playGnapScratchingHead(1, 3);
break;
case GRAB_CURSOR:
- if (isFlag(kGFUnk18)) {
- scene17_platHangUpPhone();
- _isLeavingScene = true;
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGnapUsePhone;
- setFlag(kGFSpringTaken);
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGnapUsePhone;
+ _vm->setFlag(kGFSpringTaken);
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (isFlag(kGFUnk18)) {
- scene17_platHangUpPhone();
- _isLeavingScene = true;
- gnapUseDeviceOnPlatypuss();
- _platypusFacing = kDirUpLeft;
- platypusWalkTo(_hotspotsWalkPos[2].x, _hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- setFlag(kGFUnk16);
- _platypusActionStatus = kASPlatUsePhone;
- _gnapActionStatus = kASPlatUsePhone;
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->_platypusFacing = kDirUpLeft;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->setFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kASPlatUsePhone;
+ _vm->_gnapActionStatus = kASPlatUsePhone;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -444,80 +454,80 @@ void GnapEngine::scene17_run() {
break;
case kHSExitToyStore:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 18;
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[5].x, _hotspotsWalkPos[5].y, 0, 0x107BB, 1);
- _gnapActionStatus = kASLeaveScene;
- if (_platypusActionStatus != kASPlatPhoningAssistant)
- platypusWalkTo(_hotspotsWalkPos[5].x - 1, _hotspotsWalkPos[5].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->_platypusActionStatus != kASPlatPhoningAssistant)
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
}
break;
case kHSExitGrubCity:
- if (_gnapActionStatus < 0) {
- scene17_platHangUpPhone();
- _isLeavingScene = true;
- _newSceneNum = 20;
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[3].x + 1, _hotspotsWalkPos[3].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
case kHSWalkArea3:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = 0;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
}
break;
}
- scene17_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10940))
- playSound(0x10940, true);
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- platypusSub426234();
- updateGnapIdleSequence2();
- if (!_timers[4]) {
- _timers[4] = getRandom(100) + 200;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0)
- _gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->platypusSub426234();
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[7]) {
- _timers[7] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
- switch (getRandom(3)) {
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ switch (_vm->getRandom(3)) {
case 0:
- _gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _gameSys->insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
}
- if (_platypusActionStatus < 0 && !_timers[5]) {
- _timers[5] = getRandom(30) + 80;
- if (isFlag(kGFGrassTaken) && _s17_nextWrenchSequenceId == -1) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ if (_vm->isFlag(kGFGrassTaken) && _s17_nextWrenchSequenceId == -1) {
_s17_nextWrenchSequenceId = 0x236;
} else if (_s17_canTryGetWrench) {
- switch (getRandom(6)) {
+ switch (_vm->getRandom(6)) {
case 0:
_s17_nextWrenchSequenceId = 0x231;
break;
@@ -536,7 +546,7 @@ void GnapEngine::scene17_run() {
} else {
--_s17_wrenchCtr;
if (_s17_wrenchCtr) {
- switch (getRandom(6)) {
+ switch (_vm->getRandom(6)) {
case 0:
_s17_nextWrenchSequenceId = 0x237;
break;
@@ -562,90 +572,87 @@ void GnapEngine::scene17_run() {
}
}
}
- if (!_timers[6]) {
- _timers[6] = getRandom(30) + 200;
- if (_s17_nextCarWindowSequenceId == -1 && !isFlag(kGFGrassTaken))
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(30) + 200;
+ if (_s17_nextCarWindowSequenceId == -1 && !_vm->isFlag(kGFGrassTaken))
_s17_nextCarWindowSequenceId = 0x246;
}
- playSoundA();
+ _vm->playSoundA();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene17_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene17_updateAnimations() {
-
+void Scene17::updateAnimations() {
static const int kPlatPhoneSequenceIds[] = {
0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257
};
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASGetWrench1:
- _gnapActionStatus = kASGetWrenchGnapReady;
+ _vm->_gnapActionStatus = kASGetWrenchGnapReady;
break;
case kASGetCoinFromPhone:
- playGnapPullOutDevice(1, 3);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x250, 100, 0);
- _gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
- invAdd(kItemDiceQuarterHole);
- clearFlag(kGFUnk18);
- _gnapActionStatus = kASGetCoinFromPhoneDone;
+ _vm->playGnapPullOutDevice(1, 3);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x250, 100, 0);
+ _vm->_gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->invAdd(kItemDiceQuarterHole);
+ _vm->clearFlag(kGFUnk18);
+ _vm->_gnapActionStatus = kASGetCoinFromPhoneDone;
break;
case kASGetCoinFromPhoneDone:
- setGrabCursorSprite(kItemDiceQuarterHole);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemDiceQuarterHole);
+ _vm->_gnapActionStatus = -1;
break;
case kASPutCoinIntoPhone:
- _gameSys->setAnimation(0x24C, _gnapId, 0);
- _gameSys->insertSequence(0x24C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x24C;
- invRemove(kItemDiceQuarterHole);
- setGrabCursorSprite(-1);
- setFlag(kGFUnk18);
- _gnapActionStatus = kASPutCoinIntoPhoneDone;
+ _vm->_gameSys->setAnimation(0x24C, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x24C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x24C;
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->setGrabCursorSprite(-1);
+ _vm->setFlag(kGFUnk18);
+ _vm->_gnapActionStatus = kASPutCoinIntoPhoneDone;
break;
case kASPutCoinIntoPhoneDone:
- _gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
break;
case kASGnapUsePhone:
- _gameSys->setAnimation(0x24D, _gnapId, 0);
- _gameSys->insertSequence(0x24D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 53;
+ _vm->_gameSys->setAnimation(0x24D, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 53;
break;
case kASGnapHangUpPhone:
- _gameSys->insertSequence(0x258, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x258;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x258;
+ _vm->_gnapActionStatus = -1;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- switch (_platypusActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
case kASTryGetWrench:
- _platypusActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
++_s17_platTryGetWrenchCtr;
if (_s17_platTryGetWrenchCtr % 2 != 0)
_s17_nextWrenchSequenceId = 0x233;
@@ -660,17 +667,17 @@ void GnapEngine::scene17_updateAnimations() {
_s17_nextCarWindowSequenceId = 0x249;
break;
case kASGetWrenchDone:
- _platypusActionStatus = -1;
- invAdd(kItemWrench);
- setGrabCursorSprite(kItemWrench);
+ _vm->_platypusActionStatus = -1;
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
break;
case kASPlatUsePhone:
- _gameSys->setAnimation(0x24E, _platypusId, 1);
- _gameSys->insertSequence(0x24E, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceDatNum = 0;
- _platypusSequenceId = 0x24E;
- _platypusActionStatus = kASLeaveScene;
- _newSceneNum = 53;
+ _vm->_gameSys->setAnimation(0x24E, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x24E;
+ _vm->_platypusActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 53;
break;
case kASPlatPhoningAssistant:
++_s17_platPhoneCtr;
@@ -678,103 +685,103 @@ void GnapEngine::scene17_updateAnimations() {
_s17_platPhoneCtr = 0;
_s17_nextPhoneSequenceId = -1;
_s17_currPhoneSequenceId = -1;
- _gameSys->insertSequence(0x25B, _platypusId, 0x25A, _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceDatNum = 0;
- _platypusSequenceId = 0x25B;
- _platypusActionStatus = -1;
- clearFlag(kGFPlatypusTalkingToAssistant);
- _sceneWaiting = false;
- scene17_updateHotspots();
+ _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x25B;
+ _vm->_platypusActionStatus = -1;
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ _vm->_sceneWaiting = false;
+ updateHotspots();
} else {
_s17_nextPhoneSequenceId = kPlatPhoneSequenceIds[_s17_platPhoneCtr];
- _gameSys->setAnimation(_s17_nextPhoneSequenceId, 254, 1);
- _gameSys->insertSequence(_s17_nextPhoneSequenceId, 254, _s17_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x25A, _platypusId, 0x25A, _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceDatNum = 0;
- _platypusSequenceId = 0x25A;
+ _vm->_gameSys->setAnimation(_s17_nextPhoneSequenceId, 254, 1);
+ _vm->_gameSys->insertSequence(_s17_nextPhoneSequenceId, 254, _s17_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x25A, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x25A;
_s17_currPhoneSequenceId = _s17_nextPhoneSequenceId;
}
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
switch (_s17_nextWrenchSequenceId) {
case 0x233:
- _gnapActionStatus = -1;
- _gameSys->insertSequence(0x243, _platypusId,
- _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x243, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
- _platypusSequenceId = 0x243;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0x243, _platypusId, 1);
+ _vm->_platypusSequenceId = 0x243;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x243, _vm->_platypusId, 1);
break;
case 0x234:
- _gnapActionStatus = -1;
- _gameSys->insertSequence(0x242, _platypusId,
- _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x242, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
- _platypusSequenceId = 0x242;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0x242, _platypusId, 1);
+ _vm->_platypusSequenceId = 0x242;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x242, _vm->_platypusId, 1);
break;
case 0x231:
- if (getRandom(2) != 0)
+ if (_vm->getRandom(2) != 0)
_s17_nextCarWindowSequenceId = 0x245;
else
_s17_nextCarWindowSequenceId = 0x248;
- _gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 2);
break;
case 0x232:
_s17_nextCarWindowSequenceId = 0x247;
- _gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 2);
break;
case 0x22E:
case 0x235:
if (_s17_nextWrenchSequenceId == 0x235)
- _hotspots[kHSWrench]._flags &= ~SF_DISABLED;
+ _vm->_hotspots[kHSWrench]._flags &= ~SF_DISABLED;
else
- _hotspots[kHSWrench]._flags |= SF_DISABLED;
+ _vm->_hotspots[kHSWrench]._flags |= SF_DISABLED;
_s17_canTryGetWrench = !_s17_canTryGetWrench;
- _gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
break;
case 0x230:
- if (_gnapActionStatus == kASGetWrenchGnapReady) {
- _gameSys->setAnimation(0, 0, 2);
+ if (_vm->_gnapActionStatus == kASGetWrenchGnapReady) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
if (_s17_canTryGetWrench) {
- _gameSys->insertSequence(0x22E, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x22E, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = 0x22E;
_s17_canTryGetWrench = false;
}
- _gameSys->setAnimation(0x23F, _platypusId, 1);
- _gameSys->insertSequence(0x10875, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x23F, _platypusId,
- _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
+ _vm->_gameSys->setAnimation(0x23F, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x10875, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x23F, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 1;
- _platypusSequenceDatNum = 0;
- _gnapSequenceId = 0x875;
- _platypusSequenceId = 0x23F;
- gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _platypusActionStatus = kASGetWrench2;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x875;
+ _vm->_platypusSequenceId = 0x23F;
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->_platypusActionStatus = kASGetWrench2;
}
break;
default:
if (_s17_nextWrenchSequenceId != -1) {
- _gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
}
@@ -782,60 +789,60 @@ void GnapEngine::scene17_updateAnimations() {
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
switch (_s17_nextCarWindowSequenceId) {
case 0x246:
- _gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
- _gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currCarWindowSequenceId = _s17_nextCarWindowSequenceId;
_s17_nextCarWindowSequenceId = -1;
break;
case 0x245:
case 0x247:
case 0x248:
- _gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(2) != 2)
- scene17_update();
- _gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
- _gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(2) != 2)
+ update();
+ _vm->_gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s17_currCarWindowSequenceId = _s17_nextCarWindowSequenceId;
_s17_nextCarWindowSequenceId = -1;
_s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
_s17_nextWrenchSequenceId = -1;
break;
case 0x249:
- _gameSys->setAnimation(0x230, 40, 2);
- _gameSys->setAnimation(0x240, _platypusId, 1);
- _gameSys->insertSequence(0x230, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x240, _platypusId, _platypusSequenceId, _platypusId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x23E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x23E;
- _gnapSequenceDatNum = 0;
- _platypusSequenceId = 0x240;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0x24A, 40, 3);
- _gameSys->insertSequence(0x24A, 40, _s17_nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(2) != 2) {
- scene17_update();
- if (_gameSys->getAnimationStatus(3) == 2) {
- _gameSys->setAnimation(0x24A, 40, 3);
- _gameSys->insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x230, 40, 2);
+ _vm->_gameSys->setAnimation(0x240, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x230, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x240, _vm->_platypusId, _vm->_platypusSequenceId, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_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;
+ _vm->_gameSys->setAnimation(0x24A, 40, 3);
+ _vm->_gameSys->insertSequence(0x24A, 40, _s17_nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(2) != 2) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0x24A, 40, 3);
+ _vm->_gameSys->insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
}
}
- _gameSys->insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x24B, 40, 3);
- _gameSys->insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x24B, 40, 3);
+ _vm->_gameSys->insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
_s17_currCarWindowSequenceId = 0x24B;
_s17_nextCarWindowSequenceId = -1;
_s17_currWrenchSequenceId = 0x22D;
_s17_nextWrenchSequenceId = -1;
- setFlag(kGFGrassTaken);
- _gnapActionStatus = -1;
- _platypusActionStatus = 2;
- scene17_updateHotspots();
- _timers[5] = getRandom(30) + 80;
+ _vm->setFlag(kGFGrassTaken);
+ _vm->_gnapActionStatus = -1;
+ _vm->_platypusActionStatus = 2;
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
break;
}
}
diff --git a/engines/gnap/scenes/scene17.h b/engines/gnap/scenes/scene17.h
new file mode 100644
index 0000000..108ef95
--- /dev/null
+++ b/engines/gnap/scenes/scene17.h
@@ -0,0 +1,61 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE17_H
+#define GNAP_SCENE17_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene17: public Scene {
+public:
+ Scene17(GnapEngine *vm);
+ ~Scene17() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _s17_canTryGetWrench;
+ int _s17_wrenchCtr;
+ int _s17_platPhoneCtr;
+ int _s17_platTryGetWrenchCtr;
+ int _s17_nextPhoneSequenceId;
+ int _s17_currPhoneSequenceId;
+ int _s17_nextWrenchSequenceId;
+ int _s17_currWrenchSequenceId;
+ int _s17_nextCarWindowSequenceId;
+ int _s17_currCarWindowSequenceId;
+
+ void update();
+ void platHangUpPhone();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE15_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 2f93098..68370e2 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -42,6 +42,7 @@
#include "gnap/scenes/scene14.h"
#include "gnap/scenes/scene15.h"
#include "gnap/scenes/scene16.h"
+#include "gnap/scenes/scene17.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -168,8 +169,9 @@ int GnapEngine::initSceneLogic() {
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
case 17:
- backgroundId = scene17_init();
- scene17_updateHotspots();
+ _scene = new Scene17(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -490,7 +492,8 @@ void GnapEngine::runSceneLogic() {
delete _scene;
break;
case 17:
- scene17_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: c8f4fce89551cc1332f65ebce2cc02e75d74c332
https://github.com/scummvm/scummvm/commit/c8f4fce89551cc1332f65ebce2cc02e75d74c332
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 18
Changed paths:
A engines/gnap/scenes/scene18.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene17.h
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e002bb5..82035eb 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2020,10 +2020,6 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
void GnapEngine::initGlobalSceneVars() {
// Scene 18
_s18_garbageCanPos = 8;
- _s18_platPhoneCtr = 0;
- _s18_platPhoneIter = 0;
- _s18_nextPhoneSequenceId = -1;
- _s18_currPhoneSequenceId = -1;
// Scene 19
_s19_toyGrabCtr = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 0fa110b..7d8edd3 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -605,19 +605,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- int _s18_platPhoneCtr;
- int _s18_platPhoneIter;
- int _s18_nextPhoneSequenceId, _s18_currPhoneSequenceId;
- Graphics::Surface *_s18_cowboyHatSurface;
- int scene18_init();
- void scene18_updateHotspots();
- void scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
- void scene18_putDownGarbageCan(int animationIndex);
- void scene18_platEndPhoning(bool platFl);
- void scene18_closeHydrantValve();
- void scene18_waitForGnapAction();
- void scene18_run();
- void scene18_updateAnimations();
// Scene 19
int _s19_currShopAssistantSequenceId, _s19_nextShopAssistantSequenceId;
diff --git a/engines/gnap/scenes/scene17.h b/engines/gnap/scenes/scene17.h
index 108ef95..a653cca 100644
--- a/engines/gnap/scenes/scene17.h
+++ b/engines/gnap/scenes/scene17.h
@@ -58,4 +58,4 @@ private:
};
} // End of namespace Gnap
-#endif // GNAP_SCENE15_H
+#endif // GNAP_SCENE17_H
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index c88f7b2..0e17531 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene18.h"
namespace Gnap {
@@ -68,64 +69,77 @@ enum {
kASLeaveScene = 20
};
-int GnapEngine::scene18_init() {
- _gameSys->setAnimation(0, 0, 3);
+Scene18::Scene18(GnapEngine *vm) : Scene(vm) {
+ _s18_cowboyHatSurface = nullptr;
+
+ _s18_platPhoneCtr = 0;
+ _s18_platPhoneIter = 0;
+ _s18_nextPhoneSequenceId = -1;
+ _s18_currPhoneSequenceId = -1;
+}
+
+Scene18::~Scene18() {
+ delete _s18_cowboyHatSurface;
+}
+
+int Scene18::init() {
+ _vm->_gameSys->setAnimation(0, 0, 3);
return 0x222;
}
-void GnapEngine::scene18_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSGarbageCan, _gridMinX + 75 * _s18_garbageCanPos - 35, _gridMinY + 230, _gridMinX + 75 * _s18_garbageCanPos + 35, _gridMinY + 318,
- SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, _s18_garbageCanPos, 7);
- setHotspot(kHSExitToyStore, 460, 238, 592, 442, SF_EXIT_U_CURSOR, 7, 7);
- setHotspot(kHSExitPhoneBooth, 275, 585, 525, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- setHotspot(kHSExitGrubCity, 0, 350, 15, 600, SF_EXIT_L_CURSOR, 0, 9);
- setHotspot(kHSHydrantTopValve, 100, 345, 182, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 8);
- setHotspot(kHSHydrantRightValve, 168, 423, 224, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- setHotspot(kHSCowboyHat, 184, 63, 289, 171, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSWalkArea1, 0, 0, 800, 448);
- setHotspot(kHSWalkArea2, 0, 0, 214, 515);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFTruckFilledWithGas)) {
- if (isFlag(kGFTruckKeysUsed)) {
- _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _hotspots[kHSHydrantRightValve]._x1 = 148;
- _hotspots[kHSHydrantRightValve]._y1 = 403;
- _hotspots[kHSGarbageCan]._flags = SF_DISABLED;
- _hotspotsWalkPos[kHSGarbageCan].x = 3;
- _hotspotsWalkPos[kHSGarbageCan].y = 7;
+void Scene18::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSGarbageCan, _vm->_gridMinX + 75 * _vm->_s18_garbageCanPos - 35, _vm->_gridMinY + 230, _vm->_gridMinX + 75 * _vm->_s18_garbageCanPos + 35, _vm->_gridMinY + 318,
+ SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, _vm->_s18_garbageCanPos, 7);
+ _vm->setHotspot(kHSExitToyStore, 460, 238, 592, 442, SF_EXIT_U_CURSOR, 7, 7);
+ _vm->setHotspot(kHSExitPhoneBooth, 275, 585, 525, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHSExitGrubCity, 0, 350, 15, 600, SF_EXIT_L_CURSOR, 0, 9);
+ _vm->setHotspot(kHSHydrantTopValve, 100, 345, 182, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 8);
+ _vm->setHotspot(kHSHydrantRightValve, 168, 423, 224, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHSCowboyHat, 184, 63, 289, 171, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 448);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 214, 515);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSHydrantRightValve]._x1 = 148;
+ _vm->_hotspots[kHSHydrantRightValve]._y1 = 403;
+ _vm->_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
+ _vm->_hotspotsWalkPos[kHSGarbageCan].x = 3;
+ _vm->_hotspotsWalkPos[kHSGarbageCan].y = 7;
} else {
- _hotspots[kHSHydrantTopValve]._y1 = 246;
+ _vm->_hotspots[kHSHydrantTopValve]._y1 = 246;
}
- } else if (isFlag(kGFBarnPadlockOpen)) {
- _hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
- _hotspots[kHSHydrantTopValve]._x1 = 105;
- _hotspots[kHSHydrantTopValve]._x2 = 192;
- } else if (isFlag(kGFTruckKeysUsed)) {
- _hotspots[kHSGarbageCan]._x1 = 115;
- _hotspots[kHSGarbageCan]._y1 = 365;
- _hotspots[kHSGarbageCan]._x2 = 168;
- _hotspots[kHSGarbageCan]._y2 = 470;
- _hotspots[kHSGarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspotsWalkPos[kHSGarbageCan].x = 3;
- _hotspotsWalkPos[kHSGarbageCan].y = 7;
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSHydrantTopValve]._x1 = 105;
+ _vm->_hotspots[kHSHydrantTopValve]._x2 = 192;
+ } else if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_hotspots[kHSGarbageCan]._x1 = 115;
+ _vm->_hotspots[kHSGarbageCan]._y1 = 365;
+ _vm->_hotspots[kHSGarbageCan]._x2 = 168;
+ _vm->_hotspots[kHSGarbageCan]._y2 = 470;
+ _vm->_hotspots[kHSGarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsWalkPos[kHSGarbageCan].x = 3;
+ _vm->_hotspotsWalkPos[kHSGarbageCan].y = 7;
}
- if (isFlag(kGFPlatyPussDisguised))
- _hotspots[kHSGarbageCan]._flags = SF_DISABLED;
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
- _hotspots[kHSDevice]._flags = SF_DISABLED;
- _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
- _hotspots[kHSPlatypus]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatyPussDisguised))
+ _vm->_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
}
- if (isFlag(kGFUnk14)) {
- _hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _hotspots[kHSCowboyHat]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFUnk14)) {
+ _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSCowboyHat]._flags = SF_DISABLED;
}
- _hotspotsCount = 11;
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
+void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
// CHECKME: (x, y) is always set to (-1, -1)
// TODO Cleanup
@@ -139,8 +153,8 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
if (x >= 0)
clippedX = x;
else
- clippedX = (_leftClickMouseX - _gridMinX + 37) / 75;
- if (clippedX >= _gnapX)
+ clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
+ if (clippedX >= _vm->_gnapX)
v10 = clippedX - 1;
else
v10 = clippedX + 1;
@@ -151,46 +165,46 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
if (v10 <= a5)
v5 = a5;
v11 = v5;
- v12 = _gridMaxX - 1;
- if (_gridMaxX - 1 >= v11)
+ v12 = _vm->_gridMaxX - 1;
+ if (_vm->_gridMaxX - 1 >= v11)
v12 = v11;
- if (v12 == _gnapX) {
- gnapSeqId = _gnapSequenceId;
- gnapId = _gnapId;
- gnapDatNum = _gnapSequenceDatNum;
- gnapGridX = _gnapX;
- if (_gnapX <= clippedX)
+ if (v12 == _vm->_gnapX) {
+ gnapSeqId = _vm->_gnapSequenceId;
+ gnapId = _vm->_gnapId;
+ gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapGridX = _vm->_gnapX;
+ if (_vm->_gnapX <= clippedX)
direction = 1;
else
direction = -1;
} else {
- if (_gnapY == _platY) {
- if (v12 >= _gnapX) {
- if (v12 >= _platX && _gnapX <= _platX)
- platypusMakeRoom();
- } else if (v12 <= _platX && _gnapX >= _platX) {
- platypusMakeRoom();
+ if (_vm->_gnapY == _vm->_platY) {
+ if (v12 >= _vm->_gnapX) {
+ if (v12 >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
+ _vm->platypusMakeRoom();
+ } else if (v12 <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
+ _vm->platypusMakeRoom();
}
}
- gnapSeqId = _gnapSequenceId;
- gnapId = _gnapId;
- gnapDatNum = _gnapSequenceDatNum;
- gnapGridX = _gnapX;
+ gnapSeqId = _vm->_gnapSequenceId;
+ gnapId = _vm->_gnapId;
+ gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapGridX = _vm->_gnapX;
int seqId = 0;
- if (v12 < _gnapX) {
+ if (v12 < _vm->_gnapX) {
direction = -1;
seqId = 1;
} else
direction = 1;
- int a2 = 20 * _gnapY + 1;
+ int a2 = 20 * _vm->_gnapY + 1;
do {
- if (isPointBlocked(gnapGridX + direction, _gnapY))
+ if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
break;
a2 += direction;
- _gameSys->insertSequence(kSequenceIds[seqId], a2,
+ _vm->_gameSys->insertSequence(kSequenceIds[seqId], a2,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqSyncWait, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
gnapSeqId = kSequenceIds[seqId];
gnapId = a2;
gnapDatNum = 0;
@@ -199,246 +213,245 @@ void GnapEngine::scene18_gnapCarryGarbageCanTo(int x, int y, int animationIndex,
}
if (argC >= 0) {
- _gnapSequenceId = ridToEntryIndex(argC);
- _gnapSequenceDatNum = ridToDatIndex(argC);
+ _vm->_gnapSequenceId = ridToEntryIndex(argC);
+ _vm->_gnapSequenceDatNum = ridToDatIndex(argC);
} else {
if (direction == 1)
- _gnapSequenceId = 0x20A;
+ _vm->_gnapSequenceId = 0x20A;
else
- _gnapSequenceId = 0x209;
- _gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x209;
+ _vm->_gnapSequenceDatNum = 0;
}
if (direction == 1)
- _gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapIdleFacing = kDirBottomRight;
else
- _gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
- _gnapId = 20 * _gnapY + 1;
+ _vm->_gnapId = 20 * _vm->_gnapY + 1;
if (animationIndex >= 0)
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
- _gameSys->insertSequence(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _gnapX = gnapGridX;
+ _vm->_gnapX = gnapGridX;
}
-void GnapEngine::scene18_putDownGarbageCan(int animationIndex) {
+void Scene18::putDownGarbageCan(int animationIndex) {
if (animationIndex >= 0) {
- while (_gameSys->getAnimationStatus(animationIndex) != 2)
- gameUpdateTick();
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2)
+ _vm->gameUpdateTick();
}
- if (_gnapIdleFacing != kDirNone && _gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight)
- _s18_garbageCanPos = _gnapX - 1;
+ if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight)
+ _vm->_s18_garbageCanPos = _vm->_gnapX - 1;
else
- _s18_garbageCanPos = _gnapX + 1;
- clearFlag(kGFPlatyPussDisguised);
- scene18_updateHotspots();
- if (_gnapIdleFacing != kDirNone && _gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
- _gameSys->insertSequence(0x107BA, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7BA;
+ _vm->_s18_garbageCanPos = _vm->_gnapX + 1;
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
+ _vm->_gameSys->insertSequence(0x107BA, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7BA;
} else {
- _gameSys->insertSequence(0x107B9, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B9;
+ _vm->_gameSys->insertSequence(0x107B9, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B9;
}
- _gnapSequenceDatNum = 1;
- _gameSys->insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _s18_garbageCanPos - 40), 0);
- _gameSys->setAnimation(0x1FA, 19, 4);
- _gameSys->insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _s18_garbageCanPos - 40), 0);
- while (_gameSys->getAnimationStatus(4) != 2)
- gameUpdateTick();
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
+ _vm->_gameSys->setAnimation(0x1FA, 19, 4);
+ _vm->_gameSys->insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ _vm->gameUpdateTick();
}
-void GnapEngine::scene18_platEndPhoning(bool platFl) {
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
+void Scene18::platEndPhoning(bool platFl) {
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_s18_platPhoneIter = 0;
_s18_platPhoneCtr = 0;
- _platypusActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
if (_s18_currPhoneSequenceId != -1) {
- _gameSys->setAnimation(0x21E, 254, 3);
- _gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_gameSys->getAnimationStatus(3) != 2)
- gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x21E, 254, 3);
+ _vm->_gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(3) != 2)
+ _vm->gameUpdateTick();
}
- _gameSys->removeSequence(0x21F, 254, true);
- _gameSys->setAnimation(0, 0, 3);
- clearFlag(kGFPlatypusTalkingToAssistant);
+ _vm->_gameSys->removeSequence(0x21F, 254, true);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
- _platypusActionStatus = kASPlatComesHere;
- _timers[6] = 50;
- _sceneWaiting = true;
+ _vm->_platypusActionStatus = kASPlatComesHere;
+ _vm->_timers[6] = 50;
+ _vm->_sceneWaiting = true;
}
_s18_currPhoneSequenceId = -1;
_s18_nextPhoneSequenceId = -1;
- scene18_updateHotspots();
+ updateHotspots();
}
}
-void GnapEngine::scene18_closeHydrantValve() {
- _gnapActionStatus = kASLeaveScene;
- updateMouseCursor();
- if (isFlag(kGFTruckFilledWithGas)) {
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (isFlag(kGFTruckKeysUsed)) {
- _gnapActionStatus = kASCloseRightValveWithGarbageCan;
- scene18_waitForGnapAction();
+void Scene18::closeHydrantValve() {
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->updateMouseCursor();
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCan;
+ waitForGnapAction();
} else {
- _gnapActionStatus = kASCloseRightValveNoGarbageCan;
- scene18_waitForGnapAction();
+ _vm->_gnapActionStatus = kASCloseRightValveNoGarbageCan;
+ waitForGnapAction();
}
- } else if (isFlag(kGFBarnPadlockOpen)) {
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
- _gnapActionStatus = kASCloseTopValve;
- scene18_waitForGnapAction();
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->_gnapActionStatus = kASCloseTopValve;
+ waitForGnapAction();
}
}
-void GnapEngine::scene18_waitForGnapAction() {
- while (_gnapActionStatus >= 0) {
- scene18_updateAnimations();
- gameUpdateTick();
+void Scene18::waitForGnapAction() {
+ while (_vm->_gnapActionStatus >= 0) {
+ updateAnimations();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene18_run() {
+void Scene18::run() {
_s18_cowboyHatSurface = nullptr;
- playSound(0x10940, true);
- startSoundTimerA(4);
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(4);
- _timers[5] = getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- clearFlag(kGFPlatyPussDisguised);
+ _vm->clearFlag(kGFPlatyPussDisguised);
- if (!isFlag(kGFUnk14))
- _gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
-
- if (isFlag(kGFTruckKeysUsed)) {
- if (isFlag(kGFTruckFilledWithGas)) {
- _gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
- playSound(0x22B, true);
+ if (!_vm->isFlag(kGFUnk14))
+ _vm->_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->_gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
} else {
- _gameSys->insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
- _gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _s18_garbageCanPos - 40), 0);
- if (isFlag(kGFTruckFilledWithGas)) {
- _gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
- playSound(0x22B, true);
- } else if (isFlag(kGFBarnPadlockOpen)) {
- _gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
- playSound(0x22B, true);
+ _vm->_gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
}
}
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_prevSceneNum == 17)
- initGnapPos(4, 11, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ if (_vm->_prevSceneNum == 17)
+ _vm->initGnapPos(4, 11, kDirBottomRight);
else
- initGnapPos(4, 7, kDirBottomRight);
- _s18_platPhoneCtr = getRandom(5);
- if (isFlag(kGFUnk27)) {
- _gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _s18_platPhoneCtr = _vm->getRandom(5);
+ if (_vm->isFlag(kGFUnk27)) {
+ _vm->_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
_s18_currPhoneSequenceId = -1;
- scene18_platEndPhoning(true);
- clearFlag(kGFUnk27);
+ platEndPhoning(true);
+ _vm->clearFlag(kGFUnk27);
} else {
_s18_currPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr];
_s18_platPhoneIter = 0;
- _gameSys->insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(_s18_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->_gameSys->insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s18_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
}
- if (isFlag(kGFUnk27)) {
- scene18_platEndPhoning(true);
- clearFlag(kGFUnk27);
+ if (_vm->isFlag(kGFUnk27)) {
+ platEndPhoning(true);
+ _vm->clearFlag(kGFUnk27);
} else {
- _gameSys->setAnimation(_s18_currPhoneSequenceId, 254, 3);
+ _vm->_gameSys->setAnimation(_s18_currPhoneSequenceId, 254, 3);
}
- gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
- if (isFlag(kGFGnapControlsToyUFO)) {
- clearFlag(kGFGnapControlsToyUFO);
- setGrabCursorSprite(kItemCowboyHat);
- _prevSceneNum = 19;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ _vm->setGrabCursorSprite(kItemCowboyHat);
+ _vm->_prevSceneNum = 19;
}
- if (_prevSceneNum == 17) {
- initGnapPos(4, 11, kDirBottomRight);
- initPlatypusPos(5, 11, kDirNone);
- endSceneInit();
- gnapWalkTo(4, 8, -1, 0x107B9, 1);
- platypusWalkTo(5, 9, -1, 0x107C2, 1);
- } else if (_prevSceneNum == 19) {
- initGnapPos(7, 7, kDirBottomRight);
- initPlatypusPos(8, 7, kDirNone);
- endSceneInit();
- gnapWalkTo(7, 8, -1, 0x107B9, 1);
- platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 17) {
+ _vm->initGnapPos(4, 11, kDirBottomRight);
+ _vm->initPlatypusPos(5, 11, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ } else if (_vm->_prevSceneNum == 19) {
+ _vm->initGnapPos(7, 7, kDirBottomRight);
+ _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(-1, 10, kDirBottomRight);
- initPlatypusPos(-1, 10, kDirNone);
- endSceneInit();
- gnapWalkTo(3, 7, -1, 0x107B9, 1);
- platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 10, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
}
}
- while (!_sceneDone) {
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 20, -1, -1, -1, -1);
+ _vm->testWalk(0, 20, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene18_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, _platX, _platY);
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -446,27 +459,27 @@ void GnapEngine::scene18_run() {
break;
case kHSCowboyHat:
- if (_gnapActionStatus == kASStandingOnHydrant) {
- _gnapActionStatus = kASGrabCowboyHat;
- _sceneWaiting = 0;
- } else if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus == kASStandingOnHydrant) {
+ _vm->_gnapActionStatus = kASGrabCowboyHat;
+ _vm->_sceneWaiting = 0;
+ } else if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSCowboyHat].x, _hotspotsWalkPos[kHSCowboyHat].y, 3, 2);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCowboyHat].x, _vm->_hotspotsWalkPos[kHSCowboyHat].y, 3, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(3, 2);
+ _vm->playGnapScratchingHead(3, 2);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[kHSCowboyHat].x, _hotspotsWalkPos[kHSCowboyHat].y, 0, getGnapSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCowboyHat].x, _vm->_hotspotsWalkPos[kHSCowboyHat].y, 0, _vm->getGnapSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -474,43 +487,43 @@ void GnapEngine::scene18_run() {
break;
case kHSGarbageCan:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFUnk14)) {
- if (_grabCursorSpriteIndex >= 0)
- playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y, 1, 5);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk14)) {
+ if (_vm->_grabCursorSpriteIndex >= 0)
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 1, 5);
else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
} else {
- if (isFlag(kGFPlatypusTalkingToAssistant))
- scene18_platEndPhoning(true);
- if (_grabCursorSpriteIndex >= 0) {
- if (!isFlag(kGFTruckKeysUsed))
- playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1),
- _hotspotsWalkPos[kHSGarbageCan].y, _hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y);
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ platEndPhoning(true);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1),
+ _vm->_hotspotsWalkPos[kHSGarbageCan].y, _vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y);
else
- playGnapShowCurrItem(_hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y, 2, 4);
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 2, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (!isFlag(kGFTruckKeysUsed))
- playGnapScratchingHead(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1), _hotspotsWalkPos[kHSGarbageCan].y);
- else if (!isFlag(kGFTruckFilledWithGas))
- playGnapScratchingHead(2, 4);
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHSGarbageCan].y);
+ else if (!_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->playGnapScratchingHead(2, 4);
break;
case GRAB_CURSOR:
- if (!isFlag(kGFTruckKeysUsed)) {
- gnapWalkTo(_hotspotsWalkPos[kHSGarbageCan].x - (_gnapX < _s18_garbageCanPos ? 1 : -1), _hotspotsWalkPos[kHSGarbageCan].y,
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHSGarbageCan].y,
-1, -1, 1);
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _s18_garbageCanPos, _gnapY) | 0x10000, 1);
- _gnapActionStatus = kASGrabGarbageCanFromStreet;
- } else if (!isFlag(kGFTruckFilledWithGas)) {
- if (gnapWalkTo(_hotspotsWalkPos[kHSGarbageCan].x, _hotspotsWalkPos[kHSGarbageCan].y, 0, -1, 1))
- _gnapActionStatus = kASGrabGarbageCanFromHydrant;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18_garbageCanPos, _vm->_gnapY) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabGarbageCanFromStreet;
+ } else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 0, -1, 1))
+ _vm->_gnapActionStatus = kASGrabGarbageCanFromHydrant;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -519,64 +532,64 @@ void GnapEngine::scene18_run() {
break;
case kHSHydrantTopValve:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
// While carrying garbage can
- if (_grabCursorSpriteIndex >= 0) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
- playGnapShowItem(_grabCursorSpriteIndex, 0, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
- playGnapScratchingHead(0, 0);
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (isFlag(kGFTruckFilledWithGas)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
- _gnapActionStatus = kASPutGarbageCanOnRunningHydrant;
- } else if (!isFlag(kGFBarnPadlockOpen)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
- _gnapActionStatus = kASPutGarbageCanOnHydrant;
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ _vm->_gnapActionStatus = kASPutGarbageCanOnRunningHydrant;
+ } else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ _vm->_gnapActionStatus = kASPutGarbageCanOnHydrant;
} else {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
- playGnapImpossible(0, 0);
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapImpossible(0, 0);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
- playGnapImpossible(0, 0);
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
} else {
- if (_grabCursorSpriteIndex == kItemWrench) {
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- _gnapActionStatus = kASOpenTopValve;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 1, 5);
+ if (_vm->_grabCursorSpriteIndex == kItemWrench) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASOpenTopValve;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 1, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 5);
+ _vm->playGnapScratchingHead(1, 5);
break;
case GRAB_CURSOR:
- if (isFlag(kGFBarnPadlockOpen)) {
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASCloseTopValve;
+ if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASCloseTopValve;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -585,43 +598,43 @@ void GnapEngine::scene18_run() {
break;
case kHSHydrantRightValve:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFUnk14)) {
- if (_grabCursorSpriteIndex == -1) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk14)) {
+ if (_vm->_grabCursorSpriteIndex == -1) {
+ _vm->playGnapImpossible(0, 0);
} else {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
}
} else {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- if (_grabCursorSpriteIndex == kItemWrench) {
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- if (isFlag(kGFTruckKeysUsed))
- _gnapActionStatus = kASOpenRightValveWithGarbageCan;
+ if (_vm->_grabCursorSpriteIndex == kItemWrench) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gnapActionStatus = kASOpenRightValveWithGarbageCan;
else
- _gnapActionStatus = kASOpenRightValveNoGarbageCan;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
+ _vm->_gnapActionStatus = kASOpenRightValveNoGarbageCan;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 5);
+ _vm->playGnapScratchingHead(1, 5);
break;
case GRAB_CURSOR:
- if (isFlag(kGFTruckFilledWithGas)) {
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (isFlag(kGFTruckKeysUsed))
- _gnapActionStatus = kASCloseRightValveWithGarbageCan;
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCan;
else
- _gnapActionStatus = kASCloseRightValveNoGarbageCan;
+ _vm->_gnapActionStatus = kASCloseRightValveNoGarbageCan;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -630,388 +643,386 @@ void GnapEngine::scene18_run() {
break;
case kHSExitToyStore:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- if (isFlag(kGFPictureTaken)) {
- playGnapImpossible(0, 0);
+ if (_vm->isFlag(kGFPictureTaken)) {
+ _vm->playGnapImpossible(0, 0);
} else {
- _isLeavingScene = true;
- _newSceneNum = 19;
- gnapWalkTo(_hotspotsWalkPos[kHSExitToyStore].x, _hotspotsWalkPos[kHSExitToyStore].y, 0, 0x107C0, 1);
- _gnapActionStatus = kASLeaveScene;
- if (!isFlag(kGFPlatypusTalkingToAssistant))
- platypusWalkTo(_hotspotsWalkPos[kHSExitToyStore].x + 1, _hotspotsWalkPos[kHSExitToyStore].y, -1, 0x107C2, 1);
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 19;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStore].x, _vm->_hotspotsWalkPos[kHSExitToyStore].y, 0, 0x107C0, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHSExitToyStore].y, -1, 0x107C2, 1);
}
}
break;
case kHSExitPhoneBooth:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- scene18_closeHydrantValve();
- _isLeavingScene = true;
- _newSceneNum = 17;
- gnapWalkTo(_hotspotsWalkPos[kHSExitPhoneBooth].x, _hotspotsWalkPos[kHSExitPhoneBooth].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypusTalkingToAssistant))
- setFlag(kGFUnk27);
+ closeHydrantValve();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 17;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHSExitPhoneBooth].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->setFlag(kGFUnk27);
else
- platypusWalkTo(_hotspotsWalkPos[kHSExitPhoneBooth].x + 1, _hotspotsWalkPos[kHSExitPhoneBooth].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPhoneBooth].x + 1, _vm->_hotspotsWalkPos[kHSExitPhoneBooth].y, -1, 0x107C2, 1);
}
break;
case kHSExitGrubCity:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
}
- scene18_closeHydrantValve();
- _isLeavingScene = true;
- _newSceneNum = 20;
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypusTalkingToAssistant))
- scene18_platEndPhoning(false);
+ closeHydrantValve();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitGrubCity].x, _vm->_hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ platEndPhoning(false);
else
- platypusWalkTo(_hotspotsWalkPos[kHSExitGrubCity].x, _hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitGrubCity].x, _vm->_hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
- _mouseClickState._left = false;
+ _vm->_mouseClickState._left = false;
}
break;
default:
- if (_gnapActionStatus != kASStandingOnHydrant && _mouseClickState._left) {
- if (isFlag(kGFPlatyPussDisguised)) {
- scene18_gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- scene18_putDownGarbageCan(0);
+ if (_vm->_gnapActionStatus != kASStandingOnHydrant && _vm->_mouseClickState._left) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
- _mouseClickState._left = false;
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene18_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10940))
- playSound(0x10940, true);
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
- if ((isFlag(kGFTruckFilledWithGas) || isFlag(kGFBarnPadlockOpen)) && !isSoundPlaying(0x22B) &&
- _gnapActionStatus != kASOpenRightValveNoGarbageCanDone && _gnapActionStatus != kASOpenRightValveNoGarbageCan &&
- _gnapActionStatus != kASOpenTopValve && _gnapActionStatus != kASOpenTopValveDone &&
- _gnapActionStatus != kASOpenRightValveWithGarbageCan && _gnapActionStatus != kASOpenRightValveWithGarbageCanDone)
- playSound(0x22B, true);
+ if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
+ _vm->_gnapActionStatus != kASOpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kASOpenRightValveNoGarbageCan &&
+ _vm->_gnapActionStatus != kASOpenTopValve && _vm->_gnapActionStatus != kASOpenTopValveDone &&
+ _vm->_gnapActionStatus != kASOpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kASOpenRightValveWithGarbageCanDone)
+ _vm->playSound(0x22B, true);
- if (!_isLeavingScene) {
- if (!isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_platypusActionStatus == kASPlatComesHere) {
- if (!_timers[6]) {
- _platypusActionStatus = -1;
- _sceneWaiting = false;
- initPlatypusPos(-1, 10, kDirNone);
- platypusWalkTo(3, 9, -1, 0x107C2, 1);
- clearFlag(kGFPlatypusTalkingToAssistant);
+ if (!_vm->_isLeavingScene) {
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ if (_vm->_platypusActionStatus == kASPlatComesHere) {
+ if (!_vm->_timers[6]) {
+ _vm->_platypusActionStatus = -1;
+ _vm->_sceneWaiting = false;
+ _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
- _hotspots[kHSWalkArea1]._y2 += 48;
- _hotspots[kHSWalkArea2]._x1 += 75;
- updatePlatypusIdleSequence();
- _hotspots[kHSWalkArea2]._x1 -= 75;
- _hotspots[kHSWalkArea1]._y2 -= 48;
+ _vm->_hotspots[kHSWalkArea1]._y2 += 48;
+ _vm->_hotspots[kHSWalkArea2]._x1 += 75;
+ _vm->updatePlatypusIdleSequence();
+ _vm->_hotspots[kHSWalkArea2]._x1 -= 75;
+ _vm->_hotspots[kHSWalkArea1]._y2 -= 48;
}
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 100;
- if (_gnapActionStatus < 0) {
- if (getRandom(2) == 1)
- _gameSys->insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(2) == 1)
+ _vm->_gameSys->insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
}
}
- playSoundA();
+ _vm->playSoundA();
}
- if (!isFlag(kGFPlatyPussDisguised))
- updateGnapIdleSequence();
+ if (!_vm->isFlag(kGFPlatyPussDisguised))
+ _vm->updateGnapIdleSequence();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene18_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
- if (isFlag(kGFGnapControlsToyUFO))
- deleteSurface(&_s18_cowboyHatSurface);
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->deleteSurface(&_s18_cowboyHatSurface);
}
-void GnapEngine::scene18_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene18::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASGrabGarbageCanFromStreet:
- if (_gnapIdleFacing != kDirUpRight && _gnapIdleFacing != kDirBottomRight) {
- _gameSys->insertSequence(0x1FC, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - 675, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x1FC;
+ if (_vm->_gnapIdleFacing != kDirUpRight && _vm->_gnapIdleFacing != kDirBottomRight) {
+ _vm->_gameSys->insertSequence(0x1FC, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - 675, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FC;
} else {
- _gameSys->insertSequence(0x1FD, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - 525, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x1FD;
+ _vm->_gameSys->insertSequence(0x1FD, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - 525, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FD;
}
- _gameSys->removeSequence(0x1FA, 19, true);
- setFlag(kGFPlatyPussDisguised);
- scene18_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->_gameSys->removeSequence(0x1FA, 19, true);
+ _vm->setFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabGarbageCanFromHydrant:
- _gameSys->insertSequence(0x1FE, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x1F9, 19, true);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x1FE;
- clearFlag(kGFTruckKeysUsed);
- setFlag(kGFPlatyPussDisguised);
- scene18_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x1F9, 19, true);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FE;
+ _vm->clearFlag(kGFTruckKeysUsed);
+ _vm->setFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
case kASCloseRightValveNoGarbageCan:
- _gameSys->insertSequence(0x205, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20D, 39, true);
- _gameSys->removeSequence(0x212, 39, true);
- _gameSys->removeSequence(0x211, 39, true);
- stopSound(0x22B);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x205;
- clearFlag(kGFTruckFilledWithGas);
- invAdd(kItemWrench);
- setGrabCursorSprite(kItemWrench);
- scene18_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20D, 39, true);
+ _vm->_gameSys->removeSequence(0x212, 39, true);
+ _vm->_gameSys->removeSequence(0x211, 39, true);
+ _vm->stopSound(0x22B);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x205;
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
case kASOpenTopValve:
- setFlag(kGFBarnPadlockOpen);
- scene18_updateHotspots();
- playGnapPullOutDevice(2, 7);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantTopValve].x, _hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASOpenTopValveDone;
+ _vm->setFlag(kGFBarnPadlockOpen);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(2, 7);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BB, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASOpenTopValveDone;
break;
case kASOpenTopValveDone:
- setGrabCursorSprite(-1);
- _gameSys->insertSequence(0x208, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
- _gameSys->removeSequence(0x20C, 19, true);
- _gameSys->setAnimation(0x217, 39, 5);
- _gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(5) != 2)
- gameUpdateTick();
- playSound(0x22B, true);
- _gameSys->insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x208;
- invRemove(kItemWrench);
- setGrabCursorSprite(-1);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->removeSequence(0x20C, 19, true);
+ _vm->_gameSys->setAnimation(0x217, 39, 5);
+ _vm->_gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x208;
+ _vm->invRemove(kItemWrench);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gnapActionStatus = -1;
break;
case kASCloseTopValve:
- _gameSys->insertSequence(0x206, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20E, 39, true);
- _gameSys->removeSequence(0x216, 39, true);
- _gameSys->removeSequence(0x217, 39, true);
- stopSound(0x22B);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x206;
- clearFlag(kGFBarnPadlockOpen);
- invAdd(kItemWrench);
- setGrabCursorSprite(kItemWrench);
- scene18_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20E, 39, true);
+ _vm->_gameSys->removeSequence(0x216, 39, true);
+ _vm->_gameSys->removeSequence(0x217, 39, true);
+ _vm->stopSound(0x22B);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x206;
+ _vm->clearFlag(kGFBarnPadlockOpen);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabCowboyHat:
- _gameSys->setAnimation(0x200, _gnapId, 0);
- _gameSys->insertSequence(0x200, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x200;
- _gnapActionStatus = kASGrabCowboyHatDone;
+ _vm->_gameSys->setAnimation(0x200, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x200;
+ _vm->_gnapActionStatus = kASGrabCowboyHatDone;
break;
case kASGrabCowboyHatDone:
- hideCursor();
- setGrabCursorSprite(-1);
- _s18_cowboyHatSurface = addFullScreenSprite(0x1D2, 255);
- _gameSys->setAnimation(0x218, 256, 0);
- _gameSys->insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- _newSceneNum = 18;
- invAdd(kItemCowboyHat);
- invAdd(kItemWrench);
- setFlag(kGFGnapControlsToyUFO);
- setFlag(kGFUnk14);
- clearFlag(kGFTruckFilledWithGas);
- setFlag(kGFTruckKeysUsed);
- setFlag(kGFUnk14); // CHECKME - Set 2 times?
- scene18_updateHotspots();
- _gnapActionStatus = kASLeaveScene;
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _s18_cowboyHatSurface = _vm->addFullScreenSprite(0x1D2, 255);
+ _vm->_gameSys->setAnimation(0x218, 256, 0);
+ _vm->_gameSys->insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_newSceneNum = 18;
+ _vm->invAdd(kItemCowboyHat);
+ _vm->invAdd(kItemWrench);
+ _vm->setFlag(kGFGnapControlsToyUFO);
+ _vm->setFlag(kGFUnk14);
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->setFlag(kGFUnk14); // CHECKME - Set 2 times?
+ updateHotspots();
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASPutGarbageCanOnRunningHydrant:
- setFlag(kGFTruckKeysUsed);
- clearFlag(kGFPlatyPussDisguised);
- _gameSys->requestRemoveSequence(0x211, 39);
- _gameSys->requestRemoveSequence(0x212, 39);
- _gameSys->insertSequence(0x210, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- stopSound(0x22B);
- _gameSys->setAnimation(0x210, _gnapId, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x210;
- _gnapActionStatus = kASPutGarbageCanOnRunningHydrant2;
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_gameSys->requestRemoveSequence(0x211, 39);
+ _vm->_gameSys->requestRemoveSequence(0x212, 39);
+ _vm->_gameSys->insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x22B);
+ _vm->_gameSys->setAnimation(0x210, _vm->_gnapId, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x210;
+ _vm->_gnapActionStatus = kASPutGarbageCanOnRunningHydrant2;
break;
case kASPutGarbageCanOnRunningHydrant2:
- playSound(0x22B, true);
- _gameSys->setAnimation(0x1FF, _gnapId, 0);
- _gameSys->insertSequence(0x1FF, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x1FF;
- _sceneWaiting = true;
- _gnapActionStatus = kASStandingOnHydrant;
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FF;
+ _vm->_sceneWaiting = true;
+ _vm->_gnapActionStatus = kASStandingOnHydrant;
break;
case kASStandingOnHydrant:
- _gameSys->setAnimation(0x1FF, _gnapId, 0);
- _gameSys->insertSequence(0x1FF, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
break;
case kASOpenRightValveNoGarbageCan:
case kASOpenRightValveWithGarbageCan:
- setFlag(kGFTruckFilledWithGas);
- scene18_updateHotspots();
- playGnapPullOutDevice(2, 7);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSHydrantRightValve].x, _hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- if (_gnapActionStatus == kASOpenRightValveNoGarbageCan)
- _gnapActionStatus = kASOpenRightValveNoGarbageCanDone;
+ _vm->setFlag(kGFTruckFilledWithGas);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(2, 7);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ if (_vm->_gnapActionStatus == kASOpenRightValveNoGarbageCan)
+ _vm->_gnapActionStatus = kASOpenRightValveNoGarbageCanDone;
else
- _gnapActionStatus = kASOpenRightValveWithGarbageCanDone;
+ _vm->_gnapActionStatus = kASOpenRightValveWithGarbageCanDone;
break;
case kASOpenRightValveWithGarbageCanDone:
- setGrabCursorSprite(-1);
- _gameSys->insertSequence(0x207, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
- _gameSys->requestRemoveSequence(0x1F9, 19);
- _gameSys->removeSequence(0x20B, 19, true);
- _gameSys->setAnimation(0x213, 39, 5);
- _gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(5) != 2)
- gameUpdateTick();
- playSound(555, true);
- _gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x207;
- invRemove(kItemWrench);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0x1F9, 19);
+ _vm->_gameSys->removeSequence(0x20B, 19, true);
+ _vm->_gameSys->setAnimation(0x213, 39, 5);
+ _vm->_gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(555, true);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x207;
+ _vm->invRemove(kItemWrench);
+ _vm->_gnapActionStatus = -1;
break;
case kASOpenRightValveNoGarbageCanDone:
- setGrabCursorSprite(-1);
- _gameSys->insertSequence(0x207, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
- _gameSys->removeSequence(0x20B, 19, true);
- _gameSys->setAnimation(0x211, 39, 5);
- _gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(5) != 2)
- gameUpdateTick();
- playSound(0x22B, true);
- _gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x207;
- invRemove(kItemWrench);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->removeSequence(0x20B, 19, true);
+ _vm->_gameSys->setAnimation(0x211, 39, 5);
+ _vm->_gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x207;
+ _vm->invRemove(kItemWrench);
+ _vm->_gnapActionStatus = -1;
break;
case kASCloseRightValveWithGarbageCan:
- _gameSys->insertSequence(0x205, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x20D, 39, true);
- _gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
- stopSound(0x22B);
- _gameSys->setAnimation(0x1F9, 19, 0);
- _gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
- clearFlag(kGFTruckFilledWithGas);
- invAdd(kItemWrench);
- setGrabCursorSprite(kItemWrench);
- _gameSys->insertSequence(0x107B5, _gnapId, 517, _gnapId, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- scene18_updateHotspots();
- _gnapSequenceDatNum = 1;
- _gnapSequenceId = 0x7B5;
- _gnapActionStatus = kASCloseRightValveWithGarbageCanDone;
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20D, 39, true);
+ _vm->_gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x22B);
+ _vm->_gameSys->setAnimation(0x1F9, 19, 0);
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ updateHotspots();
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCanDone;
break;
case kASCloseRightValveWithGarbageCanDone:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASPutGarbageCanOnHydrant:
- setFlag(kGFTruckKeysUsed);
- clearFlag(kGFPlatyPussDisguised);
- _gameSys->insertSequence(0x20F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x20F, _gnapId, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x20F;
- _gnapActionStatus = kASPutGarbageCanOnHydrantDone;
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_gameSys->insertSequence(0x20F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20F, _vm->_gnapId, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x20F;
+ _vm->_gnapActionStatus = kASPutGarbageCanOnHydrantDone;
break;
case kASPutGarbageCanOnHydrantDone:
- _gameSys->insertSequence(0x1F9, 19, 0x20F, _gnapId, kSeqNone, 0, 0, 0);
- scene18_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- _gameSys->setAnimation(0, 0, 3);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
++_s18_platPhoneIter;
if (_s18_platPhoneIter <= 4) {
++_s18_platPhoneCtr;
_s18_nextPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr % 5];
- _gameSys->setAnimation(_s18_nextPhoneSequenceId, 254, 3);
- _gameSys->insertSequence(_s18_nextPhoneSequenceId, 254, _s18_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s18_nextPhoneSequenceId, 254, 3);
+ _vm->_gameSys->insertSequence(_s18_nextPhoneSequenceId, 254, _s18_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
_s18_currPhoneSequenceId = _s18_nextPhoneSequenceId;
} else {
- scene18_platEndPhoning(true);
+ platEndPhoning(true);
}
}
}
diff --git a/engines/gnap/scenes/scene18.h b/engines/gnap/scenes/scene18.h
new file mode 100644
index 0000000..163a8cd
--- /dev/null
+++ b/engines/gnap/scenes/scene18.h
@@ -0,0 +1,60 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE18_H
+#define GNAP_SCENE18_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene18: public Scene {
+public:
+ Scene18(GnapEngine *vm);
+ ~Scene18();
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ Graphics::Surface *_s18_cowboyHatSurface;
+
+ int _s18_platPhoneCtr;
+ int _s18_platPhoneIter;
+ int _s18_nextPhoneSequenceId;
+ int _s18_currPhoneSequenceId;
+
+ void gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
+ void putDownGarbageCan(int animationIndex);
+ void platEndPhoning(bool platFl);
+ void closeHydrantValve();
+ void waitForGnapAction();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE18_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 68370e2..8047029 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -43,6 +43,7 @@
#include "gnap/scenes/scene15.h"
#include "gnap/scenes/scene16.h"
#include "gnap/scenes/scene17.h"
+#include "gnap/scenes/scene18.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -176,10 +177,11 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 18:
- backgroundId = scene18_init();
+ _scene = new Scene18(this);
+ backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
- scene18_updateHotspots();
+ _scene->updateHotspots();
break;
case 19:
backgroundId = scene19_init();
@@ -498,7 +500,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 18:
- scene18_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 4c7756e75dcd3f7f9ad24e52e849e60936c8381d
https://github.com/scummvm/scummvm/commit/4c7756e75dcd3f7f9ad24e52e849e60936c8381d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 19 and 20
Changed paths:
A engines/gnap/scenes/scene19.h
A engines/gnap/scenes/scene20.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene19.cpp
engines/gnap/scenes/scene20.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 82035eb..286bb73 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2021,16 +2021,6 @@ void GnapEngine::initGlobalSceneVars() {
// Scene 18
_s18_garbageCanPos = 8;
- // Scene 19
- _s19_toyGrabCtr = 0;
- _s19_pictureSurface = 0;
- _s19_shopAssistantCtr = 0;
-
- // Scene 20
- _s20_stonerGuyCtr = 3;
- _s20_stonerGuyShowingJoint = false;
- _s20_groceryStoreGuyCtr = 0;
-
// Scene 22
_s22_caughtBefore = false;
_s22_cashierCtr = 3;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7d8edd3..b61f93c 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,29 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 19
- int _s19_currShopAssistantSequenceId, _s19_nextShopAssistantSequenceId;
- int _s19_toyGrabCtr;
- int _s19_shopAssistantCtr;
- Graphics::Surface *_s19_pictureSurface;
- int scene19_init();
- void scene19_updateHotspots();
- void scene19_run();
- void scene19_updateAnimations();
-
- // Scene 20
- int _s20_currStonerGuySequenceId, _s20_nextStonerGuySequenceId;
- int _s20_currGroceryStoreGuySequenceId, _s20_nextGroceryStoreGuySequenceId;
- int _s20_stonerGuyCtr;
- bool _s20_stonerGuyShowingJoint;
- int _s20_groceryStoreGuyCtr;
- int scene20_init();
- void scene20_updateHotspots();
- void scene20_updateAnimationsCb();
- void scene20_stopSounds();
- void scene20_run();
- void scene20_updateAnimations();
-
// Scene 21
int _s21_currOldLadySequenceId, _s21_nextOldLadySequenceId;
int scene21_init();
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
index 4de51f8..cb5cd6d 100644
--- a/engines/gnap/scenes/scene19.cpp
+++ b/engines/gnap/scenes/scene19.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene19.h"
namespace Gnap {
@@ -58,120 +59,128 @@ enum {
kASLeaveScene = 5
};
-int GnapEngine::scene19_init() {
- playSound(0x79, false);
- return isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
+Scene19::Scene19(GnapEngine *vm) : Scene(vm) {
+ _s19_toyGrabCtr = 0;
+ _s19_pictureSurface = 0;
+ _s19_shopAssistantCtr = 0;
+ _s19_pictureSurface = nullptr;
}
-void GnapEngine::scene19_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitOutsideToyStore, 36, 154, 142, 338, SF_EXIT_NW_CURSOR, 4, 6);
- setHotspot(kHSPicture, 471, 237, 525, 283, SF_DISABLED, 7, 2);
- setHotspot(kHSShopAssistant, 411, 151, 575, 279, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- setHotspot(kHSPhone, 647, 166, 693, 234, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
- setHotspot(kHSToy1, 181, 11, 319, 149, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 0);
- setHotspot(kHSToy2, 284, 85, 611, 216, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 0);
- setHotspot(kHSToy3, 666, 38, 755, 154, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
- setHotspot(kHSToy4, 154, 206, 285, 327, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 3);
- setHotspot(kHSToy5, 494, 301, 570, 448, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 5);
- setHotspot(kHSToy6, 0, 320, 188, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
- setHotspot(kHSToy7, 597, 434, 800, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 8);
- setHotspot(kHSWalkArea1, 0, 0, 170, 600);
- setHotspot(kHSWalkArea2, 622, 0, 800, 600);
- setHotspot(kHSWalkArea3, 0, 0, 800, 437);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
- _hotspots[kHSToy1]._flags = SF_DISABLED;
- _hotspots[kHSToy2]._flags = SF_DISABLED;
- _hotspots[kHSToy3]._flags = SF_DISABLED;
- _hotspots[kHSToy4]._flags = SF_DISABLED;
- _hotspots[kHSToy5]._flags = SF_DISABLED;
- _hotspots[kHSToy6]._flags = SF_DISABLED;
- _hotspots[kHSToy7]._flags = SF_DISABLED;
- _hotspots[kHSShopAssistant]._flags = SF_DISABLED;
- _hotspots[kHSPhone]._flags = SF_DISABLED;
- _hotspots[kHSPlatypus]._flags = SF_DISABLED;
- _hotspots[kHSPicture]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- }
- _hotspotsCount = 16;
+Scene19::~Scene19() {
+ delete _s19_pictureSurface;
+}
+
+int Scene19::init() {
+ _vm->playSound(0x79, false);
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
}
-void GnapEngine::scene19_run() {
+void Scene19::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitOutsideToyStore, 36, 154, 142, 338, SF_EXIT_NW_CURSOR, 4, 6);
+ _vm->setHotspot(kHSPicture, 471, 237, 525, 283, SF_DISABLED, 7, 2);
+ _vm->setHotspot(kHSShopAssistant, 411, 151, 575, 279, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHSPhone, 647, 166, 693, 234, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
+ _vm->setHotspot(kHSToy1, 181, 11, 319, 149, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 0);
+ _vm->setHotspot(kHSToy2, 284, 85, 611, 216, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 0);
+ _vm->setHotspot(kHSToy3, 666, 38, 755, 154, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
+ _vm->setHotspot(kHSToy4, 154, 206, 285, 327, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 3);
+ _vm->setHotspot(kHSToy5, 494, 301, 570, 448, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 5);
+ _vm->setHotspot(kHSToy6, 0, 320, 188, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ _vm->setHotspot(kHSToy7, 597, 434, 800, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 170, 600);
+ _vm->setHotspot(kHSWalkArea2, 622, 0, 800, 600);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 800, 437);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHSToy1]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy2]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy3]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy4]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy5]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy6]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSToy7]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSShopAssistant]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSPhone]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSPicture]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ }
+ _vm->_hotspotsCount = 16;
+}
- queueInsertDeviceIcon();
+void Scene19::run() {
+ _vm->queueInsertDeviceIcon();
_s19_toyGrabCtr = 0;
_s19_pictureSurface = 0;
- _gameSys->insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFPictureTaken))
- _gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFPictureTaken))
+ _vm->_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFPlatypusTalkingToAssistant)) {
- initGnapPos(3, 6, kDirBottomRight);
- _s19_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[getRandom(5)];
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->initGnapPos(3, 6, kDirBottomRight);
+ _s19_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_vm->getRandom(5)];
_s19_nextShopAssistantSequenceId = _s19_currShopAssistantSequenceId;
- _gameSys->setAnimation(_s19_currShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(0x6E, 254, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s19_currShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(0x6E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_s19_shopAssistantCtr = 0;
- endSceneInit();
- gnapWalkTo(4, 9, -1, 0x107B9, 1);
- scene19_updateHotspots();
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ updateHotspots();
} else {
_s19_currShopAssistantSequenceId = 0x6D;
_s19_nextShopAssistantSequenceId = -1;
- _gameSys->setAnimation(0x6D, 20, 4);
- _gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
- _timers[6] = getRandom(40) + 50;
- initGnapPos(3, 6, kDirBottomRight);
- initPlatypusPos(4, 6, kDirNone);
- endSceneInit();
- gnapWalkTo(4, 9, -1, 0x107B9, 1);
- platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->_gameSys->setAnimation(0x6D, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[6] = _vm->getRandom(40) + 50;
+ _vm->initGnapPos(3, 6, kDirBottomRight);
+ _vm->initPlatypusPos(4, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 5, -1, -1, -1, -1);
+ _vm->testWalk(0, 5, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene19_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -179,38 +188,38 @@ void GnapEngine::scene19_run() {
break;
case kHSExitOutsideToyStore:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 18;
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[1].x, _hotspotsWalkPos[1].y, 0, 0x107B2, 1);
- _gnapActionStatus = kASLeaveScene;
- if (isFlag(kGFPlatypusTalkingToAssistant))
- setFlag(kGFUnk27);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->setFlag(kGFUnk27);
else
- platypusWalkTo(_hotspotsWalkPos[1].x + 1, _hotspotsWalkPos[1].y, -1, 0x107C5, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x + 1, _vm->_hotspotsWalkPos[1].y, -1, 0x107C5, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
}
break;
case kHSPicture:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 6, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 2);
+ _vm->playGnapScratchingHead(6, 2);
break;
case GRAB_CURSOR:
- if (!isFlag(kGFPictureTaken)) {
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y) | 0x10000, 1);
- _gnapActionStatus = kASGrabPicture;
+ if (!_vm->isFlag(kGFPictureTaken)) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabPicture;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -218,22 +227,22 @@ void GnapEngine::scene19_run() {
break;
case kHSShopAssistant:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 6, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 2);
+ _vm->playGnapScratchingHead(6, 2);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkShopAssistant;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkShopAssistant;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -247,22 +256,22 @@ void GnapEngine::scene19_run() {
case kHSToy5:
case kHSToy6:
case kHSToy7:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y);
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 0, -1, 1);
- playGnapIdle(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y);
- _gnapActionStatus = kASGrabToy;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ _vm->_gnapActionStatus = kASGrabToy;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -270,22 +279,22 @@ void GnapEngine::scene19_run() {
break;
case kHSPhone:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 9, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(9, 1);
+ _vm->playGnapScratchingHead(9, 1);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, 0, -1, 1);
- playGnapIdle(8, 2);
- _gnapActionStatus = kASUsePhone;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->playGnapIdle(8, 2);
+ _vm->_gnapActionStatus = kASUsePhone;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -295,28 +304,28 @@ void GnapEngine::scene19_run() {
case kHSWalkArea1:
case kHSWalkArea2:
case kHSWalkArea3:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = 0;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
}
}
- scene19_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updateGnapIdleSequence();
- if (!isFlag(kGFPlatypusTalkingToAssistant)) {
- updatePlatypusIdleSequence();
- if (!_timers[6] && _s19_nextShopAssistantSequenceId == -1) {
- _timers[6] = getRandom(40) + 50;
- if (getRandom(4) != 0) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updateGnapIdleSequence();
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->updatePlatypusIdleSequence();
+ if (!_vm->_timers[6] && _s19_nextShopAssistantSequenceId == -1) {
+ _vm->_timers[6] = _vm->getRandom(40) + 50;
+ if (_vm->getRandom(4) != 0) {
_s19_nextShopAssistantSequenceId = 0x64;
- } else if (isFlag(kGFPictureTaken)) {
+ } else if (_vm->isFlag(kGFPictureTaken)) {
_s19_nextShopAssistantSequenceId = 0x64;
} else {
_s19_nextShopAssistantSequenceId = 0x6C;
@@ -324,29 +333,26 @@ void GnapEngine::scene19_run() {
}
}
}
+
+ _vm->checkGameKeys();
- checkGameKeys();
-
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene19_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
if (_s19_pictureSurface)
- deleteSurface(&_s19_pictureSurface);
-
+ _vm->deleteSurface(&_s19_pictureSurface);
}
-void GnapEngine::scene19_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene19::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASUsePhone:
_s19_nextShopAssistantSequenceId = 0x67;
break;
@@ -368,43 +374,43 @@ void GnapEngine::scene19_updateAnimations() {
}
break;
case kASGrabPicture:
- playGnapPullOutDevice(6, 2);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x68, 19, 0);
- _gameSys->insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
- invAdd(kItemPicture);
- setFlag(kGFPictureTaken);
- scene19_updateHotspots();
- _gnapActionStatus = kASGrabPictureDone;
+ _vm->playGnapPullOutDevice(6, 2);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x68, 19, 0);
+ _vm->_gameSys->insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
+ _vm->invAdd(kItemPicture);
+ _vm->setFlag(kGFPictureTaken);
+ updateHotspots();
+ _vm->_gnapActionStatus = kASGrabPictureDone;
break;
case kASGrabPictureDone:
- setGrabCursorSprite(-1);
- hideCursor();
- _s19_pictureSurface = addFullScreenSprite(0xF, 255);
- _gameSys->setAnimation(0x61, 256, 0);
- _gameSys->insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _s19_pictureSurface = _vm->addFullScreenSprite(0xF, 255);
+ _vm->_gameSys->setAnimation(0x61, 256, 0);
+ _vm->_gameSys->insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- setFlag(kGFUnk27);
- showCursor();
- _newSceneNum = 17;
- _isLeavingScene = true;
- _sceneDone = true;
+ _vm->setFlag(kGFUnk27);
+ _vm->showCursor();
+ _vm->_newSceneNum = 17;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
_s19_nextShopAssistantSequenceId = -1;
break;
case kASTalkShopAssistant:
_s19_nextShopAssistantSequenceId = 0x6D;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(4) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
switch (_s19_nextShopAssistantSequenceId) {
case 0x6F:
case 0x70:
@@ -413,58 +419,57 @@ void GnapEngine::scene19_updateAnimations() {
case 0x73:
_s19_shopAssistantCtr = (_s19_shopAssistantCtr + 1) % 5;
_s19_nextShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_s19_shopAssistantCtr];
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x6E, 254, 0x6E, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x6E, 254, 0x6E, 254, kSeqSyncWait, 0, 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
break;
case 0x62:
case 0x66:
case 0x6B:
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
_s19_nextShopAssistantSequenceId = -1;
- _timers[5] = 10;
- while (_timers[5]) {
- gameUpdateTick();
+ _vm->_timers[5] = 10;
+ while (_vm->_timers[5]) {
+ _vm->gameUpdateTick();
}
- playGnapIdle(6, 2);
- _gnapActionStatus = -1;
+ _vm->playGnapIdle(6, 2);
+ _vm->_gnapActionStatus = -1;
break;
case 0x67:
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
_s19_nextShopAssistantSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case 0x65:
- playGnapIdle(6, 2);
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 0);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->playGnapIdle(6, 2);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 0);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
_s19_nextShopAssistantSequenceId = -1;
- _newSceneNum = 18;
- _gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 18;
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case 0x6D:
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x69, 19, 0x69, 19, kSeqSyncWait, getSequenceTotalDuration(_s19_nextShopAssistantSequenceId), 0, 0);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x69, 19, 0x69, 19, kSeqSyncWait, _vm->getSequenceTotalDuration(_s19_nextShopAssistantSequenceId), 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
_s19_nextShopAssistantSequenceId = -1;
break;
case 0x64:
case 0x6C:
- _gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
- _gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s19_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_s19_nextShopAssistantSequenceId, 20, _s19_currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s19_currShopAssistantSequenceId = _s19_nextShopAssistantSequenceId;
_s19_nextShopAssistantSequenceId = -1;
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene19.h b/engines/gnap/scenes/scene19.h
new file mode 100644
index 0000000..721b107
--- /dev/null
+++ b/engines/gnap/scenes/scene19.h
@@ -0,0 +1,54 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE19_H
+#define GNAP_SCENE19_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene19: public Scene {
+public:
+ Scene19(GnapEngine *vm);
+ ~Scene19();
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s19_currShopAssistantSequenceId;
+ int _s19_nextShopAssistantSequenceId;
+ int _s19_toyGrabCtr;
+ int _s19_shopAssistantCtr;
+
+ Graphics::Surface *_s19_pictureSurface;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE19_H
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
index 54a8438..c31f622 100644
--- a/engines/gnap/scenes/scene20.cpp
+++ b/engines/gnap/scenes/scene20.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene20.h"
namespace Gnap {
@@ -55,71 +56,76 @@ enum {
kASGrabJointDone = 13
};
-int GnapEngine::scene20_init() {
- return 0x186;
+Scene20::Scene20(GnapEngine *vm) : Scene(vm) {
+ _s20_stonerGuyCtr = 3;
+ _s20_stonerGuyShowingJoint = false;
+ _s20_groceryStoreGuyCtr = 0;
}
-void GnapEngine::scene20_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSGroceryStoreHat, 114, 441, 174, 486, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 7);
- setHotspot(kHSExitParkingLot, 0, 300, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
- setHotspot(kHSStonerGuy, 276, 290, 386, 450, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- setHotspot(kHSGroceryStoreGuy, 123, 282, 258, 462, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- setHotspot(kHSExitInsideGrubCity, 519, 250, 581, 413, SF_EXIT_L_CURSOR, 8, 7);
- setHotspot(kHSExitOutsideCircusWorld, 660, 222, 798, 442, SF_EXIT_NE_CURSOR, 9, 6);
- setHotspot(kHSExitOutsideToyStore, 785, 350, 800, 600, SF_EXIT_R_CURSOR, 11, 8);
- setHotspot(kHSExitPhone, 250, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- setHotspot(kHSWalkArea1, 0, 0, 800, 468);
- setHotspot(kHSWalkArea2, 605, 0, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 12;
+int Scene20::init() {
+ return 0x186;
}
-void GnapEngine::scene20_updateAnimationsCb() {
+void Scene20::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSGroceryStoreHat, 114, 441, 174, 486, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 7);
+ _vm->setHotspot(kHSExitParkingLot, 0, 300, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
+ _vm->setHotspot(kHSStonerGuy, 276, 290, 386, 450, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHSGroceryStoreGuy, 123, 282, 258, 462, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHSExitInsideGrubCity, 519, 250, 581, 413, SF_EXIT_L_CURSOR, 8, 7);
+ _vm->setHotspot(kHSExitOutsideCircusWorld, 660, 222, 798, 442, SF_EXIT_NE_CURSOR, 9, 6);
+ _vm->setHotspot(kHSExitOutsideToyStore, 785, 350, 800, 600, SF_EXIT_R_CURSOR, 11, 8);
+ _vm->setHotspot(kHSExitPhone, 250, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 468);
+ _vm->setHotspot(kHSWalkArea2, 605, 0, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 12;
+}
- if (_gameSys->getAnimationStatus(2) == 2) {
+void Scene20::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
switch (_s20_nextStonerGuySequenceId) {
case 0x16B:
- if (!_timers[4]) {
+ if (!_vm->_timers[4]) {
_s20_stonerGuyShowingJoint = false;
- _gameSys->insertSequence(0x16B, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x16B, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = 0x16B;
_s20_nextStonerGuySequenceId = -1;
}
break;
case 0x16A:
// Grab joint
- playGnapPullOutDevice(4, 4);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x16A, 21, 0);
- _gameSys->insertSequence(0x16A, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->playGnapPullOutDevice(4, 4);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x16A, 21, 0);
+ _vm->_gameSys->insertSequence(0x16A, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = 0x16A;
_s20_nextStonerGuySequenceId = -1;
- invAdd(kItemJoint);
- setFlag(kGFJointTaken);
+ _vm->invAdd(kItemJoint);
+ _vm->setFlag(kGFJointTaken);
_s20_stonerGuyShowingJoint = false;
- _gnapActionStatus = kASGrabJointDone;
+ _vm->_gnapActionStatus = kASGrabJointDone;
break;
case 0x16E:
- _gameSys->setAnimation(0x16E, 21, 2);
- _gameSys->insertSequence(0x16E, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x16E, 21, 2);
+ _vm->_gameSys->insertSequence(0x16E, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = 0x16E;
_s20_nextStonerGuySequenceId = -1;
_s20_nextGroceryStoreGuySequenceId = 0x175;
break;
case 0x16D:
- _gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
- _gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 0);
- _gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 0);
+ _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
_s20_nextStonerGuySequenceId = -1;
- _gnapActionStatus = kASActionDone;
+ _vm->_gnapActionStatus = kASActionDone;
break;
case 0x16F:
- _gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
- _gameSys->setAnimation(0x17A, 20, 3);
- _gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x17A, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->setAnimation(0x17A, 20, 3);
+ _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17A, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s20_currGroceryStoreGuySequenceId = 0x17A;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
@@ -141,10 +147,10 @@ void GnapEngine::scene20_updateAnimationsCb() {
_s20_nextStonerGuySequenceId = 0x171;
break;
}
- _gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x17C, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x17C, 20, 3);
- _gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17C, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x17C, 20, 3);
+ _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
_s20_currGroceryStoreGuySequenceId = 0x17C;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
@@ -152,40 +158,37 @@ void GnapEngine::scene20_updateAnimationsCb() {
break;
default:
_s20_nextStonerGuySequenceId = 0x16C;
- _gameSys->setAnimation(0x16C, 21, 2);
- _gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x16C, 21, 2);
+ _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
_s20_nextStonerGuySequenceId = -1;
break;
}
}
-
}
-void GnapEngine::scene20_stopSounds() {
- stopSound(0x18E);
- stopSound(0x18F);
- stopSound(0x190);
- stopSound(0x191);
- stopSound(0x194);
- stopSound(0x195);
- stopSound(0x192);
- stopSound(0x193);
- stopSound(0x196);
- stopSound(0x197);
- stopSound(0x198);
- stopSound(0x199);
- stopSound(0x19A);
+void Scene20::stopSounds() {
+ _vm->stopSound(0x18E);
+ _vm->stopSound(0x18F);
+ _vm->stopSound(0x190);
+ _vm->stopSound(0x191);
+ _vm->stopSound(0x194);
+ _vm->stopSound(0x195);
+ _vm->stopSound(0x192);
+ _vm->stopSound(0x193);
+ _vm->stopSound(0x196);
+ _vm->stopSound(0x197);
+ _vm->stopSound(0x198);
+ _vm->stopSound(0x199);
+ _vm->stopSound(0x19A);
}
-void GnapEngine::scene20_run() {
-
- playSound(0x10940, true);
-
- startSoundTimerA(8);
+void Scene20::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(8);
_s20_stonerGuyShowingJoint = false;
- _timers[7] = getRandom(100) + 100;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
_s20_stonerGuyCtr = (_s20_stonerGuyCtr + 1) % 3;
switch (_s20_stonerGuyCtr) {
@@ -201,119 +204,117 @@ void GnapEngine::scene20_run() {
}
_s20_nextStonerGuySequenceId = -1;
- _gameSys->setAnimation(_s20_currStonerGuySequenceId, 21, 2);
- _gameSys->insertSequence(_s20_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_currStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->insertSequence(_s20_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
- _timers[6] = getRandom(20) + 30;
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
_s20_currGroceryStoreGuySequenceId = 0x17C;
_s20_nextGroceryStoreGuySequenceId = -1;
- _gameSys->setAnimation(0x17C, 20, 3);
- _gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x17C, 20, 3);
+ _vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
- _timers[5] = getRandom(50) + 130;
- if (isFlag(kGFGroceryStoreHatTaken))
- _gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[5] = _vm->getRandom(50) + 130;
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFSceneFlag1)) {
- clearFlag(kGFSceneFlag1);
- endSceneInit();
- _gameSys->setAnimation(0x182, 140, 0);
- _gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2) {
+ if (_vm->isFlag(kGFSceneFlag1)) {
+ _vm->clearFlag(kGFSceneFlag1);
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(0x182, 140, 0);
+ _vm->_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- initGnapPos(11, 8, kDirBottomLeft);
- initPlatypusPos(11, 9, kDirUnk4);
- gnapWalkTo(5, 8, -1, 0x107BA, 1);
- platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 17:
- initGnapPos(5, 11, kDirBottomRight);
- initPlatypusPos(6, 11, kDirNone);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
- initGnapPos(11, 8, kDirBottomLeft);
- initPlatypusPos(11, 9, kDirUnk4);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107BA, 1);
- platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
- initGnapPos(-1, 8, kDirBottomLeft);
- initPlatypusPos(-1, 9, kDirUnk4);
- endSceneInit();
- gnapWalkTo(3, 8, -1, 0x107B9, 1);
- platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
- initGnapPos(7, 6, kDirBottomRight);
- initPlatypusPos(8, 6, kDirNone);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107B9, 1);
- platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(7, 6, kDirBottomRight);
+ _vm->initPlatypusPos(8, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
- initGnapPos(8, 6, kDirBottomLeft);
- initPlatypusPos(9, 6, kDirUnk4);
- endSceneInit();
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 9, -1, 0x107C2, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->initGnapPos(8, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 6, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
break;
}
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 1, 7, 9, 8, 9);
- testWalk(0, 0, -1, -1, -1, -1);
- testWalk(0, 1, 7, 9, 8, 9);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene20_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(20);
+ _vm->gnapKissPlatypus(20);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -321,96 +322,96 @@ void GnapEngine::scene20_run() {
break;
case kHSExitParkingLot:
- if (_gnapActionStatus < 0) {
+ if (_vm->_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
- _timers[4] = 0;
- _isLeavingScene = true;
- _newSceneNum = 21;
- gnapWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitParkingLot].x, _hotspotsWalkPos[kHSExitParkingLot].y + 1, -1, 0x107CF, 1);
- _platypusFacing = kDirUnk4;
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 21;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitParkingLot].x, _vm->_hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitParkingLot].x, _vm->_hotspotsWalkPos[kHSExitParkingLot].y + 1, -1, 0x107CF, 1);
+ _vm->_platypusFacing = kDirUnk4;
}
break;
case kHSExitPhone:
- if (_gnapActionStatus < 0) {
+ if (_vm->_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
- _timers[4] = 0;
- _isLeavingScene = true;
- _newSceneNum = 17;
- gnapWalkTo(_hotspotsWalkPos[kHSExitPhone].x, _hotspotsWalkPos[kHSExitPhone].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitPhone].x + 1, _hotspotsWalkPos[kHSExitPhone].y, -1, 0x107C2, 1);
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 17;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPhone].x, _vm->_hotspotsWalkPos[kHSExitPhone].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPhone].x + 1, _vm->_hotspotsWalkPos[kHSExitPhone].y, -1, 0x107C2, 1);
}
break;
case kHSExitOutsideToyStore:
- if (_gnapActionStatus < 0) {
+ if (_vm->_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
- _timers[4] = 0;
- _isLeavingScene = true;
- _newSceneNum = 18;
- _hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideToyStore].x, _hotspotsWalkPos[kHSExitOutsideToyStore].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideToyStore].x, _hotspotsWalkPos[kHSExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
- _hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHSExitOutsideToyStore].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHSExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
+ _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
}
break;
case kHSExitInsideGrubCity:
- if (_gnapActionStatus < 0) {
+ if (_vm->_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
- _timers[4] = 0;
- _isLeavingScene = true;
- _newSceneNum = 22;
- gnapWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x, _hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitInsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitInsideGrubCity].y, -1, 0x107C2, 1);
- _platypusFacing = kDirUnk4;
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 22;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitInsideGrubCity].y, -1, 0x107C2, 1);
+ _vm->_platypusFacing = kDirUnk4;
}
break;
case kHSExitOutsideCircusWorld:
- if (_gnapActionStatus < 0) {
+ if (_vm->_gnapActionStatus < 0) {
if (_s20_stonerGuyShowingJoint)
- _timers[4] = 0;
- _isLeavingScene = true;
- _newSceneNum = 24;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107BB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 24;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHSStonerGuy:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 5, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 5, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(5, 4);
+ _vm->playGnapMoan2(5, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_s20_stonerGuyShowingJoint)
- _gnapActionStatus = kASGrabJoint;
+ _vm->_gnapActionStatus = kASGrabJoint;
else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSStonerGuy].x, _hotspotsWalkPos[kHSStonerGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- if (isFlag(kGFJointTaken))
- _gnapActionStatus = kASTalkStonerGuyNoJoint;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ if (_vm->isFlag(kGFJointTaken))
+ _vm->_gnapActionStatus = kASTalkStonerGuyNoJoint;
else
- _gnapActionStatus = kASTalkStonerGuyHasJoint;
+ _vm->_gnapActionStatus = kASTalkStonerGuyHasJoint;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -418,27 +419,27 @@ void GnapEngine::scene20_run() {
break;
case kHSGroceryStoreGuy:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 2, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 2, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(2, 3);
+ _vm->playGnapScratchingHead(2, 3);
break;
case GRAB_CURSOR:
_s20_stonerGuyShowingJoint = false;
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabGroceryStoreGuy;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabGroceryStoreGuy;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkGroceryStoreGuy;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -446,27 +447,27 @@ void GnapEngine::scene20_run() {
break;
case kHSGroceryStoreHat:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemCowboyHat) {
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreHat].x, _hotspotsWalkPos[kHSGroceryStoreHat].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASSwitchGroceryStoreHat;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSGroceryStoreHat].x, _hotspotsWalkPos[kHSGroceryStoreHat].y, 1, 6);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreHat].x, _vm->_hotspotsWalkPos[kHSGroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASSwitchGroceryStoreHat;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGroceryStoreHat].x, _vm->_hotspotsWalkPos[kHSGroceryStoreHat].y, 1, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(1, 6);
+ _vm->playGnapScratchingHead(1, 6);
break;
case GRAB_CURSOR:
_s20_stonerGuyShowingJoint = false;
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSGroceryStoreGuy].x, _hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabGroceryStoreHat;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabGroceryStoreHat;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -475,124 +476,120 @@ void GnapEngine::scene20_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene20_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10940))
- playSound(0x10940, true);
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0) {
- _hotspots[kHSWalkArea1]._y2 += 48;
- updatePlatypusIdleSequence();
- _hotspots[kHSWalkArea1]._y2 -= 48;
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0) {
+ _vm->_hotspots[kHSWalkArea1]._y2 += 48;
+ _vm->updatePlatypusIdleSequence();
+ _vm->_hotspots[kHSWalkArea1]._y2 -= 48;
}
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (_gnapActionStatus < 0 && !_timers[5] && _s20_nextGroceryStoreGuySequenceId == -1) {
- _timers[5] = getRandom(50) + 130;
- if (getRandom(4) != 0)
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->_timers[5] && _s20_nextGroceryStoreGuySequenceId == -1) {
+ _vm->_timers[5] = _vm->getRandom(50) + 130;
+ if (_vm->getRandom(4) != 0)
_s20_nextGroceryStoreGuySequenceId = 0x17C;
else
_s20_nextGroceryStoreGuySequenceId = 0x17A;
}
- if (!_timers[7]) {
- _timers[7] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0) {
- switch (getRandom(3)) {
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ switch (_vm->getRandom(3)) {
case 0:
- _gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
}
- playSoundA();
+ _vm->playSoundA();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene20_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene20_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene20::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASTalkStonerGuyNoJoint:
- _gameSys->setAnimation(0x170, 21, 2);
- _gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- stopSound(0x1A1);
- scene20_stopSounds();
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
_s20_currStonerGuySequenceId = 0x170;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_nextStonerGuySequenceId = 0x16E;
- _timers[5] = 100;
- _timers[6] = 100;
+ _vm->_timers[5] = 100;
+ _vm->_timers[6] = 100;
break;
case kASTalkStonerGuyHasJoint:
- _gameSys->setAnimation(0x168, 21, 2);
- _gameSys->setAnimation(379, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
- stopSound(0x1A1);
- scene20_stopSounds();
+ _vm->_gameSys->setAnimation(0x168, 21, 2);
+ _vm->_gameSys->setAnimation(379, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
_s20_currStonerGuySequenceId = 0x168;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_nextStonerGuySequenceId = 0x16B;
- _timers[5] = 200;
- _timers[6] = 200;
- _timers[4] = 100;
+ _vm->_timers[5] = 200;
+ _vm->_timers[6] = 200;
+ _vm->_timers[4] = 100;
_s20_stonerGuyShowingJoint = true;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabJoint:
_s20_nextStonerGuySequenceId = 0x16A;
break;
case kASActionDone:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASTalkGroceryStoreGuy:
- _gameSys->setAnimation(0x170, 21, 2);
- _gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- stopSound(0x1A1);
- scene20_stopSounds();
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
_s20_currStonerGuySequenceId = 0x170;
_s20_groceryStoreGuyCtr = (_s20_groceryStoreGuyCtr + 1) % 2;
@@ -600,137 +597,136 @@ void GnapEngine::scene20_updateAnimations() {
_s20_nextGroceryStoreGuySequenceId = 0x176;
else
_s20_nextGroceryStoreGuySequenceId = 0x177;
- _timers[5] = 100;
- _timers[6] = 100;
+ _vm->_timers[5] = 100;
+ _vm->_timers[6] = 100;
break;
case kASGrabGroceryStoreGuy:
- _gameSys->setAnimation(0x170, 21, 2);
- _gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- stopSound(0x1A1);
- scene20_stopSounds();
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
_s20_currStonerGuySequenceId = 0x170;
- _timers[5] = 120;
- _timers[6] = 120;
+ _vm->_timers[5] = 120;
+ _vm->_timers[6] = 120;
_s20_nextGroceryStoreGuySequenceId = 0x178;
break;
case kASGrabGroceryStoreHat:
- _gameSys->setAnimation(0x170, 21, 2);
- _gameSys->setAnimation(0x17B, 20, 3);
- _gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- stopSound(0x1A1);
- scene20_stopSounds();
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
_s20_currGroceryStoreGuySequenceId = 0x17B;
_s20_currStonerGuySequenceId = 0x170;
_s20_nextGroceryStoreGuySequenceId = 0x179;
break;
case kASSwitchGroceryStoreHat:
- setGrabCursorSprite(-1);
- _gameSys->setAnimation(0x180, _gnapId, 0);
- _gameSys->insertSequence(0x180, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x180;
- _gnapSequenceDatNum = 0;
- invRemove(kItemCowboyHat);
- invAdd(kItemGroceryStoreHat);
- _gnapActionStatus = kASSwitchGroceryStoreHatDone;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x180, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x180;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemCowboyHat);
+ _vm->invAdd(kItemGroceryStoreHat);
+ _vm->_gnapActionStatus = kASSwitchGroceryStoreHatDone;
break;
case kASSwitchGroceryStoreHatDone:
- _gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
- setFlag(kGFGroceryStoreHatTaken);
- hideCursor();
- setGrabCursorSprite(-1);
- addFullScreenSprite(0x12C, 255);
- _gameSys->setAnimation(0x181, 256, 0);
- _gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- removeFullScreenSprite();
- showCursor();
- setGrabCursorSprite(kItemGroceryStoreHat);
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(3, 8, -1, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFGroceryStoreHatTaken);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0x12C, 255);
+ _vm->_gameSys->setAnimation(0x181, 256, 0);
+ _vm->_gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->setGrabCursorSprite(kItemGroceryStoreHat);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabJointDone:
- setGrabCursorSprite(kItemJoint);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemJoint);
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
switch (_s20_nextGroceryStoreGuySequenceId) {
case 0x176:
case 0x177:
- _gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s20_currGroceryStoreGuySequenceId = _s20_nextGroceryStoreGuySequenceId;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_nextStonerGuySequenceId = 0x16D;
break;
case 0x178:
- _gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _gameSys->setAnimation(0x17D, _gnapId, 0);
- _gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x17D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x17D;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASActionDone;
- _gameSys->setAnimation(0x16D, 21, 2);
- _gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->setAnimation(0x17D, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x17D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASActionDone;
+ _vm->_gameSys->setAnimation(0x16D, 21, 2);
+ _vm->_gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = 0x16D;
_s20_currGroceryStoreGuySequenceId = 0x178;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_nextStonerGuySequenceId = -1;
break;
case 0x179:
- _gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _gameSys->setAnimation(0x16D, 21, 0);
- _gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x17E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x17E;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASActionDone;
- _gameSys->setAnimation(0x16D, 21, 2);
- _gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->setAnimation(0x16D, 21, 0);
+ _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x17E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASActionDone;
+ _vm->_gameSys->setAnimation(0x16D, 21, 2);
+ _vm->_gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s20_currStonerGuySequenceId = 0x16D;
_s20_currGroceryStoreGuySequenceId = 377;
_s20_nextGroceryStoreGuySequenceId = -1;
_s20_nextStonerGuySequenceId = -1;
- gnapWalkTo(4, 8, -1, 0x107BB, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
break;
case 0x17C:
- _gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 3);
_s20_nextStonerGuySequenceId = 0x171;
break;
case 0x17A:
- _gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 3);
_s20_nextStonerGuySequenceId = 0x16F;
break;
case 0x175:
- _gameSys->setAnimation(0x175, 20, 0);
- _gameSys->setAnimation(0x175, 20, 3);
- _gameSys->insertSequence(0x175, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x175, 20, 0);
+ _vm->_gameSys->setAnimation(0x175, 20, 3);
+ _vm->_gameSys->insertSequence(0x175, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s20_currGroceryStoreGuySequenceId = 0x175;
_s20_nextGroceryStoreGuySequenceId = -1;
- _gnapActionStatus = kASActionDone;
+ _vm->_gnapActionStatus = kASActionDone;
break;
default:
if (_s20_nextGroceryStoreGuySequenceId != -1) {
- _gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s20_currGroceryStoreGuySequenceId = _s20_nextGroceryStoreGuySequenceId;
_s20_nextGroceryStoreGuySequenceId = -1;
}
break;
}
}
-
- scene20_updateAnimationsCb();
+ updateAnimationsCb();
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene20.h b/engines/gnap/scenes/scene20.h
new file mode 100644
index 0000000..7496c87
--- /dev/null
+++ b/engines/gnap/scenes/scene20.h
@@ -0,0 +1,57 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE20_H
+#define GNAP_SCENE20_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene20: public Scene {
+public:
+ Scene20(GnapEngine *vm);
+ ~Scene20() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _s20_currStonerGuySequenceId;
+ int _s20_nextStonerGuySequenceId;
+ int _s20_currGroceryStoreGuySequenceId;
+ int _s20_nextGroceryStoreGuySequenceId;
+ int _s20_stonerGuyCtr;
+ int _s20_groceryStoreGuyCtr;
+ bool _s20_stonerGuyShowingJoint;
+
+ void stopSounds();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE20_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 8047029..20f4623 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -44,6 +44,8 @@
#include "gnap/scenes/scene16.h"
#include "gnap/scenes/scene17.h"
#include "gnap/scenes/scene18.h"
+#include "gnap/scenes/scene19.h"
+#include "gnap/scenes/scene20.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -184,14 +186,16 @@ int GnapEngine::initSceneLogic() {
_scene->updateHotspots();
break;
case 19:
- backgroundId = scene19_init();
- scene19_updateHotspots();
+ _scene = new Scene19(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 20:
- backgroundId = scene20_init();
- scene20_updateHotspots();
+ _scene = new Scene20(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -506,12 +510,14 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 19:
- scene19_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 19;
break;
case 20:
- scene20_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 22;
break;
Commit: 14ec2e9699caf9428a3f82b6542575595c6a4727
https://github.com/scummvm/scummvm/commit/14ec2e9699caf9428a3f82b6542575595c6a4727
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 21
Changed paths:
A engines/gnap/scenes/scene21.h
engines/gnap/gnap.h
engines/gnap/scenes/scene21.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b61f93c..9afc4e1 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,13 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 21
- int _s21_currOldLadySequenceId, _s21_nextOldLadySequenceId;
- int scene21_init();
- void scene21_updateHotspots();
- void scene21_run();
- void scene21_updateAnimations();
-
// Scene 22
int _s22_currCashierSequenceId, _s22_nextCashierSequenceId;
bool _s22_caughtBefore;
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
index fcc7f51..0e88537 100644
--- a/engines/gnap/scenes/scene21.cpp
+++ b/engines/gnap/scenes/scene21.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene21.h"
namespace Gnap {
@@ -46,102 +47,105 @@ enum {
kASLeaveScene = 6
};
-int GnapEngine::scene21_init() {
- _gameSys->setAnimation(0, 0, 3);
- return isFlag(kGFTwigTaken) ? 0x94 : 0x93;
+Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
+ _s21_currOldLadySequenceId = -1;
+ _s21_nextOldLadySequenceId = -1;
}
-void GnapEngine::scene21_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSBanana, 94, 394, 146, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 6);
- setHotspot(kHSOldLady, 402, 220, 528, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSExitOutsideGrubCity, 522, 498, 800, 600, SF_EXIT_SE_CURSOR | SF_WALKABLE, 5, 10);
- setHotspot(kHSWalkArea1, 0, 0, 800, 440);
- setHotspot(kHSWalkArea2, 698, 0, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFUnk04) || !isFlag(kGFTwigTaken))
- _hotspots[kHSBanana]._flags = SF_WALKABLE | SF_DISABLED;
- if (isFlag(kGFTwigTaken))
- _hotspots[kHSOldLady]._flags = SF_DISABLED;
- _hotspotsCount = 7;
+int Scene21::init() {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return _vm->isFlag(kGFTwigTaken) ? 0x94 : 0x93;
}
-void GnapEngine::scene21_run() {
- playSound(0x10940, true);
- startSoundTimerA(6);
+void Scene21::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSBanana, 94, 394, 146, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 6);
+ _vm->setHotspot(kHSOldLady, 402, 220, 528, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSExitOutsideGrubCity, 522, 498, 800, 600, SF_EXIT_SE_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 440);
+ _vm->setHotspot(kHSWalkArea2, 698, 0, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk04) || !_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHSBanana]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHSOldLady]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene21::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(6);
- _timers[5] = getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFTwigTaken)) {
- if (isFlag(kGFKeysTaken)) {
- initGnapPos(5, 8, kDirBottomRight);
- initPlatypusPos(6, 8, kDirNone);
- _gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFUnk04))
- _gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
- clearFlag(kGFKeysTaken);
+ if (_vm->isFlag(kGFTwigTaken)) {
+ if (_vm->isFlag(kGFKeysTaken)) {
+ _vm->initGnapPos(5, 8, kDirBottomRight);
+ _vm->initPlatypusPos(6, 8, kDirNone);
+ _vm->_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->clearFlag(kGFKeysTaken);
} else {
- initGnapPos(5, 11, kDirBottomRight);
- initPlatypusPos(6, 11, kDirNone);
- if (!isFlag(kGFUnk04))
- _gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
+ if (!_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
} else {
- initGnapPos(5, 11, kDirBottomRight);
- initPlatypusPos(6, 11, kDirNone);
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
_s21_currOldLadySequenceId = 0x89;
- _gameSys->setAnimation(0x89, 79, 3);
- _gameSys->insertSequence(_s21_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x89, 79, 3);
+ _vm->_gameSys->insertSequence(_s21_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
_s21_nextOldLadySequenceId = -1;
- _timers[4] = getRandom(30) + 50;
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene21_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -149,19 +153,19 @@ void GnapEngine::scene21_run() {
break;
case kHSBanana:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 2, 5);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(2, 5);
+ _vm->playGnapScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSBanana].x, _hotspotsWalkPos[kHSBanana].y) | 0x10000, 1);
- playGnapPullOutDevice(2, 5);
- playGnapUseDevice(0, 0);
- _gnapActionStatus = kASGrabBanana;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBanana].x, _vm->_hotspotsWalkPos[kHSBanana].y) | 0x10000, 1);
+ _vm->playGnapPullOutDevice(2, 5);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kASGrabBanana;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -172,32 +176,32 @@ void GnapEngine::scene21_run() {
break;
case kHSOldLady:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemGroceryStoreHat) {
- _newSceneNum = 47;
- gnapWalkTo(4, 6, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASUseHatWithOldLady;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(4, 6, 7, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
+ _vm->_newSceneNum = 47;
+ _vm->gnapWalkTo(4, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASUseHatWithOldLady;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 6, 7, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(7, 4);
+ _vm->playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(7, 6, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASGrabOldLady;
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabOldLady;
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSOldLady].x, _hotspotsWalkPos[kHSOldLady].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkOldLady;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSOldLady].x, _vm->_hotspotsWalkPos[kHSOldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkOldLady;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -205,40 +209,40 @@ void GnapEngine::scene21_run() {
break;
case kHSExitOutsideGrubCity:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 20;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107B3, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107B3, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene21_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10940))
- playSound(0x10940, true);
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!isFlag(kGFTwigTaken) && !_timers[4] && _s21_nextOldLadySequenceId == -1 && _gnapActionStatus == -1) {
- _timers[4] = getRandom(30) + 50;
- switch (getRandom(5)) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _s21_nextOldLadySequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
+ switch (_vm->getRandom(5)) {
case 0:
_s21_nextOldLadySequenceId = 0x88;
break;
@@ -250,92 +254,91 @@ void GnapEngine::scene21_run() {
break;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 100;
- _gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ _vm->_gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundA();
+ _vm->playSoundA();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene21_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene21_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene21::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASTalkOldLady:
_s21_nextOldLadySequenceId = 0x8B;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabBanana:
- _gameSys->setAnimation(0x8C, 59, 0);
- _gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
- setFlag(kGFUnk04);
- invAdd(kItemBanana);
- scene21_updateHotspots();
- _gnapActionStatus = kASGrabBananaDone;
+ _vm->_gameSys->setAnimation(0x8C, 59, 0);
+ _vm->_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFUnk04);
+ _vm->invAdd(kItemBanana);
+ updateHotspots();
+ _vm->_gnapActionStatus = kASGrabBananaDone;
break;
case kASGrabBananaDone:
- setGrabCursorSprite(kItemBanana);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemBanana);
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabOldLady:
- _timers[4] = getRandom(30) + 50;
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
_s21_nextOldLadySequenceId = 0x87;
break;
case kASUseHatWithOldLady:
- _gameSys->setAnimation(0x8F, _gnapId, 0);
- _gameSys->insertSequence(0x8F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x8F;
- _gnapActionStatus = kASUseHatWithOldLadyDone;
- invAdd(kItemTickets);
- invRemove(kItemGroceryStoreHat);
- setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x8F, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x8F;
+ _vm->_gnapActionStatus = kASUseHatWithOldLadyDone;
+ _vm->invAdd(kItemTickets);
+ _vm->invRemove(kItemGroceryStoreHat);
+ _vm->setGrabCursorSprite(-1);
break;
case kASUseHatWithOldLadyDone:
_s21_nextOldLadySequenceId = 0x91;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s21_nextOldLadySequenceId != -1) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s21_nextOldLadySequenceId != -1) {
if (_s21_nextOldLadySequenceId == 0x87) {
- _gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
- _gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x86, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x86;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
+ _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x86;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
_s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
_s21_nextOldLadySequenceId = -1;
} else if (_s21_nextOldLadySequenceId == 0x91) {
- _gameSys->setAnimation(0x91, 79, 0);
- _gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_gameSys->setAnimation(0x91, 79, 0);
+ _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASLeaveScene;
_s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
_s21_nextOldLadySequenceId = -1;
} else {
- _gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
- _gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
+ _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
_s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
_s21_nextOldLadySequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene21.h b/engines/gnap/scenes/scene21.h
new file mode 100644
index 0000000..ea83e69
--- /dev/null
+++ b/engines/gnap/scenes/scene21.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE21_H
+#define GNAP_SCENE21_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene21: public Scene {
+public:
+ Scene21(GnapEngine *vm);
+ ~Scene21() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s21_currOldLadySequenceId;
+ int _s21_nextOldLadySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE21_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 20f4623..42813a2 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -46,6 +46,7 @@
#include "gnap/scenes/scene18.h"
#include "gnap/scenes/scene19.h"
#include "gnap/scenes/scene20.h"
+#include "gnap/scenes/scene21.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -200,8 +201,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 21:
- backgroundId = scene21_init();
- scene21_updateHotspots();
+ _scene = new Scene21(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -522,7 +524,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 22;
break;
case 21:
- scene21_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: d1e7c9f594c6ad3ac31a3649e39db85e1be72d79
https://github.com/scummvm/scummvm/commit/d1e7c9f594c6ad3ac31a3649e39db85e1be72d79
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 22 & 23
Changed paths:
A engines/gnap/scenes/scene22.h
A engines/gnap/scenes/scene23.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene22.cpp
engines/gnap/scenes/scene23.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 286bb73..68704fd 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2018,13 +2018,9 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
- // Scene 18
+ // Shared by scenes 17 && 18
_s18_garbageCanPos = 8;
- // Scene 22
- _s22_caughtBefore = false;
- _s22_cashierCtr = 3;
-
// Scene 31
_s31_beerGuyDistracted = false;
_s31_clerkMeasureMaxCtr = 3;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 9afc4e1..aff93fa 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,22 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 22
- int _s22_currCashierSequenceId, _s22_nextCashierSequenceId;
- bool _s22_caughtBefore;
- int _s22_cashierCtr;
- int scene22_init();
- void scene22_updateHotspots();
- void scene22_run();
- void scene22_updateAnimations();
-
- // Scene 23
- int _s23_currStoreClerkSequenceId, _s23_nextStoreClerkSequenceId;
- int scene23_init();
- void scene23_updateHotspots();
- void scene23_run();
- void scene23_updateAnimations();
-
// Scene 24
int _s24_currWomanSequenceId, _s24_nextWomanSequenceId;
int _s24_boySequenceId;
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
index 364e42f..494af92 100644
--- a/engines/gnap/scenes/scene22.cpp
+++ b/engines/gnap/scenes/scene22.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene22.h"
namespace Gnap {
@@ -41,53 +42,57 @@ enum {
kASTalkCashier = 1
};
-int GnapEngine::scene22_init() {
- return 0x5E;
+Scene22::Scene22(GnapEngine *vm) : Scene(vm) {
+ _s22_caughtBefore = false;
+ _s22_cashierCtr = 3;
}
-void GnapEngine::scene22_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitOutsideGrubCity, 0, 180, 184, 472, SF_EXIT_L_CURSOR, 3, 6);
- setHotspot(kHSExitBackGrubCity, 785, 405, 800, 585, SF_EXIT_R_CURSOR, 11, 9);
- setHotspot(kHSCashier, 578, 230, 660, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- setHotspot(kHSWalkArea1, 553, 0, 800, 542);
- setHotspot(kHSWalkArea2, 0, 0, 552, 488);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 7;
+int Scene22::init() {
+ return 0x5E;
}
-void GnapEngine::scene22_run() {
+void Scene22::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitOutsideGrubCity, 0, 180, 184, 472, SF_EXIT_L_CURSOR, 3, 6);
+ _vm->setHotspot(kHSExitBackGrubCity, 785, 405, 800, 585, SF_EXIT_R_CURSOR, 11, 9);
+ _vm->setHotspot(kHSCashier, 578, 230, 660, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHSWalkArea1, 553, 0, 800, 542);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 552, 488);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
- _gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
+void Scene22::run() {
+ _vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
_s22_currCashierSequenceId = 0x59;
_s22_nextCashierSequenceId = -1;
- _gameSys->setAnimation(0x59, 1, 3);
- _gameSys->insertSequence(_s22_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x59, 1, 3);
+ _vm->_gameSys->insertSequence(_s22_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _timers[6] = getRandom(30) + 20;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum == 20) {
- initGnapPos(2, 8, kDirBottomRight);
- initPlatypusPos(1, 8, kDirNone);
- endSceneInit();
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(2, 8, kDirBottomRight);
+ _vm->initPlatypusPos(1, 8, kDirNone);
+ _vm->endSceneInit();
} else {
- initGnapPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
- initPlatypusPos(11, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107B9, 1);
- platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(11, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
+ _vm->initPlatypusPos(11, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
}
- if (isFlag(kGFSceneFlag1)) {
+ if (_vm->isFlag(kGFSceneFlag1)) {
int storeDetectiveSeqId;
- setGrabCursorSprite(-1);
- invRemove(kItemCereals);
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemCereals);
if (_s22_caughtBefore) {
- switch (getRandom(3)) {
+ switch (_vm->getRandom(3)) {
case 0:
storeDetectiveSeqId = 0x55;
break;
@@ -102,58 +107,56 @@ void GnapEngine::scene22_run() {
_s22_caughtBefore = true;
storeDetectiveSeqId = 0x54;
}
- _gameSys->waitForUpdate();
- _gameSys->requestClear1();
- _gameSys->drawSpriteToBackground(0, 0, 0x44);
- _gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
- _gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(4) != 2) {
- gameUpdateTick();
+ _vm->_gameSys->waitForUpdate();
+ _vm->_gameSys->requestClear1();
+ _vm->_gameSys->drawSpriteToBackground(0, 0, 0x44);
+ _vm->_gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
+ _vm->_gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2) {
+ _vm->gameUpdateTick();
}
- _sceneDone = true;
- _newSceneNum = 20;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 20;
_s22_caughtBefore = true;
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene22_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -161,45 +164,45 @@ void GnapEngine::scene22_run() {
break;
case kHSExitOutsideGrubCity:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 20;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
}
break;
case kHSExitBackGrubCity:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 23;
- gnapWalkTo(_hotspotsWalkPos[kHSExitBackGrubCity].x, _hotspotsWalkPos[kHSExitBackGrubCity].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitBackGrubCity].x, _hotspotsWalkPos[kHSExitBackGrubCity].y + 1, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 23;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y + 1, -1, 0x107C2, 1);
}
break;
case kHSCashier:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSCashier].x, _hotspotsWalkPos[kHSCashier].y, 8, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCashier].x, _vm->_hotspotsWalkPos[kHSCashier].y, 8, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 4);
+ _vm->playGnapScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSCashier].x, _hotspotsWalkPos[kHSCashier].y,
- 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkCashier;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCashier].x, _vm->_hotspotsWalkPos[kHSCashier].y,
+ 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkCashier;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypuss();
break;
}
}
@@ -208,26 +211,25 @@ void GnapEngine::scene22_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene22_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[6] && _s22_nextCashierSequenceId == -1) {
- _timers[6] = getRandom(30) + 20;
- if (getRandom(8) != 0) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[6] && _s22_nextCashierSequenceId == -1) {
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ if (_vm->getRandom(8) != 0) {
_s22_nextCashierSequenceId = 0x59;
} else {
_s22_cashierCtr = (_s22_cashierCtr + 1) % 3;
@@ -249,46 +251,42 @@ void GnapEngine::scene22_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene22_updateHotspots();
- _timers[2] = getRandom(30) + 20;
- _timers[3] = 400;
- _timers[1] = getRandom(20) + 30;
- _timers[0] = getRandom(75) + 75;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 400;
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene22_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene22::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASTalkCashier:
_s22_nextCashierSequenceId = 0x5C;
break;
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s22_nextCashierSequenceId != -1) {
- _gameSys->setAnimation(_s22_nextCashierSequenceId, 1, 3);
- _gameSys->insertSequence(_s22_nextCashierSequenceId, 1, _s22_currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s22_nextCashierSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_s22_nextCashierSequenceId, 1, 3);
+ _vm->_gameSys->insertSequence(_s22_nextCashierSequenceId, 1, _s22_currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s22_currCashierSequenceId = _s22_nextCashierSequenceId;
_s22_nextCashierSequenceId = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene22.h b/engines/gnap/scenes/scene22.h
new file mode 100644
index 0000000..44afa10
--- /dev/null
+++ b/engines/gnap/scenes/scene22.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE22_H
+#define GNAP_SCENE22_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene22: public Scene {
+public:
+ Scene22(GnapEngine *vm);
+ ~Scene22() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s22_currCashierSequenceId;
+ int _s22_nextCashierSequenceId;
+ bool _s22_caughtBefore;
+ int _s22_cashierCtr;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE22_H
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
index a6b4c1f..75838f4 100644
--- a/engines/gnap/scenes/scene23.cpp
+++ b/engines/gnap/scenes/scene23.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene23.h"
namespace Gnap {
@@ -42,90 +43,92 @@ enum {
kASLeaveScene = 3
};
-int GnapEngine::scene23_init() {
+Scene23::Scene23(GnapEngine *vm) : Scene(vm) {
+ _s23_currStoreClerkSequenceId = -1;
+ _s23_nextStoreClerkSequenceId = -1;
+}
+
+int Scene23::init() {
return 0xC0;
}
-void GnapEngine::scene23_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitFrontGrubCity, 0, 250, 15, 550, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
- setHotspot(kHSCereals, 366, 332, 414, 408, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- setHotspot(kHSWalkArea1, 0, 0, 340, 460);
- setHotspot(kHSWalkArea2, 340, 0, 800, 501);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 6;
+void Scene23::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitFrontGrubCity, 0, 250, 15, 550, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
+ _vm->setHotspot(kHSCereals, 366, 332, 414, 408, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 340, 460);
+ _vm->setHotspot(kHSWalkArea2, 340, 0, 800, 501);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 6;
}
-void GnapEngine::scene23_run() {
-
- _timers[4] = getRandom(100) + 200;
- _timers[5] = getRandom(100) + 200;
+void Scene23::run() {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
_s23_currStoreClerkSequenceId = 0xB4;
_s23_nextStoreClerkSequenceId = -1;
- _gameSys->setAnimation(0xB4, 1, 4);
- _gameSys->insertSequence(_s23_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xB4, 1, 4);
+ _vm->_gameSys->insertSequence(_s23_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- initGnapPos(-1, 7, kDirBottomRight);
- initPlatypusPos(-2, 7, kDirNone);
- _gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
- platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
- if (isFlag(kGFUnk24)) {
- gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ if (_vm->isFlag(kGFUnk24)) {
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else {
- gnapWalkTo(2, 7, 0, 0x107B9, 1);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- playSequences(0x48, 0xBA, 0xBB, 0xBC);
- setFlag(kGFUnk24);
+ _vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
+ _vm->setFlag(kGFUnk24);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 3, -1, -1, -1, -1);
+ _vm->testWalk(0, 3, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene23_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -133,35 +136,35 @@ void GnapEngine::scene23_run() {
break;
case kHSCereals:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y, 5, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y, 5, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFSceneFlag1))
- playGnapMoan2(0, 0);
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapMoan2(0, 0);
else {
- gnapWalkTo(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y,
- 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASLookCereals;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASLookCereals;
}
break;
case GRAB_CURSOR:
- if (isFlag(kGFSceneFlag1))
- playGnapImpossible(0, 0);
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapImpossible(0, 0);
else {
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[kHSCereals].x, _hotspotsWalkPos[kHSCereals].y,
- 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- setFlag(kGFSceneFlag1);
- _gnapActionStatus = kASGrabCereals;
- invAdd(kItemCereals);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->_gnapActionStatus = kASGrabCereals;
+ _vm->invAdd(kItemCereals);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -169,109 +172,105 @@ void GnapEngine::scene23_run() {
break;
case kHSExitFrontGrubCity:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 22;
- gnapWalkTo(_hotspotsWalkPos[kHSExitFrontGrubCity].x, _hotspotsWalkPos[kHSExitFrontGrubCity].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitFrontGrubCity].x, _hotspotsWalkPos[kHSExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 22;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHSExitFrontGrubCity].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHSExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene23_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4] && _gnapActionStatus == -1) {
- _timers[4] = getRandom(100) + 200;
- switch (getRandom(4)) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ switch (_vm->getRandom(4)) {
case 0:
- _gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
case 3:
- _gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(100) + 200;
- switch (getRandom(3)) {
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ switch (_vm->getRandom(3)) {
case 0:
- playSound(0xCE, false);
+ _vm->playSound(0xCE, false);
break;
case 1:
- playSound(0xD0, false);
+ _vm->playSound(0xD0, false);
break;
case 2:
- playSound(0xCF, false);
+ _vm->playSound(0xCF, false);
break;
}
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene23_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene23_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene23::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLookCereals:
- showFullScreenSprite(0x48);
- _gnapActionStatus = -1;
+ _vm->showFullScreenSprite(0x48);
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabCereals:
- _gameSys->setAnimation(0xBE, _gnapId, 0);
- _gameSys->insertSequence(0xBE, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->requestRemoveSequence(0xBF, 2);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0xBE;
- _gnapActionStatus = kASGrabCerealsDone;
+ _vm->_gameSys->setAnimation(0xBE, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0xBF, 2);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0xBE;
+ _vm->_gnapActionStatus = kASGrabCerealsDone;
break;
case kASGrabCerealsDone:
- setGrabCursorSprite(kItemCereals);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemCereals);
+ _vm->_gnapActionStatus = -1;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s23_nextStoreClerkSequenceId == -1) {
- switch (getRandom(8)) {
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s23_nextStoreClerkSequenceId == -1) {
+ switch (_vm->getRandom(8)) {
case 0:
case 1:
case 2:
@@ -286,12 +285,11 @@ void GnapEngine::scene23_updateAnimations() {
_s23_nextStoreClerkSequenceId = 0xB6;
break;
}
- _gameSys->setAnimation(_s23_nextStoreClerkSequenceId, 1, 4);
- _gameSys->insertSequence(_s23_nextStoreClerkSequenceId, 1, _s23_currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s23_nextStoreClerkSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(_s23_nextStoreClerkSequenceId, 1, _s23_currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_s23_currStoreClerkSequenceId = _s23_nextStoreClerkSequenceId;
_s23_nextStoreClerkSequenceId = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene23.h b/engines/gnap/scenes/scene23.h
new file mode 100644
index 0000000..73543c9
--- /dev/null
+++ b/engines/gnap/scenes/scene23.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE23_H
+#define GNAP_SCENE23_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene23: public Scene {
+public:
+ Scene23(GnapEngine *vm);
+ ~Scene23() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s23_currStoreClerkSequenceId;
+ int _s23_nextStoreClerkSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE23_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 42813a2..0ecb9e5 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -47,6 +47,8 @@
#include "gnap/scenes/scene19.h"
#include "gnap/scenes/scene20.h"
#include "gnap/scenes/scene21.h"
+#include "gnap/scenes/scene22.h"
+#include "gnap/scenes/scene23.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -208,14 +210,16 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 22:
- backgroundId = scene22_init();
- scene22_updateHotspots();
+ _scene = new Scene22(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 23:
- backgroundId = scene23_init();
- scene23_updateHotspots();
+ _scene = new Scene23(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -530,12 +534,14 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 22:
- scene22_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
case 23:
- scene23_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 417d8066c9d0b8938fe9ebeaa3a256143555684b
https://github.com/scummvm/scummvm/commit/417d8066c9d0b8938fe9ebeaa3a256143555684b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 24
Changed paths:
A engines/gnap/scenes/scene24.h
engines/gnap/gnap.h
engines/gnap/scenes/scene24.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index aff93fa..a9389e5 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,15 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 24
- int _s24_currWomanSequenceId, _s24_nextWomanSequenceId;
- int _s24_boySequenceId;
- int _s24_girlSequenceId;
- int scene24_init();
- void scene24_updateHotspots();
- void scene24_run();
- void scene24_updateAnimations();
-
// Scene 25
int _s25_currTicketVendorSequenceId, _s25_nextTicketVendorSequenceId;
int scene25_init();
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
index e244a0d..d7959d0 100644
--- a/engines/gnap/scenes/scene24.cpp
+++ b/engines/gnap/scenes/scene24.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene24.h"
namespace Gnap {
@@ -40,102 +41,107 @@ enum {
kASLeaveScene = 0
};
-int GnapEngine::scene24_init() {
+Scene24::Scene24(GnapEngine *vm) : Scene(vm) {
+ _s24_currWomanSequenceId = -1;
+ _s24_nextWomanSequenceId = -1;
+ _s24_boySequenceId = -1;
+ _s24_girlSequenceId = -1;
+}
+
+int Scene24::init() {
return 0x3B;
}
-void GnapEngine::scene24_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitCircusWorld, 785, 128, 800, 600, SF_EXIT_R_CURSOR, 8, 7);
- setHotspot(kHSExitOutsideGrubCity, 0, 213, 91, 600, SF_EXIT_NW_CURSOR, 1, 8);
- setHotspot(kHSWalkArea1, 0, 0, 0, 0);
- setHotspot(kHSWalkArea2, 530, 0, 800, 600);
- setHotspot(kHSWalkArea3, 0, 0, 800, 517);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 7;
+void Scene24::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitCircusWorld, 785, 128, 800, 600, SF_EXIT_R_CURSOR, 8, 7);
+ _vm->setHotspot(kHSExitOutsideGrubCity, 0, 213, 91, 600, SF_EXIT_NW_CURSOR, 1, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 0, 0);
+ _vm->setHotspot(kHSWalkArea2, 530, 0, 800, 600);
+ _vm->setHotspot(kHSWalkArea3, 0, 0, 800, 517);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
}
-void GnapEngine::scene24_run() {
+void Scene24::run() {
int counter = 0;
- playSound(0x10940, true);
-
- startSoundTimerA(9);
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(9);
- _timers[7] = getRandom(100) + 100;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
- _gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
- _timers[4] = getRandom(20) + 50;
- _timers[5] = getRandom(20) + 40;
- _timers[6] = getRandom(50) + 30;
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_timers[5] = _vm->getRandom(20) + 40;
+ _vm->_timers[6] = _vm->getRandom(50) + 30;
- _gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
_s24_currWomanSequenceId = 0x35;
_s24_girlSequenceId = 0x36;
_s24_boySequenceId = 0x30;
- if (_debugLevel == 4)
- startIdleTimer(8);
+ if (_vm->_debugLevel == 4)
+ _vm->startIdleTimer(8);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum == 20) {
- initGnapPos(1, 8, kDirBottomRight);
- initPlatypusPos(2, 8, kDirNone);
- endSceneInit();
- gnapWalkTo(1, 9, -1, 0x107B9, 1);
- platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(1, 9, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
- initGnapPos(8, 8, kDirBottomLeft);
- initPlatypusPos(8, 8, kDirUnk4);
- endSceneInit();
- gnapWalkTo(2, 8, -1, 0x107BA, 1);
- platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(8, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene24_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -143,62 +149,61 @@ void GnapEngine::scene24_run() {
break;
case kHSExitCircusWorld:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 25;
- gnapWalkTo(_hotspotsWalkPos[kHSExitCircusWorld].x, _hotspotsWalkPos[kHSExitCircusWorld].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCircusWorld].x + 1, _hotspotsWalkPos[kHSExitCircusWorld].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 25;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitCircusWorld].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHSExitOutsideGrubCity:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 20;
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
case kHSWalkArea3:
- if (_gnapActionStatus == -1)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus == -1)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene24_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x10940))
- playSound(0x10940, true);
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 50;
- _gameSys->insertSequence(0x37, 20, _s24_girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_gameSys->insertSequence(0x37, 20, _s24_girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s24_girlSequenceId = 0x37;
}
- if (!_timers[5]) {
- _timers[5] = getRandom(20) + 40;
- _gameSys->insertSequence(0x31, 20, _s24_boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 40;
+ _vm->_gameSys->insertSequence(0x31, 20, _s24_boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s24_boySequenceId = 0x31;
}
- if (!_timers[6]) {
- _timers[6] = getRandom(50) + 30;
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(50) + 30;
counter = (counter + 1) % 3;
switch (counter) {
case 0:
@@ -211,49 +216,45 @@ void GnapEngine::scene24_run() {
_s24_nextWomanSequenceId = 0x34;
break;
}
- _gameSys->insertSequence(_s24_nextWomanSequenceId, 20, _s24_currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s24_nextWomanSequenceId, 20, _s24_currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_s24_currWomanSequenceId = _s24_nextWomanSequenceId;
}
- if (!_timers[7]) {
- _timers[7] = getRandom(100) + 100;
- switch (getRandom(3)) {
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ switch (_vm->getRandom(3)) {
case 0:
- _gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
- if (_debugLevel == 4)
- updateIdleTimer();
- playSoundA();
+ if (_vm->_debugLevel == 4)
+ _vm->updateIdleTimer();
+ _vm->playSoundA();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene24_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene24_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == kASLeaveScene)
- _sceneDone = true;
- _gnapActionStatus = -1;
+void Scene24::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kASLeaveScene)
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene24.h b/engines/gnap/scenes/scene24.h
new file mode 100644
index 0000000..ea6d694
--- /dev/null
+++ b/engines/gnap/scenes/scene24.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE24_H
+#define GNAP_SCENE24_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene24: public Scene {
+public:
+ Scene24(GnapEngine *vm);
+ ~Scene24() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s24_currWomanSequenceId;
+ int _s24_nextWomanSequenceId;
+ int _s24_boySequenceId;
+ int _s24_girlSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE24_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 0ecb9e5..2865767 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -49,6 +49,7 @@
#include "gnap/scenes/scene21.h"
#include "gnap/scenes/scene22.h"
#include "gnap/scenes/scene23.h"
+#include "gnap/scenes/scene24.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -224,8 +225,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 24:
- backgroundId = scene24_init();
- scene24_updateHotspots();
+ _scene = new Scene24(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 136, 11, 10);
break;
@@ -546,7 +548,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 24:
- scene24_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 7479a2b73cfc242b7520c1b7ca42747546cc268b
https://github.com/scummvm/scummvm/commit/7479a2b73cfc242b7520c1b7ca42747546cc268b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 25 & 26
Changed paths:
A engines/gnap/scenes/scene25.h
A engines/gnap/scenes/scene26.h
engines/gnap/gnap.h
engines/gnap/scenes/scene25.cpp
engines/gnap/scenes/scene26.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index a9389e5..a1ce2dc 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,21 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 25
- int _s25_currTicketVendorSequenceId, _s25_nextTicketVendorSequenceId;
- int scene25_init();
- void scene25_updateHotspots();
- void scene25_playAnims(int index);
- void scene25_run();
- void scene25_updateAnimations();
-
- // Scene 26
- int _s26_currKidSequenceId, _s26_nextKidSequenceId;
- int scene26_init();
- void scene26_updateHotspots();
- void scene26_run();
- void scene26_updateAnimations();
-
// Scene 27
int _s27_nextJanitorSequenceId;
int _s27_currJanitorSequenceId;
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
index fe6c7d8..4731f72 100644
--- a/engines/gnap/scenes/scene25.cpp
+++ b/engines/gnap/scenes/scene25.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene25.h"
namespace Gnap {
@@ -49,127 +50,128 @@ enum {
kASLeaveScene = 5
};
-int GnapEngine::scene25_init() {
+Scene25::Scene25(GnapEngine *vm) : Scene(vm) {
+ _s25_currTicketVendorSequenceId = -1;
+ _s25_nextTicketVendorSequenceId = -1;
+}
+
+int Scene25::init() {
return 0x62;
}
-void GnapEngine::scene25_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSTicketVendor, 416, 94, 574, 324, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 5);
- setHotspot(kHSExitOutsideCircusWorld, 0, 519, 205, 600, SF_EXIT_SW_CURSOR, 5, 10);
- setHotspot(kHSExitInsideCircusWorld, 321, 70, 388, 350, SF_EXIT_NE_CURSOR, 3, 6);
- setHotspot(kHSPosters1, 0, 170, 106, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- setHotspot(kHSPosters2, 146, 192, 254, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- setHotspot(kHSPosters3, 606, 162, 654, 368, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 7);
- setHotspot(kHSPosters4, 708, 114, 754, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 439);
- setHotspot(kHSWalkArea2, 585, 0, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 11;
+void Scene25::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSTicketVendor, 416, 94, 574, 324, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 5);
+ _vm->setHotspot(kHSExitOutsideCircusWorld, 0, 519, 205, 600, SF_EXIT_SW_CURSOR, 5, 10);
+ _vm->setHotspot(kHSExitInsideCircusWorld, 321, 70, 388, 350, SF_EXIT_NE_CURSOR, 3, 6);
+ _vm->setHotspot(kHSPosters1, 0, 170, 106, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHSPosters2, 146, 192, 254, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHSPosters3, 606, 162, 654, 368, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 7);
+ _vm->setHotspot(kHSPosters4, 708, 114, 754, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 439);
+ _vm->setHotspot(kHSWalkArea2, 585, 0, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene25_playAnims(int index) {
-
+void Scene25::playAnims(int index) {
if (index > 4)
return;
- hideCursor();
- setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
switch (index) {
case 1:
- _largeSprite = _gameSys->createSurface(0x25);
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x25);
break;
case 2:
- _largeSprite = _gameSys->createSurface(0x26);
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x26);
break;
case 3:
- _largeSprite = _gameSys->createSurface(0x27);
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x27);
break;
case 4:
- _largeSprite = _gameSys->createSurface(0x28);
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x28);
break;
}
- _gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- delayTicksCursor(5);
- while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) && !isKeyStatus1(Common::KEYCODE_SPACE) &&
- !isKeyStatus1(29)) {
- gameUpdateTick();
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->delayTicksCursor(5);
+ while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
+ !_vm->isKeyStatus1(29)) {
+ _vm->gameUpdateTick();
}
- _mouseClickState._left = false;
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(29);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- _gameSys->removeSpriteDrawItem(_largeSprite, 300);
- delayTicksCursor(5);
- deleteSurface(&_largeSprite);
- showCursor();
+ _vm->_mouseClickState._left = false;
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->delayTicksCursor(5);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->showCursor();
}
-void GnapEngine::scene25_run() {
- playSound(0x10940, true);
-
- startSoundTimerA(5);
+void Scene25::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(5);
_s25_currTicketVendorSequenceId = 0x52;
- _gameSys->setAnimation(0x52, 39, 3);
- _gameSys->insertSequence(_s25_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x52, 39, 3);
+ _vm->_gameSys->insertSequence(_s25_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_s25_nextTicketVendorSequenceId = -1;
- _timers[4] = getRandom(20) + 20;
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (_prevSceneNum == 24) {
- initGnapPos(5, 11, kDirUpLeft);
- initPlatypusPos(6, 11, kDirUnk4);
- endSceneInit();
- gnapWalkTo(5, 7, -1, 0x107BA, 1);
- platypusWalkTo(6, 7, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 24) {
+ _vm->initGnapPos(5, 11, kDirUpLeft);
+ _vm->initPlatypusPos(6, 11, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 7, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
- initGnapPos(5, 6, kDirBottomRight);
- initPlatypusPos(6, 6, kDirNone);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ _vm->initPlatypusPos(6, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene25_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_platX, _platY);
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -177,30 +179,30 @@ void GnapEngine::scene25_run() {
break;
case kHSTicketVendor:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemTickets) {
- _gnapActionStatus = kASShowTicketToVendor;
- gnapWalkTo(_hotspotsWalkPos[kHSTicketVendor].x, _hotspotsWalkPos[kHSTicketVendor].y,
- 0, getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSTicketVendor].x, _hotspotsWalkPos[kHSTicketVendor].y, 6, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTickets) {
+ _vm->_gnapActionStatus = kASShowTicketToVendor;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y, 6, 1);
_s25_nextTicketVendorSequenceId = 0x5B;
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 1);
- _s25_nextTicketVendorSequenceId = (getRandom(2) == 1) ? 0x59 : 0x56;
+ _vm->playGnapScratchingHead(6, 1);
+ _s25_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSTicketVendor].x, _hotspotsWalkPos[kHSTicketVendor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkTicketVendor;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkTicketVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -208,30 +210,30 @@ void GnapEngine::scene25_run() {
break;
case kHSExitOutsideCircusWorld:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 24;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107B4, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 24;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107B4, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHSExitInsideCircusWorld:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFNeedleTaken)) {
- _isLeavingScene = true;
- _newSceneNum = 26;
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSExitInsideCircusWorld].x, _hotspotsWalkPos[kHSExitInsideCircusWorld].y, 0, 0x107B1, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitInsideCircusWorld].x + 1, _hotspotsWalkPos[kHSExitInsideCircusWorld].y, -1, 0x107C2, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFNeedleTaken)) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].y, 0, 0x107B1, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
} else {
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(4, 5, 0, 0x107BB, 1);
- _gnapActionStatus = kASEnterCircusWihoutTicket;
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(4, 5, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASEnterCircusWihoutTicket;
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
}
}
break;
@@ -240,26 +242,26 @@ void GnapEngine::scene25_run() {
case kHSPosters2:
case kHSPosters3:
case kHSPosters4:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[_sceneClickedHotspot].x, _hotspotsWalkPos[_sceneClickedHotspot].y, -1, -1, 1);
- if (_sceneClickedHotspot == 5 || _sceneClickedHotspot == 6)
- _gnapIdleFacing = kDirUpLeft;
- else if (_sceneClickedHotspot == 8)
- _gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, -1, -1, 1);
+ if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ else if (_vm->_sceneClickedHotspot == 8)
+ _vm->_gnapIdleFacing = kDirBottomRight;
else
- _gnapIdleFacing = kDirUpRight;
- playGnapIdle(0, 0);
- scene25_playAnims(8 - _sceneClickedHotspot + 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->playGnapIdle(0, 0);
+ playAnims(8 - _vm->_sceneClickedHotspot + 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapMoan2(0, 0);
+ _vm->playGnapMoan2(0, 0);
break;
}
}
@@ -268,27 +270,26 @@ void GnapEngine::scene25_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene25_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4] && _s25_nextTicketVendorSequenceId == -1 && _gnapActionStatus == -1) {
- _timers[4] = getRandom(20) + 20;
- switch (getRandom(13)) {
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && _s25_nextTicketVendorSequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ switch (_vm->getRandom(13)) {
case 0:
_s25_nextTicketVendorSequenceId = 0x54;
break;
@@ -321,80 +322,76 @@ void GnapEngine::scene25_run() {
break;
}
}
- playSoundA();
+ _vm->playSoundA();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene25_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene25_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene25::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASTalkTicketVendor:
- _s25_nextTicketVendorSequenceId = (getRandom(2) == 1) ? 0x57 : 0x5F;
- _gnapActionStatus = -1;
+ _s25_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
+ _vm->_gnapActionStatus = -1;
break;
case kASEnterCircusWihoutTicket:
_s25_nextTicketVendorSequenceId = 0x5E;
- _gameSys->setAnimation(0x5E, 39, 0);
- _gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
- _gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x5E, 39, 0);
+ _vm->_gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
_s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
_s25_nextTicketVendorSequenceId = -1;
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- playGnapIdle(0, 0);
- gnapWalkTo(_hotspotsWalkPos[3].x, _hotspotsWalkPos[3].y, -1, 0x107BB, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASEnterCircusWihoutTicketDone;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->playGnapIdle(0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASEnterCircusWihoutTicketDone;
break;
case kASEnterCircusWihoutTicketDone:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASShowTicketToVendor:
- setGrabCursorSprite(-1);
- invRemove(kItemTickets);
- setFlag(kGFNeedleTaken);
- _gameSys->setAnimation(0x61, 40, 0);
- _gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = kASShowTicketToVendorDone;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemTickets);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->_gameSys->setAnimation(0x61, 40, 0);
+ _vm->_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = kASShowTicketToVendorDone;
break;
case kASShowTicketToVendorDone:
_s25_nextTicketVendorSequenceId = 0x53;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_s25_nextTicketVendorSequenceId == 0x53) {
- _gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
_s25_nextTicketVendorSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
} else if (_s25_nextTicketVendorSequenceId != -1) {
- _gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
- _gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
_s25_nextTicketVendorSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene25.h b/engines/gnap/scenes/scene25.h
new file mode 100644
index 0000000..72df792
--- /dev/null
+++ b/engines/gnap/scenes/scene25.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE25_H
+#define GNAP_SCENE25_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene25: public Scene {
+public:
+ Scene25(GnapEngine *vm);
+ ~Scene25() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s25_currTicketVendorSequenceId;
+ int _s25_nextTicketVendorSequenceId;
+
+ void playAnims(int index);
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE25_H
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
index b446fbb..a807596 100644
--- a/engines/gnap/scenes/scene26.cpp
+++ b/engines/gnap/scenes/scene26.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene26.h"
namespace Gnap {
@@ -42,93 +43,95 @@ enum {
kASLeaveScene = 0
};
-int GnapEngine::scene26_init() {
- return isFlag(kGFUnk23) ? 0x61 : 0x60;
+Scene26::Scene26(GnapEngine *vm) : Scene(vm) {
+ _s26_currKidSequenceId = -1;
+ _s26_nextKidSequenceId = -1;
}
-void GnapEngine::scene26_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitOutsideCircusWorld, 0, 590, 300, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 1, 10);
- setHotspot(kHSExitOutsideClown, 200, 265, 265, 350, SF_EXIT_U_CURSOR, 3, 8);
- setHotspot(kHSExitArcade, 0, 295, 150, 400, SF_EXIT_NW_CURSOR, 2, 8);
- setHotspot(kHSExitElephant, 270, 290, 485, 375, SF_EXIT_U_CURSOR, 5, 8);
- setHotspot(kHSExitBeerStand, 530, 290, 620, 350, SF_EXIT_NE_CURSOR, 5, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 500);
- setHotspot(kHSWalkArea2, 281, 0, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 9;
+int Scene26::init() {
+ return _vm->isFlag(kGFUnk23) ? 0x61 : 0x60;
}
-void GnapEngine::scene26_run() {
-
- startSoundTimerB(7);
- playSound(0x1093B, true);
+void Scene26::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitOutsideCircusWorld, 0, 590, 300, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 1, 10);
+ _vm->setHotspot(kHSExitOutsideClown, 200, 265, 265, 350, SF_EXIT_U_CURSOR, 3, 8);
+ _vm->setHotspot(kHSExitArcade, 0, 295, 150, 400, SF_EXIT_NW_CURSOR, 2, 8);
+ _vm->setHotspot(kHSExitElephant, 270, 290, 485, 375, SF_EXIT_U_CURSOR, 5, 8);
+ _vm->setHotspot(kHSExitBeerStand, 530, 290, 620, 350, SF_EXIT_NE_CURSOR, 5, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 500);
+ _vm->setHotspot(kHSWalkArea2, 281, 0, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+}
+
+void Scene26::run() {
+ _vm->startSoundTimerB(7);
+ _vm->playSound(0x1093B, true);
_s26_currKidSequenceId = 0x5B;
_s26_nextKidSequenceId = -1;
- _gameSys->setAnimation(0x5B, 160, 3);
- _gameSys->insertSequence(_s26_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x5B, 160, 3);
+ _vm->_gameSys->insertSequence(_s26_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
- _timers[5] = getRandom(20) + 50;
- _timers[4] = getRandom(20) + 50;
- _timers[6] = getRandom(50) + 100;
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_timers[6] = _vm->getRandom(50) + 100;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
- if (_prevSceneNum == 25) {
- initGnapPos(-1, 8, kDirBottomRight);
- initPlatypusPos(-2, 8, kDirNone);
- endSceneInit();
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 25) {
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(2, 8, kDirBottomRight);
- initPlatypusPos(3, 8, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(2, 8, kDirBottomRight);
+ _vm->initPlatypusPos(3, 8, kDirNone);
+ _vm->endSceneInit();
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene26_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -136,117 +139,113 @@ void GnapEngine::scene26_run() {
break;
case kHSExitOutsideCircusWorld:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 25;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 25;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
}
break;
case kHSExitOutsideClown:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 27;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
}
break;
case kHSExitArcade:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 29;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitArcade].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 29;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitArcade].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
}
break;
case kHSExitElephant:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 30;
- gnapWalkTo(-1, _hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASLeaveScene;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 30;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
}
break;
case kHSExitBeerStand:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 31;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107BB, 1);
- _gnapActionStatus = kASLeaveScene;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 31;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene26_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, true);
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[5] && _s26_nextKidSequenceId == -1) {
- _timers[5] = getRandom(20) + 50;
- if (getRandom(5) != 0)
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5] && _s26_nextKidSequenceId == -1) {
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ if (_vm->getRandom(5) != 0)
_s26_nextKidSequenceId = 0x5B;
else
_s26_nextKidSequenceId = 0x5A;
}
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 130;
- _gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 130;
+ _vm->_gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[6]) {
- _timers[6] = getRandom(50) + 100;
- _gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(50) + 100;
+ _vm->_gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundB();
+ _vm->playSoundB();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene26_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene26_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == kASLeaveScene)
- _sceneDone = true;
- _gnapActionStatus = -1;
+void Scene26::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kASLeaveScene)
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s26_nextKidSequenceId != -1) {
- _gameSys->insertSequence(_s26_nextKidSequenceId, 160, _s26_currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s26_nextKidSequenceId, 160, 3);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s26_nextKidSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s26_nextKidSequenceId, 160, _s26_currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s26_nextKidSequenceId, 160, 3);
_s26_currKidSequenceId = _s26_nextKidSequenceId;
_s26_nextKidSequenceId = -1;
}
diff --git a/engines/gnap/scenes/scene26.h b/engines/gnap/scenes/scene26.h
new file mode 100644
index 0000000..a29b0d8
--- /dev/null
+++ b/engines/gnap/scenes/scene26.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE26_H
+#define GNAP_SCENE26_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene26: public Scene {
+public:
+ Scene26(GnapEngine *vm);
+ ~Scene26() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s26_currKidSequenceId;
+ int _s26_nextKidSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE26_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 2865767..a7d5ab0 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -50,6 +50,8 @@
#include "gnap/scenes/scene22.h"
#include "gnap/scenes/scene23.h"
#include "gnap/scenes/scene24.h"
+#include "gnap/scenes/scene25.h"
+#include "gnap/scenes/scene26.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -232,14 +234,16 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 136, 11, 10);
break;
case 25:
- backgroundId = scene25_init();
- scene25_updateHotspots();
+ _scene = new Scene25(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 26:
- backgroundId = scene26_init();
- scene26_updateHotspots();
+ _scene = new Scene26(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -554,12 +558,14 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 25:
- scene25_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
case 26:
- scene26_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 367a10bdbd7710ca8bbb439df8173d1456221fd4
https://github.com/scummvm/scummvm/commit/367a10bdbd7710ca8bbb439df8173d1456221fd4
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 27
Changed paths:
A engines/gnap/scenes/scene27.h
engines/gnap/gnap.h
engines/gnap/scenes/scene27.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index a1ce2dc..627ee59 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,14 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 27
- int _s27_nextJanitorSequenceId;
- int _s27_currJanitorSequenceId;
- int scene27_init();
- void scene27_updateHotspots();
- void scene27_run();
- void scene27_updateAnimations();
-
// Scene 28
int _s28_currClownSequenceId, _s28_nextClownSequenceId;
int _s28_clownTalkCtr;
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
index 881007e..c2c3298 100644
--- a/engines/gnap/scenes/scene27.cpp
+++ b/engines/gnap/scenes/scene27.cpp
@@ -23,12 +23,13 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene27.h"
namespace Gnap {
enum {
kHSPlatypus = 0,
- kHSJanitor = 1,
+ kHSJanitor = 1,
kHSDevice = 2,
kHSBucket = 3,
kHSExitCircus = 4,
@@ -49,114 +50,115 @@ enum {
kASLeaveScene = 7
};
-int GnapEngine::scene27_init() {
+Scene27::Scene27(GnapEngine *vm) : Scene(vm) {
+ _s27_nextJanitorSequenceId = -1;
+ _s27_currJanitorSequenceId = -1;
+}
+
+int Scene27::init() {
return 0xD5;
}
-void GnapEngine::scene27_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSJanitor, 488, 204, 664, 450, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 8);
- setHotspot(kHSBucket, 129, 406, 186, 453, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 6);
- setHotspot(kHSExitCircus, 200, 585, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitArcade, 0, 0, 15, 600, SF_EXIT_L_CURSOR, 0, 6);
- setHotspot(kHSExitBeerStand, 785, 0, 800, 600, SF_EXIT_R_CURSOR, 11, 7);
- setHotspot(kHSExitClown, 340, 240, 460, 420, SF_EXIT_U_CURSOR, 6, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 507);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFUnk13))
- _hotspots[kHSBucket]._flags = SF_DISABLED;
- _hotspotsCount = 9;
+void Scene27::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSJanitor, 488, 204, 664, 450, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 8);
+ _vm->setHotspot(kHSBucket, 129, 406, 186, 453, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 6);
+ _vm->setHotspot(kHSExitCircus, 200, 585, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitArcade, 0, 0, 15, 600, SF_EXIT_L_CURSOR, 0, 6);
+ _vm->setHotspot(kHSExitBeerStand, 785, 0, 800, 600, SF_EXIT_R_CURSOR, 11, 7);
+ _vm->setHotspot(kHSExitClown, 340, 240, 460, 420, SF_EXIT_U_CURSOR, 6, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 507);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk13))
+ _vm->_hotspots[kHSBucket]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 9;
}
-void GnapEngine::scene27_run() {
-
- playSound(0x1093B, true);
- startSoundTimerB(4);
- _timers[7] = getRandom(100) + 300;
- queueInsertDeviceIcon();
+void Scene27::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(4);
+ _vm->_timers[7] = _vm->getRandom(100) + 300;
+ _vm->queueInsertDeviceIcon();
- if (!isFlag(kGFUnk13))
- _gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFUnk13))
+ _vm->_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
- if (_debugLevel == 4)
- startIdleTimer(6);
+ if (_vm->_debugLevel == 4)
+ _vm->startIdleTimer(6);
- _gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
_s27_currJanitorSequenceId = 0xCB;
_s27_nextJanitorSequenceId = -1;
- _gameSys->setAnimation(0xCB, 39, 3);
-
- _timers[5] = getRandom(20) + 60;
+ _vm->_gameSys->setAnimation(0xCB, 39, 3);
+ _vm->_timers[5] = _vm->getRandom(20) + 60;
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 26:
- initGnapPos(7, 12, kDirBottomRight);
- initPlatypusPos(6, 12, kDirNone);
- endSceneInit();
- gnapWalkTo(7, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
- initGnapPos(-1, 8, kDirBottomRight);
- initPlatypusPos(-1, 9, kDirNone);
- endSceneInit();
- gnapWalkTo(3, 8, -1, 0x107B9, 1);
- platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
- initGnapPos(12, 8, kDirBottomLeft);
- initPlatypusPos(12, 9, kDirUnk4);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(8, 9, -1, 0x107C2, 1);
+ _vm->initGnapPos(12, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
- initGnapPos(6, 8, kDirBottomRight);
- initPlatypusPos(5, 9, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(6, 8, kDirBottomRight);
+ _vm->initPlatypusPos(5, 9, kDirNone);
+ _vm->endSceneInit();
break;
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
- _sceneClickedHotspot = -1;
- if (_gnapActionStatus < 0)
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = -1;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene27_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -164,26 +166,26 @@ void GnapEngine::scene27_run() {
break;
case kHSJanitor:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemPicture) {
- _gnapIdleFacing = kDirUpLeft;
- if (gnapWalkTo(_hotspotsWalkPos[kHSJanitor].x, _hotspotsWalkPos[kHSJanitor].y, 0, 0x107BC, 1))
- _gnapActionStatus = kASShowPictureToJanitor;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSJanitor].x, _hotspotsWalkPos[kHSJanitor].y, 7, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemPicture) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 0, 0x107BC, 1))
+ _vm->_gnapActionStatus = kASShowPictureToJanitor;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 7, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 3);
+ _vm->playGnapScratchingHead(6, 3);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSJanitor].x, _hotspotsWalkPos[kHSJanitor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkJanitor;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkJanitor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -191,22 +193,22 @@ void GnapEngine::scene27_run() {
break;
case kHSBucket:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 3, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(3, 3);
+ _vm->playGnapScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSBucket].x, _hotspotsWalkPos[kHSBucket].y) | 0x10000, 1);
- _gnapActionStatus = kASGrabBucket;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBucket].x, _vm->_hotspotsWalkPos[kHSBucket].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -214,115 +216,112 @@ void GnapEngine::scene27_run() {
break;
case kHSExitCircus:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 26;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C7, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C7, 1);
}
break;
case kHSExitArcade:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 29;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitArcade].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitArcade].x, _hotspotsWalkPos[kHSExitArcade].y + 1, -1, 0x107CF, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 29;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitArcade].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitArcade].x, _vm->_hotspotsWalkPos[kHSExitArcade].y + 1, -1, 0x107CF, 1);
}
break;
case kHSExitBeerStand:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 31;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitBeerStand].x, _hotspotsWalkPos[kHSExitBeerStand].y + 1, -1, 0x107CD, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 31;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBeerStand].x, _vm->_hotspotsWalkPos[kHSExitBeerStand].y + 1, -1, 0x107CD, 1);
}
break;
case kHSExitClown:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFPlatypus)) {
- _isLeavingScene = true;
- _newSceneNum = 28;
- gnapWalkTo(_hotspotsWalkPos[kHSExitClown].x, _hotspotsWalkPos[kHSExitClown].y, 0, 0x107AD, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitClown].x + 1, _hotspotsWalkPos[kHSExitClown].y, -1, 0x107C4, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 28;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x, _vm->_hotspotsWalkPos[kHSExitClown].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x + 1, _vm->_hotspotsWalkPos[kHSExitClown].y, -1, 0x107C4, 1);
} else {
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSExitClown].x, 7, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea1]._flags &= SF_WALKABLE;
- _gnapActionStatus = kASTryEnterClownTent;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x, 7, 0, 0x107BC, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= SF_WALKABLE;
+ _vm->_gnapActionStatus = kASTryEnterClownTent;
}
}
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene27_updateAnimations();
-
- if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, true);
-
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (_debugLevel == 4)
- updateIdleTimer();
- if (!_timers[5]) {
- _timers[5] = getRandom(20) + 60;
- if (_gnapActionStatus < 0) {
- if (getRandom(3) != 0)
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_debugLevel == 4)
+ _vm->updateIdleTimer();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(3) != 0)
_s27_nextJanitorSequenceId = 0xCB;
else
_s27_nextJanitorSequenceId = 0xCF;
}
}
- if (!_timers[7]) {
- _timers[7] = getRandom(100) + 300;
- if (_gnapActionStatus < 0)
- _gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundB();
+ _vm->playSoundB();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene27_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene27_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene27::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASTalkJanitor:
- switch (getRandom(3)) {
+ switch (_vm->getRandom(3)) {
case 0:
_s27_nextJanitorSequenceId = 0xCC;
break;
@@ -335,83 +334,83 @@ void GnapEngine::scene27_updateAnimations() {
}
break;
case kASGrabBucket:
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _hotspots[kHSBucket]._flags = SF_DISABLED;
- invAdd(kItemEmptyBucket);
- setFlag(kGFUnk13);
- _gameSys->setAnimation(0xD2, 39, 0);
- _gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASGrabBucketDone;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_hotspots[kHSBucket]._flags = SF_DISABLED;
+ _vm->invAdd(kItemEmptyBucket);
+ _vm->setFlag(kGFUnk13);
+ _vm->_gameSys->setAnimation(0xD2, 39, 0);
+ _vm->_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASGrabBucketDone;
break;
case kASGrabBucketDone:
- setGrabCursorSprite(kItemEmptyBucket);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemEmptyBucket);
+ _vm->_gnapActionStatus = -1;
break;
case kASShowPictureToJanitor:
_s27_nextJanitorSequenceId = 0xD0;
break;
case kASTryEnterClownTent:
_s27_nextJanitorSequenceId = 0xD1;
- _gameSys->insertSequence(0xD1, 39, _s27_currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
+ _vm->_gameSys->insertSequence(0xD1, 39, _s27_currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
- _gnapActionStatus = kASTryEnterClownTentDone;
+ _vm->_gnapActionStatus = kASTryEnterClownTentDone;
break;
case kASTryEnterClownTentDone:
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = -1;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = -1;
break;
case kASEnterClownTent:
- gnapWalkTo(_gnapX, _gnapY, 0, 0x107B2, 1);
- _gnapActionStatus = kASLeaveScene;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
switch (_s27_nextJanitorSequenceId) {
case -1:
_s27_nextJanitorSequenceId = 0xCB;
- _gameSys->insertSequence(0xCB, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(0xCB, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
break;
case 0xCC:
case 0xCD:
case 0xCE:
- _gnapActionStatus = -1;
- _gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
break;
case 0xD0:
// Show picture to janitor
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
- _gnapActionStatus = kASEnterClownTent;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
+ _vm->_gnapActionStatus = kASEnterClownTent;
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
- setFlag(kGFPlatypus);
- setGrabCursorSprite(-1);
- invRemove(kItemPicture);
- _newSceneNum = 28;
+ _vm->setFlag(kGFPlatypus);
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemPicture);
+ _vm->_newSceneNum = 28;
break;
default:
- _gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
_s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
_s27_nextJanitorSequenceId = -1;
break;
diff --git a/engines/gnap/scenes/scene27.h b/engines/gnap/scenes/scene27.h
new file mode 100644
index 0000000..9ee0053
--- /dev/null
+++ b/engines/gnap/scenes/scene27.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE27_H
+#define GNAP_SCENE27_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene27: public Scene {
+public:
+ Scene27(GnapEngine *vm);
+ ~Scene27() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s27_nextJanitorSequenceId;
+ int _s27_currJanitorSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE27_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index a7d5ab0..0198eb5 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -52,6 +52,7 @@
#include "gnap/scenes/scene24.h"
#include "gnap/scenes/scene25.h"
#include "gnap/scenes/scene26.h"
+#include "gnap/scenes/scene27.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -248,8 +249,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 27:
- backgroundId = scene27_init();
- scene27_updateHotspots();
+ _scene = new Scene27(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -570,7 +572,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 27:
- scene27_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 2e37c2b9e67b5196cf014aaa57e785289ec09348
https://github.com/scummvm/scummvm/commit/2e37c2b9e67b5196cf014aaa57e785289ec09348
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 28
Changed paths:
A engines/gnap/scenes/scene28.h
engines/gnap/gnap.h
engines/gnap/scenes/scene28.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 627ee59..aa0b309 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,14 +606,6 @@ public:
// Scene 18
int _s18_garbageCanPos;
- // Scene 28
- int _s28_currClownSequenceId, _s28_nextClownSequenceId;
- int _s28_clownTalkCtr;
- int scene28_init();
- void scene28_updateHotspots();
- void scene28_run();
- void scene28_updateAnimations();
-
// Scene 29
int _s28_currMonkeySequenceId, _s28_nextMonkeySequenceId;
int _s28_currManSequenceId, _s28_nextManSequenceId;
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
index 93723e6..ac55d90 100644
--- a/engines/gnap/scenes/scene28.cpp
+++ b/engines/gnap/scenes/scene28.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene28.h"
namespace Gnap {
@@ -51,108 +52,112 @@ enum {
kASLeaveScene = 10
};
-int GnapEngine::scene28_init() {
+Scene28::Scene28(GnapEngine *vm) : Scene(vm) {
+ _s28_currClownSequenceId = -1;
+ _s28_nextClownSequenceId = -1;
+ _s28_clownTalkCtr = 0;
+}
+
+int Scene28::init() {
return 0x125;
}
-void GnapEngine::scene28_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSHorn, 148, 352, 215, 383, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- setHotspot(kHSClown, 130, 250, 285, 413, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
- setHotspot(kHSExitOutsideClown, 660, 190, 799, 400, SF_EXIT_R_CURSOR, 9, 6);
- setHotspot(kHSEmptyBucket, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
- setHotspot(kHSWalkArea1, 0, 0, 799, 523);
- setHotspot(kHSWalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (invHas(kItemHorn))
- _hotspots[kHSHorn]._flags = SF_DISABLED;
- if (isFlag(kGFUnk22))
- _hotspots[kHSEmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspotsCount = 8;
+void Scene28::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSHorn, 148, 352, 215, 383, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHSClown, 130, 250, 285, 413, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ _vm->setHotspot(kHSExitOutsideClown, 660, 190, 799, 400, SF_EXIT_R_CURSOR, 9, 6);
+ _vm->setHotspot(kHSEmptyBucket, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 799, 523);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->invHas(kItemHorn))
+ _vm->_hotspots[kHSHorn]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFUnk22))
+ _vm->_hotspots[kHSEmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 8;
}
-void GnapEngine::scene28_run() {
- playSound(0x1093C, true);
+void Scene28::run() {
+ _vm->playSound(0x1093C, true);
_s28_nextClownSequenceId = -1;
- queueInsertDeviceIcon();
- _gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFUnk22))
- _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFUnk22))
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFMudTaken)) {
- if (isFlag(kGFUnk21)) {
- _gameSys->setAnimation(0x11C, 39, 3);
- _gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
- if (!invHas(kItemHorn))
- _gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFMudTaken)) {
+ if (_vm->isFlag(kGFUnk21)) {
+ _vm->_gameSys->setAnimation(0x11C, 39, 3);
+ _vm->_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->invHas(kItemHorn))
+ _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
_s28_currClownSequenceId = 0x11C;
} else {
_s28_currClownSequenceId = 0x11B;
- _gameSys->setAnimation(0x11B, 39, 3);
- _gameSys->insertSequence(_s28_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
- _timers[4] = getRandom(20) + 80;
+ _vm->_gameSys->setAnimation(0x11B, 39, 3);
+ _vm->_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
}
- initGnapPos(8, 8, kDirBottomLeft);
- initPlatypusPos(9, 8, kDirUnk4);
- endSceneInit();
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->endSceneInit();
} else {
- _gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- initGnapPos(8, 8, kDirBottomLeft);
- initPlatypusPos(9, 8, kDirUnk4);
- endSceneInit();
- playSequences(0xF7, 0x121, 0x122, 0x123);
+ _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_s28_currClownSequenceId = 0x115;
- setFlag(kGFMudTaken);
- _gameSys->setAnimation(0x115, 39, 3);
- _gameSys->insertSequence(_s28_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFMudTaken);
+ _vm->_gameSys->setAnimation(0x115, 39, 3);
+ _vm->_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_s28_nextClownSequenceId = -1;
- _timers[4] = getRandom(20) + 80;
- _gnapActionStatus = kASGnapWaiting;
- while (_gameSys->getAnimationStatus(3) != 2) {
- gameUpdateTick();
- updateMouseCursor();
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
+ _vm->_gnapActionStatus = kASGnapWaiting;
+ while (_vm->_gameSys->getAnimationStatus(3) != 2) {
+ _vm->gameUpdateTick();
+ _vm->updateMouseCursor();
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene28_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -160,32 +165,32 @@ void GnapEngine::scene28_run() {
break;
case kHSHorn:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(2, 8, 3, 4);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(2, 8, 3, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(2, 4);
+ _vm->playGnapScratchingHead(2, 4);
break;
case GRAB_CURSOR:
- if (isFlag(kGFUnk21)) {
- if (!invHas(kItemHorn)) {
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y) | 0x10000, 1);
- _gnapActionStatus = kASGrabHornSuccess;
+ if (_vm->isFlag(kGFUnk21)) {
+ if (!_vm->invHas(kItemHorn)) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSHorn].x, _vm->_hotspotsWalkPos[kHSHorn].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabHornSuccess;
}
} else {
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(2, 8, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSHorn].x, _hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASGrabHornFails;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(2, 8, 0, 0x107BB, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHorn].x, _vm->_hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASGrabHornFails;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -193,39 +198,39 @@ void GnapEngine::scene28_run() {
break;
case kHSClown:
- if (_gnapActionStatus < 0) {
- if (isFlag(kGFUnk21)) {
- if (_verbCursor == LOOK_CURSOR)
- playGnapScratchingHead(5, 2);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk21)) {
+ if (_vm->_verbCursor == LOOK_CURSOR)
+ _vm->playGnapScratchingHead(5, 2);
else
- playGnapImpossible(0, 0);
- } else if (_grabCursorSpriteIndex == kItemBucketWithBeer) {
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gnapActionStatus = kASUseBeerBucketWithClown;
- } else if (_grabCursorSpriteIndex == kItemBucketWithPill) {
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gnapActionStatus = kASUsePillBucketWithClown;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSClown].x, _hotspotsWalkPos[kHSClown].y, 2, 4);
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kASUseBeerBucketWithClown;
+ } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kASUsePillBucketWithClown;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 2, 4);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(5, 2);
+ _vm->playGnapScratchingHead(5, 2);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(5, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkClown;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkClown;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -233,35 +238,35 @@ void GnapEngine::scene28_run() {
break;
case kHSExitOutsideClown:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 27;
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BF, 1);
- _gnapActionStatus = kASLeaveScene;
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x - 1, _hotspotsWalkPos[kHSExitOutsideClown].y, -1, 0x107C2, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, -1, 0x107C2, 1);
}
break;
case kHSEmptyBucket:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 8, 6);
- } else if (isFlag(kGFUnk21)) {
- playGnapImpossible(8, 6);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
+ } else if (_vm->isFlag(kGFUnk21)) {
+ _vm->playGnapImpossible(8, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 6);
+ _vm->playGnapScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- gnapWalkTo(_gnapX, _gnapY, 0, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSEmptyBucket].x, _hotspotsWalkPos[kHSEmptyBucket].y) | 0x10000, 1);
- _gnapActionStatus = kASGrabEmptyBucket;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSEmptyBucket].x, _vm->_hotspotsWalkPos[kHSEmptyBucket].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASGrabEmptyBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -270,114 +275,110 @@ void GnapEngine::scene28_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene28_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1093C))
- playSound(0x1093C, true);
+ if (!_vm->isSoundPlaying(0x1093C))
+ _vm->playSound(0x1093C, true);
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 80;
- if (_gnapActionStatus < 0 && !isFlag(kGFUnk21))
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFUnk21))
_s28_nextClownSequenceId = 0x114;
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene28_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene28_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene28::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASUseBeerBucketWithClown:
- setFlag(kGFUnk22);
+ _vm->setFlag(kGFUnk22);
_s28_nextClownSequenceId = 0x113;
- invRemove(kItemBucketWithBeer);
- scene28_updateHotspots();
+ _vm->invRemove(kItemBucketWithBeer);
+ updateHotspots();
break;
case kASUsePillBucketWithClown:
_s28_nextClownSequenceId = 0x116;
- invRemove(kItemBucketWithPill);
- setFlag(kGFUnk22);
- setFlag(kGFUnk21);
- scene28_updateHotspots();
+ _vm->invRemove(kItemBucketWithPill);
+ _vm->setFlag(kGFUnk22);
+ _vm->setFlag(kGFUnk21);
+ updateHotspots();
break;
case kASGrabHornFails:
_s28_nextClownSequenceId = 0x119;
break;
case kASGrabHornSuccess:
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x117, 59, 0);
- _gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASGrabHornSuccessDone;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x117, 59, 0);
+ _vm->_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASGrabHornSuccessDone;
break;
case kASGrabHornSuccessDone:
- hideCursor();
- setGrabCursorSprite(-1);
- addFullScreenSprite(0xF6, 255);
- _gameSys->setAnimation(0x120, 256, 0);
- _gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- removeFullScreenSprite();
- showCursor();
- setGrabCursorSprite(kItemHorn);
- invAdd(kItemHorn);
- scene28_updateHotspots();
- _gnapActionStatus = -1;
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0xF6, 255);
+ _vm->_gameSys->setAnimation(0x120, 256, 0);
+ _vm->_gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->setGrabCursorSprite(kItemHorn);
+ _vm->invAdd(kItemHorn);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabEmptyBucket:
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gameSys->setAnimation(0x111, 99, 0);
- _gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASGrabEmptyBucketDone;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x111, 99, 0);
+ _vm->_gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASGrabEmptyBucketDone;
break;
case kASGrabEmptyBucketDone:
- setGrabCursorSprite(kItemEmptyBucket);
- clearFlag(kGFUnk22);;
- scene28_updateHotspots();
- invAdd(kItemEmptyBucket);
- _gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(kItemEmptyBucket);
+ _vm->clearFlag(kGFUnk22);;
+ updateHotspots();
+ _vm->invAdd(kItemEmptyBucket);
+ _vm->_gnapActionStatus = -1;
break;
case kASGrabHornFailsDone:
- _gameSys->insertSequence(0x107B5, _gnapId, 281, 39, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
- _gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_s28_currClownSequenceId = 0x11B;
_s28_nextClownSequenceId = -1;
- _gnapActionStatus = -1;
- gnapWalkTo(2, 8, -1, 0x107BB, 1);
+ _vm->_gnapActionStatus = -1;
+ _vm->gnapWalkTo(2, 8, -1, 0x107BB, 1);
break;
case kASTalkClown:
_s28_clownTalkCtr = (_s28_clownTalkCtr + 1) % 2;
@@ -389,60 +390,59 @@ void GnapEngine::scene28_updateAnimations() {
_s28_nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
break;
case kASGnapWaiting:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
switch (_s28_nextClownSequenceId) {
case 0x113:
- setGrabCursorSprite(-1);
- _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
- _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x11B, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x11B, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_s28_currClownSequenceId = 0x11B;
_s28_nextClownSequenceId = -1;
- _gnapActionStatus = kASGnapWaiting;
+ _vm->_gnapActionStatus = kASGnapWaiting;
break;
case 0x116:
- setGrabCursorSprite(-1);
- _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
- _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x11C, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
+ _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x11C, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
_s28_currClownSequenceId = _s28_nextClownSequenceId;
_s28_nextClownSequenceId = -1;
- _gnapActionStatus = kASGnapWaiting;
+ _vm->_gnapActionStatus = kASGnapWaiting;
break;
case 0x11D:
case 0x11E:
case 0x11F:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case 0x119:
- _gameSys->insertSequence(_s28_nextClownSequenceId, 39, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _gameSys->removeSequence(_s28_currClownSequenceId, 39, true);
- _gnapActionStatus = kASGrabHornFailsDone;
- _gnapSequenceId = _s28_nextClownSequenceId;
- _gnapSequenceDatNum = 0;
+ _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->removeSequence(_s28_currClownSequenceId, 39, true);
+ _vm->_gnapActionStatus = kASGrabHornFailsDone;
+ _vm->_gnapSequenceId = _s28_nextClownSequenceId;
+ _vm->_gnapSequenceDatNum = 0;
_s28_nextClownSequenceId = -1;
break;
}
if (_s28_nextClownSequenceId != -1) {
- _gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextClownSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 3);
_s28_currClownSequenceId = _s28_nextClownSequenceId;
_s28_nextClownSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene28.h b/engines/gnap/scenes/scene28.h
new file mode 100644
index 0000000..40fa93b
--- /dev/null
+++ b/engines/gnap/scenes/scene28.h
@@ -0,0 +1,51 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE28_H
+#define GNAP_SCENE28_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene28: public Scene {
+public:
+ Scene28(GnapEngine *vm);
+ ~Scene28() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s28_currClownSequenceId;
+ int _s28_nextClownSequenceId;
+ int _s28_clownTalkCtr;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE28_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 0198eb5..25a2f7d 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -53,6 +53,7 @@
#include "gnap/scenes/scene25.h"
#include "gnap/scenes/scene26.h"
#include "gnap/scenes/scene27.h"
+#include "gnap/scenes/scene28.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -256,8 +257,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 28:
- backgroundId = scene28_init();
- scene28_updateHotspots();
+ _scene = new Scene28(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -578,7 +580,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 28:
- scene28_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 093c58a397c3b97fd4175b33428849c9716cb7af
https://github.com/scummvm/scummvm/commit/093c58a397c3b97fd4175b33428849c9716cb7af
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 29
Changed paths:
A engines/gnap/scenes/scene29.h
engines/gnap/gnap.h
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index aa0b309..37099b7 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -603,17 +603,9 @@ public:
void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
- // Scene 18
+ // Shared by scenes 17 & 18
int _s18_garbageCanPos;
- // Scene 29
- int _s28_currMonkeySequenceId, _s28_nextMonkeySequenceId;
- int _s28_currManSequenceId, _s28_nextManSequenceId;
- int scene29_init();
- void scene29_updateHotspots();
- void scene29_run();
- void scene29_updateAnimations();
-
// Scene 30
int _s30_kidSequenceId;
int scene30_init();
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 3528141..0f64304 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene29.h"
namespace Gnap {
@@ -41,100 +42,104 @@ enum {
kASLeaveScene = 2
};
-int GnapEngine::scene29_init() {
+Scene29::Scene29(GnapEngine *vm) : Scene(vm) {
+ _s28_currMonkeySequenceId = -1;
+ _s28_nextMonkeySequenceId = -1;
+ _s28_currManSequenceId = -1;
+ _s28_nextManSequenceId = -1;
+}
+
+int Scene29::init() {
return 0xF6;
}
-void GnapEngine::scene29_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSMonkey, 410, 374, 518, 516, SF_WALKABLE | SF_DISABLED, 3, 7);
- setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitOutsideClown, 785, 0, 800, 600, SF_EXIT_R_CURSOR | SF_WALKABLE, 11, 9);
- setHotspot(kHSAracde, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 478);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (invHas(kItemHorn))
- _hotspots[kHSMonkey]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspotsCount = 7;
+void Scene29::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSMonkey, 410, 374, 518, 516, SF_WALKABLE | SF_DISABLED, 3, 7);
+ _vm->setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitOutsideClown, 785, 0, 800, 600, SF_EXIT_R_CURSOR | SF_WALKABLE, 11, 9);
+ _vm->setHotspot(kHSAracde, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 478);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->invHas(kItemHorn))
+ _vm->_hotspots[kHSMonkey]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 7;
}
-void GnapEngine::scene29_run() {
-
- playSound(0x1093B, true);
- startSoundTimerB(6);
- queueInsertDeviceIcon();
+void Scene29::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
+ _vm->queueInsertDeviceIcon();
- if (invHas(kItemHorn)) {
+ if (_vm->invHas(kItemHorn)) {
_s28_currMonkeySequenceId = 0xE8;
_s28_nextMonkeySequenceId = -1;
- _gameSys->setAnimation(0xE8, 159, 4);
- _gameSys->insertSequence(_s28_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xE8, 159, 4);
+ _vm->_gameSys->insertSequence(_s28_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
_s28_currManSequenceId = 0xED;
_s28_nextManSequenceId = -1;
- _gameSys->setAnimation(0xED, 39, 3);
- _timers[4] = getRandom(20) + 60;
+ _vm->_gameSys->setAnimation(0xED, 39, 3);
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
} else {
- _gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0, 0, 4);
- _gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
}
- _gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
- if (_prevSceneNum == 27) {
- initGnapPos(12, 7, kDirBottomRight);
- initPlatypusPos(12, 8, kDirNone);
- endSceneInit();
- gnapWalkTo(8, 7, -1, 0x107B9, 1);
- platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ if (_vm->_prevSceneNum == 27) {
+ _vm->initGnapPos(12, 7, kDirBottomRight);
+ _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- initGnapPos(-1, 7, kDirBottomRight);
- initPlatypusPos(-2, 7, kDirNone);
- endSceneInit();
- gnapWalkTo(2, 7, -1, 0x107B9, 1);
- platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene29_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -142,27 +147,27 @@ void GnapEngine::scene29_run() {
break;
case kHSMonkey:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemBanana) {
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASUseBananaWithMonkey;
- _newSceneNum = 51;
- _isLeavingScene = true;
- setGrabCursorSprite(-1);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y, 5, 6);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemBanana) {
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASUseBananaWithMonkey;
+ _vm->_newSceneNum = 51;
+ _vm->_isLeavingScene = true;
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y, 5, 6);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(5, 6);
+ _vm->playGnapScratchingHead(5, 6);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_hotspotsWalkPos[kHSMonkey].x, _hotspotsWalkPos[kHSMonkey].y);
+ _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -170,45 +175,45 @@ void GnapEngine::scene29_run() {
break;
case kHSExitCircus:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 26;
- gnapWalkTo(_hotspotsWalkPos[kHSExitCircus].x, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
}
break;
case kHSExitOutsideClown:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 27;
- gnapWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y - 1, -1, 0x107CD, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y - 1, -1, 0x107CD, 1);
}
break;
case kHSAracde:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- setGrabCursorSprite(-1);
- _isLeavingScene = true;
- _newSceneNum = 52;
- gnapWalkTo(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y, 0, -1, 1);
- playGnapIdle(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y);
- _gnapActionStatus = kASLeaveScene;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSAracde].x, _hotspotsWalkPos[kHSAracde].y, 2, 3);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 52;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y, 2, 3);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan2(0, 0);
+ _vm->playGnapMoan2(0, 0);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -216,33 +221,33 @@ void GnapEngine::scene29_run() {
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene29_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, true);
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
- if (!_isLeavingScene) {
- if (_gnapActionStatus < 0) {
- updateGnapIdleSequence();
- updatePlatypusIdleSequence();
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->updateGnapIdleSequence();
+ _vm->updatePlatypusIdleSequence();
}
- if (!_timers[4]) {
- if (invHas(kItemHorn)) {
- _timers[4] = getRandom(20) + 60;
- if (_gnapActionStatus < 0) {
- switch (getRandom(5)) {
+ if (!_vm->_timers[4]) {
+ if (_vm->invHas(kItemHorn)) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0) {
+ switch (_vm->getRandom(5)) {
case 0:
_s28_nextManSequenceId = 0xED;
break;
@@ -262,64 +267,61 @@ void GnapEngine::scene29_run() {
}
}
}
- playSoundB();
+ _vm->playSoundB();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene29_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
- }
-
+ _vm->gameUpdateTick();
+ }
}
-void GnapEngine::scene29_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene29::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASUseBananaWithMonkey:
_s28_nextMonkeySequenceId = 0xE5;
break;
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
}
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s28_nextManSequenceId != -1) {
- _gameSys->insertSequence(_s28_nextManSequenceId, 39, _s28_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextManSequenceId, 39, 3);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s28_nextManSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s28_nextManSequenceId, 39, _s28_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s28_nextManSequenceId, 39, 3);
_s28_currManSequenceId = _s28_nextManSequenceId;
_s28_nextManSequenceId = -1;
}
- if (_gameSys->getAnimationStatus(4) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
if (_s28_nextMonkeySequenceId == 0xE5) {
- _gameSys->insertSequence(0xF2, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0xF2;
- _gameSys->setAnimation(0xE6, 159, 0);
- _gameSys->setAnimation(0, 159, 4);
- _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xE6, 159, _s28_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0xF2;
+ _vm->_gameSys->setAnimation(0xE6, 159, 0);
+ _vm->_gameSys->setAnimation(0, 159, 4);
+ _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xE6, 159, _s28_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kASLeaveScene;
_s28_currMonkeySequenceId = 0xE6;
_s28_nextMonkeySequenceId = -1;
- _timers[5] = 30;
- while (_timers[5])
- gameUpdateTick();
- platypusWalkTo(0, 8, 1, 0x107CF, 1);
- while (_gameSys->getAnimationStatus(1) != 2)
- gameUpdateTick();
+ _vm->_timers[5] = 30;
+ while (_vm->_timers[5])
+ _vm->gameUpdateTick();
+ _vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
} else if (_s28_nextMonkeySequenceId == -1) {
- switch (getRandom(6)) {
+ switch (_vm->getRandom(6)) {
case 0:
_s28_nextMonkeySequenceId = 0xE8;
break;
@@ -339,13 +341,13 @@ void GnapEngine::scene29_updateAnimations() {
_s28_nextMonkeySequenceId = 0xE7;
break;
}
- _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
+ _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
_s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
_s28_nextMonkeySequenceId = -1;
} else {
- _gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
+ _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
_s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
_s28_nextMonkeySequenceId = -1;
}
diff --git a/engines/gnap/scenes/scene29.h b/engines/gnap/scenes/scene29.h
new file mode 100644
index 0000000..1b9e2c3
--- /dev/null
+++ b/engines/gnap/scenes/scene29.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE29_H
+#define GNAP_SCENE29_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene29: public Scene {
+public:
+ Scene29(GnapEngine *vm);
+ ~Scene29() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s28_currMonkeySequenceId;
+ int _s28_nextMonkeySequenceId;
+ int _s28_currManSequenceId;
+ int _s28_nextManSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE29_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 25a2f7d..e4790a2 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -54,6 +54,7 @@
#include "gnap/scenes/scene26.h"
#include "gnap/scenes/scene27.h"
#include "gnap/scenes/scene28.h"
+#include "gnap/scenes/scene29.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -264,8 +265,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 29:
- backgroundId = scene29_init();
- scene29_updateHotspots();
+ _scene = new Scene29(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -586,7 +588,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 29:
- scene29_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: 294f1a6557b0404885aaf3c5794730ccfb95977f
https://github.com/scummvm/scummvm/commit/294f1a6557b0404885aaf3c5794730ccfb95977f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 30
Changed paths:
A engines/gnap/scenes/scene30.h
engines/gnap/gnap.h
engines/gnap/scenes/scene30.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 37099b7..5edcd58 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,13 +606,6 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
- // Scene 30
- int _s30_kidSequenceId;
- int scene30_init();
- void scene30_updateHotspots();
- void scene30_run();
- void scene30_updateAnimations();
-
// Scene 31
int _s28_currClerkSequenceId, _s28_nextClerkSequenceId;
bool _s31_beerGuyDistracted;
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
index 33a374c..02a389e 100644
--- a/engines/gnap/scenes/scene30.cpp
+++ b/engines/gnap/scenes/scene30.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene30.h"
namespace Gnap {
@@ -43,79 +44,83 @@ enum {
kASUsePillMachine4 = 5
};
-int GnapEngine::scene30_init() {
- return isFlag(kGFUnk23) ? 0x10B : 0x10A;
+Scene30::Scene30(GnapEngine *vm) : Scene(vm) {
+ _s30_kidSequenceId = -1;
}
-void GnapEngine::scene30_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSPillMachine, 598, 342, 658, 426, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 7);
- setHotspot(kHSExitCircus, 100, 590 - _deviceY1, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSWalkArea1, 0, 0, 800, 514);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 5;
+int Scene30::init() {
+ return _vm->isFlag(kGFUnk23) ? 0x10B : 0x10A;
}
-void GnapEngine::scene30_run() {
+void Scene30::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSPillMachine, 598, 342, 658, 426, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 7);
+ _vm->setHotspot(kHSExitCircus, 100, 590 - _vm->_deviceY1, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 514);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 5;
+}
+
+void Scene30::run() {
bool hasTakenPill = false;
- playSound(0x1093B, true);
- startSoundTimerB(6);
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFUnk23))
- _gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->isFlag(kGFUnk23))
+ _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (!isFlag(kGFUnk13))
- _gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
- _timers[5] = getRandom(50) + 180;
+ if (!_vm->isFlag(kGFUnk13))
+ _vm->_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
- _gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
- _timers[4] = getRandom(100) + 300;
+ _vm->_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
_s30_kidSequenceId = 0x101;
- initGnapPos(7, 12, kDirBottomRight);
- initPlatypusPos(6, 12, kDirNone);
- endSceneInit();
- gnapWalkTo(7, 8, -1, 0x107B9, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- while (!_sceneDone) {
- updateMouseCursor();
- updateCursorByHotspot();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene30_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -123,27 +128,27 @@ void GnapEngine::scene30_run() {
break;
case kHSPillMachine:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole && !isFlag(kGFUnk23)) {
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASUsePillMachine;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASUsePillMachine;
hasTakenPill = true;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y, 8, 5);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y, 8, 5);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(9, 8, 0, 0x107BC, 1);
- _gnapActionStatus = kASLookPillMachine;
+ _vm->gnapWalkTo(9, 8, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASLookPillMachine;
break;
case GRAB_CURSOR:
- playGnapScratchingHead(8, 5);
+ _vm->playGnapScratchingHead(8, 5);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(8, 5);
+ _vm->playGnapImpossible(8, 5);
break;
}
}
@@ -151,128 +156,127 @@ void GnapEngine::scene30_run() {
break;
case kHSExitCircus:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
if (hasTakenPill)
- _newSceneNum = 47;
+ _vm->_newSceneNum = 47;
else
- _newSceneNum = 26;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C2, 1);
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C2, 1);
}
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene30_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, true);
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(100) + 300;
- if (_gnapActionStatus < 0) {
- if (getRandom(5) == 1) {
- _gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x100, 40, _s30_kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(5) == 1) {
+ _vm->_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x100, 40, _s30_kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s30_kidSequenceId = 0x100;
} else {
- _gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
}
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(50) + 180;
- if (_gnapActionStatus < 0) {
- if (!isFlag(kGFUnk23) || hasTakenPill)
- _gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+ if (_vm->_gnapActionStatus < 0) {
+ if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
+ _vm->_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
- playSoundB();
+ _vm->playSoundB();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene30_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene30_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene30::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASUsePillMachine:
- setGrabCursorSprite(-1);
- _gameSys->setAnimation(0x105, _gnapId, 0);
- _gameSys->insertSequence(0x105, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x105;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASUsePillMachine2;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x105, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x105;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASUsePillMachine2;
break;
case kASUsePillMachine2:
- hideCursor();
- setGrabCursorSprite(-1);
- addFullScreenSprite(0x3F, 255);
- _gameSys->removeSequence(0x105, _gnapId, true);
- _gameSys->setAnimation(0x102, 256, 0);
- _gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- _gameSys->setAnimation(0x103, _gnapId, 0);
- _gameSys->insertSequence(0x103, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- removeFullScreenSprite();
- showCursor();
- _gnapActionStatus = kASUsePillMachine3;
- invAdd(kItemPill);
- setFlag(kGFUnk23);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0x3F, 255);
+ _vm->_gameSys->removeSequence(0x105, _vm->_gnapId, true);
+ _vm->_gameSys->setAnimation(0x102, 256, 0);
+ _vm->_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x103, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->_gnapActionStatus = kASUsePillMachine3;
+ _vm->invAdd(kItemPill);
+ _vm->setFlag(kGFUnk23);
break;
case kASUsePillMachine3:
- _gameSys->setAnimation(0x104, _gnapId, 0);
- _gameSys->insertSequence(0x104, _gnapId, makeRid(_gnapSequenceDatNum, 0x103), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x104;
- _gnapSequenceDatNum = 0;
- _gnapActionStatus = kASUsePillMachine4;
- setGrabCursorSprite(kItemDiceQuarterHole);
+ _vm->_gameSys->setAnimation(0x104, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x104;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kASUsePillMachine4;
+ _vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
case kASUsePillMachine4:
- _gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- gnapWalkTo(_hotspotsWalkPos[kHSPillMachine].x, _hotspotsWalkPos[kHSPillMachine].y + 1, -1, 0x107BC, 1);
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y + 1, -1, 0x107BC, 1);
+ _vm->_gnapActionStatus = -1;
break;
case kASLookPillMachine:
- if (isFlag(kGFUnk23))
- showFullScreenSprite(0xE3);
+ if (_vm->isFlag(kGFUnk23))
+ _vm->showFullScreenSprite(0xE3);
else
- showFullScreenSprite(0xE2);
- _gnapActionStatus = -1;
+ _vm->showFullScreenSprite(0xE2);
+ _vm->_gnapActionStatus = -1;
break;
}
}
diff --git a/engines/gnap/scenes/scene30.h b/engines/gnap/scenes/scene30.h
new file mode 100644
index 0000000..e1b2476
--- /dev/null
+++ b/engines/gnap/scenes/scene30.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE30_H
+#define GNAP_SCENE30_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene30: public Scene {
+public:
+ Scene30(GnapEngine *vm);
+ ~Scene30() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s30_kidSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE30_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index e4790a2..6231b0f 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -55,6 +55,7 @@
#include "gnap/scenes/scene27.h"
#include "gnap/scenes/scene28.h"
#include "gnap/scenes/scene29.h"
+#include "gnap/scenes/scene30.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -272,8 +273,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 30:
- backgroundId = scene30_init();
- scene30_updateHotspots();
+ _scene = new Scene30(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -594,7 +596,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 30:
- scene30_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: a8c1fb5727ff83f64da383e891d3d09f595f8635
https://github.com/scummvm/scummvm/commit/a8c1fb5727ff83f64da383e891d3d09f595f8635
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 31
Changed paths:
A engines/gnap/scenes/scene31.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene31.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 68704fd..2ef7516 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2021,10 +2021,6 @@ void GnapEngine::initGlobalSceneVars() {
// Shared by scenes 17 && 18
_s18_garbageCanPos = 8;
- // Scene 31
- _s31_beerGuyDistracted = false;
- _s31_clerkMeasureMaxCtr = 3;
-
// Scene 50
_s50_timesPlayed = 0;
_s50_timesPlayedModifier = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 5edcd58..95f04c3 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,15 +606,6 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
- // Scene 31
- int _s28_currClerkSequenceId, _s28_nextClerkSequenceId;
- bool _s31_beerGuyDistracted;
- int _s31_clerkMeasureCtr, _s31_clerkMeasureMaxCtr;
- int scene31_init();
- void scene31_updateHotspots();
- void scene31_run();
- void scene31_updateAnimations();
-
// Scene 32
int scene32_init();
void scene32_updateHotspots();
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
index 7a58c4d..0c3a1fa 100644
--- a/engines/gnap/scenes/scene31.cpp
+++ b/engines/gnap/scenes/scene31.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene31.h"
namespace Gnap {
@@ -45,89 +46,95 @@ enum {
kASLeaveScene = 6
};
-int GnapEngine::scene31_init() {
+Scene31::Scene31(GnapEngine *vm) : Scene(vm) {
+ _s31_beerGuyDistracted = false;
+ _s31_currClerkSequenceId = -1;
+ _s31_nextClerkSequenceId = -1;
+ _s31_clerkMeasureCtr = -1;
+ _s31_clerkMeasureMaxCtr = 3;
+}
+
+int Scene31::init() {
return 0x105;
}
-void GnapEngine::scene31_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSMeasuringClown, 34, 150, 256, 436, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 6);
- setHotspot(kHSBeerBarrel, 452, 182, 560, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitOutsideClown, 0, 0, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 480);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 7;
+void Scene31::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSMeasuringClown, 34, 150, 256, 436, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 6);
+ _vm->setHotspot(kHSBeerBarrel, 452, 182, 560, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitOutsideClown, 0, 0, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 480);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
}
-void GnapEngine::scene31_run() {
- playSound(0x1093B, true);
- startSoundTimerB(6);
+void Scene31::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
_s31_beerGuyDistracted = false;
- _gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s28_currClerkSequenceId = 0xFB;
- _s28_nextClerkSequenceId = -1;
+ _s31_currClerkSequenceId = 0xFB;
+ _s31_nextClerkSequenceId = -1;
- _gameSys->setAnimation(0xFB, 39, 3);
+ _vm->_gameSys->setAnimation(0xFB, 39, 3);
- _timers[4] = getRandom(20) + 60;
- _timers[5] = getRandom(50) + 180;
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_prevSceneNum == 27) {
- initGnapPos(-1, 8, kDirBottomLeft);
- initPlatypusPos(-1, 9, kDirUnk4);
- endSceneInit();
- gnapWalkTo(3, 8, -1, 0x107BA, 1);
- platypusWalkTo(3, 9, -1, 0x107D2, 1);
+ if (_vm->_prevSceneNum == 27) {
+ _vm->initGnapPos(-1, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
- initGnapPos(7, 12, kDirBottomRight);
- initPlatypusPos(6, 12, kDirNone);
- endSceneInit();
- gnapWalkTo(7, 8, -1, 0x107BA, 1);
- platypusWalkTo(6, 8, -1, 0x107D2, 1);
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
}
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
-
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
- runMenu();
- scene31_updateHotspots();
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemJoint) {
- gnapUseJointOnPlatypus();
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -135,42 +142,42 @@ void GnapEngine::scene31_run() {
break;
case kHSMeasuringClown:
- if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
- if (_gnapActionStatus == kASPlatMeasuringClown) {
- if (_verbCursor == LOOK_CURSOR)
- playGnapScratchingHead(2, 2);
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
+ if (_vm->_gnapActionStatus == kASPlatMeasuringClown) {
+ if (_vm->_verbCursor == LOOK_CURSOR)
+ _vm->playGnapScratchingHead(2, 2);
else
- playGnapImpossible(0, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, 2, 2);
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, 2, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(2, 2);
+ _vm->playGnapScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, -1, -1, 1);
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- gnapWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 0, 0x107B9, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _gnapActionStatus = kASUseMeasuringClown;
- _timers[4] = 300;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, -1, -1, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y, 0, 0x107B9, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kASUseMeasuringClown;
+ _vm->_timers[4] = 300;
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- if (!invHas(kItemBucketWithBeer)) {
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y + 1, 1, 0x107C2, 1);
- _hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- platypusWalkTo(_hotspotsWalkPos[kHSMeasuringClown].x, _hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
- _hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _platypusActionStatus = kASPlatMeasuringClown;
- _gnapActionStatus = kASPlatMeasuringClown;
- _timers[4] = 300;
+ if (!_vm->invHas(kItemBucketWithBeer)) {
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, 1, 0x107C2, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
+ _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_platypusActionStatus = kASPlatMeasuringClown;
+ _vm->_gnapActionStatus = kASPlatMeasuringClown;
+ _vm->_timers[4] = 300;
} else
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -178,36 +185,36 @@ void GnapEngine::scene31_run() {
break;
case kHSBeerBarrel:
- if (_gnapActionStatus < 0 || _gnapActionStatus == kASPlatMeasuringClown) {
- if (_grabCursorSpriteIndex == kItemEmptyBucket && _s31_beerGuyDistracted) {
- setGrabCursorSprite(-1);
- gnapWalkTo(_gnapX, _gnapY, -1, getGnapSequenceId(gskIdle, _hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y) | 0x10000, 1);
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
+ if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _s31_beerGuyDistracted) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y) | 0x10000, 1);
_s31_clerkMeasureMaxCtr += 5;
- _gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
- playGnapPullOutDevice(6, 8);
- playGnapUseDevice(0, 0);
- gnapWalkTo(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASFillEmptyBucketWithBeer;
- _timers[4] = 300;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 6, 2);
+ _vm->_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->playGnapPullOutDevice(6, 8);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASFillEmptyBucketWithBeer;
+ _vm->_timers[4] = 300;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 6, 2);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(6, 2);
+ _vm->playGnapScratchingHead(6, 2);
break;
case GRAB_CURSOR:
if (_s31_beerGuyDistracted) {
- playGnapScratchingHead(6, 2);
+ _vm->playGnapScratchingHead(6, 2);
} else {
- gnapWalkTo(_hotspotsWalkPos[kHSBeerBarrel].x, _hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASUseBeerBarrel;
- _gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASUseBeerBarrel;
+ _vm->_gnapIdleFacing = kDirUpLeft;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -215,191 +222,187 @@ void GnapEngine::scene31_run() {
break;
case kHSExitCircus:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 26;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCircus].x + 1, _hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
}
break;
case kHSExitOutsideClown:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _newSceneNum = 27;
- gnapWalkTo(-1, _hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitOutsideClown].x, _hotspotsWalkPos[kHSExitOutsideClown].y + 1, -1, 0x107CF, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y + 1, -1, 0x107CF, 1);
}
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
}
- scene31_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1093B))
- playSound(0x1093B, true);
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 60;
- if (_gnapActionStatus < 0 && _s28_nextClerkSequenceId == -1) {
- switch (getRandom(6)){
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0 && _s31_nextClerkSequenceId == -1) {
+ switch (_vm->getRandom(6)){
case 0:
- _s28_nextClerkSequenceId = 0xFF;
+ _s31_nextClerkSequenceId = 0xFF;
break;
case 1:
- _s28_nextClerkSequenceId = 0x100;
+ _s31_nextClerkSequenceId = 0x100;
break;
case 2:
- _s28_nextClerkSequenceId = 0x101;
+ _s31_nextClerkSequenceId = 0x101;
break;
default:
- _s28_nextClerkSequenceId = 0xFB;
+ _s31_nextClerkSequenceId = 0xFB;
break;
}
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(50) + 180;
- if (_gnapActionStatus < 0) {
- if (getRandom(2) != 0)
- _gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
- playSoundB();
+ _vm->playSoundB();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene31_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene31_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene31::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASUseBeerBarrel:
- _s28_nextClerkSequenceId = 0xFE;
+ _s31_nextClerkSequenceId = 0xFE;
break;
case kASFillEmptyBucketWithBeer:
- _gameSys->setAnimation(0x102, 59, 0);
- _gameSys->insertSequence(0x102, 59, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapX = 5;
- _gnapY = 7;
- _gnapSequenceDatNum = 0;
- _gnapSequenceId = 0x102;
- _gnapId = 59;
- _gnapActionStatus = kASFillEmptyBucketWithBeerDone;
+ _vm->_gameSys->setAnimation(0x102, 59, 0);
+ _vm->_gameSys->insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapX = 5;
+ _vm->_gnapY = 7;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x102;
+ _vm->_gnapId = 59;
+ _vm->_gnapActionStatus = kASFillEmptyBucketWithBeerDone;
break;
case kASFillEmptyBucketWithBeerDone:
- _gnapIdleFacing = kDirBottomLeft;
- playGnapPullOutDevice(0, 0);
- playGnapUseDevice(0, 0);
- _gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
- _gnapActionStatus = -1;
- invAdd(kItemBucketWithBeer);
- invRemove(kItemEmptyBucket);
- setGrabCursorSprite(kItemBucketWithBeer);
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->invAdd(kItemBucketWithBeer);
+ _vm->invRemove(kItemEmptyBucket);
+ _vm->setGrabCursorSprite(kItemBucketWithBeer);
break;
case kASUseMeasuringClown:
- _s28_nextClerkSequenceId = 0xFA;
+ _s31_nextClerkSequenceId = 0xFA;
_s31_clerkMeasureMaxCtr = 1;
break;
case kASLeaveScene:
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- if (_platypusActionStatus == kASPlatMeasuringClown) {
- _sceneWaiting = true;
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusActionStatus == kASPlatMeasuringClown) {
+ _vm->_sceneWaiting = true;
_s31_beerGuyDistracted = true;
- _s28_nextClerkSequenceId = 0xFA;
+ _s31_nextClerkSequenceId = 0xFA;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_s28_nextClerkSequenceId) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_s31_nextClerkSequenceId) {
case 0xFA:
- _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xFC, 39, _s28_nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0xFC, 39, 3);
- _s28_currClerkSequenceId = 0xFC;
- _s28_nextClerkSequenceId = 0xFC;
+ _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFC, 39, _s31_nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ _s31_currClerkSequenceId = 0xFC;
+ _s31_nextClerkSequenceId = 0xFC;
_s31_clerkMeasureCtr = 0;
break;
case 0xFC:
++_s31_clerkMeasureCtr;
if (_s31_clerkMeasureCtr >= _s31_clerkMeasureMaxCtr) {
- if (_gnapActionStatus != 5)
- _platypusActionStatus = -1;
- _timers[0] = 40;
- _gameSys->insertSequence(0xFD, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s28_currClerkSequenceId = 0xFD;
- _s28_nextClerkSequenceId = -1;
- if (_gnapActionStatus != kASFillEmptyBucketWithBeerDone && _gnapActionStatus != kASFillEmptyBucketWithBeer)
- _gnapActionStatus = -1;
+ if (_vm->_gnapActionStatus != 5)
+ _vm->_platypusActionStatus = -1;
+ _vm->_timers[0] = 40;
+ _vm->_gameSys->insertSequence(0xFD, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _s31_currClerkSequenceId = 0xFD;
+ _s31_nextClerkSequenceId = -1;
+ if (_vm->_gnapActionStatus != kASFillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kASFillEmptyBucketWithBeer)
+ _vm->_gnapActionStatus = -1;
_s31_beerGuyDistracted = false;
_s31_clerkMeasureMaxCtr = 3;
- _gameSys->setAnimation(0xFD, 39, 3);
- _sceneWaiting = false;
+ _vm->_gameSys->setAnimation(0xFD, 39, 3);
+ _vm->_sceneWaiting = false;
} else {
- _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
- _s28_nextClerkSequenceId = 0xFC;
- _gameSys->setAnimation(0xFC, 39, 3);
+ _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
+ _s31_nextClerkSequenceId = 0xFC;
+ _vm->_gameSys->setAnimation(0xFC, 39, 3);
}
break;
case 0xFE:
- _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextClerkSequenceId, 39, 3);
- _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
- _s28_nextClerkSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s31_nextClerkSequenceId, 39, 3);
+ _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
+ _s31_nextClerkSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
break;
default:
- if (_s28_nextClerkSequenceId != -1) {
- _gameSys->insertSequence(_s28_nextClerkSequenceId, 39, _s28_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s28_nextClerkSequenceId, 39, 3);
- _s28_currClerkSequenceId = _s28_nextClerkSequenceId;
- _s28_nextClerkSequenceId = -1;
+ if (_s31_nextClerkSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s31_nextClerkSequenceId, 39, 3);
+ _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
+ _s31_nextClerkSequenceId = -1;
}
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene31.h b/engines/gnap/scenes/scene31.h
new file mode 100644
index 0000000..09b7c65
--- /dev/null
+++ b/engines/gnap/scenes/scene31.h
@@ -0,0 +1,53 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE31_H
+#define GNAP_SCENE31_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene31: public Scene {
+public:
+ Scene31(GnapEngine *vm);
+ ~Scene31() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _s31_beerGuyDistracted;
+ int _s31_currClerkSequenceId;
+ int _s31_nextClerkSequenceId;
+ int _s31_clerkMeasureCtr;
+ int _s31_clerkMeasureMaxCtr;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE31_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 6231b0f..e366a57 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -56,6 +56,7 @@
#include "gnap/scenes/scene28.h"
#include "gnap/scenes/scene29.h"
#include "gnap/scenes/scene30.h"
+#include "gnap/scenes/scene31.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -280,8 +281,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 31:
- backgroundId = scene31_init();
- scene31_updateHotspots();
+ _scene = new Scene31(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -602,7 +604,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 31:
- scene31_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
Commit: a5d312b23f68ef3480a5e7bd516ea844dafa8318
https://github.com/scummvm/scummvm/commit/a5d312b23f68ef3480a5e7bd516ea844dafa8318
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 32 & 33
Changed paths:
A engines/gnap/scenes/scene32.h
A engines/gnap/scenes/scene33.h
engines/gnap/gnap.h
engines/gnap/scenes/scene32.cpp
engines/gnap/scenes/scene33.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 95f04c3..79e6b63 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -605,20 +605,7 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
-
- // Scene 32
- int scene32_init();
- void scene32_updateHotspots();
- void scene32_run();
- void scene32_updateAnimations();
- // Scene 33
- int _s33_currChickenSequenceId, _s33_nextChickenSequenceId;
- int scene33_init();
- void scene33_updateHotspots();
- void scene33_run();
- void scene33_updateAnimations();
-
// Scene 38
int scene38_init();
void scene38_updateHotspots();
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
index 6eac47e..75d2efa 100644
--- a/engines/gnap/scenes/scene32.cpp
+++ b/engines/gnap/scenes/scene32.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene32.h"
namespace Gnap {
@@ -44,78 +45,82 @@ enum {
kASLeaveScene = 0
};
-int GnapEngine::scene32_init() {
- _gameSys->setAnimation(0, 0, 0);
- return isFlag(kGFPlatypusTalkingToAssistant) ? 0xF : 0x10;
+Scene32::Scene32(GnapEngine *vm) : Scene(vm) {
+
+}
+
+int Scene32::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0xF : 0x10;
}
-void GnapEngine::scene32_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
- setHotspot(kHSWalkArea1, 0, 0, 162, 426);
- setHotspot(kHSWalkArea2, 162, 0, 237, 396);
- setHotspot(kHSWalkArea3, 237, 0, 319, 363);
- setHotspot(kHSWalkArea4, 520, 0, 800, 404);
- setHotspot(kHSWalkArea5, 300, 447, 800, 600);
- setHotspot(kHSWalkArea6, 678, 0, 800, 404);
- setHotspot(kHSWalkArea7, 0, 0, 520, 351);
- setHotspot(kHSWalkArea8, 0, 546, 300, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 11;
+void Scene32::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 162, 426);
+ _vm->setHotspot(kHSWalkArea2, 162, 0, 237, 396);
+ _vm->setHotspot(kHSWalkArea3, 237, 0, 319, 363);
+ _vm->setHotspot(kHSWalkArea4, 520, 0, 800, 404);
+ _vm->setHotspot(kHSWalkArea5, 300, 447, 800, 600);
+ _vm->setHotspot(kHSWalkArea6, 678, 0, 800, 404);
+ _vm->setHotspot(kHSWalkArea7, 0, 0, 520, 351);
+ _vm->setHotspot(kHSWalkArea8, 0, 546, 300, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
}
-void GnapEngine::scene32_run() {
- playSound(0x1091C, true);
- startSoundTimerC(5);
- queueInsertDeviceIcon();
- _timers[4] = getRandom(100) + 300;
-
- if (_prevSceneNum == 33) {
- initGnapPos(11, 6, kDirBottomLeft);
- initPlatypusPos(12, 6, kDirUnk4);
- endSceneInit();
- platypusWalkTo(9, 6, -1, 0x107D2, 1);
- gnapWalkTo(8, 6, -1, 0x107BA, 1);
+void Scene32::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(5);
+ _vm->queueInsertDeviceIcon();
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ if (_vm->_prevSceneNum == 33) {
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
} else {
- initGnapPos(1, 6, kDirBottomRight);
- initPlatypusPos(1, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(1, 6, kDirBottomRight);
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
}
- while (!_sceneDone) {
- updateMouseCursor();
- updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene32_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -123,13 +128,13 @@ void GnapEngine::scene32_run() {
break;
case kHSExitTruck:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- setGrabCursorSprite(-1);
- gnapWalkTo(_hotspotsWalkPos[kHSExitTruck].x, _hotspotsWalkPos[kHSExitTruck].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitTruck].x, _hotspotsWalkPos[kHSExitTruck].y + 1, -1, 0x107CD, 1);
- _newSceneNum = 33;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->setGrabCursorSprite(-1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitTruck].x, _vm->_hotspotsWalkPos[kHSExitTruck].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitTruck].x, _vm->_hotspotsWalkPos[kHSExitTruck].y + 1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 33;
}
break;
@@ -141,59 +146,54 @@ void GnapEngine::scene32_run() {
case kHSWalkArea6:
case kHSWalkArea7:
case kHSWalkArea8:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = 0;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
}
- scene32_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(100) + 300;
- if (getRandom(2) != 0)
- _gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene32_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene32_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == kASLeaveScene)
- _sceneDone = true;
+void Scene32::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kASLeaveScene)
+ _vm->_sceneDone = true;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene32.h b/engines/gnap/scenes/scene32.h
new file mode 100644
index 0000000..d96e834
--- /dev/null
+++ b/engines/gnap/scenes/scene32.h
@@ -0,0 +1,46 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE32_H
+#define GNAP_SCENE32_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene32: public Scene {
+public:
+ Scene32(GnapEngine *vm);
+ ~Scene32() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE32_H
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
index 3c24dd2..d0dec3f 100644
--- a/engines/gnap/scenes/scene33.cpp
+++ b/engines/gnap/scenes/scene33.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene33.h"
namespace Gnap {
@@ -45,98 +46,101 @@ enum {
kASUseChickenDone = 3
};
-int GnapEngine::scene33_init() {
- return isFlag(kGFPlatypusTalkingToAssistant) ? 0x84 : 0x85;
+Scene33::Scene33(GnapEngine *vm) : Scene(vm) {
+ _s33_currChickenSequenceId = -1;
+ _s33_nextChickenSequenceId = -1;
+}
+
+int Scene33::init() {
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x84 : 0x85;
}
-void GnapEngine::scene33_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSChicken, 606, 455, 702, 568, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 3);
- setHotspot(kHSExitBarn, 610, 75, 800, 164, SF_EXIT_U_CURSOR, 10, 3);
- setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- setHotspot(kHSWalkArea1, 120, 0, 514, 458);
- setHotspot(kHSWalkArea2, 0, 0, 800, 452);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 9;
+void Scene33::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSChicken, 606, 455, 702, 568, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 3);
+ _vm->setHotspot(kHSExitBarn, 610, 75, 800, 164, SF_EXIT_U_CURSOR, 10, 3);
+ _vm->setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHSWalkArea1, 120, 0, 514, 458);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 800, 452);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
}
-void GnapEngine::scene33_run() {
- playSound(0x1091C, true);
- startSoundTimerC(6);
- queueInsertDeviceIcon();
+void Scene33::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(6);
+ _vm->queueInsertDeviceIcon();
_s33_currChickenSequenceId = 0x7E;
- _gameSys->setAnimation(0x7E, 179, 2);
- _gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x7E, 179, 2);
+ _vm->_gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_s33_nextChickenSequenceId = -1;
- _timers[5] = getRandom(20) + 30;
- _timers[4] = getRandom(100) + 300;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 34:
- initGnapPos(11, 7, kDirBottomLeft);
- initPlatypusPos(12, 7, kDirUnk4);
- endSceneInit();
- gnapWalkTo(8, 7, -1, 0x107BA, 1);
- platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ _vm->initGnapPos(11, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 7, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
- initGnapPos(7, 7, kDirBottomRight);
- initPlatypusPos(8, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(7, 7, kDirBottomRight);
+ _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->endSceneInit();
break;
case 32:
- initGnapPos(-1, 6, kDirBottomRight);
- initPlatypusPos(-1, 7, kDirNone);
- endSceneInit();
- platypusWalkTo(2, 7, -1, 0x107C2, 1);
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->initGnapPos(-1, 6, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
default:
- initGnapPos(3, 7, kDirBottomRight);
- initPlatypusPos(2, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(2, 7, kDirNone);
+ _vm->endSceneInit();
break;
}
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 0, 7, 6, 8, 6);
- updateMouseCursor();
- updateCursorByHotspot();
- testWalk(0, 0, 7, 6, 8, 6);
-
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene33_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -144,26 +148,26 @@ void GnapEngine::scene33_run() {
break;
case kHSChicken:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(7, 9, 9, 8);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 9, 9, 8);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case GRAB_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- if (gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _gnapActionStatus = kASUseChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChicken].x, _vm->_hotspotsWalkPos[kHSChicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kASUseChicken;
else
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirBottomRight;
- gnapWalkTo(_hotspotsWalkPos[kHSChicken].x, _hotspotsWalkPos[kHSChicken].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkChicken;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChicken].x, _vm->_hotspotsWalkPos[kHSChicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkChicken;
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -171,160 +175,154 @@ void GnapEngine::scene33_run() {
break;
case kHSExitHouse:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 37;
- if (_gnapX > 6)
- gnapWalkTo(_gnapX, _gnapY, 0, 0x107AD, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 37;
+ if (_vm->_gnapX > 6)
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
else
- gnapWalkTo(6, 7, 0, 0x107B1, 1);
+ _vm->gnapWalkTo(6, 7, 0, 0x107B1, 1);
}
break;
case kHSExitBarn:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 35;
- if (_gnapX > 7)
- gnapWalkTo(_gnapX, _gnapY, 0, 0x107AD, 1);
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 35;
+ if (_vm->_gnapX > 7)
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
else
- gnapWalkTo(7, 7, 0, 0x107B1, 1);
+ _vm->gnapWalkTo(7, 7, 0, 0x107B1, 1);
}
break;
case kHSExitCreek:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitCreek].x, _hotspotsWalkPos[kHSExitCreek].y, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitCreek].x, _hotspotsWalkPos[kHSExitCreek].y, -1, 0x107CD, 1);
- _newSceneNum = 34;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCreek].x, _vm->_hotspotsWalkPos[kHSExitCreek].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCreek].x, _vm->_hotspotsWalkPos[kHSExitCreek].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 34;
}
break;
case kHSExitPigpen:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitPigpen].x, _hotspotsWalkPos[kHSExitPigpen].y, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitPigpen].x, _hotspotsWalkPos[kHSExitPigpen].y, -1, 0x107CF, 1);
- _newSceneNum = 32;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPigpen].x, _vm->_hotspotsWalkPos[kHSExitPigpen].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPigpen].x, _vm->_hotspotsWalkPos[kHSExitPigpen].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 32;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene33_updateAnimations();
+ updateAnimations();
- if (!isSoundPlaying(0x1091C))
- playSound(0x1091C, true);
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(100) + 300;
- if (getRandom(2) != 0)
- _gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_timers[5] && _s33_nextChickenSequenceId == -1 && _gnapActionStatus != kASTalkChicken && _gnapActionStatus != kASUseChicken) {
- if (getRandom(6) != 0) {
+ if (!_vm->_timers[5] && _s33_nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kASTalkChicken && _vm->_gnapActionStatus != kASUseChicken) {
+ if (_vm->getRandom(6) != 0) {
_s33_nextChickenSequenceId = 0x7E;
- _timers[5] = getRandom(20) + 30;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
} else {
_s33_nextChickenSequenceId = 0x80;
- _timers[5] = getRandom(20) + 50;
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
}
}
- playSoundC();
+ _vm->playSoundC();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene33_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene33_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- switch (_gnapActionStatus) {
+void Scene33::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASTalkChicken:
_s33_nextChickenSequenceId = 0x7F;
break;
case kASUseChicken:
_s33_nextChickenSequenceId = 0x81;
- _timers[2] = 100;
+ _vm->_timers[2] = 100;
break;
case kASUseChickenDone:
- _gameSys->insertSequence(0x107B5, _gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceId = 0x7B5;
- _gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
_s33_currChickenSequenceId = 0x7E;
- _gameSys->setAnimation(0x7E, 179, 2);
- _gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = -1;
- _timers[5] = 30;
+ _vm->_gameSys->setAnimation(0x7E, 179, 2);
+ _vm->_gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[5] = 30;
break;
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_s33_nextChickenSequenceId == 0x81) {
- _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 0);
- _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(_s33_currChickenSequenceId, 179, true);
+ _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 0);
+ _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(_s33_currChickenSequenceId, 179, true);
_s33_nextChickenSequenceId = -1;
_s33_currChickenSequenceId = -1;
- _gnapActionStatus = kASUseChickenDone;
- _timers[5] = 500;
+ _vm->_gnapActionStatus = kASUseChickenDone;
+ _vm->_timers[5] = 500;
} else if (_s33_nextChickenSequenceId == 0x7F) {
- _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
- _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_s33_currChickenSequenceId = _s33_nextChickenSequenceId;
_s33_nextChickenSequenceId = -1;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
} else if (_s33_nextChickenSequenceId != -1) {
- _gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
- _gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_s33_currChickenSequenceId = _s33_nextChickenSequenceId;
_s33_nextChickenSequenceId = -1;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene33.h b/engines/gnap/scenes/scene33.h
new file mode 100644
index 0000000..4532a26
--- /dev/null
+++ b/engines/gnap/scenes/scene33.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE33_H
+#define GNAP_SCENE33_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene33: public Scene {
+public:
+ Scene33(GnapEngine *vm);
+ ~Scene33() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s33_currChickenSequenceId;
+ int _s33_nextChickenSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE33_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index e366a57..c5b47c6 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -57,6 +57,8 @@
#include "gnap/scenes/scene29.h"
#include "gnap/scenes/scene30.h"
#include "gnap/scenes/scene31.h"
+#include "gnap/scenes/scene32.h"
+#include "gnap/scenes/scene33.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -288,14 +290,16 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 32:
- backgroundId = scene32_init();
- scene32_updateHotspots();
+ _scene = new Scene32(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 33:
- backgroundId = scene33_init();
- scene33_updateHotspots();
+ _scene = new Scene33(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -610,12 +614,14 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 20;
break;
case 32:
- scene32_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
case 33:
- scene33_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 1095af09a666e9e44c9f95b2e6d41436e3189604
https://github.com/scummvm/scummvm/commit/1095af09a666e9e44c9f95b2e6d41436e3189604
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 38
Changed paths:
A engines/gnap/scenes/scene38.h
engines/gnap/gnap.h
engines/gnap/scenes/scene38.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 79e6b63..4bcf7fc 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,12 +606,6 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
- // Scene 38
- int scene38_init();
- void scene38_updateHotspots();
- void scene38_run();
- void scene38_updateAnimations();
-
// Scene 39
int _s39_currGuySequenceId, _s39_nextGuySequenceId;
int scene39_init();
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
index 81da764..9360afd 100644
--- a/engines/gnap/scenes/scene38.cpp
+++ b/engines/gnap/scenes/scene38.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene38.h"
namespace Gnap {
@@ -52,156 +53,156 @@ enum {
kASPlatypusHoldingTrapDoor = 6
};
-int GnapEngine::scene38_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- return 0xA5;
+Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
}
-void GnapEngine::scene38_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
- setHotspot(kHSExitCave, 430, 440, 655, 470, SF_WALKABLE, 0, 8);
- setHotspot(kHSTrapDoorLid1, 525, 265, 640, 350, SF_DISABLED);
- setHotspot(kHSTrapDoorLid2, 555, 350, 670, 430, SF_DISABLED);
- setHotspot(kHSHuntingTrophy, 170, 85, 250, 190, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
- setHotspot(kHSWalkArea1, 330, 270, 640, 380, SF_DISABLED | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
- setHotspot(kHSWalkArea2, 0, 0, 799, 396);
- setHotspot(kHSWalkArea3, 0, 585, 799, 599, SF_WALKABLE | SF_DISABLED);
- setHotspot(kHSWalkArea4, 0, 0, 97, 445);
- setHotspot(kHSWalkArea5, 770, 0, 799, 445);
- setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
- else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
- else if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _hotspots[kHSWalkArea6]._flags = SF_NONE;
- _hotspotsCount = 13;
+int Scene38::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0xA5;
}
-void GnapEngine::scene38_run() {
+void Scene38::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitCave, 430, 440, 655, 470, SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHSTrapDoorLid1, 525, 265, 640, 350, SF_DISABLED);
+ _vm->setHotspot(kHSTrapDoorLid2, 555, 350, 670, 430, SF_DISABLED);
+ _vm->setHotspot(kHSHuntingTrophy, 170, 85, 250, 190, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
+ _vm->setHotspot(kHSWalkArea1, 330, 270, 640, 380, SF_DISABLED | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
+ _vm->setHotspot(kHSWalkArea2, 0, 0, 799, 396);
+ _vm->setHotspot(kHSWalkArea3, 0, 585, 799, 599, SF_WALKABLE | SF_DISABLED);
+ _vm->setHotspot(kHSWalkArea4, 0, 0, 97, 445);
+ _vm->setHotspot(kHSWalkArea5, 770, 0, 799, 445);
+ _vm->setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
+ else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
+ _vm->_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
+ else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
+ _vm->_hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
+ else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
+ _vm->_hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHSWalkArea6]._flags = SF_NONE;
+ _vm->_hotspotsCount = 13;
+}
- queueInsertDeviceIcon();
- _gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+void Scene38::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
- if (_prevSceneNum == 39) {
- initGnapPos(3, 7, kDirBottomLeft);
- initPlatypusPos(4, 7, kDirUnk4);
+ if (_vm->_prevSceneNum == 39) {
+ _vm->initGnapPos(3, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(4, 7, kDirUnk4);
} else {
- initGnapPos(3, 8, kDirBottomRight);
- initPlatypusPos(4, 8, kDirNone);
+ _vm->initGnapPos(3, 8, kDirBottomRight);
+ _vm->initPlatypusPos(4, 8, kDirNone);
}
- endSceneInit();
-
- while (!_sceneDone) {
-
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->endSceneInit();
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene38_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
case kHSPlatypus:
- if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- _gnapActionStatus = kASReleaseHuntingTrophy;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
break;
case kHSExitHouse:
- if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- _gnapActionStatus = kASReleaseHuntingTrophy;
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
} else {
- _isLeavingScene = true;
- gnapWalkTo(-1, -1, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 37;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 37;
}
break;
case kHSExitCave:
- if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- _gnapActionStatus = kASReleaseHuntingTrophy;
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _isLeavingScene = true;
- } else if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _sceneWaiting = false;
- _isLeavingScene = true;
- gnapWalkTo(5, 7, 0, 0x107BB, 1);
- _newSceneNum = 39;
- _gnapActionStatus = kASExitCave;
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->_isLeavingScene = true;
+ } else if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
+ _vm->_sceneWaiting = false;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->_newSceneNum = 39;
+ _vm->_gnapActionStatus = kASExitCave;
}
break;
case kHSTrapDoorLid1:
case kHSTrapDoorLid2:
- if (_gnapActionStatus == kASHoldingHuntingTrophy) {
- if (_verbCursor == PLAT_CURSOR && _platypusActionStatus != kASPlatypusHoldingTrapDoor)
- _gnapActionStatus = kASUsePlatypusWithTrapDoor;
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
+ if (_vm->_verbCursor == PLAT_CURSOR && _vm->_platypusActionStatus != kASPlatypusHoldingTrapDoor)
+ _vm->_gnapActionStatus = kASUsePlatypusWithTrapDoor;
else
- _gnapActionStatus = kASReleaseHuntingTrophy;
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
}
break;
case kHSHuntingTrophy:
- if (_gnapActionStatus != kASHoldingHuntingTrophy) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(3, 6, 2, 0);
+ if (_vm->_gnapActionStatus != kASHoldingHuntingTrophy) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 6, 2, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(0, 0);
+ _vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- playGnapImpossible(0, 0);
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
+ _vm->playGnapImpossible(0, 0);
else {
- gnapWalkTo(3, 6, 0, 0x107BB, 1);
- platypusWalkTo(4, 8, -1, -1, 1);
- _gnapActionStatus = kASUseHuntingTrophy;
+ _vm->gnapWalkTo(3, 6, 0, 0x107BB, 1);
+ _vm->platypusWalkTo(4, 8, -1, -1, 1);
+ _vm->_gnapActionStatus = kASUseHuntingTrophy;
}
break;
case TALK_CURSOR:
- playGnapBrainPulsating(2, 0);
+ _vm->playGnapBrainPulsating(2, 0);
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -217,148 +218,143 @@ void GnapEngine::scene38_run() {
case kHSWalkArea4:
case kHSWalkArea5:
case kHSWalkArea6:
- if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _gnapActionStatus = kASReleaseHuntingTrophy;
- else if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
+ else if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left) {
- if (_gnapActionStatus == kASHoldingHuntingTrophy)
- _gnapActionStatus = kASReleaseHuntingTrophy;
- else if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left) {
+ if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
+ _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
+ else if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene38_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- updatePlatypusIdleSequence();
- updateGnapIdleSequence();
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene38_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene38_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene38::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASExitCave:
- _gameSys->removeSequence(_platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, true);
- _gameSys->insertSequence(0xA3, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xA3;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0xA3, _gnapId, 0);
- _gnapActionStatus = kASLeaveScene;
+ _vm->_gameSys->removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
+ _vm->_gameSys->insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA3;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0xA3, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASLeaveScene;
break;
case kASUseHuntingTrophy:
- _gameSys->removeSequence(0x9B, 0, true);
- _gameSys->insertSequence(0x9C, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x9C;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x9C, _gnapId, 0);
- _gnapActionStatus = kASHoldingHuntingTrophy;
- scene38_updateHotspots();
+ _vm->_gameSys->removeSequence(0x9B, 0, true);
+ _vm->_gameSys->insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9C;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x9C, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASHoldingHuntingTrophy;
+ updateHotspots();
break;
case kASHoldingHuntingTrophy:
- if (_platypusActionStatus != kASPlatypusHoldingTrapDoor)
- _sceneWaiting = true;
- if (_gnapSequenceId == 0xA4) {
- _gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x9D;
+ if (_vm->_platypusActionStatus != kASPlatypusHoldingTrapDoor)
+ _vm->_sceneWaiting = true;
+ if (_vm->_gnapSequenceId == 0xA4) {
+ _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9D;
} else {
- _gameSys->insertSequence(0xA4, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xA4;
+ _vm->_gameSys->insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA4;
}
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(_gnapSequenceId, _gnapId, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
break;
case kASReleaseHuntingTrophy:
- if (_gnapSequenceId == 0x9E) {
- _gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
- _gnapActionStatus = -1;
- } else if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _gameSys->insertSequence(0xA0, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0xA0;
- _gnapSequenceDatNum = 0;
- _gnapX = 3;
- _gnapY = 6;
- _gnapIdleFacing = kDirBottomRight;
- if (_isLeavingScene) {
- _sceneWaiting = false;
- gnapWalkTo(5, 7, 0, 0x107BB, 1);
- _newSceneNum = 39;
- _gnapActionStatus = kASExitCave;
+ if (_vm->_gnapSequenceId == 0x9E) {
+ _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ } else if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
+ _vm->_gameSys->insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA0;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->_isLeavingScene) {
+ _vm->_sceneWaiting = false;
+ _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->_newSceneNum = 39;
+ _vm->_gnapActionStatus = kASExitCave;
} else {
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
} else {
- _gameSys->insertSequence(0x9E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x9E;
- _gnapSequenceDatNum = 0;
- _gnapX = 3;
- _gnapY = 6;
- _gnapIdleFacing = kDirBottomRight;
- _gameSys->setAnimation(0x9E, _gnapId, 0);
- _sceneWaiting = false;
- scene38_updateHotspots();
+ _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
+ _vm->_sceneWaiting = false;
+ updateHotspots();
}
break;
case kASUsePlatypusWithTrapDoor:
- _sceneWaiting = false;
- _gameSys->insertSequence(0x9F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x9F;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x9F, _gnapId, 0);
- _gnapActionStatus = kASHoldingHuntingTrophy;
- if (_platypusFacing != kDirNone)
- playPlatypusSequence(0x107D5);
+ _vm->_sceneWaiting = false;
+ _vm->_gameSys->insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x9F, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASHoldingHuntingTrophy;
+ if (_vm->_platypusFacing != kDirNone)
+ _vm->playPlatypusSequence(0x107D5);
else
- playPlatypusSequence(0x107D4);
- platypusWalkTo(8, 7, -1, 0x107D2, 1);
- _gameSys->insertSequence(0xA1, _gnapId + 1, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0xA1;
- _platypusSequenceDatNum = 0;
- _platypusId = _gnapId + 1;
- _gameSys->setAnimation(0xA1, _gnapId + 1, 1);
- _platypusActionStatus = kASPlatypusHoldingTrapDoor;
- scene38_updateHotspots();
+ _vm->playPlatypusSequence(0x107D4);
+ _vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
+ _vm->_gameSys->insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xA1;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusId = _vm->_gnapId + 1;
+ _vm->_gameSys->setAnimation(0xA1, _vm->_gnapId + 1, 1);
+ _vm->_platypusActionStatus = kASPlatypusHoldingTrapDoor;
+ updateHotspots();
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- if (_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _gameSys->insertSequence(0xA2, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0xA2;
- _platypusSequenceDatNum = 0;
- scene38_updateHotspots();
- _sceneWaiting = true;
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
+ _vm->_gameSys->insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xA2;
+ _vm->_platypusSequenceDatNum = 0;
+ updateHotspots();
+ _vm->_sceneWaiting = true;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene38.h b/engines/gnap/scenes/scene38.h
new file mode 100644
index 0000000..7cc90b7
--- /dev/null
+++ b/engines/gnap/scenes/scene38.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE38_H
+#define GNAP_SCENE38_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene38: public Scene {
+public:
+ Scene38(GnapEngine *vm);
+ ~Scene38() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE38_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c5b47c6..75a1f57 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -59,6 +59,7 @@
#include "gnap/scenes/scene31.h"
#include "gnap/scenes/scene32.h"
#include "gnap/scenes/scene33.h"
+#include "gnap/scenes/scene38.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -332,8 +333,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 38:
- backgroundId = scene38_init();
- scene38_updateHotspots();
+ _scene = new Scene38(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -650,7 +652,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 38:
- scene38_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: f7e7a45f12351e07851a960c814411de94b346f1
https://github.com/scummvm/scummvm/commit/f7e7a45f12351e07851a960c814411de94b346f1
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 39
Changed paths:
A engines/gnap/scenes/scene39.h
engines/gnap/gnap.h
engines/gnap/scenes/scene38.h
engines/gnap/scenes/scene39.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4bcf7fc..fe641ce 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -606,13 +606,6 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
- // Scene 39
- int _s39_currGuySequenceId, _s39_nextGuySequenceId;
- int scene39_init();
- void scene39_updateHotspots();
- void scene39_run();
- void scene39_updateAnimations();
-
// Scene 40
int scene40_init();
void scene40_updateHotspots();
diff --git a/engines/gnap/scenes/scene38.h b/engines/gnap/scenes/scene38.h
index 7cc90b7..8ad8e73 100644
--- a/engines/gnap/scenes/scene38.h
+++ b/engines/gnap/scenes/scene38.h
@@ -40,8 +40,6 @@ public:
virtual void run();
virtual void updateAnimations();
virtual void updateAnimationsCb() {};
-
-private:
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
index bc506c1..cfbdd57 100644
--- a/engines/gnap/scenes/scene39.cpp
+++ b/engines/gnap/scenes/scene39.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene39.h"
namespace Gnap {
@@ -40,86 +41,89 @@ enum {
kASLeaveScene = 0
};
-int GnapEngine::scene39_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- return 0x35;
+Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
+ _s39_currGuySequenceId = -1;
+ _s39_nextGuySequenceId = -1;
}
-void GnapEngine::scene39_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitInsideHouse, 0, 0, 140, 206, SF_EXIT_U_CURSOR, 4, 8);
- setHotspot(kHSExitUfoParty, 360, 204, 480, 430, SF_EXIT_R_CURSOR, 6, 8);
- setHotspot(kHSSign, 528, 232, 607, 397, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 3);
- setHotspot(kHSWalkArea1, 0, 0, 800, 466);
- setHotspot(kHSWalkArea2, 502, 466, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 7;
+int Scene39::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0x35;
}
-void GnapEngine::scene39_run() {
+void Scene39::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitInsideHouse, 0, 0, 140, 206, SF_EXIT_U_CURSOR, 4, 8);
+ _vm->setHotspot(kHSExitUfoParty, 360, 204, 480, 430, SF_EXIT_R_CURSOR, 6, 8);
+ _vm->setHotspot(kHSSign, 528, 232, 607, 397, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 3);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 466);
+ _vm->setHotspot(kHSWalkArea2, 502, 466, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
- _timers[5] = 0; // Bug in the original? Timer was never intiailized.
+void Scene39::run() {
+ // Bug in the original? Timer was never initialized.
+ _vm->_timers[5] = 0;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
_s39_currGuySequenceId = 0x33;
- _gameSys->setAnimation(0x33, 21, 3);
- _gameSys->insertSequence(_s39_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x33, 21, 3);
+ _vm->_gameSys->insertSequence(_s39_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
_s39_nextGuySequenceId = -1;
- if (_prevSceneNum == 38) {
- initGnapPos(3, 7, kDirUpRight);
- initPlatypusPos(2, 7, kDirUpLeft);
- endSceneInit();
+ if (_vm->_prevSceneNum == 38) {
+ _vm->initGnapPos(3, 7, kDirUpRight);
+ _vm->initPlatypusPos(2, 7, kDirUpLeft);
+ _vm->endSceneInit();
} else {
- initGnapPos(4, 7, kDirBottomRight);
- initPlatypusPos(5, 7, kDirNone);
- endSceneInit();
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->endSceneInit();
}
- while (!_sceneDone) {
-
- if (!isSoundPlaying(0x1094B)) {
- playSound(0x1094B, true);
- setSoundVolume(0x1094B, 60);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B)) {
+ _vm->playSound(0x1094B, true);
+ _vm->setSoundVolume(0x1094B, 60);
}
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
-
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- switch (_sceneClickedHotspot) {
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene39_updateHotspots();
- _timers[5] = getRandom(20) + 50;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -127,30 +131,30 @@ void GnapEngine::scene39_run() {
break;
case kHSExitUfoParty:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- _sceneDone = true;
- gnapWalkTo(_gnapX, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 40;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 40;
}
break;
case kHSSign:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(0, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[kHSSign].x, _hotspotsWalkPos[kHSSign].y, 0, -1, 1);
- playGnapIdle(_hotspotsWalkPos[kHSSign].x, _hotspotsWalkPos[kHSSign].y);
- showFullScreenSprite(0x1C);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSign].x, _vm->_hotspotsWalkPos[kHSSign].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHSSign].x, _vm->_hotspotsWalkPos[kHSSign].y);
+ _vm->showFullScreenSprite(0x1C);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -158,38 +162,37 @@ void GnapEngine::scene39_run() {
break;
case kHSExitInsideHouse:
- if (_gnapActionStatus < 0) {
- _sceneDone = true;
- _isLeavingScene = true;
- _newSceneNum = 38;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_sceneDone = true;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 38;
}
break;
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- gnapWalkTo(-1, -1, -1, -1, 1);
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
}
break;
-
}
- scene39_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0)
- updateGnapIdleSequence();
- if (!_timers[5]) {
- _timers[5] = getRandom(20) + 50;
- switch (getRandom(4)) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ switch (_vm->getRandom(4)) {
case 0:
_s39_nextGuySequenceId = 0x30;
break;
@@ -206,38 +209,34 @@ void GnapEngine::scene39_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene39_updateHotspots();
- _timers[5] = getRandom(20) + 50;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene39_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus == kASLeaveScene)
- _sceneDone = true;
+void Scene39::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kASLeaveScene)
+ _vm->_sceneDone = true;
else
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s39_nextGuySequenceId != -1) {
- _gameSys->setAnimation(_s39_nextGuySequenceId, 21, 3);
- _gameSys->insertSequence(_s39_nextGuySequenceId, 21, _s39_currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s39_nextGuySequenceId != -1) {
+ _vm->_gameSys->setAnimation(_s39_nextGuySequenceId, 21, 3);
+ _vm->_gameSys->insertSequence(_s39_nextGuySequenceId, 21, _s39_currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_s39_currGuySequenceId = _s39_nextGuySequenceId;
_s39_nextGuySequenceId = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene39.h b/engines/gnap/scenes/scene39.h
new file mode 100644
index 0000000..68dfdfd
--- /dev/null
+++ b/engines/gnap/scenes/scene39.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE39_H
+#define GNAP_SCENE39_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene39: public Scene {
+public:
+ Scene39(GnapEngine *vm);
+ ~Scene39() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s39_currGuySequenceId;
+ int _s39_nextGuySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE39_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 75a1f57..cd793fd 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -60,6 +60,7 @@
#include "gnap/scenes/scene32.h"
#include "gnap/scenes/scene33.h"
#include "gnap/scenes/scene38.h"
+#include "gnap/scenes/scene39.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -340,8 +341,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 39:
- backgroundId = scene39_init();
- scene39_updateHotspots();
+ _scene = new Scene39(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -658,7 +660,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 39:
- scene39_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 01f8cfd8af22a56ec2f09d96bf3d0a6a19c5515c
https://github.com/scummvm/scummvm/commit/01f8cfd8af22a56ec2f09d96bf3d0a6a19c5515c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 40
Changed paths:
A engines/gnap/scenes/scene40.h
engines/gnap/gnap.h
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index fe641ce..1864d66 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -605,12 +605,6 @@ public:
// Shared by scenes 17 & 18
int _s18_garbageCanPos;
-
- // Scene 40
- int scene40_init();
- void scene40_updateHotspots();
- void scene40_run();
- void scene40_updateAnimations();
// Scene 4x
void toyUfoSetStatus(int flagNum);
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index 001a923..c3adbf2 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene40.h"
namespace Gnap {
@@ -38,68 +39,68 @@ enum {
kHSDevice = 8
};
-int GnapEngine::scene40_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- return isFlag(kGFUnk23) ? 0x01 : 0x00;
+Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
}
-void GnapEngine::scene40_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_DISABLED | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitCave, 169, 510, 264, 600, SF_EXIT_D_CURSOR, 0, 8);
- setHotspot(kHSExitToyStand, 238, 297, 328, 376, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitBBQ, 328, 220, 401, 306, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitUfo, 421, 215, 501, 282, SF_EXIT_U_CURSOR, 0, 8);
- setHotspot(kHSExitKissinBooth, 476, 284, 556, 345, SF_EXIT_R_CURSOR, 0, 8);
- setHotspot(kHSExitDancefloor, 317, 455, 445, 600, SF_EXIT_D_CURSOR, 0, 8);
- setHotspot(kHSExitShoe, 455, 346, 549, 417, SF_EXIT_D_CURSOR, 0, 8);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 9;
+int Scene40::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return _vm->isFlag(kGFUnk23) ? 0x01 : 0x00;
}
-void GnapEngine::scene40_run() {
-
- queueInsertDeviceIcon();
- endSceneInit();
+void Scene40::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_DISABLED | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitCave, 169, 510, 264, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitToyStand, 238, 297, 328, 376, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitBBQ, 328, 220, 401, 306, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitUfo, 421, 215, 501, 282, SF_EXIT_U_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitKissinBooth, 476, 284, 556, 345, SF_EXIT_R_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitDancefloor, 317, 455, 445, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitShoe, 455, 346, 549, 417, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+}
- while (!_sceneDone) {
+void Scene40::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->endSceneInit();
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene40_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -107,87 +108,82 @@ void GnapEngine::scene40_run() {
break;
case kHSExitCave:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 39;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 39;
+ _vm->_sceneDone = true;
}
break;
case kHSExitToyStand:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 41;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 41;
+ _vm->_sceneDone = true;
}
break;
case kHSExitBBQ:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 42;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 42;
+ _vm->_sceneDone = true;
}
break;
case kHSExitUfo:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 43;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 43;
+ _vm->_sceneDone = true;
}
break;
case kHSExitKissinBooth:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 44;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 44;
+ _vm->_sceneDone = true;
}
break;
case kHSExitDancefloor:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 45;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 45;
+ _vm->_sceneDone = true;
}
break;
case kHSExitShoe:
- if (_gnapActionStatus < 0) {
- _newSceneNum = 46;
- _sceneDone = true;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 46;
+ _vm->_sceneDone = true;
}
break;
default:
- if (_mouseClickState._left && _gnapActionStatus < 0)
- _mouseClickState._left = false;
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0)
+ _vm->_mouseClickState._left = false;
break;
}
- scene40_updateAnimations();
-
- checkGameKeys();
+ updateAnimations();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene40_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene40_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- if (_gnapActionStatus)
- _gnapActionStatus = -1;
+void Scene40::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus)
+ _vm->_gnapActionStatus = -1;
else
- _sceneDone = true;
+ _vm->_sceneDone = true;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene40.h b/engines/gnap/scenes/scene40.h
new file mode 100644
index 0000000..f4f1010
--- /dev/null
+++ b/engines/gnap/scenes/scene40.h
@@ -0,0 +1,46 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE40_H
+#define GNAP_SCENE40_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene40: public Scene {
+public:
+ Scene40(GnapEngine *vm);
+ ~Scene40() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE40_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index cd793fd..291fe73 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -61,6 +61,7 @@
#include "gnap/scenes/scene33.h"
#include "gnap/scenes/scene38.h"
#include "gnap/scenes/scene39.h"
+#include "gnap/scenes/scene40.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -348,8 +349,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 40:
- backgroundId = scene40_init();
- scene40_updateHotspots();
+ _scene = new Scene40(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -666,7 +668,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 40:
- scene40_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: ad06f53b6219c66d8ee2e68475ed8c773d99f6ed
https://github.com/scummvm/scummvm/commit/ad06f53b6219c66d8ee2e68475ed8c773d99f6ed
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 41
Changed paths:
A engines/gnap/scenes/scene41.h
engines/gnap/gnap.h
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 1864d66..678bdad 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,14 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 41
- int _s41_currKidSequenceId, _s41_nextKidSequenceId;
- int _s41_currToyVendorSequenceId, _s41_nextToyVendorSequenceId;
- int scene41_init();
- void scene41_updateHotspots();
- void scene41_run();
- void scene41_updateAnimations();
-
// Scene 42
int _s42_currBBQVendorSequenceId;
int _s42_nextBBQVendorSequenceId;
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index c7f2789..0cc83ff 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene41.h"
namespace Gnap {
@@ -58,188 +59,189 @@ enum {
kASUfoGumAttached = 9
};
-int GnapEngine::scene41_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
+Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
+ _s41_currKidSequenceId = -1;
+ _s41_nextKidSequenceId = -1;
+ _s41_currToyVendorSequenceId = -1;
+ _s41_nextToyVendorSequenceId = -1;
+}
+
+int Scene41::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
return 0x129;
}
-void GnapEngine::scene41_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 500, SF_EXIT_L_CURSOR | SF_DISABLED);
- setHotspot(kHSUfoExitRight, 790, 0, 799, 500, SF_EXIT_R_CURSOR);
- setHotspot(kHSUfoWalkArea1, 0, 0, 800, 470, SF_DISABLED);
- setDeviceHotspot(kHSUfoDevice, -1, -1, -1, -1);
- _hotspotsCount = 5;
+void Scene41::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 500, SF_EXIT_L_CURSOR | SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 500, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHSUfoWalkArea1, 0, 0, 800, 470, SF_DISABLED);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 5;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitCave, 150, 590, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExit, 0, 100, 10, 599, SF_EXIT_L_CURSOR | SF_DISABLED, 0, 8);
- setHotspot(kHSExitBBQ, 790, 100, 799, 599, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- setHotspot(kHSToyVendor, 320, 150, 430, 310, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSKid, 615, 340, 710, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSToyUfo, 0, 0, 0, 0, SF_GRAB_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 800, 470);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 9;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitCave, 150, 590, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExit, 0, 100, 10, 599, SF_EXIT_L_CURSOR | SF_DISABLED, 0, 8);
+ _vm->setHotspot(kHSExitBBQ, 790, 100, 799, 599, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHSToyVendor, 320, 150, 430, 310, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSKid, 615, 340, 710, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSToyUfo, 0, 0, 0, 0, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 470);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
}
}
-void GnapEngine::scene41_run() {
- queueInsertDeviceIcon();
+void Scene41::run() {
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoX = 770;
- if (_toyUfoY < 0 || _toyUfoY > 300)
- _toyUfoY = 150;
- if (!_timers[9])
- _gnapActionStatus = kASGiveBackToyUfo;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoX = 770;
+ if (_vm->_toyUfoY < 0 || _vm->_toyUfoY > 300)
+ _vm->_toyUfoY = 150;
+ if (!_vm->_timers[9])
+ _vm->_gnapActionStatus = kASGiveBackToyUfo;
} else {
- if (!isFlag(kGFUnk16) && !isFlag(kGFJointTaken) && !isFlag(kGFUnk18) && !isFlag(kGFGroceryStoreHatTaken))
- toyUfoSetStatus(kGFUnk16);
- _toyUfoX = 600;
- _toyUfoY = 200;
+ if (!_vm->isFlag(kGFUnk16) && !_vm->isFlag(kGFJointTaken) && !_vm->isFlag(kGFUnk18) && !_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->toyUfoSetStatus(kGFUnk16);
+ _vm->_toyUfoX = 600;
+ _vm->_toyUfoY = 200;
}
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 2);
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
- _gameSys->insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_gameSys->insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO))
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
_s41_currKidSequenceId = 0x11B;
else
_s41_currKidSequenceId = 0x11D;
_s41_nextKidSequenceId = -1;
- _gameSys->setAnimation(_s41_currKidSequenceId, 1, 4);
- _gameSys->insertSequence(_s41_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_currKidSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(_s41_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_s41_currToyVendorSequenceId = 0x118;
_s41_nextToyVendorSequenceId = -1;
- _gameSys->setAnimation(0x118, 1, 3);
- _gameSys->insertSequence(_s41_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x118, 1, 3);
+ _vm->_gameSys->insertSequence(_s41_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- _gnapSequenceId = 0x120;
- _gnapSequenceDatNum = 0;
- _gnapIdleFacing = kDirUpRight;
- _gnapX = 7;
- _gnapY = 7;
- _gnapId = 140;
- _gameSys->insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- initPlatypusPos(8, 10, kDirBottomLeft);
- endSceneInit();
- } else if (_prevSceneNum == 45) {
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-2, 8, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- } else if (_prevSceneNum == 42) {
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(11, 9, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_gnapSequenceId = 0x120;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapX = 7;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ _vm->_gameSys->insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->initPlatypusPos(8, 10, kDirBottomLeft);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 45) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-2, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 42) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 8, kDirBottomRight);
- initPlatypusPos(6, 8, kDirBottomLeft);
- endSceneInit();
+ _vm->initGnapPos(5, 8, kDirBottomRight);
+ _vm->initPlatypusPos(6, 8, kDirBottomLeft);
+ _vm->endSceneInit();
}
- _timers[4] = getRandom(100) + 100;
- _timers[5] = getRandom(30) + 20;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- if (!isFlag(kGFGnapControlsToyUFO)) {
- _hotspots[kHSToyUfo]._x1 = _toyUfoX - 25;
- _hotspots[kHSToyUfo]._y1 = _toyUfoY - 20;
- _hotspots[kHSToyUfo]._x2 = _toyUfoX + 25;
- _hotspots[kHSToyUfo]._y2 = _toyUfoY + 20;
+ if (!_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_hotspots[kHSToyUfo]._x1 = _vm->_toyUfoX - 25;
+ _vm->_hotspots[kHSToyUfo]._y1 = _vm->_toyUfoY - 20;
+ _vm->_hotspots[kHSToyUfo]._x2 = _vm->_toyUfoX + 25;
+ _vm->_hotspots[kHSToyUfo]._y2 = _vm->_toyUfoY + 20;
}
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
-
- switch (_sceneClickedHotspot) {
-
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = kASToyUfoLeaveScene;
- _newSceneNum = 45;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
+ _vm->_newSceneNum = 45;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = kASToyUfoLeaveScene;
- _newSceneNum = 42;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
+ _vm->_newSceneNum = 42;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
}
break;
case kHSUfoDevice:
- runMenu();
- scene41_updateHotspots();
- _timers[4] = getRandom(100) + 100;
- _timers[5] = getRandom(30) + 20;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
break;
-
}
-
} else {
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene41_updateHotspots();
- _timers[4] = getRandom(100) + 100;
- _timers[5] = getRandom(30) + 20;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -247,151 +249,151 @@ void GnapEngine::scene41_run() {
break;
case kHSExitCave:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitCave].x, _hotspotsWalkPos[kHSExitCave].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- _newSceneNum = 40;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCave].x, _vm->_hotspotsWalkPos[kHSExitCave].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_newSceneNum = 40;
break;
case kHSExit:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExit].x, -1, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExit].x, -1, -1, 0x107CF, 1);
- _newSceneNum = 45;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExit].x, -1, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExit].x, -1, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 45;
break;
case kHSExitBBQ:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, -1, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, -1, -1, 0x107CD, 1);
- _newSceneNum = 42;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, -1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 42;
break;
case kHSToyVendor:
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _gnapActionStatus = kASUseQuarterWithToyVendor;
- gnapWalkTo(4, 7, 0, 0x107BB, 9);
- playGnapShowItem(_grabCursorSpriteIndex, 5, 0);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(4, 7, 5, 0);
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->_gnapActionStatus = kASUseQuarterWithToyVendor;
+ _vm->gnapWalkTo(4, 7, 0, 0x107BB, 9);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 7, 5, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(5, 0);
+ _vm->playGnapMoan1(5, 0);
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(4, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkToyVendor;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkToyVendor;
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSKid:
- if (_grabCursorSpriteIndex == kItemChickenBucket) {
- gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASUseChickenBucketWithKid;
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(7, 7, 8, 0);
+ if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASUseChickenBucketWithKid;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 7, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(9, 0);
+ _vm->playGnapScratchingHead(9, 0);
break;
case GRAB_CURSOR:
- gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _gnapIdleFacing = kDirUpRight;
- _gnapActionStatus = kASGrabKid;
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kASGrabKid;
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(7, 7, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSToyUfo:
- if (_grabCursorSpriteIndex == kItemGum) {
- playGnapPullOutDevice(9, 0);
- _gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, 0);
- _gnapActionStatus = kASUseGumWithToyUfo;
+ if (_vm->_grabCursorSpriteIndex == kItemGum) {
+ _vm->playGnapPullOutDevice(9, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kASUseGumWithToyUfo;
}
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (isFlag(kGFGnapControlsToyUFO)) {
- if (!_timers[9] && _gnapActionStatus < 0) {
- _gnapActionStatus = kASGiveBackToyUfo;
- if (_gnapSequenceId == 0x121 || _gnapSequenceId == 0x122) {
- _gameSys->insertSequence(0x123, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x123;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x123, _gnapId, 0);
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
+ _vm->_gnapActionStatus = kASGiveBackToyUfo;
+ if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x122) {
+ _vm->_gameSys->insertSequence(0x123, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x123;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x123, _vm->_gnapId, 0);
}
}
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO)) {
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
int sequenceId;
- if (_leftClickMouseX >= 400) {
- if (_gnapSequenceId == 0x11F || _gnapSequenceId == 0x120 || _gnapSequenceId == 0x123 || _gnapSequenceId == 0x126)
+ if (_vm->_leftClickMouseX >= 400) {
+ if (_vm->_gnapSequenceId == 0x11F || _vm->_gnapSequenceId == 0x120 || _vm->_gnapSequenceId == 0x123 || _vm->_gnapSequenceId == 0x126)
sequenceId = 0x120;
- else if (_leftClickMouseX - _toyUfoX >= 400)
+ else if (_vm->_leftClickMouseX - _vm->_toyUfoX >= 400)
sequenceId = 0x126;
else
sequenceId = 0x123;
} else {
- if (_gnapSequenceId == 0x121 || _gnapSequenceId == 0x125 || _gnapSequenceId == 0x122)
+ if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x125 || _vm->_gnapSequenceId == 0x122)
sequenceId = 0x122;
- else if (_toyUfoX - _leftClickMouseX >= 400)
+ else if (_vm->_toyUfoX - _vm->_leftClickMouseX >= 400)
sequenceId = 0x125;
else
sequenceId = 0x121;
}
- _gameSys->insertSequence(sequenceId, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = sequenceId;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(sequenceId, _gnapId, 0);
- _toyUfoActionStatus = kASToyUfoRefresh;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
+ _vm->_gameSys->insertSequence(sequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = sequenceId;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(sequenceId, _vm->_gnapId, 0);
+ _vm->_toyUfoActionStatus = kASToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene41_updateAnimations();
+ updateAnimations();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
- switch (getRandom(3)) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
+ switch (_vm->getRandom(3)) {
case 0:
_s41_nextToyVendorSequenceId = 0x113;
break;
@@ -406,12 +408,12 @@ void GnapEngine::scene41_run() {
_s41_nextToyVendorSequenceId = -1;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(30) + 20;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
- if (isFlag(kGFGnapControlsToyUFO))
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
_s41_nextKidSequenceId = 0x11B;
- else if (getRandom(3) != 0)
+ else if (_vm->getRandom(3) != 0)
_s41_nextKidSequenceId = 0x11D;
else
_s41_nextKidSequenceId = 0x11E;
@@ -419,168 +421,163 @@ void GnapEngine::scene41_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene41_updateHotspots();
- _timers[4] = getRandom(100) + 100;
- _timers[5] = getRandom(30) + 20;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
}
-void GnapEngine::scene41_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- switch (_gnapActionStatus) {
+void Scene41::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _gameSys->setAnimation(0, 0, 0);
- _sceneDone = true;
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
break;
case kASUseQuarterWithToyVendor:
- _gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 0);
_s41_nextToyVendorSequenceId = 0x114;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASTalkToyVendor:
- _gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 0);
_s41_nextToyVendorSequenceId = 0x116;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
case kASUseGumWithToyUfo:
- _gameSys->setAnimation(0, 0, 0);
- playGnapUseDevice(9, 0);
- _gnapActionStatus = -1;
- setGrabCursorSprite(-1);
- invRemove(kItemGum);
- _toyUfoActionStatus = kASUfoGumAttached;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->playGnapUseDevice(9, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemGum);
+ _vm->_toyUfoActionStatus = kASUfoGumAttached;
break;
case kASUseChickenBucketWithKid:
- if (_gameSys->getAnimationStatus(4) == 2) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- setGrabCursorSprite(-1);
- _gameSys->insertSequence(0x11F, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x11F;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x11F, _gnapId, 0);
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x11F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x11F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x11F, _vm->_gnapId, 0);
_s41_nextKidSequenceId = 0x11A;
- _gameSys->insertSequence(0x11A, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(0x11A, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
_s41_currKidSequenceId = _s41_nextKidSequenceId;
_s41_nextKidSequenceId = 0x11B;
- _timers[5] = getRandom(30) + 20;
- _gnapActionStatus = -1;
- setFlag(kGFGnapControlsToyUFO);
- scene41_updateHotspots();
- _timers[9] = 600;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
+ _vm->setFlag(kGFGnapControlsToyUFO);
+ updateHotspots();
+ _vm->_timers[9] = 600;
}
break;
case kASGrabKid:
- if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- _gameSys->insertSequence(0x110, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x110;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x110, _gnapId, 0);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x110, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x110;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x110, _vm->_gnapId, 0);
_s41_nextToyVendorSequenceId = 0x111;
- _gameSys->insertSequence(0x111, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ _vm->_gameSys->insertSequence(0x111, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
_s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
_s41_nextToyVendorSequenceId = -1;
- _timers[4] = getRandom(100) + 100;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
_s41_nextKidSequenceId = 0x10F;
- _gameSys->insertSequence(0x10F, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(0x10F, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
_s41_currKidSequenceId = _s41_nextKidSequenceId;
_s41_nextKidSequenceId = -1;
- _timers[5] = getRandom(30) + 20;
- _gnapActionStatus = -1;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
}
break;
case kASGiveBackToyUfo:
- if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- _gameSys->insertSequence(0x124, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x124, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x124;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x124, _gnapId, 0);
+ _vm->_gnapSequenceId = 0x124;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x124, _vm->_gnapId, 0);
_s41_nextToyVendorSequenceId = 0x112;
- _gameSys->insertSequence(0x112, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ _vm->_gameSys->insertSequence(0x112, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
_s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
_s41_nextToyVendorSequenceId = -1;
- _timers[4] = getRandom(100) + 100;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
_s41_nextKidSequenceId = 0x11C;
- _gameSys->insertSequence(0x11C, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(0x11C, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
_s41_currKidSequenceId = _s41_nextKidSequenceId;
_s41_nextKidSequenceId = -1;
- _timers[5] = getRandom(30) + 20;
- _gnapActionStatus = -1;
- clearFlag(kGFGnapControlsToyUFO);
- scene41_updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ updateHotspots();
}
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case kASToyUfoLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASUfoGumAttached:
- _toyUfoNextSequenceId = 0x873;
- _gameSys->insertSequence(0x10873, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 365, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 2);
- toyUfoSetStatus(kGFJointTaken);
+ _vm->_toyUfoNextSequenceId = 0x873;
+ _vm->_gameSys->insertSequence(0x10873, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 365, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ _vm->toyUfoSetStatus(kGFJointTaken);
break;
default:
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, _toyUfoId + 1, _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- ++_toyUfoId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 2);
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
break;
}
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s41_nextToyVendorSequenceId != -1) {
- _gameSys->insertSequence(_s41_nextToyVendorSequenceId, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s41_nextToyVendorSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s41_nextToyVendorSequenceId, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
_s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
_s41_nextToyVendorSequenceId = -1;
- _timers[4] = getRandom(100) + 100;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s41_nextKidSequenceId != -1) {
- _gameSys->insertSequence(_s41_nextKidSequenceId, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s41_nextKidSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s41_nextKidSequenceId, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
_s41_currKidSequenceId = _s41_nextKidSequenceId;
_s41_nextKidSequenceId = -1;
- _timers[5] = getRandom(30) + 20;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
if (_s41_currKidSequenceId == 0x11E) {
- _toyUfoActionStatus = kASToyUfoRefresh;
- toyUfoFlyTo(getRandom(300) + 500, getRandom(225) + 75, 0, 799, 0, 300, 2);
+ _vm->_toyUfoActionStatus = kASToyUfoRefresh;
+ _vm->toyUfoFlyTo(_vm->getRandom(300) + 500, _vm->getRandom(225) + 75, 0, 799, 0, 300, 2);
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene41.h b/engines/gnap/scenes/scene41.h
new file mode 100644
index 0000000..91e8a1a
--- /dev/null
+++ b/engines/gnap/scenes/scene41.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE41_H
+#define GNAP_SCENE41_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene41: public Scene {
+public:
+ Scene41(GnapEngine *vm);
+ ~Scene41() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s41_currKidSequenceId;
+ int _s41_nextKidSequenceId;
+ int _s41_currToyVendorSequenceId;
+ int _s41_nextToyVendorSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE41_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 291fe73..dbc731c 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -62,6 +62,7 @@
#include "gnap/scenes/scene38.h"
#include "gnap/scenes/scene39.h"
#include "gnap/scenes/scene40.h"
+#include "gnap/scenes/scene41.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -356,8 +357,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 41:
- backgroundId = scene41_init();
- scene41_updateHotspots();
+ _scene = new Scene41(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -674,7 +676,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 41:
- scene41_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 6043c7842b34f1a551a0680610e352cbe1024443
https://github.com/scummvm/scummvm/commit/6043c7842b34f1a551a0680610e352cbe1024443
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 42
Changed paths:
A engines/gnap/scenes/scene42.h
engines/gnap/gnap.h
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 678bdad..7be814d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,15 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 42
- int _s42_currBBQVendorSequenceId;
- int _s42_nextBBQVendorSequenceId;
-
- int scene42_init();
- void scene42_updateHotspots();
- void scene42_run();
- void scene42_updateAnimations();
-
// Scene 43
int _s43_currTwoHeadedGuySequenceId;
int _s43_nextTwoHeadedGuySequenceId;
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 2ecce59..33f961d 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene42.h"
namespace Gnap {
@@ -56,168 +57,172 @@ enum {
kASToyUfoPickUpHotSauce = 7
};
-int GnapEngine::scene42_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- if (isFlag(kGFPictureTaken) || (isFlag(kGFUnk18) && isFlag(kGFUnk23)))
+Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
+ _s42_currBBQVendorSequenceId = -1;
+ _s42_nextBBQVendorSequenceId = -1;
+}
+
+int Scene42::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_vm->isFlag(kGFPictureTaken) || (_vm->isFlag(kGFUnk18) && _vm->isFlag(kGFUnk23)))
return 0x153;
return 0x152;
}
-void GnapEngine::scene42_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
- setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if ((isFlag(kGFPictureTaken) || isFlag(kGFUnk18)) && isFlag(kGFUnk23) && !isFlag(kGFUnk24))
- _hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
- _hotspotsCount = 5;
+void Scene42::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
+ if ((_vm->isFlag(kGFPictureTaken) || _vm->isFlag(kGFUnk18)) && _vm->isFlag(kGFUnk23) && !_vm->isFlag(kGFUnk24))
+ _vm->_hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
+ _vm->_hotspotsCount = 5;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitUfoParty, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitToyStand, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitUfo, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- setHotspot(kHSBBQVendor, 410, 200, 520, 365, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 8);
- setHotspot(kHSChickenLeg, 530, 340, 620, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 7);
- setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- setHotspot(kHSWalkArea2, 240, 0, 550, 495);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 9;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitUfoParty, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitToyStand, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitUfo, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHSBBQVendor, 410, 200, 520, 365, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 8);
+ _vm->setHotspot(kHSChickenLeg, 530, 340, 620, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHSWalkArea2, 240, 0, 550, 495);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
}
}
-void GnapEngine::scene42_run() {
-
- queueInsertDeviceIcon();
+void Scene42::run() {
+ _vm->queueInsertDeviceIcon();
_s42_currBBQVendorSequenceId = 0x14A;
_s42_nextBBQVendorSequenceId = -1;
- _gameSys->setAnimation(0x14A, 1, 2);
- _gameSys->insertSequence(_s42_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- if (_prevSceneNum == 43 && isFlag(kGFUnk18)) {
- _toyUfoSequenceId = 0x872;
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
- _toyUfoX = 317;
- _toyUfoY = 61;
- toyUfoSetStatus(kGFJointTaken);
- setFlag(kGFPictureTaken);
- _timers[9] = 600;
+ _vm->_gameSys->setAnimation(0x14A, 1, 2);
+ _vm->_gameSys->insertSequence(_s42_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ if (_vm->_prevSceneNum == 43 && _vm->isFlag(kGFUnk18)) {
+ _vm->_toyUfoSequenceId = 0x872;
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_toyUfoX = 317;
+ _vm->_toyUfoY = 61;
+ _vm->toyUfoSetStatus(kGFJointTaken);
+ _vm->setFlag(kGFPictureTaken);
+ _vm->_timers[9] = 600;
} else {
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
- if (_prevSceneNum == 41)
- _toyUfoX = 30;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 41)
+ _vm->_toyUfoX = 30;
else
- _toyUfoX = 770;
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
+ _vm->_toyUfoX = 770;
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
}
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 3);
- endSceneInit();
- if (_toyUfoSequenceId == 0x872)
- setGrabCursorSprite(-1);
- } else if (_prevSceneNum == 41) {
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-1, 9, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
- } else if (_prevSceneNum == 43) {
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(11, 9, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->endSceneInit();
+ if (_vm->_toyUfoSequenceId == 0x872)
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_prevSceneNum == 41) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ } else if (_vm->_prevSceneNum == 43) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 11, kDirUpRight);
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107BA, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- switch (_sceneClickedHotspot) {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = kASToyUfoLeaveScene;
- _newSceneNum = 41;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
+ _vm->_newSceneNum = 41;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = kASToyUfoLeaveScene;
- _newSceneNum = 43;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
+ _vm->_newSceneNum = 43;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
}
break;
case kHSUfoHotSauce:
- if (isFlag(kGFJointTaken)) {
- _toyUfoActionStatus = kASToyUfoPickUpHotSauce;
- toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
- _timers[9] = 600;
+ if (_vm->isFlag(kGFJointTaken)) {
+ _vm->_toyUfoActionStatus = kASToyUfoPickUpHotSauce;
+ _vm->toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
+ _vm->_timers[9] = 600;
} else {
- _toyUfoActionStatus = kASToyUfoRefresh;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ _vm->_toyUfoActionStatus = kASToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
}
break;
case kHSUfoDevice:
- runMenu();
- scene42_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
}
} else {
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene42_updateHotspots();
- _timers[4] = getRandom(20) + 30;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -225,70 +230,70 @@ void GnapEngine::scene42_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = true;
- gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_platX, _hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
- _newSceneNum = 40;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_platX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 40;
break;
case kHSExitToyStand:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitToyStand].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitToyStand].x, _hotspotsWalkPos[kHSExitToyStand].y, -1, 0x107CF, 1);
- _newSceneNum = 41;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStand].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStand].x, _vm->_hotspotsWalkPos[kHSExitToyStand].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 41;
break;
case kHSExitUfo:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = kASLeaveScene;
- platypusWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _hotspotsWalkPos[kHSExitUfo].y, -1, 0x107CD, 1);
- _newSceneNum = 43;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_hotspotsWalkPos[kHSExitUfo].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 43;
break;
case kHSBBQVendor:
- if (_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- gnapWalkTo(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, 0, 0x107BB, 1);
- _gnapActionStatus = kASUseQuarterWithBBQVendor;
- if (_platY < 9)
- platypusWalkTo(_platX, 9, -1, -1, 1);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, _hotspotsWalkPos[kHSBBQVendor].x + 1, 0);
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kASUseQuarterWithBBQVendor;
+ if (_vm->_platY < 9)
+ _vm->platypusWalkTo(_vm->_platX, 9, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, _vm->_hotspotsWalkPos[kHSBBQVendor].x + 1, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_hotspotsWalkPos[kHSBBQVendor].x - 1, 0);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSBBQVendor].x - 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSBBQVendor].x, _hotspotsWalkPos[kHSBBQVendor].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = kASTalkBBQVendor;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kASTalkBBQVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSChickenLeg:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSChickenLeg].x, _hotspotsWalkPos[kHSChickenLeg].y, _hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSChickenLeg].x, _vm->_hotspotsWalkPos[kHSChickenLeg].y, _vm->_hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(_hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
break;
case GRAB_CURSOR:
- gnapWalkTo(_hotspotsWalkPos[kHSChickenLeg].x, _hotspotsWalkPos[kHSChickenLeg].y, 0, 0x107BC, 1);
- _gnapActionStatus = kASGrabChickenLeg;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChickenLeg].x, _vm->_hotspotsWalkPos[kHSChickenLeg].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kASGrabChickenLeg;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -296,36 +301,36 @@ void GnapEngine::scene42_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoActionStatus = kASToyUfoRefresh;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = kASToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene42_updateAnimations();
+ updateAnimations();
- toyUfoCheckTimer();
+ _vm->toyUfoCheckTimer();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 30;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
- switch (getRandom(8)) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
+ switch (_vm->getRandom(8)) {
case 0:
_s42_nextBBQVendorSequenceId = 0x14C;
break;
@@ -349,143 +354,143 @@ void GnapEngine::scene42_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene42_updateHotspots();
- _timers[4] = getRandom(20) + 30;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene42_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- switch (_gnapActionStatus) {
+void Scene42::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
- _sceneDone = true;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_sceneDone = true;
break;
case kASTalkBBQVendor:
- _gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
_s42_nextBBQVendorSequenceId = 0x14B;
break;
case kASUseQuarterWithBBQVendor:
case kASGrabChickenLeg:
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
int sequenceId;
- if (_gnapActionStatus == kASUseQuarterWithBBQVendor) {
- invRemove(kItemDiceQuarterHole);
- invAdd(kItemChickenBucket);
- setGrabCursorSprite(-1);
+ if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor) {
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->invAdd(kItemChickenBucket);
+ _vm->setGrabCursorSprite(-1);
sequenceId = 0x150;
_s42_nextBBQVendorSequenceId = 0x148;
- } else if (isFlag(kGFUnk27)) {
- if (isFlag(kGFUnk28)) {
+ } else if (_vm->isFlag(kGFUnk27)) {
+ if (_vm->isFlag(kGFUnk28)) {
sequenceId = 0x7B7;
_s42_nextBBQVendorSequenceId = 0x145;
} else {
- setFlag(kGFUnk28);
+ _vm->setFlag(kGFUnk28);
sequenceId = 0x14F;
_s42_nextBBQVendorSequenceId = 0x147;
}
} else {
- setFlag(kGFUnk27);
+ _vm->setFlag(kGFUnk27);
sequenceId = 0x14E;
_s42_nextBBQVendorSequenceId = 0x146;
}
if (sequenceId == 0x7B7) {
- _gameSys->insertSequence(0x107B7, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, getSequenceTotalDuration(_s42_nextBBQVendorSequenceId),
- 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- _gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(_s42_nextBBQVendorSequenceId),
+ 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceDatNum = 1;
} else {
- _gameSys->insertSequence(sequenceId, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
+ _vm->_gameSys->insertSequence(sequenceId, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 0, 0);
- _gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceDatNum = 0;
}
- _gnapSequenceId = sequenceId;
- _gameSys->setAnimation(sequenceId | (_gnapSequenceDatNum << 16), _gnapId, 0);
- if (_gnapActionStatus == kASUseQuarterWithBBQVendor)
- _gnapActionStatus = kASUseQuarterWithBBQVendorDone;
+ _vm->_gnapSequenceId = sequenceId;
+ _vm->_gameSys->setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
+ if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor)
+ _vm->_gnapActionStatus = kASUseQuarterWithBBQVendorDone;
else
- _gnapActionStatus = -1;
- _gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
_s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
if (_s42_nextBBQVendorSequenceId == 0x145)
_s42_nextBBQVendorSequenceId = 0x14A;
else
_s42_nextBBQVendorSequenceId = -1;
- _timers[4] = getRandom(20) + 30;
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
}
break;
case kASUseQuarterWithBBQVendorDone:
- _gameSys->setAnimation(0, 0, 0);
- setGrabCursorSprite(kItemChickenBucket);
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->setGrabCursorSprite(kItemChickenBucket);
+ _vm->_gnapActionStatus = -1;
break;
default:
- _gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2 && _s42_nextBBQVendorSequenceId != -1) {
- _gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s42_nextBBQVendorSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
_s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
_s42_nextBBQVendorSequenceId = -1;
- _timers[4] = getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case kASToyUfoLeaveScene:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case kASToyUfoPickUpHotSauce:
- _gameSys->insertSequence(0x10870, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
- setFlag(kGFUnk24);
- scene42_updateHotspots();
- toyUfoSetStatus(kGFGroceryStoreHatTaken);
- _toyUfoSequenceId = 0x870;
- _gameSys->setAnimation(0x10870, _toyUfoId, 3);
- _toyUfoActionStatus = -1;
- _toyUfoX = 0x181;
- _toyUfoY = 53;
+ _vm->_gameSys->insertSequence(0x10870, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFUnk24);
+ updateHotspots();
+ _vm->toyUfoSetStatus(kGFGroceryStoreHatTaken);
+ _vm->_toyUfoSequenceId = 0x870;
+ _vm->_gameSys->setAnimation(0x10870, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoX = 0x181;
+ _vm->_toyUfoY = 53;
break;
default:
- if (_toyUfoSequenceId == 0x872) {
- hideCursor();
- addFullScreenSprite(0x13E, 255);
- _gameSys->setAnimation(0x151, 256, 0);
- _gameSys->insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- removeFullScreenSprite();
- showCursor();
+ if (_vm->_toyUfoSequenceId == 0x872) {
+ _vm->hideCursor();
+ _vm->addFullScreenSprite(0x13E, 255);
+ _vm->_gameSys->setAnimation(0x151, 256, 0);
+ _vm->_gameSys->insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
}
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, (_toyUfoId + 1) % 10, 3);
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, (_toyUfoId + 1) % 10,
- _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- _toyUfoId = (_toyUfoId + 1) % 10;
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10, 3);
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ _vm->_toyUfoId = (_vm->_toyUfoId + 1) % 10;
break;
}
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene42.h b/engines/gnap/scenes/scene42.h
new file mode 100644
index 0000000..a3008a2
--- /dev/null
+++ b/engines/gnap/scenes/scene42.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE42_H
+#define GNAP_SCENE42_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene42: public Scene {
+public:
+ Scene42(GnapEngine *vm);
+ ~Scene42() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s42_currBBQVendorSequenceId;
+ int _s42_nextBBQVendorSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE42_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index dbc731c..029fb9c 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -63,6 +63,7 @@
#include "gnap/scenes/scene39.h"
#include "gnap/scenes/scene40.h"
#include "gnap/scenes/scene41.h"
+#include "gnap/scenes/scene42.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -364,8 +365,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 42:
- backgroundId = scene42_init();
- scene42_updateHotspots();
+ _scene = new Scene42(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -682,7 +684,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 42:
- scene42_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 598fb5d87642fc4fd97b8c7818eb8f0f57f1b493
https://github.com/scummvm/scummvm/commit/598fb5d87642fc4fd97b8c7818eb8f0f57f1b493
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 43
Changed paths:
A engines/gnap/scenes/scene43.h
engines/gnap/gnap.h
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7be814d..3f6e932 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,15 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 43
- int _s43_currTwoHeadedGuySequenceId;
- int _s43_nextTwoHeadedGuySequenceId;
-
- int scene43_init();
- void scene43_updateHotspots();
- void scene43_run();
- void scene43_updateAnimations();
-
// Scene 44
int _s44_nextSpringGuySequenceId;
int _s44_nextKissingLadySequenceId;
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 5f74dfa..9c7b56a 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene43.h"
namespace Gnap {
@@ -47,183 +48,185 @@ enum {
kHSUfoDevice = 5
};
-int GnapEngine::scene43_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
+Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
+ _s43_currTwoHeadedGuySequenceId = -1;
+ _s43_nextTwoHeadedGuySequenceId = -1;
+}
+
+int Scene43::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
return 0x13F;
}
-void GnapEngine::scene43_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- setHotspot(kHSUfoKey, 140, 170, 185, 260, SF_GRAB_CURSOR);
- setHotspot(kHSUfoBucket, 475, 290, 545, 365, SF_DISABLED);
- setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if (isFlag(kGFGroceryStoreHatTaken))
- _hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
+void Scene43::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHSUfoKey, 140, 170, 185, 260, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSUfoBucket, 475, 290, 545, 365, SF_DISABLED);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
// NOTE Bug in the original. Key hotspot wasn't disabled.
- if (isFlag(kGFUnk14))
- _hotspots[kHSUfoKey]._flags = SF_DISABLED;
- _hotspotsCount = 6;
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_hotspots[kHSUfoKey]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 6;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitBBQ, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitKissinBooth, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- setHotspot(kHSTwoHeadedGuy, 470, 240, 700, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSKey, 140, 170, 185, 260, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSUfo, 110, 0, 690, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- setHotspot(kHSWalkArea2, 465, 0, 800, 493);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFUnk14))
- _hotspots[kHSKey]._flags = SF_DISABLED;
- _hotspotsCount = 10;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitBBQ, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitKissinBooth, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHSTwoHeadedGuy, 470, 240, 700, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSKey, 140, 170, 185, 260, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSUfo, 110, 0, 690, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHSWalkArea2, 465, 0, 800, 493);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_hotspots[kHSKey]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 10;
}
}
-void GnapEngine::scene43_run() {
-
- queueInsertDeviceIcon();
+void Scene43::run() {
+ _vm->queueInsertDeviceIcon();
- if (!isFlag(kGFUnk14))
- _gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFUnk14))
+ _vm->_gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
_s43_currTwoHeadedGuySequenceId = 0x13C;
_s43_nextTwoHeadedGuySequenceId = -1;
- _gameSys->setAnimation(0x13C, 1, 2);
- _gameSys->insertSequence(_s43_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x13C, 1, 2);
+ _vm->_gameSys->insertSequence(_s43_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
- if (_prevSceneNum == 42)
- _toyUfoX = 30;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 42)
+ _vm->_toyUfoX = 30;
else
- _toyUfoX = 770;
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 3);
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
- endSceneInit();
+ _vm->_toyUfoX = 770;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
} else {
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 42:
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-1, 9, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(11, 9, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
- initGnapPos(4, 7, kDirBottomLeft);
- initPlatypusPos(11, 8, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->initGnapPos(4, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
default:
- initGnapPos(5, 11, kDirUpRight);
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(5, 8, -1, 0x107BA, 1);
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
}
}
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
-
- switch (_sceneClickedHotspot) {
-
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoDevice:
- runMenu();
- scene43_updateHotspots();
- _timers[4] = getRandom(100) + 100;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
break;
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 4;
- _newSceneNum = 42;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 4;
+ _vm->_newSceneNum = 42;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 4;
- _newSceneNum = 44;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 4;
+ _vm->_newSceneNum = 44;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
}
break;
case kHSUfoKey:
- if (isFlag(kGFJointTaken)) {
- _toyUfoActionStatus = 6;
- toyUfoFlyTo(163, 145, 0, 799, 0, 300, 3);
+ if (_vm->isFlag(kGFJointTaken)) {
+ _vm->_toyUfoActionStatus = 6;
+ _vm->toyUfoFlyTo(163, 145, 0, 799, 0, 300, 3);
} else {
- _toyUfoActionStatus = 5;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ _vm->_toyUfoActionStatus = 5;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
}
break;
case kHSUfoBucket:
- _toyUfoActionStatus = 7;
- toyUfoFlyTo(497, 143, 0, 799, 0, 300, 3);
- _timers[9] = 600;
+ _vm->_toyUfoActionStatus = 7;
+ _vm->toyUfoFlyTo(497, 143, 0, 799, 0, 300, 3);
+ _vm->_timers[9] = 600;
break;
}
} else {
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene43_updateHotspots();
- _timers[4] = getRandom(100) + 100;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -231,45 +234,45 @@ void GnapEngine::scene43_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
- _newSceneNum = 40;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 40;
break;
case kHSExitBBQ:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitBBQ].x, _hotspotsWalkPos[kHSExitBBQ].y, -1, 0x107CF, 1);
- _newSceneNum = 42;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, _vm->_hotspotsWalkPos[kHSExitBBQ].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 42;
break;
case kHSExitKissinBooth:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _hotspotsWalkPos[kHSExitKissinBooth].y, -1, 0x107CD, 1);
- _newSceneNum = 44;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_hotspotsWalkPos[kHSExitKissinBooth].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 44;
break;
case kHSTwoHeadedGuy:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(6, 8, 7, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 8, 7, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(7, 0);
+ _vm->playGnapScratchingHead(7, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(5, 8, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 2;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 2;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -277,21 +280,21 @@ void GnapEngine::scene43_run() {
case kHSKey:
case kHSUfo:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(3, 7, 2, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 2, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(0, 0);
+ _vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(3, 7, 0, 67515, 1);
- _gnapActionStatus = 1;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(3, 7, 0, 67515, 1);
+ _vm->_gnapActionStatus = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -299,35 +302,35 @@ void GnapEngine::scene43_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO) && (_toyUfoActionStatus == 5 || _toyUfoActionStatus == -1)) {
- _toyUfoActionStatus = 5;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) {
+ _vm->_toyUfoActionStatus = 5;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene43_updateAnimations();
+ updateAnimations();
- toyUfoCheckTimer();
+ _vm->toyUfoCheckTimer();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
- if (!_timers[4] && (!isFlag(kGFGnapControlsToyUFO) || !isFlag(kGFGroceryStoreHatTaken))) {
- _timers[4] = getRandom(100) + 100;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
- switch (getRandom(5)) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
+ switch (_vm->getRandom(5)) {
case 0:
_s43_nextTwoHeadedGuySequenceId = 0x13C;
break;
@@ -350,127 +353,126 @@ void GnapEngine::scene43_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene43_updateHotspots();
- _timers[4] = getRandom(100) + 100;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- if (_newSceneNum == 54)
- clearFlag(kGFGnapControlsToyUFO);
+ if (_vm->_newSceneNum == 54)
+ _vm->clearFlag(kGFGnapControlsToyUFO);
}
-void GnapEngine::scene43_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- switch (_gnapActionStatus) {
+void Scene43::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
case 0:
- _gameSys->setAnimation(0, 0, 0);
- _sceneDone = true;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_sceneDone = true;
break;
case 1:
- if (_gameSys->getAnimationStatus(2) == 2) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = getRandom(50) + 200;
- _gameSys->insertSequence(0x13D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x13D;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x13D, _gnapId, 0);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x13D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x13D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x13D, _vm->_gnapId, 0);
_s43_nextTwoHeadedGuySequenceId = 0x13B;
- _gameSys->insertSequence(0x13B, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
+ _vm->_gameSys->insertSequence(0x13B, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
_s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
_s43_nextTwoHeadedGuySequenceId = -1;
- _timers[4] = getRandom(100) + 100;
- _gnapActionStatus = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_gnapActionStatus = -1;
}
break;
default:
- _gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_s43_currTwoHeadedGuySequenceId == 0x13A) {
- if (isFlag(kGFGroceryStoreHatTaken)) {
+ if (_vm->isFlag(kGFGroceryStoreHatTaken)) {
_s43_nextTwoHeadedGuySequenceId = 0x13E;
- stopSound(0x108F6);
- } else if (getRandom(2) != 0) {
+ _vm->stopSound(0x108F6);
+ } else if (_vm->getRandom(2) != 0) {
_s43_nextTwoHeadedGuySequenceId = 0x137;
} else {
_s43_nextTwoHeadedGuySequenceId = 0x138;
}
} else if (_s43_currTwoHeadedGuySequenceId == 0x13E) {
- _sceneDone = true;
- _newSceneNum = 54;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 54;
}
if (_s43_nextTwoHeadedGuySequenceId != -1) {
- _gameSys->insertSequence(_s43_nextTwoHeadedGuySequenceId, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
+ _vm->_gameSys->insertSequence(_s43_nextTwoHeadedGuySequenceId, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
_s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
_s43_nextTwoHeadedGuySequenceId = -1;
- _timers[4] = getRandom(100) + 100;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case 4:
- _sceneDone = true;
- _toyUfoActionStatus = -1;
+ _vm->_sceneDone = true;
+ _vm->_toyUfoActionStatus = -1;
break;
case 6:
- _gameSys->insertSequence(0x10871, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
- _gameSys->removeSequence(0x1086F, 1, true);
- setFlag(kGFUnk14);
- scene43_updateHotspots();
- toyUfoSetStatus(kGFUnk18);
- _toyUfoSequenceId = 0x871;
- _gameSys->setAnimation(0x10871, _toyUfoId, 3);
- _toyUfoActionStatus = -1;
- _toyUfoX = 96;
- _toyUfoY = 131;
+ _vm->_gameSys->insertSequence(0x10871, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x1086F, 1, true);
+ _vm->setFlag(kGFUnk14);
+ updateHotspots();
+ _vm->toyUfoSetStatus(kGFUnk18);
+ _vm->_toyUfoSequenceId = 0x871;
+ _vm->_gameSys->setAnimation(0x10871, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoX = 96;
+ _vm->_toyUfoY = 131;
break;
case 7:
- _gameSys->insertSequence(0x10874, _toyUfoId, _toyUfoSequenceId | 0x10000, _toyUfoId, kSeqSyncWait, 0, 0, 0);
- _toyUfoSequenceId = 0x874;
- _gameSys->setAnimation(0x10874, _toyUfoId, 3);
- _toyUfoActionStatus = 8;
- setFlag(kGFJointTaken);
- _gnapActionStatus = 3;
+ _vm->_gameSys->insertSequence(0x10874, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ _vm->_toyUfoSequenceId = 0x874;
+ _vm->_gameSys->setAnimation(0x10874, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = 8;
+ _vm->setFlag(kGFJointTaken);
+ _vm->_gnapActionStatus = 3;
break;
case 8:
_s43_nextTwoHeadedGuySequenceId = 0x13A;
- _toyUfoX = 514;
- _toyUfoY = 125;
- toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
- _toyUfoActionStatus = 9;
+ _vm->_toyUfoX = 514;
+ _vm->_toyUfoY = 125;
+ _vm->toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
+ _vm->_toyUfoActionStatus = 9;
break;
case 9:
// Nothing
break;
default:
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, _toyUfoId + 1,
- _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- ++_toyUfoId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 3);
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
break;
}
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene43.h b/engines/gnap/scenes/scene43.h
new file mode 100644
index 0000000..427d18b
--- /dev/null
+++ b/engines/gnap/scenes/scene43.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE43_H
+#define GNAP_SCENE43_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene43: public Scene {
+public:
+ Scene43(GnapEngine *vm);
+ ~Scene43() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s43_currTwoHeadedGuySequenceId;
+ int _s43_nextTwoHeadedGuySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE43_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 029fb9c..17ec6b0 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -64,6 +64,7 @@
#include "gnap/scenes/scene40.h"
#include "gnap/scenes/scene41.h"
#include "gnap/scenes/scene42.h"
+#include "gnap/scenes/scene43.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -372,8 +373,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 43:
- backgroundId = scene43_init();
- scene43_updateHotspots();
+ _scene = new Scene43(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -690,7 +692,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 43:
- scene43_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 206a18dbfacf1292601cbc4db2893bea0c938059
https://github.com/scummvm/scummvm/commit/206a18dbfacf1292601cbc4db2893bea0c938059
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 44
Changed paths:
A engines/gnap/scenes/scene44.h
engines/gnap/gnap.h
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 3f6e932..b741730 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,16 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 44
- int _s44_nextSpringGuySequenceId;
- int _s44_nextKissingLadySequenceId;
- int _s44_currSpringGuySequenceId;
- int _s44_currKissingLadySequenceId;
- int scene44_init();
- void scene44_updateHotspots();
- void scene44_run();
- void scene44_updateAnimations();
-
// Scene 45
int _s45_currDancerSequenceId;
int scene45_init();
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index ffd639d..6c3bd90 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene44.h"
namespace Gnap {
@@ -45,196 +46,199 @@ enum {
kHSUfoDevice = 3
};
-int GnapEngine::scene44_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- _gameSys->setAnimation(0, 0, 3);
+Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
+ _s44_nextSpringGuySequenceId = -1;
+ _s44_nextKissingLadySequenceId = -1;
+ _s44_currSpringGuySequenceId = -1;
+ _s44_currKissingLadySequenceId = -1;
+}
+
+int Scene44::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 3);
return 0xFF;
}
-void GnapEngine::scene44_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _hotspotsCount = 4;
+void Scene44::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitUfo, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitShow, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- setHotspot(kHSKissingLady, 300, 160, 400, 315, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- setHotspot(kHSSpring, 580, 310, 635, 375, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSSpringGuy, 610, 375, 690, 515, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- setHotspot(kHSWalkArea2, 617, 0, 800, 600);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFUnk13))
- _hotspots[kHSKissingLady]._flags = SF_DISABLED;
- if (isFlag(kGFSpringTaken))
- _hotspots[kHSSpring]._flags = SF_DISABLED;
- _hotspotsCount = 10;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitUfo, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitShow, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHSKissingLady, 300, 160, 400, 315, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHSSpring, 580, 310, 635, 375, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSSpringGuy, 610, 375, 690, 515, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHSWalkArea2, 617, 0, 800, 600);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk13))
+ _vm->_hotspots[kHSKissingLady]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFSpringTaken))
+ _vm->_hotspots[kHSSpring]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 10;
}
}
-void GnapEngine::scene44_run() {
- queueInsertDeviceIcon();
+void Scene44::run() {
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
- _gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFSpringTaken))
+ if (_vm->isFlag(kGFSpringTaken))
_s44_currSpringGuySequenceId = 0xF8;
else
_s44_currSpringGuySequenceId = 0xF9;
_s44_nextSpringGuySequenceId = -1;
- _gameSys->setAnimation(_s44_currSpringGuySequenceId, 1, 4);
- _gameSys->insertSequence(_s44_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s44_currSpringGuySequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(_s44_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFUnk13)) {
- if (_prevSceneNum != 50 || _sceneSavegameLoaded) {
+ if (_vm->isFlag(kGFUnk13)) {
+ if (_vm->_prevSceneNum != 50 || _vm->_sceneSavegameLoaded) {
_s44_currKissingLadySequenceId = 0xF6;
_s44_nextKissingLadySequenceId = -1;
} else {
- setGrabCursorSprite(kItemGum);
+ _vm->setGrabCursorSprite(kItemGum);
_s44_currKissingLadySequenceId = 0xF5;
_s44_nextKissingLadySequenceId = 0xF6;
- _gameSys->setAnimation(0xF5, 1, 2);
+ _vm->_gameSys->setAnimation(0xF5, 1, 2);
}
} else {
_s44_currKissingLadySequenceId = 0xEC;
_s44_nextKissingLadySequenceId = -1;
- _gameSys->setAnimation(0xEC, 1, 2);
+ _vm->_gameSys->setAnimation(0xEC, 1, 2);
}
- _gameSys->insertSequence(_s44_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s44_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
- if (_prevSceneNum == 43)
- _toyUfoX = 30;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 43)
+ _vm->_toyUfoX = 30;
else
- _toyUfoX = 770;
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 3);
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
- endSceneInit();
+ _vm->_toyUfoX = 770;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
} else {
- switch (_prevSceneNum) {
+ switch (_vm->_prevSceneNum) {
case 43:
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-1, 7, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 7, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(11, 8, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(6, 8, -1, 0x107BA, 1);
- platypusWalkTo(7, 8, -1, 0x107D2, 1);
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
break;
case 50:
- initGnapPos(4, 8, kDirBottomRight);
- if (_sceneSavegameLoaded) {
- initPlatypusPos(_hotspotsWalkPos[4].x, _hotspotsWalkPos[4].y, kDirUnk4);
- } else if (!isFlag(kGFUnk13)) {
- _timers[0] = 50;
- _timers[1] = 20;
- _platX = 5;
- _platY = 8;
- _platypusSequenceId = 0xFD;
- _platypusFacing = kDirNone;
- _platypusId = 160;
- _platypusSequenceDatNum = 0;
- _gameSys->insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->initGnapPos(4, 8, kDirBottomRight);
+ if (_vm->_sceneSavegameLoaded) {
+ _vm->initPlatypusPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
+ } else if (!_vm->isFlag(kGFUnk13)) {
+ _vm->_timers[0] = 50;
+ _vm->_timers[1] = 20;
+ _vm->_platX = 5;
+ _vm->_platY = 8;
+ _vm->_platypusSequenceId = 0xFD;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
}
- endSceneInit();
+ _vm->endSceneInit();
break;
default:
- initGnapPos(5, 11, kDirUpRight);
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(6, 8, -1, 0x107C2, 1);
- gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
break;
}
}
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- switch (_sceneClickedHotspot) {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 6;
- _newSceneNum = 43;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 6;
+ _vm->_newSceneNum = 43;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 6;
- _newSceneNum = 46;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 6;
+ _vm->_newSceneNum = 46;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
}
break;
case kHSUfoDevice:
- runMenu();
- scene44_updateHotspots();
- _timers[4] = getRandom(20) + 20;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
break;
-
}
-
- } else if (_sceneClickedHotspot <= 9) {
-
- switch (_sceneClickedHotspot) {
-
+ } else if (_vm->_sceneClickedHotspot <= 9) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene44_updateHotspots();
- _timers[4] = getRandom(20) + 20;
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -242,101 +246,101 @@ void GnapEngine::scene44_run() {
break;
case kHSExitUfoParty:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitUfoParty].x, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
- _newSceneNum = 40;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
break;
case kHSExitUfo:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitUfo].x, _platY, -1, 0x107CF, 1);
- _newSceneNum = 43;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 43;
break;
case kHSExitShow:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitShow].x, _hotspotsWalkPos[kHSExitShow].y, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
- _newSceneNum = 46;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitShow].x, _vm->_hotspotsWalkPos[kHSExitShow].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 46;
break;
case kHSKissingLady:
- if (_grabCursorSpriteIndex >= 0) {
- _gnapActionStatus = 2;
- gnapWalkTo(_hotspotsWalkPos[kHSKissingLady].x, _hotspotsWalkPos[kHSKissingLady].y, 0, -1, 9);
- playGnapShowItem(_grabCursorSpriteIndex, _hotspotsWalkPos[kHSKissingLady].x - 1, _hotspotsWalkPos[kHSKissingLady].y);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gnapActionStatus = 2;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSKissingLady].x, _vm->_hotspotsWalkPos[kHSKissingLady].y, 0, -1, 9);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHSKissingLady].x - 1, _vm->_hotspotsWalkPos[kHSKissingLady].y);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(4, 3);
+ _vm->playGnapScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSKissingLady].x, _hotspotsWalkPos[kHSKissingLady].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 1;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSKissingLady].x, _vm->_hotspotsWalkPos[kHSKissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 1;
break;
case PLAT_CURSOR:
- gnapUseDeviceOnPlatypuss();
- platypusWalkTo(6, 7, 1, 0x107D2, 1);
- if (_gnapX == 7 && _gnapY == 7)
- gnapWalkStep();
- playGnapIdle(5, 7);
- _platypusActionStatus = 4;
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
+ if (_vm->_gnapX == 7 && _vm->_gnapY == 7)
+ _vm->gnapWalkStep();
+ _vm->playGnapIdle(5, 7);
+ _vm->_platypusActionStatus = 4;
break;
}
}
break;
case kHSSpring:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSSpring].x, _hotspotsWalkPos[kHSSpring].y, 8, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSpring].x, _vm->_hotspotsWalkPos[kHSSpring].y, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(8, 7);
+ _vm->playGnapScratchingHead(8, 7);
break;
case GRAB_CURSOR:
- playGnapPullOutDevice(8, 0);
- playGnapUseDevice(8, 0);
+ _vm->playGnapPullOutDevice(8, 0);
+ _vm->playGnapUseDevice(8, 0);
_s44_nextSpringGuySequenceId = 0xFB;
- invAdd(kItemSpring);
- setFlag(kGFSpringTaken);
- scene44_updateHotspots();
+ _vm->invAdd(kItemSpring);
+ _vm->setFlag(kGFSpringTaken);
+ updateHotspots();
break;
case TALK_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSSpringGuy:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSSpringGuy].x, _hotspotsWalkPos[kHSSpringGuy].y, 8, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSpringGuy].x, _vm->_hotspotsWalkPos[kHSSpringGuy].y, 8, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (isFlag(kGFSpringTaken))
- playGnapMoan1(8, 7);
+ if (_vm->isFlag(kGFSpringTaken))
+ _vm->playGnapMoan1(8, 7);
else
- playGnapScratchingHead(8, 7);
+ _vm->playGnapScratchingHead(8, 7);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSSpringGuy].x, _hotspotsWalkPos[kHSSpringGuy].y, -1, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSpringGuy].x, _vm->_hotspotsWalkPos[kHSSpringGuy].y, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -344,36 +348,35 @@ void GnapEngine::scene44_run() {
case kHSWalkArea1:
case kHSWalkArea2:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoActionStatus = 7;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 7;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene44_updateAnimations();
-
- toyUfoCheckTimer();
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
- switch (getRandom(20)) {
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
+ switch (_vm->getRandom(20)) {
case 0:
_s44_nextKissingLadySequenceId = 0xED;
break;
@@ -397,14 +400,14 @@ void GnapEngine::scene44_run() {
_s44_nextKissingLadySequenceId = -1;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(20) + 20;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
- if (getRandom(5) != 0) {
- if (!isFlag(kGFSpringTaken))
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
+ if (_vm->getRandom(5) != 0) {
+ if (!_vm->isFlag(kGFSpringTaken))
_s44_nextSpringGuySequenceId = 0xF9;
} else {
- if (isFlag(kGFSpringTaken))
+ if (_vm->isFlag(kGFSpringTaken))
_s44_nextSpringGuySequenceId = 0xF8;
else
_s44_nextSpringGuySequenceId = 0xFA;
@@ -413,25 +416,25 @@ void GnapEngine::scene44_run() {
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene44_updateHotspots();
- _timers[4] = getRandom(20) + 20;
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene44_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene44::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case 0:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case 1:
_s44_nextKissingLadySequenceId = 0xEF;
@@ -440,78 +443,78 @@ void GnapEngine::scene44_updateAnimations() {
_s44_nextKissingLadySequenceId = 0xF2;
break;
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- switch (_platypusActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
case 4:
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->insertSequence(0xFE, _platypusId, _platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId, kSeqSyncWait, 0, 0, 0);
- _platypusSequenceId = 0xFE;
- _platypusSequenceDatNum = 0;
- _gameSys->setAnimation(0xFE, _platypusId, 1);
- _gameSys->removeSequence(_s44_currKissingLadySequenceId, 1, true);
- _platypusActionStatus = 5;
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->insertSequence(0xFE, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xFE;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0xFE, _vm->_platypusId, 1);
+ _vm->_gameSys->removeSequence(_s44_currKissingLadySequenceId, 1, true);
+ _vm->_platypusActionStatus = 5;
}
break;
case 5:
- _sceneDone = true;
- _newSceneNum = 50;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 50;
break;
default:
- _platypusActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_s44_nextKissingLadySequenceId == 0xF6) {
- _gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- initPlatypusPos(5, 8, kDirNone);
+ _vm->_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->initPlatypusPos(5, 8, kDirNone);
_s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
_s44_nextKissingLadySequenceId = -1;
- _gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 2);
} else if (_s44_nextKissingLadySequenceId != -1) {
- _gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s44_nextKissingLadySequenceId, 1, 2);
+ _vm->_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s44_nextKissingLadySequenceId, 1, 2);
_s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
_s44_nextKissingLadySequenceId = -1;
- _timers[4] = getRandom(20) + 20;
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
}
}
- if (_gameSys->getAnimationStatus(4) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
if (_s44_currSpringGuySequenceId == 0xFB) {
- setGrabCursorSprite(kItemSpring);
+ _vm->setGrabCursorSprite(kItemSpring);
_s44_nextSpringGuySequenceId = 0xF8;
}
if (_s44_nextSpringGuySequenceId != -1) {
- _gameSys->insertSequence(_s44_nextSpringGuySequenceId, 1, _s44_currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s44_nextSpringGuySequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(_s44_nextSpringGuySequenceId, 1, _s44_currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s44_nextSpringGuySequenceId, 1, 4);
_s44_currSpringGuySequenceId = _s44_nextSpringGuySequenceId;
_s44_nextSpringGuySequenceId = -1;
- _timers[5] = getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(20) + 20;
}
}
- if (_gameSys->getAnimationStatus(3) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case 6:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
default:
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, _toyUfoId + 1,
- _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- ++_toyUfoId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 3);
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
break;
}
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene44.h b/engines/gnap/scenes/scene44.h
new file mode 100644
index 0000000..f26cba0
--- /dev/null
+++ b/engines/gnap/scenes/scene44.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE44_H
+#define GNAP_SCENE44_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene44: public Scene {
+public:
+ Scene44(GnapEngine *vm);
+ ~Scene44() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s44_nextSpringGuySequenceId;
+ int _s44_nextKissingLadySequenceId;
+ int _s44_currSpringGuySequenceId;
+ int _s44_currKissingLadySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE44_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 17ec6b0..6cbd34f 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -65,6 +65,7 @@
#include "gnap/scenes/scene41.h"
#include "gnap/scenes/scene42.h"
#include "gnap/scenes/scene43.h"
+#include "gnap/scenes/scene44.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -380,8 +381,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 44:
- backgroundId = scene44_init();
- scene44_updateHotspots();
+ _scene = new Scene44(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -698,7 +700,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 44:
- scene44_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: 1cf3c3b93ee4e9e96f12ae471ceeb6cf354b6db8
https://github.com/scummvm/scummvm/commit/1cf3c3b93ee4e9e96f12ae471ceeb6cf354b6db8
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename variables of scene 29
Changed paths:
engines/gnap/scenes/scene29.cpp
engines/gnap/scenes/scene29.h
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
index 0f64304..5312a0b 100644
--- a/engines/gnap/scenes/scene29.cpp
+++ b/engines/gnap/scenes/scene29.cpp
@@ -43,10 +43,10 @@ enum {
};
Scene29::Scene29(GnapEngine *vm) : Scene(vm) {
- _s28_currMonkeySequenceId = -1;
- _s28_nextMonkeySequenceId = -1;
- _s28_currManSequenceId = -1;
- _s28_nextManSequenceId = -1;
+ _s29_currMonkeySequenceId = -1;
+ _s29_nextMonkeySequenceId = -1;
+ _s29_currManSequenceId = -1;
+ _s29_nextManSequenceId = -1;
}
int Scene29::init() {
@@ -72,13 +72,13 @@ void Scene29::run() {
_vm->queueInsertDeviceIcon();
if (_vm->invHas(kItemHorn)) {
- _s28_currMonkeySequenceId = 0xE8;
- _s28_nextMonkeySequenceId = -1;
+ _s29_currMonkeySequenceId = 0xE8;
+ _s29_nextMonkeySequenceId = -1;
_vm->_gameSys->setAnimation(0xE8, 159, 4);
- _vm->_gameSys->insertSequence(_s28_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s29_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s28_currManSequenceId = 0xED;
- _s28_nextManSequenceId = -1;
+ _s29_currManSequenceId = 0xED;
+ _s29_nextManSequenceId = -1;
_vm->_gameSys->setAnimation(0xED, 39, 3);
_vm->_timers[4] = _vm->getRandom(20) + 60;
} else {
@@ -249,19 +249,19 @@ void Scene29::run() {
if (_vm->_gnapActionStatus < 0) {
switch (_vm->getRandom(5)) {
case 0:
- _s28_nextManSequenceId = 0xED;
+ _s29_nextManSequenceId = 0xED;
break;
case 1:
- _s28_nextManSequenceId = 0xEE;
+ _s29_nextManSequenceId = 0xEE;
break;
case 2:
- _s28_nextManSequenceId = 0xEF;
+ _s29_nextManSequenceId = 0xEF;
break;
case 3:
- _s28_nextManSequenceId = 0xF0;
+ _s29_nextManSequenceId = 0xF0;
break;
case 4:
- _s28_nextManSequenceId = 0xF1;
+ _s29_nextManSequenceId = 0xF1;
break;
}
}
@@ -287,7 +287,7 @@ void Scene29::updateAnimations() {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kASUseBananaWithMonkey:
- _s28_nextMonkeySequenceId = 0xE5;
+ _s29_nextMonkeySequenceId = 0xE5;
break;
case kASLeaveScene:
_vm->_sceneDone = true;
@@ -295,61 +295,61 @@ void Scene29::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s28_nextManSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s28_nextManSequenceId, 39, _s28_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s28_nextManSequenceId, 39, 3);
- _s28_currManSequenceId = _s28_nextManSequenceId;
- _s28_nextManSequenceId = -1;
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s29_nextManSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s29_nextManSequenceId, 39, _s29_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s29_nextManSequenceId, 39, 3);
+ _s29_currManSequenceId = _s29_nextManSequenceId;
+ _s29_nextManSequenceId = -1;
}
if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- if (_s28_nextMonkeySequenceId == 0xE5) {
+ if (_s29_nextMonkeySequenceId == 0xE5) {
_vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xF2;
_vm->_gameSys->setAnimation(0xE6, 159, 0);
_vm->_gameSys->setAnimation(0, 159, 4);
- _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xE6, 159, _s28_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xE6, 159, _s29_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kASLeaveScene;
- _s28_currMonkeySequenceId = 0xE6;
- _s28_nextMonkeySequenceId = -1;
+ _s29_currMonkeySequenceId = 0xE6;
+ _s29_nextMonkeySequenceId = -1;
_vm->_timers[5] = 30;
while (_vm->_timers[5])
_vm->gameUpdateTick();
_vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
while (_vm->_gameSys->getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
- } else if (_s28_nextMonkeySequenceId == -1) {
+ } else if (_s29_nextMonkeySequenceId == -1) {
switch (_vm->getRandom(6)) {
case 0:
- _s28_nextMonkeySequenceId = 0xE8;
+ _s29_nextMonkeySequenceId = 0xE8;
break;
case 1:
- _s28_nextMonkeySequenceId = 0xE9;
+ _s29_nextMonkeySequenceId = 0xE9;
break;
case 2:
- _s28_nextMonkeySequenceId = 0xEA;
+ _s29_nextMonkeySequenceId = 0xEA;
break;
case 3:
- _s28_nextMonkeySequenceId = 0xEB;
+ _s29_nextMonkeySequenceId = 0xEB;
break;
case 4:
- _s28_nextMonkeySequenceId = 0xEC;
+ _s29_nextMonkeySequenceId = 0xEC;
break;
case 5:
- _s28_nextMonkeySequenceId = 0xE7;
+ _s29_nextMonkeySequenceId = 0xE7;
break;
}
- _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
- _s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
- _s28_nextMonkeySequenceId = -1;
+ _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s29_nextMonkeySequenceId, 159, 4);
+ _s29_currMonkeySequenceId = _s29_nextMonkeySequenceId;
+ _s29_nextMonkeySequenceId = -1;
} else {
- _vm->_gameSys->insertSequence(_s28_nextMonkeySequenceId, 159, _s28_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s28_nextMonkeySequenceId, 159, 4);
- _s28_currMonkeySequenceId = _s28_nextMonkeySequenceId;
- _s28_nextMonkeySequenceId = -1;
+ _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s29_nextMonkeySequenceId, 159, 4);
+ _s29_currMonkeySequenceId = _s29_nextMonkeySequenceId;
+ _s29_nextMonkeySequenceId = -1;
}
}
diff --git a/engines/gnap/scenes/scene29.h b/engines/gnap/scenes/scene29.h
index 1b9e2c3..3ce5d8d 100644
--- a/engines/gnap/scenes/scene29.h
+++ b/engines/gnap/scenes/scene29.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s28_currMonkeySequenceId;
- int _s28_nextMonkeySequenceId;
- int _s28_currManSequenceId;
- int _s28_nextManSequenceId;
+ int _s29_currMonkeySequenceId;
+ int _s29_nextMonkeySequenceId;
+ int _s29_currManSequenceId;
+ int _s29_nextManSequenceId;
};
} // End of namespace Gnap
Commit: 5246356d44ba883c1d315b25d060d8dacfc4bddc
https://github.com/scummvm/scummvm/commit/5246356d44ba883c1d315b25d060d8dacfc4bddc
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 45
Changed paths:
A engines/gnap/scenes/scene45.h
engines/gnap/gnap.h
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b741730..dcb01ed 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,13 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 45
- int _s45_currDancerSequenceId;
- int scene45_init();
- void scene45_updateHotspots();
- void scene45_run();
- void scene45_updateAnimations();
-
// Scene 46
int _s46_currSackGuySequenceId;
int _s46_nextItchyGuySequenceId;
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 1a87506..2490ddd 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene45.h"
namespace Gnap {
@@ -43,212 +44,210 @@ enum {
kHSUfoDevice = 3
};
-int GnapEngine::scene45_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- _gameSys->setAnimation(0, 0, 3);
- _gameSys->setAnimation(0, 0, 4);
- _gameSys->setAnimation(0, 0, 5);
- return isFlag(kGFUnk23) ? 0xA2 : 0xA1;
+Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
+ _s45_currDancerSequenceId = -1;
}
-void GnapEngine::scene45_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- setHotspot(kHSUfoExitRight, 794, 0, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED);
- setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _hotspotsCount = 4;
+int Scene45::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ return _vm->isFlag(kGFUnk23) ? 0xA2 : 0xA1;
+}
+
+void Scene45::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSUfoExitRight, 794, 0, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitShoe, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitRight, 794, 100, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED, 10, 8);
- setHotspot(kHSExitDiscoBall, 200, 0, 600, 10, SF_DISABLED);
- setHotspot(kHSDiscoBall, 370, 10, 470, 125, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- setHotspot(kHSWalkArea1, 0, 0, 800, 472);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (isFlag(kGFUnk22)) {
- _hotspots[kHSPlatypus]._flags = SF_DISABLED;
- _hotspots[kHSExitUfoParty]._flags = SF_DISABLED;
- _hotspots[kHSExitShoe]._flags = SF_DISABLED;
- _hotspots[kHSExitRight]._flags = SF_DISABLED;
- _hotspots[kHSExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitShoe, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitRight, 794, 100, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED, 10, 8);
+ _vm->setHotspot(kHSExitDiscoBall, 200, 0, 600, 10, SF_DISABLED);
+ _vm->setHotspot(kHSDiscoBall, 370, 10, 470, 125, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 472);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk22)) {
+ _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSExitUfoParty]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSExitShoe]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSExitRight]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
}
- if (isFlag(kGFUnk23) || isFlag(kGFUnk22))
- _hotspots[kHSDiscoBall]._flags = SF_DISABLED;
- _hotspotsCount = 8;
+ if (_vm->isFlag(kGFUnk23) || _vm->isFlag(kGFUnk22))
+ _vm->_hotspots[kHSDiscoBall]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 8;
}
}
-void GnapEngine::scene45_run() {
- if (!isSoundPlaying(0x1094A))
- playSound(0x1094A, true);
+void Scene45::run() {
+ if (!_vm->isSoundPlaying(0x1094A))
+ _vm->playSound(0x1094A, true);
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- _gameSys->insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0x96, 1, 3);
- _gameSys->insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(0x99, 1, 4);
+ _vm->_gameSys->insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x96, 1, 3);
+ _vm->_gameSys->insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x99, 1, 4);
_s45_currDancerSequenceId = 0x8F;
- _gameSys->setAnimation(_s45_currDancerSequenceId, 1, 2);
- _gameSys->insertSequence(_s45_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s45_currDancerSequenceId, 1, 2);
+ _vm->_gameSys->insertSequence(_s45_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
- if (_prevSceneNum == 46)
- _toyUfoX = 30;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 46)
+ _vm->_toyUfoX = 30;
else
- _toyUfoX = 770;
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 5);
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
- endSceneInit();
- } else if (isFlag(kGFUnk22)) {
- _gnapSequenceId = 0x9E;
- _gnapSequenceDatNum = 0;
- _gnapId = 1;
- _gameSys->setAnimation(0x9E, 1, 0);
- _gnapActionStatus = 1;
- _gameSys->insertSequence(_gnapSequenceId, _gnapId, 0, 0, kSeqNone, 0, 0, 0);
- initPlatypusPos(4, 8, kDirNone);
- endSceneInit();
- } else if (_prevSceneNum == 46) {
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-1, 9, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(4, 8, -1, 0x107C2, 1);
- gnapWalkTo(2, 7, -1, 0x107B9, 1);
- } else if (_prevSceneNum == 41) {
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(11, 9, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(4, 8, -1, 0x107D2, 1);
- gnapWalkTo(10, 9, -1, 0x107BA, 1);
+ _vm->_toyUfoX = 770;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 5);
+ _vm->_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->_gameSys->setAnimation(0x9E, 1, 0);
+ _vm->_gnapActionStatus = 1;
+ _vm->_gameSys->insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->initPlatypusPos(4, 8, kDirNone);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 46) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 41) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->gnapWalkTo(10, 9, -1, 0x107BA, 1);
} else {
- initGnapPos(2, 11, kDirUpRight);
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(4, 8, -1, 0x107C2, 1);
- gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->initGnapPos(2, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
}
- if (!isFlag(kGFUnk21) && !isFlag(kGFGnapControlsToyUFO)) {
- setFlag(kGFUnk21);
- setGrabCursorSprite(-1);
- _gameSys->setAnimation(0x9D, _gnapId, 0);
- _gameSys->insertSequence(0x9D, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2) {
- gameUpdateTick();
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->setAnimation(0, 0, 2);
- int newSeqId = getRandom(7) + 0x8F;
- _gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(newSeqId, 1, 2);
+ if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setFlag(kGFUnk21);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x9D, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->gameUpdateTick();
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ int newSeqId = _vm->getRandom(7) + 0x8F;
+ _vm->_gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(newSeqId, 1, 2);
_s45_currDancerSequenceId = newSeqId;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
- _gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x96, 1, 3);
- _gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x99, 1, 4);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x96, 1, 3);
+ _vm->_gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x99, 1, 4);
}
}
- _gnapSequenceId = 0x9D;
- _gnapSequenceDatNum = 0;
- hideCursor();
- addFullScreenSprite(0x8A, 255);
- _gameSys->setAnimation(0xA0, 256, 0);
- _gameSys->insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- _gameSys->setAnimation(0x107BD, _gnapId, 0);
- _gameSys->insertSequence(0x107BD, _gnapId,
- makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
- removeFullScreenSprite();
- showCursor();
- _gnapSequenceId = 0x7BD;
- _gnapSequenceDatNum = 1;
+ _vm->_gnapSequenceId = 0x9D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->hideCursor();
+ _vm->addFullScreenSprite(0x8A, 255);
+ _vm->_gameSys->setAnimation(0xA0, 256, 0);
+ _vm->_gameSys->insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x107BD, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x107BD, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->_gnapSequenceId = 0x7BD;
+ _vm->_gnapSequenceDatNum = 1;
}
- playPlatypusSequence(0x9A);
- _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
+ _vm->playPlatypusSequence(0x9A);
+ _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094A))
- playSound(0x1094A, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094A))
+ _vm->playSound(0x1094A, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
-
- switch (_sceneClickedHotspot) {
-
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 2;
- _newSceneNum = 46;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 5);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 2;
+ _vm->_newSceneNum = 46;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 5);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 2;
- _newSceneNum = 41;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 5);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 2;
+ _vm->_newSceneNum = 41;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 5);
}
break;
case kHSUfoDevice:
- runMenu();
- scene45_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
-
}
-
} else {
-
- switch (_sceneClickedHotspot) {
-
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene45_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
- playPlatypusSequence(0x9A);
- _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
+ _vm->gnapKissPlatypus(0);
+ _vm->playPlatypusSequence(0x9A);
+ _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -256,59 +255,59 @@ void GnapEngine::scene45_run() {
break;
case kHSExitUfoParty:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
- _newSceneNum = 40;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
}
break;
case kHSExitShoe:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitShoe].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitShoe].x, _platY, -1, 0x107CF, 1);
- _newSceneNum = 46;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitShoe].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitShoe].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 46;
}
break;
case kHSExitRight:
- if (_gnapActionStatus < 0) {
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitRight].x, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitRight].x, _platY, -1, 0x107CD, 1);
- _newSceneNum = 41;
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitRight].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitRight].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 41;
}
break;
case kHSExitDiscoBall:
- clearFlag(kGFUnk22);
- setFlag(kGFUnk23);
- _sceneDone = true;
- _newSceneNum = 54;
+ _vm->clearFlag(kGFUnk22);
+ _vm->setFlag(kGFUnk23);
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 54;
break;
case kHSDiscoBall:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex == kItemSpring) {
- gnapWalkTo(_hotspotsWalkPos[kHSDiscoBall].x, _hotspotsWalkPos[kHSDiscoBall].y, 0, 0x9F, 5);
- _gnapActionStatus = 1;
- setGrabCursorSprite(-1);
- invRemove(kItemSpring);
- } else if (_grabCursorSpriteIndex >= 0) {
- playGnapShowItem(_grabCursorSpriteIndex, 5, 0);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemSpring) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSDiscoBall].x, _vm->_hotspotsWalkPos[kHSDiscoBall].y, 0, 0x9F, 5);
+ _vm->_gnapActionStatus = 1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemSpring);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapScratchingHead(5, 0);
+ _vm->playGnapScratchingHead(5, 0);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
@@ -316,111 +315,105 @@ void GnapEngine::scene45_run() {
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
}
-
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoActionStatus = 3;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 3;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene45_updateAnimations();
- toyUfoCheckTimer();
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
- if (!_isLeavingScene && _gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
+ if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene45_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
- _sceneWaiting = 0;
-
+ _vm->_sceneWaiting = 0;
}
-void GnapEngine::scene45_updateAnimations() {
-
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene45::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case 0:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case 1:
- _sceneWaiting = 1;
- setFlag(kGFUnk22);
- scene45_updateHotspots();
- _gameSys->insertSequence(0x9E, _gnapId, makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, kSeqSyncWait, 0, 0, 0);
- _gnapSequenceId = 0x9E;
- _gnapSequenceDatNum = 0;
- _gameSys->setAnimation(0x9E, _gnapId, 0);
+ _vm->_sceneWaiting = 1;
+ _vm->setFlag(kGFUnk22);
+ updateHotspots();
+ _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
break;
default:
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
break;
}
}
- if (_gameSys->getAnimationStatus(1) == 2) {
- _gameSys->setAnimation(0, 0, 1);
- if (getRandom(2) != 0)
- playPlatypusSequence(0x9B);
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->getRandom(2) != 0)
+ _vm->playPlatypusSequence(0x9B);
else
- playPlatypusSequence(0x9C);
- _gameSys->setAnimation(_platypusSequenceId, _platypusId, 1);
+ _vm->playPlatypusSequence(0x9C);
+ _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
}
- if (_gameSys->getAnimationStatus(2) == 2) {
- _gameSys->setAnimation(0, 0, 2);
- int newSeqId = getRandom(7) + 0x8F;
- _gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(newSeqId, 1, 2);
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ int newSeqId = _vm->getRandom(7) + 0x8F;
+ _vm->_gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(newSeqId, 1, 2);
_s45_currDancerSequenceId = newSeqId;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _gameSys->getAnimationStatus(4) == 2) {
- _gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x96, 1, 3);
- _gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0x99, 1, 4);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x96, 1, 3);
+ _vm->_gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x99, 1, 4);
}
- if (_gameSys->getAnimationStatus(5) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(5) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case 2:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
default:
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, _toyUfoId + 1,
- _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- ++_toyUfoId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 5);
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 5);
break;
}
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoActionStatus = -1;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene45.h b/engines/gnap/scenes/scene45.h
new file mode 100644
index 0000000..549e077
--- /dev/null
+++ b/engines/gnap/scenes/scene45.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE45_H
+#define GNAP_SCENE45_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene45: public Scene {
+public:
+ Scene45(GnapEngine *vm);
+ ~Scene45() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s45_currDancerSequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE45_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 6cbd34f..95b66fe 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -66,6 +66,7 @@
#include "gnap/scenes/scene42.h"
#include "gnap/scenes/scene43.h"
#include "gnap/scenes/scene44.h"
+#include "gnap/scenes/scene45.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -388,8 +389,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 45:
- backgroundId = scene45_init();
- scene45_updateHotspots();
+ _scene = new Scene45(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -706,7 +708,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 45:
- scene45_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: f58874aa45f399344742fa0dc6bc6e36aa9c7552
https://github.com/scummvm/scummvm/commit/f58874aa45f399344742fa0dc6bc6e36aa9c7552
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 46
Changed paths:
A engines/gnap/scenes/scene46.h
engines/gnap/gnap.h
engines/gnap/scenes/scene46.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index dcb01ed..aa8de62 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -612,16 +612,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 46
- int _s46_currSackGuySequenceId;
- int _s46_nextItchyGuySequenceId;
- int _s46_nextSackGuySequenceId;
- int _s46_currItchyGuySequenceId;
- int scene46_init();
- void scene46_updateHotspots();
- void scene46_run();
- void scene46_updateAnimations();
-
// Scene 49
int _s49_scoreBarPos, _s49_scoreLevel;
bool _s49_scoreBarFlash;
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 0f26181..74b60de 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene46.h"
namespace Gnap {
@@ -43,150 +44,154 @@ enum {
kHSUfoDevice = 3
};
-int GnapEngine::scene46_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
- _gameSys->setAnimation(0, 0, 2);
- _gameSys->setAnimation(0, 0, 3);
- _gameSys->setAnimation(0, 0, 4);
+Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
+ _s46_currSackGuySequenceId = -1;
+ _s46_nextItchyGuySequenceId = -1;
+ _s46_nextSackGuySequenceId = -1;
+ _s46_currItchyGuySequenceId = -1;
+}
+
+int Scene46::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 4);
return 0x4E;
}
-void GnapEngine::scene46_updateHotspots() {
- if (isFlag(kGFGnapControlsToyUFO)) {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _hotspotsCount = 4;
+void Scene46::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
} else {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- setHotspot(kHSExitKissinBooth, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- setHotspot(kHSExitDisco, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- setHotspot(kHSSackGuy, 180, 370, 235, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- setHotspot(kHSItchyGuy, 535, 210, 650, 480, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- setHotspot(kHSWalkArea1, 0, 0, 800, 485);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 8;
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHSExitKissinBooth, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHSExitDisco, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHSSackGuy, 180, 370, 235, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHSItchyGuy, 535, 210, 650, 480, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 485);
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 8;
}
}
-void GnapEngine::scene46_run() {
+void Scene46::run() {
+ _vm->queueInsertDeviceIcon();
- queueInsertDeviceIcon();
-
- _gameSys->insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
_s46_currSackGuySequenceId = 0x4B;
_s46_nextSackGuySequenceId = -1;
- _gameSys->setAnimation(0x4B, 1, 3);
- _gameSys->insertSequence(_s46_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x4B, 1, 3);
+ _vm->_gameSys->insertSequence(_s46_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_s46_currItchyGuySequenceId = 0x47;
_s46_nextItchyGuySequenceId = -1;
- _gameSys->setAnimation(0x47, 1, 4);
- _gameSys->insertSequence(_s46_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x47, 1, 4);
+ _vm->_gameSys->insertSequence(_s46_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoId = 0;
- _toyUfoActionStatus = -1;
- _toyUfoSequenceId = toyUfoGetSequenceId();
- _toyUfoNextSequenceId = _toyUfoSequenceId;
- if (_prevSceneNum == 44)
- _toyUfoX = 30;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 44)
+ _vm->_toyUfoX = 30;
else
- _toyUfoX = 770;
- _gameSys->setAnimation(_toyUfoSequenceId | 0x10000, _toyUfoId, 2);
- _gameSys->insertSequence(_toyUfoSequenceId | 0x10000, _toyUfoId, 0, 0, kSeqNone, 0, _toyUfoX - 274, _toyUfoY - 128);
- endSceneInit();
- } else if (_prevSceneNum == 44) {
- initGnapPos(-1, 8, kDirUpRight);
- initPlatypusPos(-1, 8, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(1, 8, -1, 0x107C2, 1);
- gnapWalkTo(2, 8, -1, 0x107B9, 1);
- } else if (_prevSceneNum == 45) {
- initGnapPos(11, 8, kDirUpRight);
- initPlatypusPos(12, 8, kDirUpLeft);
- endSceneInit();
- gnapWalkTo(8, 8, -1, 0x107BA, 1);
- platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->_toyUfoX = 770;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 44) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 45) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(12, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- initGnapPos(5, 11, kDirUpRight);
- initPlatypusPos(6, 11, kDirUpLeft);
- endSceneInit();
- platypusWalkTo(5, 8, -1, 0x107C2, 1);
- gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
}
- _timers[4] = getRandom(50) + 80;
- _timers[5] = getRandom(50) + 80;
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
- while (!_sceneDone) {
- if (!isSoundPlaying(0x1094B))
- playSound(0x1094B, true);
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- if (isFlag(kGFGnapControlsToyUFO)) {
-
- switch (_sceneClickedHotspot) {
-
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSUfoExitLeft:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 3;
- _newSceneNum = 44;
- toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 3;
+ _vm->_newSceneNum = 44;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
}
break;
case kHSUfoExitRight:
- if (_toyUfoActionStatus < 0) {
- _isLeavingScene = true;
- _toyUfoActionStatus = 3;
- _newSceneNum = 45;
- toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 3;
+ _vm->_newSceneNum = 45;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
}
break;
case kHSUfoDevice:
- runMenu();
- scene46_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
}
} else {
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case kHSDevice:
- runMenu();
- scene46_updateHotspots();
+ _vm->runMenu();
+ updateHotspots();
break;
case kHSPlatypus:
- if (_gnapActionStatus < 0) {
- if (_grabCursorSpriteIndex >= 0) {
- playGnapImpossible(_platX, _platY);
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_platX, _platY);
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
break;
case GRAB_CURSOR:
- gnapKissPlatypus(0);
+ _vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- playGnapBrainPulsating(_platX, _platY);
- playPlatypusSequence(getPlatypusSequenceId());
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- playGnapImpossible(_platX, _platY);
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
break;
}
}
@@ -194,130 +199,129 @@ void GnapEngine::scene46_run() {
break;
case kHSSackGuy:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSSackGuy].x, _hotspotsWalkPos[kHSSackGuy].y, 2, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSackGuy].x, _vm->_hotspotsWalkPos[kHSSackGuy].y, 2, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_hotspotsWalkPos[kHSSackGuy].x + 1, 0);
+ _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHSSackGuy].x + 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpLeft;
- gnapWalkTo(_hotspotsWalkPos[kHSSackGuy].x, _hotspotsWalkPos[kHSSackGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 2;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSackGuy].x, _vm->_hotspotsWalkPos[kHSSackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 2;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSItchyGuy:
- if (_grabCursorSpriteIndex >= 0) {
- playGnapShowCurrItem(_hotspotsWalkPos[kHSItchyGuy].x, _hotspotsWalkPos[kHSItchyGuy].y, 7, 0);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSItchyGuy].x, _vm->_hotspotsWalkPos[kHSItchyGuy].y, 7, 0);
} else {
- switch (_verbCursor) {
+ switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- playGnapMoan1(_hotspotsWalkPos[kHSItchyGuy].x - 1, 0);
+ _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHSItchyGuy].x - 1, 0);
break;
case TALK_CURSOR:
- _gnapIdleFacing = kDirUpRight;
- gnapWalkTo(_hotspotsWalkPos[kHSItchyGuy].x, _hotspotsWalkPos[kHSItchyGuy].y, 0, getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _gnapActionStatus = 1;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSItchyGuy].x, _vm->_hotspotsWalkPos[kHSItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 1;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- playGnapImpossible(0, 0);
+ _vm->playGnapImpossible(0, 0);
break;
}
}
break;
case kHSExitUfoParty:
- _isLeavingScene = true;
- gnapWalkTo(_gnapX, _hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _gnapActionStatus = 0;
- _newSceneNum = 40;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
break;
case kHSExitKissinBooth:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _gnapY, 0, 0x107AF, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitKissinBooth].x, _platY, -1, 0x107CF, 1);
- _newSceneNum = 44;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 44;
break;
case kHSExitDisco:
- _isLeavingScene = true;
- gnapWalkTo(_hotspotsWalkPos[kHSExitDisco].x, _gnapY, 0, 0x107AB, 1);
- _gnapActionStatus = 0;
- platypusWalkTo(_hotspotsWalkPos[kHSExitDisco].x, _platY, -1, 0x107CD, 1);
- _newSceneNum = 45;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitDisco].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitDisco].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 45;
break;
case kHSWalkArea1:
- if (_gnapActionStatus < 0)
- gnapWalkTo(-1, -1, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_mouseClickState._left && _gnapActionStatus < 0) {
- _mouseClickState._left = false;
- if (isFlag(kGFGnapControlsToyUFO)) {
- _toyUfoActionStatus = 4;
- toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 4;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
- scene46_updateAnimations();
-
- toyUfoCheckTimer();
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
- if (!_isLeavingScene) {
- if (_platypusActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updatePlatypusIdleSequence();
- if (_gnapActionStatus < 0 && !isFlag(kGFGnapControlsToyUFO))
- updateGnapIdleSequence();
- if (!_timers[4]) {
- _timers[4] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
- if (getRandom(2) != 0)
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
+ if (_vm->getRandom(2) != 0)
_s46_nextItchyGuySequenceId = 0x49;
else
_s46_nextItchyGuySequenceId = 0x48;
}
}
- if (!_timers[5]) {
- _timers[5] = getRandom(50) + 80;
- if (_gnapActionStatus < 0 && _platypusActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
_s46_nextSackGuySequenceId = 0x4C;
}
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene46_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
-void GnapEngine::scene46_updateAnimations() {
- if (_gameSys->getAnimationStatus(0) == 2) {
- _gameSys->setAnimation(0, 0, 0);
- switch (_gnapActionStatus) {
+void Scene46::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
case 0:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
case 1:
_s46_nextItchyGuySequenceId = 0x46;
@@ -326,41 +330,41 @@ void GnapEngine::scene46_updateAnimations() {
_s46_nextSackGuySequenceId = 0x4A;
break;
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- if (_gameSys->getAnimationStatus(3) == 2 && _s46_nextSackGuySequenceId != -1) {
- _gameSys->insertSequence(_s46_nextSackGuySequenceId, 1, _s46_currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s46_nextSackGuySequenceId, 1, 3);
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s46_nextSackGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s46_nextSackGuySequenceId, 1, _s46_currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s46_nextSackGuySequenceId, 1, 3);
_s46_currSackGuySequenceId = _s46_nextSackGuySequenceId;
_s46_nextSackGuySequenceId = -1;
- _timers[5] = getRandom(50) + 80;
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
}
- if (_gameSys->getAnimationStatus(4) == 2 && _s46_nextItchyGuySequenceId != -1) {
- _gameSys->insertSequence(_s46_nextItchyGuySequenceId, 1, _s46_currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(_s46_nextItchyGuySequenceId, 1, 4);
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s46_nextItchyGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_s46_nextItchyGuySequenceId, 1, _s46_currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_s46_nextItchyGuySequenceId, 1, 4);
_s46_currItchyGuySequenceId = _s46_nextItchyGuySequenceId;
_s46_nextItchyGuySequenceId = -1;
- _timers[4] = getRandom(50) + 80;
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
}
- if (_gameSys->getAnimationStatus(2) == 2) {
- switch (_toyUfoActionStatus) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
case 3:
- _sceneDone = true;
+ _vm->_sceneDone = true;
break;
default:
- _toyUfoNextSequenceId = toyUfoGetSequenceId();
- _gameSys->insertSequence(_toyUfoNextSequenceId | 0x10000, _toyUfoId + 1,
- _toyUfoSequenceId | 0x10000, _toyUfoId,
- kSeqSyncWait, 0, _toyUfoX - 274, _toyUfoY - 128);
- _toyUfoSequenceId = _toyUfoNextSequenceId;
- ++_toyUfoId;
- _gameSys->setAnimation(_toyUfoNextSequenceId | 0x10000, _toyUfoId, 2);
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
break;
}
- _toyUfoActionStatus = -1;
+ _vm->_toyUfoActionStatus = -1;
}
}
diff --git a/engines/gnap/scenes/scene46.h b/engines/gnap/scenes/scene46.h
new file mode 100644
index 0000000..c7beca2
--- /dev/null
+++ b/engines/gnap/scenes/scene46.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE46_H
+#define GNAP_SCENE46_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene46: public Scene {
+public:
+ Scene46(GnapEngine *vm);
+ ~Scene46() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s46_currSackGuySequenceId;
+ int _s46_nextItchyGuySequenceId;
+ int _s46_nextSackGuySequenceId;
+ int _s46_currItchyGuySequenceId;
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE46_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 95b66fe..8c22cc8 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -67,6 +67,7 @@
#include "gnap/scenes/scene43.h"
#include "gnap/scenes/scene44.h"
#include "gnap/scenes/scene45.h"
+#include "gnap/scenes/scene46.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene54.h"
@@ -396,8 +397,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 46:
- backgroundId = scene46_init();
- scene46_updateHotspots();
+ _scene = new Scene46(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -714,7 +716,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 37;
break;
case 46:
- scene46_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 37;
break;
Commit: f3b59a2dfb96fad1610e9169e5858d66b4ebee80
https://github.com/scummvm/scummvm/commit/f3b59a2dfb96fad1610e9169e5858d66b4ebee80
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Enforce the use of boolean values for _sceneWaiting
Changed paths:
engines/gnap/scenes/scene18.cpp
engines/gnap/scenes/scene45.cpp
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
index 0e17531..6f4ef67 100644
--- a/engines/gnap/scenes/scene18.cpp
+++ b/engines/gnap/scenes/scene18.cpp
@@ -461,7 +461,7 @@ void Scene18::run() {
case kHSCowboyHat:
if (_vm->_gnapActionStatus == kASStandingOnHydrant) {
_vm->_gnapActionStatus = kASGrabCowboyHat;
- _vm->_sceneWaiting = 0;
+ _vm->_sceneWaiting = false;
} else if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 2490ddd..15722ab 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -348,7 +348,7 @@ void Scene45::run() {
_vm->gameUpdateTick();
}
- _vm->_sceneWaiting = 0;
+ _vm->_sceneWaiting = false;
}
void Scene45::updateAnimations() {
@@ -359,7 +359,7 @@ void Scene45::updateAnimations() {
_vm->_sceneDone = true;
break;
case 1:
- _vm->_sceneWaiting = 1;
+ _vm->_sceneWaiting = true;
_vm->setFlag(kGFUnk22);
updateHotspots();
_vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
Commit: 5b0ff520b729fd4c58c800f5c7f64233a5afe8e3
https://github.com/scummvm/scummvm/commit/5b0ff520b729fd4c58c800f5c7f64233a5afe8e3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 49
Changed paths:
A engines/gnap/scenes/scene49.h
engines/gnap/gnap.h
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index aa8de62..5063d90 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -250,17 +250,6 @@ enum {
// 0x7AF Gnap walks to the left 1
// 0x7B0 Gnap walks to the left 2
-struct Scene49Obstacle {
- int _currSequenceId;
- int _closerSequenceId;
- int _passedSequenceId;
- int _splashSequenceId;
- int _collisionSequenceId;
- int _prevId;
- int _currId;
- int _laneNum;
-};
-
struct Scene51Item {
int _currSequenceId;
int _droppedSequenceId;
@@ -612,23 +601,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 49
- int _s49_scoreBarPos, _s49_scoreLevel;
- bool _s49_scoreBarFlash;
- int _s49_obstacleIndex;
- Scene49Obstacle _s49_obstacles[5];
- int _s49_truckSequenceId, _s49_truckId, _s49_truckLaneNum;
- int scene49_init();
- void scene49_updateHotspots();
- void scene49_checkObstacles();
- void scene49_updateObstacle(int id);
- void scene49_increaseScore(int amount);
- void scene49_decreaseScore(int amount);
- void scene49_refreshScoreBar();
- void scene49_clearObstacle(int index);
- void scene49_run();
- void scene49_updateAnimations();
-
// Scene 50
bool _s50_fightDone;
int _s50_timesPlayed, _s50_timesPlayedModifier;
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index 2c92919..97a8724 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -23,13 +23,10 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene49.h"
namespace Gnap {
-struct ObstacleDef {
- int sequenceId, ticks;
-};
-
static const ObstacleDef kObstacleDefs[] = {
{0xB4, 15}, {0xCB, 14}, {0xCD, 13}, {0xCF, 15}, {0xBA, 14},
{0xCD, 13}, {0xCF, 12}, {0xCB, 15}, {0xBD, 13}, {0xCF, 12},
@@ -43,36 +40,56 @@ static const ObstacleDef kObstacleDefs[] = {
{0xCD, 7}, {0xCB, 7}, {0xCD, 7}, {0xCF, 15}, {0xCF, 15}
};
-int GnapEngine::scene49_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
+Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
+ _s49_scoreBarFlash = false;
+ _s49_scoreBarPos = -1;
+ _s49_scoreLevel = -1;
+ _s49_obstacleIndex = -1;
+ _s49_truckSequenceId = -1;
+ _s49_truckId = -1;
+ _s49_truckLaneNum = -1;
+
+ for (int i = 0; i < 5; i++) {
+ _s49_obstacles[i]._currSequenceId = -1;
+ _s49_obstacles[i]._closerSequenceId = -1;
+ _s49_obstacles[i]._passedSequenceId = -1;
+ _s49_obstacles[i]._splashSequenceId = -1;
+ _s49_obstacles[i]._collisionSequenceId = -1;
+ _s49_obstacles[i]._prevId = -1;
+ _s49_obstacles[i]._currId = -1;
+ _s49_obstacles[i]._laneNum = -1;
+ }
+}
+
+int Scene49::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
for (int i = 0; i < 5; ++i)
- _gameSys->setAnimation(0, 0, i + 2);
- _timers[2] = 0;
- _timers[0] = 0;
- _timers[1] = 0;
- clearKeyStatus1(28);
- clearKeyStatus1(54);
- clearKeyStatus1(52);
+ _vm->_gameSys->setAnimation(0, 0, i + 2);
+ _vm->_timers[2] = 0;
+ _vm->_timers[0] = 0;
+ _vm->_timers[1] = 0;
+ _vm->clearKeyStatus1(28);
+ _vm->clearKeyStatus1(54);
+ _vm->clearKeyStatus1(52);
return 0xD5;
}
-void GnapEngine::scene49_updateHotspots() {
- _hotspotsCount = 0;
+void Scene49::updateHotspots() {
+ _vm->_hotspotsCount = 0;
}
-void GnapEngine::scene49_checkObstacles() {
-
- if (_timers[2] == 0) {
-
- if (_timers[3] == 0)
+void Scene49::checkObstacles() {
+ if (_vm->_timers[2] == 0) {
+ if (_vm->_timers[3] == 0) {
for (int i = 0; i < 5; ++i)
- scene49_clearObstacle(i);
+ clearObstacle(i);
+ }
for (int j = 0; j < 5; ++j) {
if (_s49_obstacles[j]._currSequenceId == 0) {
- _timers[3] = 35;
- _s49_obstacles[j]._currSequenceId = kObstacleDefs[_s49_obstacleIndex].sequenceId;
+ _vm->_timers[3] = 35;
+ _s49_obstacles[j]._currSequenceId = kObstacleDefs[_s49_obstacleIndex]._sequenceId;
switch (_s49_obstacles[j]._currSequenceId) {
case 0xB4:
_s49_obstacles[j]._laneNum = 1;
@@ -126,9 +143,9 @@ void GnapEngine::scene49_checkObstacles() {
}
_s49_obstacles[j]._prevId = _s49_truckId;
_s49_obstacles[j]._currId = _s49_obstacles[j]._prevId;
- _gameSys->setAnimation(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, j + 2);
- _gameSys->insertSequence(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
- _timers[2] = kObstacleDefs[_s49_obstacleIndex].ticks;
+ _vm->_gameSys->setAnimation(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, j + 2);
+ _vm->_gameSys->insertSequence(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_timers[2] = kObstacleDefs[_s49_obstacleIndex]._ticks;
++_s49_obstacleIndex;
if (_s49_obstacleIndex == 50)
_s49_obstacleIndex = 0;
@@ -140,12 +157,10 @@ void GnapEngine::scene49_checkObstacles() {
}
-void GnapEngine::scene49_updateObstacle(int id) {
-
+void Scene49::updateObstacle(int id) {
Scene49Obstacle &obstacle = _s49_obstacles[id];
-
obstacle._currId = obstacle._prevId;
-
+
switch (obstacle._laneNum) {
case 1:
obstacle._prevId = _s49_truckId + 1;
@@ -167,39 +182,39 @@ void GnapEngine::scene49_updateObstacle(int id) {
if (obstacle._currSequenceId == obstacle._closerSequenceId) {
if (_s49_truckLaneNum == obstacle._laneNum) {
if (obstacle._splashSequenceId) {
- _gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- playSound(224, false);
- scene49_increaseScore(30);
+ _vm->playSound(224, false);
+ increaseScore(30);
} else if ((obstacle._laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
(obstacle._laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
(obstacle._laneNum == 3 && _s49_truckSequenceId == 0xB3)) {
- _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._passedSequenceId;
} else {
- _gameSys->setAnimation(obstacle._collisionSequenceId, 256, 0);
- _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, 256, 0);
+ _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- _gameSys->insertSequence(obstacle._collisionSequenceId, 256,
+ _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, 256,
_s49_truckSequenceId, _s49_truckId,
kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = obstacle._collisionSequenceId;
_s49_truckId = 256;
obstacle._currSequenceId = obstacle._passedSequenceId;
- playSound(225, false);
- scene49_decreaseScore(30);
+ _vm->playSound(225, false);
+ decreaseScore(30);
}
} else {
- _gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._passedSequenceId;
@@ -207,55 +222,54 @@ void GnapEngine::scene49_updateObstacle(int id) {
} else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
if (_s49_truckLaneNum == obstacle._laneNum) {
if (obstacle._splashSequenceId) {
- _gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- playSound(224, false);
- scene49_increaseScore(30);
+ _vm->playSound(224, false);
+ increaseScore(30);
}
} else if (obstacle._splashSequenceId) {
- _gameSys->setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
- _gameSys->insertSequence(obstacle._splashSequenceId, obstacle._prevId,
+ _vm->_gameSys->setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
+ _vm->_gameSys->insertSequence(obstacle._splashSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._splashSequenceId;
}
} else {
- _gameSys->setAnimation(0, 0, id + 2);
- scene49_clearObstacle(id);
+ _vm->_gameSys->setAnimation(0, 0, id + 2);
+ clearObstacle(id);
}
-
}
-void GnapEngine::scene49_increaseScore(int amount) {
+void Scene49::increaseScore(int amount) {
if (_s49_scoreBarPos + amount <= 556) {
_s49_scoreBarPos += amount;
- _gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 255, 0, 0);
+ _vm->_gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 255, 0, 0);
}
_s49_scoreLevel = _s49_scoreBarPos + amount >= 556;
}
-void GnapEngine::scene49_decreaseScore(int amount) {
+void Scene49::decreaseScore(int amount) {
if (_s49_scoreBarPos >= 226 && _s49_scoreLevel == 0) {
if (_s49_scoreBarFlash)
- scene49_refreshScoreBar();
- _gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 89, 0, 5);
+ refreshScoreBar();
+ _vm->_gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 89, 0, 5);
_s49_scoreBarPos -= amount;
_s49_scoreLevel = 0;
}
}
-void GnapEngine::scene49_refreshScoreBar() {
+void Scene49::refreshScoreBar() {
if (_s49_scoreBarFlash)
- _gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
else
- _gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
_s49_scoreBarFlash = !_s49_scoreBarFlash;
}
-void GnapEngine::scene49_clearObstacle(int index) {
+void Scene49::clearObstacle(int index) {
_s49_obstacles[index]._currSequenceId = 0;
_s49_obstacles[index]._closerSequenceId = 0;
_s49_obstacles[index]._passedSequenceId = 0;
@@ -266,8 +280,7 @@ void GnapEngine::scene49_clearObstacle(int index) {
_s49_obstacles[index]._laneNum = 0;
}
-void GnapEngine::scene49_run() {
-
+void Scene49::run() {
bool animToggle6 = false;
bool animToggle5 = false;
bool animToggle4 = false;
@@ -275,17 +288,17 @@ void GnapEngine::scene49_run() {
bool streetAnimToggle = false;
bool bgAnimToggle = false;
- playSound(0xE2, true);
- setSoundVolume(0xE2, 75);
+ _vm->playSound(0xE2, true);
+ _vm->setSoundVolume(0xE2, 75);
- hideCursor();
- setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
_s49_scoreBarPos = 196;
_s49_scoreLevel = 0;
_s49_scoreBarFlash = false;
- switch (getRandom(3)) {
+ switch (_vm->getRandom(3)) {
case 0:
_s49_truckSequenceId = 0xAD;
_s49_truckLaneNum = 1;
@@ -300,50 +313,49 @@ void GnapEngine::scene49_run() {
break;
}
- int bgWidth1 = _gameSys->getSpriteWidthById(0x5E);
+ int bgWidth1 = _vm->_gameSys->getSpriteWidthById(0x5E);
int bgX1 = 600;
- int bgWidth2 = _gameSys->getSpriteWidthById(0x5F);
+ int bgWidth2 = _vm->_gameSys->getSpriteWidthById(0x5F);
int bgX2 = 400;
- int bgWidth3 = _gameSys->getSpriteWidthById(4);
+ int bgWidth3 = _vm->_gameSys->getSpriteWidthById(4);
int bgX3 = 700;
- int bgWidth4 = _gameSys->getSpriteWidthById(5);
+ int bgWidth4 = _vm->_gameSys->getSpriteWidthById(5);
int bgX4 = 500;
- int bgWidth5 = _gameSys->getSpriteWidthById(6);
+ int bgWidth5 = _vm->_gameSys->getSpriteWidthById(6);
int bgX5 = 300;
- int bgWidth6 = _gameSys->getSpriteWidthById(7);
+ int bgWidth6 = _vm->_gameSys->getSpriteWidthById(7);
int bgX6 = 100;
- _gameSys->setAnimation(0xC8, 251, 1);
- _gameSys->setAnimation(_s49_truckSequenceId, 256, 0);
- _gameSys->insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
- _gameSys->insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
- _gameSys->insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
- _gameSys->insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
- _gameSys->insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
- _gameSys->insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
- _gameSys->insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
- _gameSys->insertSequence(_s49_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_gameSys->setAnimation(0xC8, 251, 1);
+ _vm->_gameSys->setAnimation(_s49_truckSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
+ _vm->_gameSys->insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
+ _vm->_gameSys->insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
+ _vm->_gameSys->insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
+ _vm->_gameSys->insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
+ _vm->_gameSys->insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
+ _vm->_gameSys->insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_gameSys->insertSequence(_s49_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
- _timers[0] = 2;
+ _vm->_timers[0] = 2;
for (int i = 0; i < 5; ++i)
- scene49_clearObstacle(i);
+ clearObstacle(i);
_s49_obstacleIndex = 0;
- _timers[2] = getRandom(20) + 10;
+ _vm->_timers[2] = _vm->getRandom(20) + 10;
_s49_truckId = 256;
- _timers[3] = 35;
+ _vm->_timers[3] = 35;
- while (!_sceneDone) {
-
- if (_timers[0] == 0) {
+ while (!_vm->_sceneDone) {
+ if (_vm->_timers[0] == 0) {
// Update background animations (clouds etc.)
--bgX1;
bgX2 -= 2;
@@ -364,24 +376,24 @@ void GnapEngine::scene49_run() {
if (bgX6 <= -bgWidth6)
bgX6 = 799;
bgAnimToggle = !bgAnimToggle;
- _gameSys->insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
- _gameSys->insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
- _gameSys->insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
- _gameSys->insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
- _gameSys->insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
- _gameSys->insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
- _timers[0] = 2;
+ _vm->_gameSys->insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
+ _vm->_gameSys->insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
+ _vm->_gameSys->insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
+ _vm->_gameSys->insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
+ _vm->_gameSys->insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
+ _vm->_gameSys->insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
+ _vm->_timers[0] = 2;
}
- if (_gameSys->getAnimationStatus(1) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
streetAnimToggle = !streetAnimToggle;
- _gameSys->setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
- _gameSys->insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
+ _vm->_gameSys->setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
+ _vm->_gameSys->insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
}
- scene49_checkObstacles();
+ checkObstacles();
- if (_gameSys->getAnimationStatus(0) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
switch (_s49_truckSequenceId) {
case 0xB1:
_s49_truckLaneNum = 1;
@@ -396,26 +408,26 @@ void GnapEngine::scene49_run() {
}
animToggle3 = !animToggle3;
if (_s49_truckLaneNum == 1) {
- _gameSys->setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
- _gameSys->insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
+ _vm->_gameSys->setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
+ _vm->_gameSys->insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
_s49_truckSequenceId = 0xAD;
} else if (_s49_truckLaneNum == 2) {
- _gameSys->setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
- _gameSys->insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
+ _vm->_gameSys->setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
+ _vm->_gameSys->insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
_s49_truckSequenceId = 0xAE;
} else {
- _gameSys->setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
- _gameSys->insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
+ _vm->_gameSys->setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
+ _vm->_gameSys->insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
_s49_truckSequenceId = 0xAF;
}
_s49_truckId = (animToggle3 ? 1 : 0) + 256;
if (_s49_scoreLevel == 1) {
- if (!_gameSys->isSequenceActive(0xD4, 266)) {
- _gameSys->setAnimation(0xD4, 266, 8);
- _gameSys->insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
+ if (!_vm->_gameSys->isSequenceActive(0xD4, 266)) {
+ _vm->_gameSys->setAnimation(0xD4, 266, 8);
+ _vm->_gameSys->insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
}
++_s49_scoreLevel;
- _timers[1] = 2;
+ _vm->_timers[1] = 2;
animToggle4 = false;
animToggle5 = false;
animToggle6 = false;
@@ -423,13 +435,13 @@ void GnapEngine::scene49_run() {
}
}
- if (_s49_scoreLevel != 0 && !_timers[1]) {
- scene49_refreshScoreBar();
- _timers[1] = 8;
+ if (_s49_scoreLevel != 0 && !_vm->_timers[1]) {
+ refreshScoreBar();
+ _vm->_timers[1] = 8;
if (animToggle6) {
if (animToggle5) {
- if (animToggle4 && !_gameSys->isSequenceActive(212, 266))
- _gameSys->insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
+ if (animToggle4 && !_vm->_gameSys->isSequenceActive(212, 266))
+ _vm->_gameSys->insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
animToggle4 = !animToggle4;
}
animToggle5 = !animToggle5;
@@ -437,15 +449,15 @@ void GnapEngine::scene49_run() {
animToggle6 = !animToggle6;
}
- scene49_updateAnimations();
+ updateAnimations();
- if (sceneXX_sub_4466B1()) {
- _sceneDone = true;
- _newSceneNum = 2;
- _newCursorValue = 1;
+ if (_vm->sceneXX_sub_4466B1()) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 2;
+ _vm->_newCursorValue = 1;
}
- if (isKeyStatus1(Common::KEYCODE_RIGHT)) {
+ if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
// Steer right
if (_s49_truckSequenceId == 0xB3)
_s49_truckLaneNum = 2;
@@ -453,22 +465,22 @@ void GnapEngine::scene49_run() {
_s49_truckLaneNum = 1;
if (_s49_truckLaneNum != 3 && _s49_truckLaneNum != 2) {
if (_s49_scoreLevel) {
- _sceneDone = true;
- _newSceneNum = 47;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
}
} else {
int steerSequenceId = (_s49_truckLaneNum == 3) ? 0xB3 : 0xB1;
if (_s49_truckSequenceId == 0xAE || _s49_truckSequenceId == 0xAF) {
- _gameSys->setAnimation(steerSequenceId, 256, 0);
- _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
+ _vm->_gameSys->setAnimation(steerSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = steerSequenceId;
_s49_truckId = 256;
}
}
- clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
}
- if (isKeyStatus1(Common::KEYCODE_LEFT)) {
+ if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
// Steer left
if (_s49_truckSequenceId == 0xB0)
_s49_truckLaneNum = 2;
@@ -477,37 +489,31 @@ void GnapEngine::scene49_run() {
if (_s49_truckLaneNum == 1 || _s49_truckLaneNum == 2) {
int steerSequenceId = (_s49_truckLaneNum == 1) ? 0xB0 : 0xB2;
if (_s49_truckSequenceId == 0xAD || _s49_truckSequenceId == 0xAE) {
- _gameSys->setAnimation(steerSequenceId, 256, 0);
- _gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
+ _vm->_gameSys->setAnimation(steerSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
_s49_truckSequenceId = steerSequenceId;
_s49_truckId = 256;
}
}
- clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
-
- stopSound(0xE2);
-
+ _vm->stopSound(0xE2);
}
-void GnapEngine::scene49_updateAnimations() {
-
+void Scene49::updateAnimations() {
for (int i = 0; i < 5; ++i) {
- if (_gameSys->getAnimationStatus(i + 2) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(i + 2) == 2) {
if (_s49_obstacles[i]._currSequenceId)
- scene49_updateObstacle(i);
+ updateObstacle(i);
}
}
- if (_gameSys->getAnimationStatus(8) == 2) {
- _sceneDone = true;
- _newSceneNum = 47;
+ if (_vm->_gameSys->getAnimationStatus(8) == 2) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
}
-
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene49.h b/engines/gnap/scenes/scene49.h
new file mode 100644
index 0000000..f44b2ed
--- /dev/null
+++ b/engines/gnap/scenes/scene49.h
@@ -0,0 +1,79 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE49_H
+#define GNAP_SCENE49_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+struct Scene49Obstacle {
+ int _currSequenceId;
+ int _closerSequenceId;
+ int _passedSequenceId;
+ int _splashSequenceId;
+ int _collisionSequenceId;
+ int _prevId;
+ int _currId;
+ int _laneNum;
+};
+
+struct ObstacleDef {
+ int _sequenceId;
+ int _ticks;
+};
+
+class Scene49: public Scene {
+public:
+ Scene49(GnapEngine *vm);
+ ~Scene49() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s49_scoreBarPos;
+ int _s49_scoreLevel;
+ bool _s49_scoreBarFlash;
+ int _s49_obstacleIndex;
+ Scene49Obstacle _s49_obstacles[5];
+ int _s49_truckSequenceId;
+ int _s49_truckId;
+ int _s49_truckLaneNum;
+
+ void checkObstacles();
+ void updateObstacle(int id);
+ void increaseScore(int amount);
+ void decreaseScore(int amount);
+ void refreshScoreBar();
+ void clearObstacle(int index);
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE49_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 8c22cc8..a4d7604 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -70,6 +70,7 @@
#include "gnap/scenes/scene46.h"
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
+#include "gnap/scenes/scene49.h"
#include "gnap/scenes/scene54.h"
namespace Gnap {
@@ -404,8 +405,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 49:
- backgroundId = scene49_init();
- scene49_updateHotspots();
+ _scene = new Scene49(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -768,7 +770,8 @@ void GnapEngine::runSceneLogic() {
delete _scene;
break;
case 49:
- scene49_run();
+ _scene = new Scene48(this);
+ _scene->init();
if (_newSceneNum == 55)
_newSceneNum = 47;
break;
Commit: aca5984e2b2f08890f828bbe9c331841c9b33674
https://github.com/scummvm/scummvm/commit/aca5984e2b2f08890f828bbe9c331841c9b33674
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 50
Changed paths:
A engines/gnap/scenes/scene50.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene50.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2ef7516..5d4e810 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2021,15 +2021,6 @@ void GnapEngine::initGlobalSceneVars() {
// Shared by scenes 17 && 18
_s18_garbageCanPos = 8;
- // Scene 50
- _s50_timesPlayed = 0;
- _s50_timesPlayedModifier = 0;
- _s50_attackCounter = 0;
- _s50_leftTongueEnergyBarPos = 10;
- _s50_leftTongueNextIdCtr = 0;
- _s50_rightTongueEnergyBarPos = 10;
- _s50_rightTongueNextIdCtr = 0;
-
// Scene 52
_s52_gameScore = 0;
_s52_aliensInitialized = false;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 5063d90..bd1714d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -601,39 +601,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 50
- bool _s50_fightDone;
- int _s50_timesPlayed, _s50_timesPlayedModifier;
- int _s50_attackCounter;
- int _s50_roundNum, _s50_timeRemaining;
- int _s50_leftTongueRoundsWon, _s50_rightTongueRoundsWon;
- int _s50_leftTongueEnergyBarPos, _s50_rightTongueEnergyBarPos;
- int _s50_leftTongueSequenceId, _s50_leftTongueId;
- int _s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueNextIdCtr;
- int _s50_rightTongueSequenceId, _s50_rightTongueId;
- int _s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueNextIdCtr;
- int _s50_leftTongueEnergy, _s50_rightTongueEnergy;
- int scene50_init();
- void scene50_updateHotspots();
- bool scene50_tongueWinsRound(int tongueNum);
- void scene50_playWinAnim(int tongueNum, bool fightOver);
- void scene50_delayTicks();
- void scene50_initRound();
- bool scene50_updateCountdown();
- void scene50_drawCountdown(int value);
- void scene50_playTonguesIdle();
- void scene50_playRoundAnim(int roundNum);
- bool scene50_updateEnergyBars(int newLeftBarPos, int newRightBarPos);
- void scene50_waitForAnim(int animationIndex);
- int scene50_checkInput();
- int scene50_getRightTongueAction();
- void scene50_updateAnimations();
- int scene50_getRightTongueActionTicks();
- int scene50_getLeftTongueNextId();
- int scene50_getRightTongueNextId();
- void scene50_playWinBadgeAnim(int tongueNum);
- void scene50_run();
-
// Scene 51
int _s51_cashAmount;
int _s51_digits[4];
diff --git a/engines/gnap/scenes/scene50.cpp b/engines/gnap/scenes/scene50.cpp
index 2ec842a..68f29f3 100644
--- a/engines/gnap/scenes/scene50.cpp
+++ b/engines/gnap/scenes/scene50.cpp
@@ -23,128 +23,156 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene50.h"
namespace Gnap {
-int GnapEngine::scene50_init() {
+Scene50::Scene50(GnapEngine *vm) : Scene(vm) {
+ _s50_fightDone = false;
+
+ _s50_roundNum = -1;
+ _s50_timeRemaining = -1;
+ _s50_leftTongueRoundsWon = -1;
+ _s50_rightTongueRoundsWon = -1;
+ _s50_leftTongueSequenceId = -1;
+ _s50_leftTongueId = -1;
+ _s50_leftTongueNextSequenceId = -1;
+ _s50_leftTongueNextId = -1;
+ _s50_rightTongueSequenceId = -1;
+ _s50_rightTongueId = -1;
+ _s50_rightTongueNextSequenceId = -1;
+ _s50_rightTongueNextId = -1;
+ _s50_leftTongueEnergy = -1;
+ _s50_rightTongueEnergy = -1;
+
+ _s50_timesPlayed = 0;
+ _s50_timesPlayedModifier = 0;
+ _s50_attackCounter = 0;
+ _s50_leftTongueEnergyBarPos = 10;
+ _s50_leftTongueNextIdCtr = 0;
+ _s50_rightTongueEnergyBarPos = 10;
+ _s50_rightTongueNextIdCtr = 0;
+}
+
+int Scene50::init() {
return 0xC7;
}
-void GnapEngine::scene50_updateHotspots() {
- _hotspotsCount = 0;
+void Scene50::updateHotspots() {
+ _vm->_hotspotsCount = 0;
}
-bool GnapEngine::scene50_tongueWinsRound(int tongueNum) {
+bool Scene50::tongueWinsRound(int tongueNum) {
if (tongueNum == 1)
++_s50_leftTongueRoundsWon;
else
++_s50_rightTongueRoundsWon;
- scene50_playWinBadgeAnim(tongueNum);
+ playWinBadgeAnim(tongueNum);
bool fightOver = _s50_rightTongueRoundsWon == 2 || _s50_leftTongueRoundsWon == 2;
- scene50_playWinAnim(tongueNum, fightOver);
+ playWinAnim(tongueNum, fightOver);
return fightOver;
}
-void GnapEngine::scene50_playWinAnim(int tongueNum, bool fightOver) {
+void Scene50::playWinAnim(int tongueNum, bool fightOver) {
if (tongueNum == 1) {
if (fightOver) {
- _gameSys->insertSequence(0xAD, 140, 0xAC, 140, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xAD, 140, 0xAC, 140, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
_s50_leftTongueSequenceId = 0xB4;
_s50_rightTongueSequenceId = 0xBC;
_s50_rightTongueId = 100;
_s50_leftTongueId = 100;
- _gameSys->setAnimation(0xB4, 100, 6);
- _gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- scene50_waitForAnim(6);
- scene50_waitForAnim(5);
- invAdd(kItemGum);
- setFlag(kGFUnk13);
+ _vm->_gameSys->setAnimation(0xB4, 100, 6);
+ _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
+ _vm->invAdd(kItemGum);
+ _vm->setFlag(kGFUnk13);
} else {
- _gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
_s50_leftTongueSequenceId = 0xB4;
_s50_rightTongueSequenceId = 0xBC;
_s50_rightTongueId = 100;
_s50_leftTongueId = 100;
- _gameSys->setAnimation(0xB4, 100, 6);
- _gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- scene50_waitForAnim(6);
- scene50_waitForAnim(5);
+ _vm->_gameSys->setAnimation(0xB4, 100, 6);
+ _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
}
} else {
- _gameSys->insertSequence(0xBE, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0xBE, 100, 5);
- scene50_waitForAnim(5);
- _gameSys->insertSequence(0xBF, 100, 0xBE, 100, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xB5, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBE, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xBE, 100, 5);
+ waitForAnim(5);
+ _vm->_gameSys->insertSequence(0xBF, 100, 0xBE, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB5, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
_s50_rightTongueSequenceId = 0xBF;
_s50_leftTongueSequenceId = 0xB5;
_s50_rightTongueId = 100;
_s50_leftTongueId = 100;
- _gameSys->setAnimation(0xB5, 100, 6);
- _gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- scene50_waitForAnim(6);
- scene50_waitForAnim(5);
+ _vm->_gameSys->setAnimation(0xB5, 100, 6);
+ _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
}
// TODO delayTicksA(1, 7);
}
-void GnapEngine::scene50_delayTicks() {
+void Scene50::delayTicks() {
// TODO delayTicksA(3, 7);
}
-void GnapEngine::scene50_initRound() {
+void Scene50::initRound() {
_s50_leftTongueEnergy = 10;
_s50_rightTongueEnergy = 10;
_s50_fightDone = false;
- _timers[3] = scene50_getRightTongueActionTicks();
- _timers[4] = 0;
- _timers[6] = 0;
- _gameSys->fillSurface(0, 91, 73, 260, 30, 212, 0, 0);
- _gameSys->fillSurface(0, 450, 73, 260, 30, 212, 0, 0);
+ _vm->_timers[3] = getRightTongueActionTicks();
+ _vm->_timers[4] = 0;
+ _vm->_timers[6] = 0;
+ _vm->_gameSys->fillSurface(0, 91, 73, 260, 30, 212, 0, 0);
+ _vm->_gameSys->fillSurface(0, 450, 73, 260, 30, 212, 0, 0);
_s50_timeRemaining = 40;
- scene50_drawCountdown(40);
+ drawCountdown(40);
}
-bool GnapEngine::scene50_updateCountdown() {
- if (!_timers[5]) {
+bool Scene50::updateCountdown() {
+ if (!_vm->_timers[5]) {
--_s50_timeRemaining;
if (_s50_timeRemaining < 0) {
return true;
} else {
- _timers[5] = 15;
- scene50_drawCountdown(_s50_timeRemaining);
+ _vm->_timers[5] = 15;
+ drawCountdown(_s50_timeRemaining);
}
}
return false;
}
-void GnapEngine::scene50_drawCountdown(int value) {
+void Scene50::drawCountdown(int value) {
char str[8];
sprintf(str, "%02d", value);
- _gameSys->fillSurface(0, 371, 505, 50, 27, 0, 0, 0);
- _gameSys->drawTextToSurface(0, 381, 504, 255, 255, 255, str);
+ _vm->_gameSys->fillSurface(0, 371, 505, 50, 27, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(0, 381, 504, 255, 255, 255, str);
}
-void GnapEngine::scene50_playTonguesIdle() {
- _gameSys->insertSequence(0xBA, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xC2, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+void Scene50::playTonguesIdle() {
+ _vm->_gameSys->insertSequence(0xBA, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xC2, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
_s50_leftTongueSequenceId = 0xBA;
_s50_rightTongueSequenceId = 0xC2;
_s50_rightTongueNextSequenceId = -1;
_s50_leftTongueNextSequenceId = -1;
_s50_leftTongueId = 100;
_s50_rightTongueId = 100;
- _gameSys->setAnimation(0xC2, 100, 5);
- _gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
+ _vm->_gameSys->setAnimation(0xC2, 100, 5);
+ _vm->_gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
}
-void GnapEngine::scene50_playRoundAnim(int roundNum) {
- int sequenceId;
+void Scene50::playRoundAnim(int roundNum) {
+ int sequenceId = 0;
switch (roundNum) {
case 1:
@@ -158,23 +186,21 @@ void GnapEngine::scene50_playRoundAnim(int roundNum) {
break;
}
- _gameSys->insertSequence(sequenceId, 256, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->setAnimation(sequenceId, 256, 7);
- scene50_waitForAnim(7);
-
- _gameSys->insertSequence(0xAB, 256, sequenceId, 256, kSeqSyncWait, 0, 0, 0);
- _gameSys->setAnimation(0xAB, 256, 7);
- scene50_waitForAnim(7);
+ _vm->_gameSys->insertSequence(sequenceId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(sequenceId, 256, 7);
+ waitForAnim(7);
+ _vm->_gameSys->insertSequence(0xAB, 256, sequenceId, 256, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xAB, 256, 7);
+ waitForAnim(7);
}
-bool GnapEngine::scene50_updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
-
+bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
if (newLeftBarPos != _s50_leftTongueEnergyBarPos) {
if (newLeftBarPos < 0)
newLeftBarPos = 0;
_s50_leftTongueEnergyBarPos = newLeftBarPos;
- _gameSys->fillSurface(0, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
}
if (newRightBarPos != _s50_rightTongueEnergyBarPos) {
@@ -182,7 +208,7 @@ bool GnapEngine::scene50_updateEnergyBars(int newLeftBarPos, int newRightBarPos)
newRightBarPos = 0;
_s50_rightTongueEnergyBarPos = newRightBarPos;
if (newRightBarPos != 10)
- _gameSys->fillSurface(0, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
}
if (newLeftBarPos * newRightBarPos > 0)
@@ -193,37 +219,37 @@ bool GnapEngine::scene50_updateEnergyBars(int newLeftBarPos, int newRightBarPos)
return true;
}
-void GnapEngine::scene50_waitForAnim(int animationIndex) {
- while (_gameSys->getAnimationStatus(animationIndex) != 2) {
- gameUpdateTick();
+void Scene50::waitForAnim(int animationIndex) {
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
+ _vm->gameUpdateTick();
}
- _gameSys->setAnimation(0, 0, animationIndex);
+ _vm->_gameSys->setAnimation(0, 0, animationIndex);
}
-int GnapEngine::scene50_checkInput() {
+int Scene50::checkInput() {
int sequenceId = -1;
- if (isKeyStatus1(Common::KEYCODE_RIGHT)) {
- clearKeyStatus1(Common::KEYCODE_RIGHT);
+ if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
sequenceId = 0xB6;
- } else if (isKeyStatus1(Common::KEYCODE_LEFT)) {
- clearKeyStatus1(Common::KEYCODE_LEFT);
+ } else if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
sequenceId = 0xB3;
- } else if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ } else if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_s50_fightDone = true;
}
return sequenceId;
}
-int GnapEngine::scene50_getRightTongueAction() {
+int Scene50::getRightTongueAction() {
int sequenceId = -1;
- if (!_timers[3]) {
- _timers[3] = scene50_getRightTongueActionTicks();
+ if (!_vm->_timers[3]) {
+ _vm->_timers[3] = getRightTongueActionTicks();
if (_s50_rightTongueEnergy >= _s50_leftTongueEnergy) {
- switch (getRandom(5)) {
+ switch (_vm->getRandom(5)) {
case 0:
sequenceId = 0xBE;
break;
@@ -241,7 +267,7 @@ int GnapEngine::scene50_getRightTongueAction() {
break;
}
} else {
- switch (getRandom(4)) {
+ switch (_vm->getRandom(4)) {
case 0:
sequenceId = 0xBE;
break;
@@ -261,12 +287,11 @@ int GnapEngine::scene50_getRightTongueAction() {
return sequenceId;
}
-void GnapEngine::scene50_updateAnimations() {
-
- if (!_timers[4])
+void Scene50::updateAnimations() {
+ if (!_vm->_timers[4])
_s50_attackCounter = 0;
- if (_gameSys->getAnimationStatus(5) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(5) == 2) {
if (_s50_rightTongueSequenceId == 0xBE) {
if (_s50_leftTongueSequenceId != 0xB3 && _s50_leftTongueSequenceId != 0xB8)
_s50_rightTongueNextSequenceId = 0xBF;
@@ -276,38 +301,38 @@ void GnapEngine::scene50_updateAnimations() {
if (_s50_rightTongueNextSequenceId == -1)
_s50_rightTongueNextSequenceId = 0xC2;
if (_s50_rightTongueNextSequenceId == 0xBF) {
- _s50_leftTongueNextId = scene50_getLeftTongueNextId();
- _s50_rightTongueNextId = scene50_getRightTongueNextId();
- _gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
- _gameSys->setAnimation(0xB9, _s50_leftTongueNextId, 6);
- _gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xB9, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncExists, 0, 0, 0);
+ _s50_leftTongueNextId = getLeftTongueNextId();
+ _s50_rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
+ _vm->_gameSys->setAnimation(0xB9, _s50_leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB9, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncExists, 0, 0, 0);
_s50_rightTongueSequenceId = _s50_rightTongueNextSequenceId;
_s50_rightTongueNextSequenceId = -1;
_s50_leftTongueSequenceId = 0xB9;
_s50_leftTongueNextSequenceId = -1;
_s50_rightTongueId = _s50_rightTongueNextId;
_s50_leftTongueId = _s50_leftTongueNextId;
- _s50_leftTongueEnergy -= getRandom(2) + 1;//CHECKME
+ _s50_leftTongueEnergy -= _vm->getRandom(2) + 1;//CHECKME
} else {
- _s50_rightTongueNextId = scene50_getRightTongueNextId();
- _gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
- _gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _s50_rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
+ _vm->_gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
_s50_rightTongueSequenceId = _s50_rightTongueNextSequenceId;
_s50_rightTongueNextSequenceId = -1;
_s50_rightTongueId = _s50_rightTongueNextId;
}
}
- if (_gameSys->getAnimationStatus(6) == 2) {
+ if (_vm->_gameSys->getAnimationStatus(6) == 2) {
if (_s50_leftTongueSequenceId == 0xB6) {
++_s50_attackCounter;
if (_s50_timesPlayedModifier + 3 <= _s50_attackCounter) {
_s50_leftTongueNextSequenceId = 0xB8;
} else {
- _timers[4] = 20;
+ _vm->_timers[4] = 20;
//CHECKME
- if (_s50_rightTongueSequenceId != 0xBB && _s50_rightTongueSequenceId != 0xC0 && getRandom(8) != _s50_roundNum)
+ if (_s50_rightTongueSequenceId != 0xBB && _s50_rightTongueSequenceId != 0xC0 && _vm->getRandom(8) != _s50_roundNum)
_s50_leftTongueNextSequenceId = 0xB7;
else
_s50_leftTongueNextSequenceId = 0xB8;
@@ -318,12 +343,12 @@ void GnapEngine::scene50_updateAnimations() {
if (_s50_leftTongueNextSequenceId == -1)
_s50_leftTongueNextSequenceId = 0xBA;
if (_s50_leftTongueNextSequenceId == 0xB7) {
- _s50_leftTongueNextId = scene50_getLeftTongueNextId();
- _s50_rightTongueNextId = scene50_getRightTongueNextId();
- _gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _gameSys->setAnimation(0xC1, _s50_rightTongueNextId, 5);
- _gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xC1, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
+ _s50_leftTongueNextId = getLeftTongueNextId();
+ _s50_rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
+ _vm->_gameSys->setAnimation(0xC1, _s50_rightTongueNextId, 5);
+ _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xC1, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
_s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
_s50_leftTongueNextSequenceId = -1;
_s50_rightTongueSequenceId = 0xC1;
@@ -332,19 +357,19 @@ void GnapEngine::scene50_updateAnimations() {
_s50_leftTongueId = _s50_leftTongueNextId;
--_s50_rightTongueEnergy;
} else if (_s50_leftTongueNextSequenceId != 0xB8 || _s50_rightTongueSequenceId != 0xC2) {
- _s50_leftTongueNextId = scene50_getLeftTongueNextId();
- _gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _s50_leftTongueNextId = getLeftTongueNextId();
+ _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
_s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
_s50_leftTongueNextSequenceId = -1;
_s50_leftTongueId = _s50_leftTongueNextId;
} else {
- _s50_leftTongueNextId = scene50_getLeftTongueNextId();
- _s50_rightTongueNextId = scene50_getRightTongueNextId();
- _gameSys->setAnimation(0xBB, _s50_rightTongueNextId, 5);
- _gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _gameSys->insertSequence(0xBB, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
+ _s50_leftTongueNextId = getLeftTongueNextId();
+ _s50_rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(0xBB, _s50_rightTongueNextId, 5);
+ _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBB, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
_s50_rightTongueSequenceId = 0xBB;
_s50_rightTongueId = _s50_rightTongueNextId;
_s50_rightTongueNextSequenceId = -1;
@@ -353,24 +378,23 @@ void GnapEngine::scene50_updateAnimations() {
_s50_leftTongueId = _s50_leftTongueNextId;
}
}
-
}
-int GnapEngine::scene50_getRightTongueActionTicks() {
+int Scene50::getRightTongueActionTicks() {
return 15 - 5 * _s50_roundNum + 1;
}
-int GnapEngine::scene50_getLeftTongueNextId() {
+int Scene50::getLeftTongueNextId() {
_s50_leftTongueNextIdCtr = (_s50_leftTongueNextIdCtr + 1) % 3;
return _s50_leftTongueNextIdCtr + 100;
}
-int GnapEngine::scene50_getRightTongueNextId() {
+int Scene50::getRightTongueNextId() {
_s50_rightTongueNextIdCtr = (_s50_rightTongueNextIdCtr + 1) % 3;
return _s50_rightTongueNextIdCtr + 100;
}
-void GnapEngine::scene50_playWinBadgeAnim(int tongueNum) {
+void Scene50::playWinBadgeAnim(int tongueNum) {
int sequenceId;
if (tongueNum == 1) {
@@ -385,19 +409,17 @@ void GnapEngine::scene50_playWinBadgeAnim(int tongueNum) {
sequenceId = 0xC6;
}
- _gameSys->setAnimation(sequenceId, 120, 7);
- _gameSys->insertSequence(sequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
- scene50_waitForAnim(7);
-
+ _vm->_gameSys->setAnimation(sequenceId, 120, 7);
+ _vm->_gameSys->insertSequence(sequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
+ waitForAnim(7);
}
-void GnapEngine::scene50_run() {
-
+void Scene50::run() {
++_s50_timesPlayed;
_s50_timesPlayedModifier = _s50_timesPlayed / 4;
_s50_leftTongueRoundsWon = 0;
_s50_rightTongueRoundsWon = 0;
- // scene50_initFont();
+ // initFont();
_s50_leftTongueSequenceId = 186;
_s50_rightTongueSequenceId = 194;
_s50_rightTongueNextSequenceId = -1;
@@ -405,75 +427,72 @@ void GnapEngine::scene50_run() {
_s50_leftTongueId = 100;
_s50_rightTongueId = 100;
- _gameSys->setAnimation(194, 100, 5);
- _gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
- _gameSys->insertSequence(_s50_leftTongueSequenceId, _s50_leftTongueId, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(_s50_rightTongueSequenceId, _s50_rightTongueId, 0, 0, kSeqNone, 0, 0, 0);
- _gameSys->insertSequence(172, 140, 0, 0, kSeqNone, 0, 0, 0);
- endSceneInit();
+ _vm->_gameSys->setAnimation(194, 100, 5);
+ _vm->_gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
+ _vm->_gameSys->insertSequence(_s50_leftTongueSequenceId, _s50_leftTongueId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s50_rightTongueSequenceId, _s50_rightTongueId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(172, 140, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
- scene50_initRound();
+ initRound();
_s50_roundNum = 1;
- setGrabCursorSprite(-1);
- hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
// TODO delayTicksA(1, 7);
- scene50_playRoundAnim(_s50_roundNum);
+ playRoundAnim(_s50_roundNum);
- _timers[5] = 15;
+ _vm->_timers[5] = 15;
while (!_s50_fightDone) {
-
/* TODO
if (sceneXX_sub_4466B1())
_s50_fightDone = true;
*/
- int playerSequenceId = scene50_checkInput();
+ int playerSequenceId = checkInput();
if (playerSequenceId != -1)
_s50_leftTongueNextSequenceId = playerSequenceId;
- int rightSequenceId = scene50_getRightTongueAction();
+ int rightSequenceId = getRightTongueAction();
if (rightSequenceId != -1)
_s50_rightTongueNextSequenceId = rightSequenceId;
- scene50_updateAnimations();
+ updateAnimations();
- if (scene50_updateCountdown() ||
- scene50_updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy)) {
- int v0;
+ if (updateCountdown() ||
+ updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy)) {
+ bool v0;
if (_s50_rightTongueEnergy < _s50_leftTongueEnergy)
- v0 = scene50_tongueWinsRound(1);
+ v0 = tongueWinsRound(1);
else
- v0 = scene50_tongueWinsRound(2);
+ v0 = tongueWinsRound(2);
if (v0) {
- scene50_delayTicks();
+ delayTicks();
_s50_fightDone = true;
} else {
++_s50_roundNum;
- scene50_initRound();
- scene50_playTonguesIdle();
- scene50_updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy);
- scene50_playRoundAnim(_s50_roundNum);
- _timers[5] = 15;
+ initRound();
+ playTonguesIdle();
+ updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy);
+ playRoundAnim(_s50_roundNum);
+ _vm->_timers[5] = 15;
}
}
-
- gameUpdateTick();
-
+ _vm->gameUpdateTick();
}
- // scene50_freeFont();
+ // freeFont();
- _gameSys->setAnimation(0, 0, 7);
- _gameSys->setAnimation(0, 0, 6);
- _gameSys->setAnimation(0, 0, 5);
- _gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 7);
+ _vm->_gameSys->setAnimation(0, 0, 6);
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ _vm->_gameSys->setAnimation(0, 0, 3);
- showCursor();
+ _vm->showCursor();
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene50.h b/engines/gnap/scenes/scene50.h
new file mode 100644
index 0000000..6cc4bc3
--- /dev/null
+++ b/engines/gnap/scenes/scene50.h
@@ -0,0 +1,87 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE50_H
+#define GNAP_SCENE50_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene50: public Scene {
+public:
+ Scene50(GnapEngine *vm);
+ ~Scene50() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _s50_fightDone;
+ int _s50_timesPlayed;
+ int _s50_timesPlayedModifier;
+ int _s50_attackCounter;
+ int _s50_roundNum;
+ int _s50_timeRemaining;
+ int _s50_leftTongueRoundsWon;
+ int _s50_rightTongueRoundsWon;
+ int _s50_leftTongueEnergyBarPos;
+ int _s50_rightTongueEnergyBarPos;
+ int _s50_leftTongueSequenceId;
+ int _s50_leftTongueId;
+ int _s50_leftTongueNextSequenceId;
+ int _s50_leftTongueNextId;
+ int _s50_leftTongueNextIdCtr;
+ int _s50_rightTongueSequenceId;
+ int _s50_rightTongueId;
+ int _s50_rightTongueNextSequenceId;
+ int _s50_rightTongueNextId;
+ int _s50_rightTongueNextIdCtr;
+ int _s50_leftTongueEnergy;
+ int _s50_rightTongueEnergy;
+
+ bool tongueWinsRound(int tongueNum);
+ void playWinAnim(int tongueNum, bool fightOver);
+ void delayTicks();
+ void initRound();
+ bool updateCountdown();
+ void drawCountdown(int value);
+ void playTonguesIdle();
+ void playRoundAnim(int roundNum);
+ bool updateEnergyBars(int newLeftBarPos, int newRightBarPos);
+ void waitForAnim(int animationIndex);
+ int checkInput();
+ int getRightTongueAction();
+ int getRightTongueActionTicks();
+ int getLeftTongueNextId();
+ int getRightTongueNextId();
+ void playWinBadgeAnim(int tongueNum);
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE50_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index a4d7604..4386046 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -71,6 +71,7 @@
#include "gnap/scenes/scene47.h"
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene49.h"
+#include "gnap/scenes/scene50.h"
#include "gnap/scenes/scene54.h"
namespace Gnap {
@@ -412,7 +413,8 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 50:
- backgroundId = scene50_init();
+ _scene = new Scene50(this);
+ backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -770,13 +772,14 @@ void GnapEngine::runSceneLogic() {
delete _scene;
break;
case 49:
- _scene = new Scene48(this);
- _scene->init();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 47;
break;
case 50:
- scene50_run();
+ _scene->run();
+ delete _scene;
_newSceneNum = _prevSceneNum;
break;
case 51:
Commit: 7a66d4b3568ebcfae549f13e87549f2771f36732
https://github.com/scummvm/scummvm/commit/7a66d4b3568ebcfae549f13e87549f2771f36732
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scenes 51&52
Changed paths:
A engines/gnap/scenes/scene51.h
A engines/gnap/scenes/scene52.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene51.cpp
engines/gnap/scenes/scene52.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 5d4e810..f6bff60 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2021,12 +2021,6 @@ void GnapEngine::initGlobalSceneVars() {
// Shared by scenes 17 && 18
_s18_garbageCanPos = 8;
- // Scene 52
- _s52_gameScore = 0;
- _s52_aliensInitialized = false;
- _s52_alienDirection = 0;
- _s52_soundToggle = false;
-
// Scene 53
_s53_callsMadeCtr = 0;
_s53_callsRndUsed = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index bd1714d..a80d82f 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -250,17 +250,6 @@ enum {
// 0x7AF Gnap walks to the left 1
// 0x7B0 Gnap walks to the left 2
-struct Scene51Item {
- int _currSequenceId;
- int _droppedSequenceId;
- int _x, _y;
- int _collisionX;
- bool _canCatch;
- bool _isCollision;
- int _x2;
- int _id;
-};
-
enum Facing {
kDirNone = 0,
kDirBottomRight = 1,
@@ -601,118 +590,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 51
- int _s51_cashAmount;
- int _s51_digits[4];
- int _s51_digitSequenceIds[4];
- int _s51_guySequenceId, _s51_guyNextSequenceId;
- int _s51_itemsCaughtCtr;
- int _s51_dropSpeedTicks;
- int _s51_nextDropItemKind, _s51_itemInsertX, _s51_itemInsertDirection;
- int _s51_platypusSequenceId, _s51_platypusNextSequenceId, _s51_platypusJumpSequenceId;
- bool _s51_dropLoseCash;
- int _s51_itemsCtr,_s51_itemsCtr1, _s51_itemsCtr2;
- Scene51Item _s51_items[6];
-
- int scene51_init();
- void scene51_updateHotspots();
- void scene51_clearItem(Scene51Item *item);
- void scene51_dropNextItem();
- void scene51_updateItemAnimations();
- int scene51_checkCollision(int sequenceId);
- void scene51_updateItemAnimation(Scene51Item *item, int index);
- void scene51_removeCollidedItems();
- int scene51_itemIsCaught(Scene51Item *item);
- bool scene51_isJumpingRight(int sequenceId);
- bool scene51_isJumpingLeft(int sequenceId);
- bool scene51_isJumping(int sequenceId);
- void scene51_waitForAnim(int animationIndex);
- int scene51_getPosRight(int sequenceId);
- int scene51_getPosLeft(int sequenceId);
- void scene51_playIntroAnim();
- void scene51_updateGuyAnimation();
- int scene51_incCashAmount(int sequenceId);
- void scene51_winMinigame();
- void scene51_playCashAppearAnim();
- void scene51_updateCash(int amount);
- void scene51_drawDigit(int digit, int position);
- void scene51_initCashDisplay();
- void scene51_run();
-
- // Scene 52
- int _s52_liveAlienRows;
- int _s52_gameScore;
- bool _s52_soundToggle;
- int _s52_arcadeScreenLeft;
- int _s52_arcadeScreenRight;
- int _s52_arcadeScreenBottom;
- int _s52_shipsLeft;
- int _s52_shieldSpriteIds[3];
- int _s52_shieldPosX[3];
- int _s52_shipPosX;
- int _s52_shipCannonPosX, _s52_shipCannonPosY;
- bool _s52_shipCannonFiring;
- bool _s52_shipCannonFired;
- int _s52_shipCannonWidth, _s52_shipCannonHeight;
- int _s52_shipCannonTopY;
- int _s52_shipMidX, _s52_shipMidY;
- bool _s52_shipFlag;
- bool _s52_aliensInitialized;
- int _s52_alienSpeed, _s52_alienDirection;
- int _s52_alienWidth, _s52_alienHeight;
- int _s52_alienLeftX, _s52_alienTopY;
- int _s52_alienRowDownCtr;
- int _s52_alienRowKind[7];
- int _s52_alienRowAnims[7];
- int _s52_alienRowIds[7];
- int _s52_alienRowXOfs[7];
- int _s52_alienCannonFired[3];
- int _s52_alienCannonPosX[3];
- int _s52_alienCannonPosY[3];
- int _s52_alienCannonSequenceIds[3];
- int _s52_alienCannonIds[3];
- bool _s52_alienWave, _s52_alienSingle;
- int _s52_alienCounter;
- bool _s52_bottomAlienFlag;
- int _s52_aliensCount;
- int _s52_items[8][5];
- int _s52_nextUfoSequenceId, _s52_ufoSequenceId;
- int scene52_init();
- void scene52_updateHotspots();
- void scene52_update();
- void scene52_initShipCannon(int bottomY);
- void scene52_initAlienCannons();
- void scene52_fireShipCannon(int posX);
- void scene52_fireAlienCannon();
- int scene52_getFreeShipCannon();
- int scene52_getFreeAlienCannon();
- void scene52_updateShipCannon();
- void scene52_updateAlienCannons();
- void scene52_initAliens();
- void scene52_initAlienRowKind(int rowNum, int alienKind);
- void scene52_insertAlienRow(int rowNum);
- void scene52_insertAlienRowAliens(int rowNum);
- void scene52_updateAlienRow(int rowNum);
- void scene52_moveDownAlienRow();
- int scene52_updateHitAlien();
- int scene52_getHitAlienNum(int rowNum);
- int scene52_alienCannonHitShip(int cannonNum);
- int scene52_alienCannonHitShield(int cannonNum);
- bool scene52_shipCannonHitShield(int cannonNum);
- bool scene52_shipCannonHitAlien();
- void scene52_shipExplode();
- bool scene52_checkAlienRow(int rowNum);
- void scene52_updateAlienRowXOfs();
- void scene52_initAlienSize();
- void scene52_playSound();
- void scene52_updateAliens();
- void scene52_updateAlien(int rowNum);
- void scene52_loseShip();
- void scene52_initShields();
- void scene52_initAnims();
- void scene52_drawScore(int score);
- void scene52_run();
-
// Scene 53
int _s53_currHandSequenceId;
bool _s53_isGnapPhoning;
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index 1d9e177..f4a3a84 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene51.h"
namespace Gnap {
@@ -46,18 +47,54 @@ static const int kDigitPositions[4] = {
0x76 Platypus jumping (right)
*/
-int GnapEngine::scene51_init() {
- _gameSys->setAnimation(0, 0, 0);
+Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
+ _s51_dropLoseCash = false;
+
+ _s51_cashAmount = -1;
+ _s51_guySequenceId = -1;
+ _s51_guyNextSequenceId = -1;
+ _s51_itemsCaughtCtr = -1;
+ _s51_dropSpeedTicks = -1;
+ _s51_nextDropItemKind = -1;
+ _s51_itemInsertX = -1;
+ _s51_itemInsertDirection = -1;
+ _s51_platypusSequenceId = -1;
+ _s51_platypusNextSequenceId = -1;
+ _s51_platypusJumpSequenceId = -1;
+ _s51_itemsCtr = -1;
+ _s51_itemsCtr1 = -1;
+ _s51_itemsCtr2 = -1;
+
+ for (int i = 0; i < 4; i++) {
+ _s51_digits[i] = 0;
+ _s51_digitSequenceIds[4] = -1;
+ }
+
+ for (int i = 0; i < 6; i++) {
+ _s51_items[i]._currSequenceId = -1;
+ _s51_items[i]._droppedSequenceId;
+ _s51_items[i]._x = 0;
+ _s51_items[i]._y = 0;
+ _s51_items[i]._collisionX;
+ _s51_items[i]._canCatch = false;
+ _s51_items[i]._isCollision = false;
+ _s51_items[i]._x2 = 0;
+ _s51_items[i]._id = -1;
+ }
+}
+
+int Scene51::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
for (int i = 0; i < 6; ++i)
- _gameSys->setAnimation(0, 0, i + 1);
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
return 0xD4;
}
-void GnapEngine::scene51_updateHotspots() {
- _hotspotsCount = 0;
+void Scene51::updateHotspots() {
+ _vm->_hotspotsCount = 0;
}
-void GnapEngine::scene51_clearItem(Scene51Item *item) {
+void Scene51::clearItem(Scene51Item *item) {
item->_currSequenceId = 0;
item->_droppedSequenceId = 0;
item->_x = 0;
@@ -67,13 +104,11 @@ void GnapEngine::scene51_clearItem(Scene51Item *item) {
item->_canCatch = false;
}
-void GnapEngine::scene51_dropNextItem() {
-
- if (_timers[0])
+void Scene51::dropNextItem() {
+ if (_vm->_timers[0])
return;
int index = 0;
-
while (index < 6 && _s51_items[index]._currSequenceId)
++index;
@@ -81,9 +116,8 @@ void GnapEngine::scene51_dropNextItem() {
return;
switch (_s51_nextDropItemKind) {
-
case 0:
- if (getRandom(10) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(10) != 0 || _s51_itemsCtr2 >= 2) {
_s51_items[index]._currSequenceId = 0xBD;
} else {
--_s51_itemsCtr1;
@@ -93,8 +127,8 @@ void GnapEngine::scene51_dropNextItem() {
break;
case 1:
- if (getRandom(8) != 0 || _s51_itemsCtr2 >= 2) {
- if (getRandom(5) == 0) {
+ if (_vm->getRandom(8) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) == 0) {
if (_s51_itemInsertDirection)
_s51_itemInsertX -= 70;
else
@@ -109,7 +143,7 @@ void GnapEngine::scene51_dropNextItem() {
break;
case 2:
- if (getRandom(6) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(6) != 0 || _s51_itemsCtr2 >= 2) {
_s51_items[index]._currSequenceId = 0xBD;
} else {
--_s51_itemsCtr1;
@@ -127,8 +161,8 @@ void GnapEngine::scene51_dropNextItem() {
case 5:
case 6:
- if (getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
- if (getRandom(5) != 0)
+ if (_vm->getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) != 0)
_s51_items[index]._currSequenceId = 0xBD;
else
_s51_items[index]._currSequenceId = 0xC0;
@@ -140,14 +174,14 @@ void GnapEngine::scene51_dropNextItem() {
break;
case 7:
- if (getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
- if (getRandom(5) == 0) {
+ if (_vm->getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) == 0) {
if (_s51_itemInsertDirection)
_s51_itemInsertX -= 40;
else
_s51_itemInsertX += 40;
}
- if (getRandom(9) != 0)
+ if (_vm->getRandom(9) != 0)
_s51_items[index]._currSequenceId = 0xBD;
else
_s51_items[index]._currSequenceId = 0xC0;
@@ -159,8 +193,8 @@ void GnapEngine::scene51_dropNextItem() {
break;
default:
- if (getRandom(4) != 0 || _s51_itemsCtr2 >= 2) {
- if (getRandom(9) != 0)
+ if (_vm->getRandom(4) != 0 || _s51_itemsCtr2 >= 2) {
+ if (_vm->getRandom(9) != 0)
_s51_items[index]._currSequenceId = 0xBD;
else
_s51_items[index]._currSequenceId = 0xC0;
@@ -170,7 +204,6 @@ void GnapEngine::scene51_dropNextItem() {
++_s51_itemsCtr2;
}
break;
-
}
if (_s51_itemInsertDirection) {
@@ -194,7 +227,7 @@ void GnapEngine::scene51_dropNextItem() {
_s51_itemInsertX = 129;
if (_s51_items[index]._currSequenceId == 0xBA) {
- _s51_items[index]._x2 = getRandom(350) + 200;
+ _s51_items[index]._x2 = _vm->getRandom(350) + 200;
_s51_items[index]._x = _s51_items[index]._x2 - 362;
_s51_items[index]._y = 15;
_s51_items[index]._id = 249 - index;
@@ -207,37 +240,37 @@ void GnapEngine::scene51_dropNextItem() {
_s51_items[index]._canCatch = true;
}
- _gameSys->setAnimation(_s51_items[index]._currSequenceId, _s51_items[index]._id, index + 1);
- _gameSys->insertSequence(_s51_items[index]._currSequenceId, _s51_items[index]._id, 0, 0,
+ _vm->_gameSys->setAnimation(_s51_items[index]._currSequenceId, _s51_items[index]._id, index + 1);
+ _vm->_gameSys->insertSequence(_s51_items[index]._currSequenceId, _s51_items[index]._id, 0, 0,
kSeqNone, 0, _s51_items[index]._x, _s51_items[index]._y);
- _timers[0] = _s51_dropSpeedTicks;
+ _vm->_timers[0] = _s51_dropSpeedTicks;
if (_s51_nextDropItemKind >= 3)
- _timers[0] = 20;
+ _vm->_timers[0] = 20;
if (_s51_nextDropItemKind >= 5)
- _timers[0] = 5;
+ _vm->_timers[0] = 5;
if (_s51_nextDropItemKind == 8)
- _timers[0] = 4;
+ _vm->_timers[0] = 4;
++_s51_itemsCtr;
-
}
-void GnapEngine::scene51_updateItemAnimations() {
- for (int i = 0; i < 6; ++i)
- if (_gameSys->getAnimationStatus(i + 1) == 2)
- scene51_updateItemAnimation(&_s51_items[i], i);
+void Scene51::updateItemAnimations() {
+ for (int i = 0; i < 6; ++i) {
+ if (_vm->_gameSys->getAnimationStatus(i + 1) == 2)
+ updateItemAnimation(&_s51_items[i], i);
+ }
}
-int GnapEngine::scene51_checkCollision(int sequenceId) {
+int Scene51::checkCollision(int sequenceId) {
bool jumpingLeft = false, jumpingRight = false;
int v8, v4;
int result = 0;
- if (!scene51_isJumping(sequenceId))
+ if (!isJumping(sequenceId))
return false;
bool checkFl = false;
@@ -247,13 +280,13 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
if (!checkFl)
return false;
- if (scene51_isJumpingRight(sequenceId)) {
- v8 = scene51_getPosRight(sequenceId);
- v4 = scene51_getPosRight(sequenceId + 1);
+ if (isJumpingRight(sequenceId)) {
+ v8 = getPosRight(sequenceId);
+ v4 = getPosRight(sequenceId + 1);
jumpingRight = true;
- } else if (scene51_isJumpingLeft(sequenceId)) {
- v4 = scene51_getPosLeft(sequenceId - 1) + 33;
- v8 = scene51_getPosLeft(sequenceId) + 33;
+ } else if (isJumpingLeft(sequenceId)) {
+ v4 = getPosLeft(sequenceId - 1) + 33;
+ v8 = getPosLeft(sequenceId) + 33;
jumpingLeft = true;
}
@@ -278,8 +311,8 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
}
}
if (v5) {
- _gameSys->setAnimation(0xBC, _s51_items[i]._id, i + 1);
- _gameSys->insertSequence(0xBC, _s51_items[i]._id, _s51_items[i]._currSequenceId, _s51_items[i]._id, kSeqSyncWait, 0, _s51_items[i]._x, 15);
+ _vm->_gameSys->setAnimation(0xBC, _s51_items[i]._id, i + 1);
+ _vm->_gameSys->insertSequence(0xBC, _s51_items[i]._id, _s51_items[i]._currSequenceId, _s51_items[i]._id, kSeqSyncWait, 0, _s51_items[i]._x, 15);
_s51_items[i]._isCollision = false;
_s51_items[i]._currSequenceId = 0xBC;
--_s51_itemsCtr2;
@@ -290,14 +323,14 @@ int GnapEngine::scene51_checkCollision(int sequenceId) {
return result;
}
-void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
+void Scene51::updateItemAnimation(Scene51Item *item, int index) {
switch (item->_currSequenceId) {
case 0xBD:
case 0xC0:
case 0xC1:
// Falling coin and banknote
- if (!scene51_itemIsCaught(item)) {
+ if (!itemIsCaught(item)) {
if (_s51_dropLoseCash) {
if (item->_currSequenceId == 0xBD)
_s51_cashAmount -= 2;
@@ -305,30 +338,30 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
_s51_cashAmount -= 25;
if (_s51_cashAmount < 0)
_s51_cashAmount = 0;
- scene51_updateCash(_s51_cashAmount);
+ updateCash(_s51_cashAmount);
}
item->_droppedSequenceId = item->_currSequenceId + 1;
if (item->_currSequenceId != 0xC0) {
item->_canCatch = false;
_s51_dropLoseCash = true;
_s51_itemsCtr = 0;
- _timers[0] = 10;
+ _vm->_timers[0] = 10;
}
if (item->_droppedSequenceId) {
- _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
item->_currSequenceId = item->_droppedSequenceId;
item->_y = 0;
}
} else {
- _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- _gameSys->setAnimation(0, 0, index + 1);
- playSound(218, false);
- if (scene51_incCashAmount(item->_currSequenceId) == 1995) {
- scene51_winMinigame();
- _sceneDone = true;
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ _vm->playSound(218, false);
+ if (incCashAmount(item->_currSequenceId) == 1995) {
+ winMinigame();
+ _vm->_sceneDone = true;
} else {
- scene51_clearItem(item);
+ clearItem(item);
++_s51_itemsCaughtCtr;
if (_s51_itemsCaughtCtr == 5)
--_s51_dropSpeedTicks;
@@ -347,7 +380,7 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
_s51_itemsCtr1 = 20;
_s51_dropLoseCash = false;
_s51_itemsCaughtCtr = 0;
- scene51_removeCollidedItems();
+ removeCollidedItems();
}
}
}
@@ -357,8 +390,8 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
// Fallen coin
item->_droppedSequenceId = item->_currSequenceId + 1;
if (item->_droppedSequenceId) {
- _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
item->_currSequenceId = item->_droppedSequenceId;
item->_y = 0;
}
@@ -367,9 +400,9 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
case 0xBF:
case 0xC2:
// Bouncing coin and banknote
- _gameSys->setAnimation(0, 0, index + 1);
- _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- scene51_clearItem(item);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ clearItem(item);
break;
case 0xBA:
@@ -377,8 +410,8 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
item->_droppedSequenceId = 0xBB;
item->_y = 15;
if (item->_droppedSequenceId) {
- _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
item->_currSequenceId = item->_droppedSequenceId;
item->_y = 0;
}
@@ -387,60 +420,57 @@ void GnapEngine::scene51_updateItemAnimation(Scene51Item *item, int index) {
case 0xBB:
item->_isCollision = true;
item->_droppedSequenceId = 0;
- _gameSys->setAnimation(0, 0, index + 1);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
break;
case 0xBC:
- _gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- _gameSys->setAnimation(0, 0, index + 1);
- scene51_clearItem(item);
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ clearItem(item);
break;
default:
if (item->_droppedSequenceId) {
- _gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
item->_currSequenceId = item->_droppedSequenceId;
item->_y = 0;
}
break;
-
}
-
}
-void GnapEngine::scene51_removeCollidedItems() {
+void Scene51::removeCollidedItems() {
for (int i = 0; i < 6; ++i) {
if (_s51_items[i]._isCollision) {
- _gameSys->removeSequence(_s51_items[i]._currSequenceId, _s51_items[i]._id, true);
- _gameSys->setAnimation(0, 0, i + 1);
- scene51_clearItem(&_s51_items[i]);
+ _vm->_gameSys->removeSequence(_s51_items[i]._currSequenceId, _s51_items[i]._id, true);
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
+ clearItem(&_s51_items[i]);
}
}
_s51_itemsCtr2 = 0;
}
-int GnapEngine::scene51_itemIsCaught(Scene51Item *item) {
-
+int Scene51::itemIsCaught(Scene51Item *item) {
if (!item->_canCatch)
return 0;
- if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
- int v4 = scene51_getPosRight(_s51_platypusJumpSequenceId) + 97;
+ if (isJumpingRight(_s51_platypusJumpSequenceId)) {
+ int v4 = getPosRight(_s51_platypusJumpSequenceId) + 97;
if (item->_collisionX < v4 && v4 - item->_collisionX < 56)
return 1;
} else {
- int v2 = scene51_getPosLeft(_s51_platypusJumpSequenceId);
+ int v2 = getPosLeft(_s51_platypusJumpSequenceId);
if (item->_collisionX > v2 && item->_collisionX - v2 < 56)
return 1;
}
if (item->_currSequenceId == 0xC1) {
int v3 = item->_collisionX + 100;
- if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
- if (ABS(scene51_getPosRight(_s51_platypusJumpSequenceId) + 46 - v3) < 56)
+ if (isJumpingRight(_s51_platypusJumpSequenceId)) {
+ if (ABS(getPosRight(_s51_platypusJumpSequenceId) + 46 - v3) < 56)
return 1;
- } else if (ABS(scene51_getPosLeft(_s51_platypusJumpSequenceId) + 46 - v3) < 56) {
+ } else if (ABS(getPosLeft(_s51_platypusJumpSequenceId) + 46 - v3) < 56) {
return 1;
}
}
@@ -448,27 +478,27 @@ int GnapEngine::scene51_itemIsCaught(Scene51Item *item) {
return 0;
}
-bool GnapEngine::scene51_isJumpingRight(int sequenceId) {
+bool Scene51::isJumpingRight(int sequenceId) {
return sequenceId >= 0x76 && sequenceId <= 0x95;
}
-bool GnapEngine::scene51_isJumpingLeft(int sequenceId) {
+bool Scene51::isJumpingLeft(int sequenceId) {
return sequenceId >= 0x96 && sequenceId <= 0xB5;
}
-bool GnapEngine::scene51_isJumping(int sequenceId) {
+bool Scene51::isJumping(int sequenceId) {
return sequenceId >= 0x76 && sequenceId <= 0xB5;
}
-void GnapEngine::scene51_waitForAnim(int animationIndex) {
- while (_gameSys->getAnimationStatus(animationIndex) != 2) {
+void Scene51::waitForAnim(int animationIndex) {
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
// pollMessages();
- scene51_updateItemAnimations();
- gameUpdateTick();
+ updateItemAnimations();
+ _vm->gameUpdateTick();
}
}
-int GnapEngine::scene51_getPosRight(int sequenceId) {
+int Scene51::getPosRight(int sequenceId) {
static const int kRightPosTbl[] = {
131, 159, 178, 195, 203, 219, 238, 254,
246, 274, 293, 310, 318, 334, 353, 369,
@@ -481,7 +511,7 @@ int GnapEngine::scene51_getPosRight(int sequenceId) {
return -1;
}
-int GnapEngine::scene51_getPosLeft(int sequenceId) {
+int Scene51::getPosLeft(int sequenceId) {
static const int kLeftPosTbl[] = {
580, 566, 550, 536, 526, 504, 488, 469,
460, 446, 430, 416, 406, 384, 368, 349,
@@ -494,14 +524,14 @@ int GnapEngine::scene51_getPosLeft(int sequenceId) {
return -1;
}
-void GnapEngine::scene51_playIntroAnim() {
+void Scene51::playIntroAnim() {
int soundCtr = 0;
_s51_platypusSequenceId = 0x76;
_s51_platypusNextSequenceId = 0x76;
for (int i = 0; i < 6; ++i)
- scene51_clearItem(&_s51_items[i]);
+ clearItem(&_s51_items[i]);
_s51_items[0]._currSequenceId = 0xBA;
_s51_items[0]._x2 = 320;
@@ -510,51 +540,48 @@ void GnapEngine::scene51_playIntroAnim() {
_s51_items[0]._id = 249;
_s51_items[0]._isCollision = true;
- _gameSys->insertSequence(_s51_platypusSequenceId, 256, 0, 0, kSeqNone, 0, -179, 0);
- _gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _s51_items[0]._x, _s51_items[0]._y);
- _gameSys->setAnimation(0xBA, 249, 1);
- _gameSys->setAnimation(_s51_platypusSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusSequenceId, 256, 0, 0, kSeqNone, 0, -179, 0);
+ _vm->_gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _s51_items[0]._x, _s51_items[0]._y);
+ _vm->_gameSys->setAnimation(0xBA, 249, 1);
+ _vm->_gameSys->setAnimation(_s51_platypusSequenceId, 256, 0);
while (_s51_platypusSequenceId < 0x80) {
- scene51_waitForAnim(0);
+ waitForAnim(0);
++_s51_platypusNextSequenceId;
- _gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, -179, 0);
+ _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, -179, 0);
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, false);
+ _vm->playSound(214, false);
}
_s51_platypusNextSequenceId = 0x75;
while (_s51_platypusSequenceId != 0x84) {
- scene51_waitForAnim(0);
+ waitForAnim(0);
++_s51_platypusNextSequenceId;
int oldSequenceId = _s51_platypusNextSequenceId;
- int v0 = scene51_checkCollision(_s51_platypusNextSequenceId);
- _gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, v0, 0);
+ int v0 = checkCollision(_s51_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, v0, 0);
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
if (v0) {
_s51_platypusNextSequenceId = oldSequenceId;
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, false);
+ _vm->playSound(214, false);
}
}
-
- scene51_waitForAnim(0);
-
+ waitForAnim(0);
}
-void GnapEngine::scene51_updateGuyAnimation() {
-
- if (!_timers[4]) {
- _timers[4] = getRandom(20) + 60;
+void Scene51::updateGuyAnimation() {
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
- switch (getRandom(5)) {
+ switch (_vm->getRandom(5)) {
case 0:
_s51_guyNextSequenceId = 0xC3;
break;
@@ -572,15 +599,13 @@ void GnapEngine::scene51_updateGuyAnimation() {
break;
}
- _gameSys->insertSequence(_s51_guyNextSequenceId, 39, _s51_guySequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s51_guyNextSequenceId, 39, _s51_guySequenceId, 39, kSeqSyncWait, 0, 0, 0);
_s51_guySequenceId = _s51_guyNextSequenceId;
_s51_guyNextSequenceId = -1;
-
}
-
}
-int GnapEngine::scene51_incCashAmount(int sequenceId) {
+int Scene51::incCashAmount(int sequenceId) {
switch (sequenceId) {
case 0xBD:
_s51_cashAmount += 10;
@@ -591,44 +616,44 @@ int GnapEngine::scene51_incCashAmount(int sequenceId) {
break;
case 0xB6:
case 0xB7:
- _s51_cashAmount -= 10 * getRandom(5) + 50;
+ _s51_cashAmount -= 10 * _vm->getRandom(5) + 50;
if (_s51_cashAmount < 0)
_s51_cashAmount = 0;
break;
}
if (_s51_cashAmount > 1995)
_s51_cashAmount = 1995;
- scene51_updateCash(_s51_cashAmount);
+ updateCash(_s51_cashAmount);
return _s51_cashAmount;
}
-void GnapEngine::scene51_winMinigame() {
- scene51_updateCash(1995);
- playSound(218, false);
+void Scene51::winMinigame() {
+ updateCash(1995);
+ _vm->playSound(218, false);
// TODO delayTicksA(1, 5);
- _newSceneNum = 48;
- invRemove(kItemBanana);
+ _vm->_newSceneNum = 48;
+ _vm->invRemove(kItemBanana);
}
-void GnapEngine::scene51_playCashAppearAnim() {
- _gameSys->setAnimation(0xC8, 252, 0);
- _gameSys->insertSequence(0xC8, 252, 0, 0, kSeqNone, 0, -20, -20);
- while (_gameSys->getAnimationStatus(0) != 2) {
- gameUpdateTick();
+void Scene51::playCashAppearAnim() {
+ _vm->_gameSys->setAnimation(0xC8, 252, 0);
+ _vm->_gameSys->insertSequence(0xC8, 252, 0, 0, kSeqNone, 0, -20, -20);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->gameUpdateTick();
// checkGameAppStatus();
}
}
-void GnapEngine::scene51_updateCash(int amount) {
- scene51_drawDigit(amount / 1000, 0);
- scene51_drawDigit(amount / 100 % 10, 1);
- scene51_drawDigit(amount / 10 % 10, 2);
- scene51_drawDigit(amount % 10, 3);
+void Scene51::updateCash(int amount) {
+ drawDigit(amount / 1000, 0);
+ drawDigit(amount / 100 % 10, 1);
+ drawDigit(amount / 10 % 10, 2);
+ drawDigit(amount % 10, 3);
}
-void GnapEngine::scene51_drawDigit(int digit, int position) {
+void Scene51::drawDigit(int digit, int position) {
if (digit != _s51_digits[position]) {
- _gameSys->insertSequence(kDigitSequenceIds[digit], 253,
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[digit], 253,
_s51_digitSequenceIds[position], 253,
kSeqSyncWait, 0, kDigitPositions[position] - 20, -20);
_s51_digitSequenceIds[position] = kDigitSequenceIds[digit];
@@ -636,44 +661,42 @@ void GnapEngine::scene51_drawDigit(int digit, int position) {
}
}
-void GnapEngine::scene51_initCashDisplay() {
+void Scene51::initCashDisplay() {
for (int position = 0; position < 4; ++position) {
_s51_digits[position] = 0;
_s51_digitSequenceIds[position] = kDigitSequenceIds[0];
- _gameSys->insertSequence(kDigitSequenceIds[0], 253, 0, 0,
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[0], 253, 0, 0,
kSeqNone, 0, kDigitPositions[position] - 20, -20);
}
_s51_cashAmount = 0;
}
-void GnapEngine::scene51_run() {
-
+void Scene51::run() {
int soundCtr = 0;
bool isIdle = true;
_s51_itemsCtr = 0;
- _newSceneNum = _prevSceneNum;
+ _vm->_newSceneNum = _vm->_prevSceneNum;
_s51_cashAmount = 0;
_s51_platypusJumpSequenceId = 0x84;
- endSceneInit();
+ _vm->endSceneInit();
- hideCursor();
- setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
_s51_guySequenceId = 0xC3;
_s51_guyNextSequenceId = -1;
- _gameSys->insertSequence(0xC3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xC3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
- _timers[4] = getRandom(20) + 60;
-
- scene51_playCashAppearAnim();
- scene51_initCashDisplay();
- scene51_playIntroAnim();
+ playCashAppearAnim();
+ initCashDisplay();
+ playIntroAnim();
_s51_platypusNextSequenceId = 0x74;
- _gameSys->setAnimation(0x74, 256, 0);
- _gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
+ _vm->_gameSys->setAnimation(0x74, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
_s51_itemInsertDirection = 0;
@@ -682,55 +705,53 @@ void GnapEngine::scene51_run() {
_s51_nextDropItemKind = 0;
for (int i = 0; i < 6; ++i)
- scene51_clearItem(&_s51_items[i]);
-
- _s51_itemInsertX = getRandom(556) + 129;
+ clearItem(&_s51_items[i]);
- _timers[0] = 15;
+ _s51_itemInsertX = _vm->getRandom(556) + 129;
+ _vm->_timers[0] = 15;
_s51_itemsCaughtCtr = 0;
_s51_dropLoseCash = false;
_s51_itemsCtr1 = 20;
- clearKeyStatus1(Common::KEYCODE_RIGHT);
- clearKeyStatus1(Common::KEYCODE_LEFT);
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
bool isCollision = false;
bool startWalk = true;
- while (!_sceneDone) {
+ while (!_vm->_sceneDone) {
+ if (_vm->sceneXX_sub_4466B1())
+ _vm->_sceneDone = true;
- if (sceneXX_sub_4466B1())
- _sceneDone = true;
+ _vm->gameUpdateTick();
- gameUpdateTick();
+ updateGuyAnimation();
+ dropNextItem();
+ updateItemAnimations();
- scene51_updateGuyAnimation();
- scene51_dropNextItem();
- scene51_updateItemAnimations();
-
- if (isKeyStatus2(Common::KEYCODE_UP) || isKeyStatus2(Common::KEYCODE_SPACE)) {
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
- scene51_waitForAnim(0);
- _gameSys->setAnimation(0xB8, 256, 0);
- _gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ if (isJumpingRight(_s51_platypusJumpSequenceId)) {
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB8, 256, 0);
+ _vm->_gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
_s51_platypusSequenceId = 0xB8;
- scene51_waitForAnim(0);
+ waitForAnim(0);
_s51_platypusNextSequenceId += 6;
if (_s51_platypusNextSequenceId > 0x95)
_s51_platypusNextSequenceId = 0x95;
_s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
} else {
- scene51_waitForAnim(0);
- _gameSys->setAnimation(0xB9, 256, 0);
- _gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB9, 256, 0);
+ _vm->_gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
_s51_platypusSequenceId = 0xB9;
- scene51_waitForAnim(0);
+ waitForAnim(0);
_s51_platypusNextSequenceId += 6;
if (_s51_platypusNextSequenceId > 0xB5)
_s51_platypusNextSequenceId = 0xB5;
@@ -739,22 +760,22 @@ void GnapEngine::scene51_run() {
isIdle = false;
}
- while (isKeyStatus2(Common::KEYCODE_RIGHT) && _s51_platypusNextSequenceId != 0x96) {
+ while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT) && _s51_platypusNextSequenceId != 0x96) {
// pollMessages();
if (_s51_platypusNextSequenceId == 0xB6)
_s51_platypusNextSequenceId = 0x76;
- scene51_updateItemAnimations();
+ updateItemAnimations();
if (startWalk) {
_s51_platypusNextSequenceId = 0x86;
startWalk = false;
}
- if (_gameSys->getAnimationStatus(0) == 2) {
- int collisionX = scene51_checkCollision(_s51_platypusNextSequenceId);
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ int collisionX = checkCollision(_s51_platypusNextSequenceId);
if (collisionX)
- scene51_incCashAmount(_s51_platypusNextSequenceId);
- _gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
+ incCashAmount(_s51_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
if (collisionX) {
isCollision = true;
@@ -763,17 +784,17 @@ void GnapEngine::scene51_run() {
} else {
_s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
}
- if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
+ if (isJumpingRight(_s51_platypusJumpSequenceId)) {
++_s51_platypusNextSequenceId;
if (!isCollision) {
- if (isKeyStatus2(Common::KEYCODE_UP) || isKeyStatus2(Common::KEYCODE_SPACE)) {
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- scene51_waitForAnim(0);
- _gameSys->setAnimation(0xB8, 256, 0);
- _gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB8, 256, 0);
+ _vm->_gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
_s51_platypusSequenceId = 0xB8;
- scene51_waitForAnim(0);
+ waitForAnim(0);
_s51_platypusNextSequenceId += 6;
if (_s51_platypusNextSequenceId > 0x95)
_s51_platypusNextSequenceId = 0x95;
@@ -781,7 +802,7 @@ void GnapEngine::scene51_run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, false);
+ _vm->playSound(214, false);
}
}
} else {
@@ -790,23 +811,23 @@ void GnapEngine::scene51_run() {
isCollision = false;
isIdle = false;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- while (isKeyStatus2(Common::KEYCODE_LEFT) && _s51_platypusNextSequenceId != 0xB6) {
+ while (_vm->isKeyStatus2(Common::KEYCODE_LEFT) && _s51_platypusNextSequenceId != 0xB6) {
// pollMessages();
- scene51_updateItemAnimations();
+ updateItemAnimations();
if (startWalk) {
_s51_platypusNextSequenceId = 0xA5;
startWalk = false;
}
- if (_gameSys->getAnimationStatus(0) == 2) {
- int collisionX = scene51_checkCollision(_s51_platypusNextSequenceId);
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ int collisionX = checkCollision(_s51_platypusNextSequenceId);
if (collisionX)
- scene51_incCashAmount(_s51_platypusNextSequenceId);
- _gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
+ incCashAmount(_s51_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
_s51_platypusSequenceId = _s51_platypusNextSequenceId;
if (collisionX) {
isCollision = true;
@@ -815,17 +836,17 @@ void GnapEngine::scene51_run() {
} else {
_s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
}
- if (scene51_isJumpingLeft(_s51_platypusJumpSequenceId)) {
+ if (isJumpingLeft(_s51_platypusJumpSequenceId)) {
++_s51_platypusNextSequenceId;
if (!isCollision) {
- if (isKeyStatus2(Common::KEYCODE_UP) || isKeyStatus2(Common::KEYCODE_SPACE)) {
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- scene51_waitForAnim(0);
- _gameSys->setAnimation(0xB9, 256, 0);
- _gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB9, 256, 0);
+ _vm->_gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
_s51_platypusSequenceId = 0xB9;
- scene51_waitForAnim(0);
+ waitForAnim(0);
_s51_platypusNextSequenceId += 6;
if (_s51_platypusNextSequenceId > 0xB5)
_s51_platypusNextSequenceId = 0xB5;
@@ -833,7 +854,7 @@ void GnapEngine::scene51_run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- playSound(214, false);
+ _vm->playSound(214, false);
}
}
} else {
@@ -842,37 +863,35 @@ void GnapEngine::scene51_run() {
isCollision = false;
isIdle = false;
}
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- if (!isIdle && _gameSys->getAnimationStatus(0) == 2) {
- if (scene51_isJumpingRight(_s51_platypusJumpSequenceId)) {
- _gameSys->setAnimation(0x74, 256, 0);
- _gameSys->insertSequence(0x74, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
+ if (!isIdle && _vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (isJumpingRight(_s51_platypusJumpSequenceId)) {
+ _vm->_gameSys->setAnimation(0x74, 256, 0);
+ _vm->_gameSys->insertSequence(0x74, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
_s51_platypusSequenceId = 0x74;
} else {
- _gameSys->setAnimation(0x75, 256, 0);
- _gameSys->insertSequence(0x75, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, scene51_getPosLeft(_s51_platypusJumpSequenceId) - 341, 0);
+ _vm->_gameSys->setAnimation(0x75, 256, 0);
+ _vm->_gameSys->insertSequence(0x75, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 341, 0);
_s51_platypusSequenceId = 0x75;
}
- scene51_waitForAnim(0);
+ waitForAnim(0);
isIdle = true;
}
-
}
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(Common::KEYCODE_RIGHT);
- clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- _gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 0);
for (int i = 0; i < 6; ++i)
- _gameSys->setAnimation(0, 0, i + 1);
-
- showCursor();
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
+ _vm->showCursor();
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene51.h b/engines/gnap/scenes/scene51.h
new file mode 100644
index 0000000..44fbd3d
--- /dev/null
+++ b/engines/gnap/scenes/scene51.h
@@ -0,0 +1,101 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE51_H
+#define GNAP_SCENE51_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+struct Scene51Item {
+ int _currSequenceId;
+ int _droppedSequenceId;
+ int _x, _y;
+ int _collisionX;
+ bool _canCatch;
+ bool _isCollision;
+ int _x2;
+ int _id;
+};
+
+class Scene51: public Scene {
+public:
+ Scene51(GnapEngine *vm);
+ ~Scene51() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _s51_dropLoseCash;
+
+ int _s51_cashAmount;
+ int _s51_digits[4];
+ int _s51_digitSequenceIds[4];
+ int _s51_guySequenceId;
+ int _s51_guyNextSequenceId;
+ int _s51_itemsCaughtCtr;
+ int _s51_dropSpeedTicks;
+ int _s51_nextDropItemKind;
+ int _s51_itemInsertX;
+ int _s51_itemInsertDirection;
+ int _s51_platypusSequenceId;
+ int _s51_platypusNextSequenceId;
+ int _s51_platypusJumpSequenceId;
+ int _s51_itemsCtr;
+ int _s51_itemsCtr1;
+ int _s51_itemsCtr2;
+
+ Scene51Item _s51_items[6];
+
+ void clearItem(Scene51Item *item);
+ void dropNextItem();
+ void updateItemAnimations();
+ int checkCollision(int sequenceId);
+ void updateItemAnimation(Scene51Item *item, int index);
+ void removeCollidedItems();
+ int itemIsCaught(Scene51Item *item);
+ bool isJumpingRight(int sequenceId);
+ bool isJumpingLeft(int sequenceId);
+ bool isJumping(int sequenceId);
+ void waitForAnim(int animationIndex);
+ int getPosRight(int sequenceId);
+ int getPosLeft(int sequenceId);
+ void playIntroAnim();
+ void updateGuyAnimation();
+ int incCashAmount(int sequenceId);
+ void winMinigame();
+ void playCashAppearAnim();
+ void updateCash(int amount);
+ void drawDigit(int digit, int position);
+ void initCashDisplay();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE51_H
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index 3d74538..fb16184 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -23,96 +23,103 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene52.h"
namespace Gnap {
-int GnapEngine::scene52_init() {
- scene52_initAnims();
+Scene52::Scene52(GnapEngine *vm) : Scene(vm) {
+ _s52_gameScore = 0;
+ _s52_aliensInitialized = false;
+ _s52_alienDirection = 0;
+ _s52_soundToggle = false;
+}
+
+int Scene52::init() {
+ initAnims();
return 0x2B;
}
-void GnapEngine::scene52_updateHotspots() {
- _hotspotsCount = 0;
+void Scene52::updateHotspots() {
+ _vm->_hotspotsCount = 0;
}
-void GnapEngine::scene52_update() {
-
+void Scene52::update() {
for (int rowNum = 0; rowNum < 7; ++rowNum) {
- gameUpdateTick();
- if (_gameSys->getAnimationStatus(_s52_alienRowAnims[rowNum]) == 2) {
- scene52_updateAlienRow(rowNum);
+ _vm->gameUpdateTick();
+ if (_vm->_gameSys->getAnimationStatus(_s52_alienRowAnims[rowNum]) == 2) {
+ updateAlienRow(rowNum);
rowNum = 0;
}
}
if (_s52_liveAlienRows == 0 && !_s52_alienSingle) {
_s52_alienWave = false;
- playSound(48, false);
+ _vm->playSound(48, false);
++_s52_alienCounter;
if (_s52_alienCounter != 3) {
- _timers[0] = 50;
- _timers[2] = 100;
+ _vm->_timers[0] = 50;
+ _vm->_timers[2] = 100;
_s52_alienRowDownCtr = 0;
_s52_alienSingle = true;
}
}
- if (_s52_alienSingle && !_timers[0]) {
- scene52_initAliens();
+ if (_s52_alienSingle && !_vm->_timers[0]) {
+ initAliens();
_s52_alienSingle = false;
- _timers[2] = 5;
+ _vm->_timers[2] = 5;
_s52_alienWave = true;
}
if ((_s52_alienRowDownCtr || _s52_liveAlienRows == 0) && !_s52_alienSingle) {
- scene52_moveDownAlienRow();
+ moveDownAlienRow();
_s52_alienRowDownCtr = 0;
}
- if (isKeyStatus1(Common::KEYCODE_UP) || isKeyStatus1(Common::KEYCODE_SPACE)) {
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(Common::KEYCODE_UP);
+ if (_vm->isKeyStatus1(Common::KEYCODE_UP) || _vm->isKeyStatus1(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
if (!_s52_aliensCount)
- scene52_fireShipCannon(_s52_shipPosX);
+ fireShipCannon(_s52_shipPosX);
}
if (_s52_shipCannonFiring)
- scene52_updateShipCannon();
+ updateShipCannon();
- scene52_fireAlienCannon();
- scene52_updateAlienCannons();
+ fireAlienCannon();
+ updateAlienCannons();
if (_s52_aliensCount == 1) {
_s52_alienWave = false;
- _timers[3] = 20;
- _timers[2] = 100;
+ _vm->_timers[3] = 20;
+ _vm->_timers[2] = 100;
++_s52_aliensCount;
}
- if (_s52_aliensCount && !_timers[3]) {
- scene52_updateAliens();
- scene52_loseShip();
+ if (_s52_aliensCount && !_vm->_timers[3]) {
+ updateAliens();
+ loseShip();
if (_s52_shipsLeft != 0) {
- _timers[3] = 40;
- while (_timers[3]) {
- scene52_updateAlienCannons();
+ _vm->_timers[3] = 40;
+ while (_vm->_timers[3]) {
+ updateAlienCannons();
if (_s52_shipCannonFiring)
- scene52_updateShipCannon();
- gameUpdateTick();
+ updateShipCannon();
+ _vm->gameUpdateTick();
}
- scene52_initAliens();
+ initAliens();
_s52_shipPosX = (800 - _s52_shipMidX) / 2;
- _gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_ufoSequenceId = _s52_nextUfoSequenceId;
- _timers[2] = 5;
+ _vm->_timers[2] = 5;
_s52_alienWave = true;
} else {
- _sceneDone = true;
+ _vm->_sceneDone = true;
}
}
- if (_timers[1] || scene52_getFreeShipCannon() == -1) {
+ if (_vm->_timers[1] || getFreeShipCannon() == -1) {
_s52_nextUfoSequenceId = 34;
if (_s52_ufoSequenceId != 34)
_s52_shipFlag = true;
@@ -123,35 +130,35 @@ void GnapEngine::scene52_update() {
}
if (_s52_shipFlag) {
- if (_gameSys->getAnimationStatus(7) == 2) {
- _gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
+ _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_ufoSequenceId = _s52_nextUfoSequenceId;
}
_s52_shipFlag = false;
}
- if (_s52_alienWave && !_timers[0]) {
- scene52_playSound();
+ if (_s52_alienWave && !_vm->_timers[0]) {
+ playSound();
int v0 = _s52_alienSpeed;
if (_s52_alienSpeed >= 10)
v0 = 10;
int v1 = v0;
if (v0 < 2)
v1 = 2;
- _timers[0] = v1;
+ _vm->_timers[0] = v1;
}
}
-void GnapEngine::scene52_initShipCannon(int bottomY) {
+void Scene52::initShipCannon(int bottomY) {
_s52_shipCannonFired = false;
- _s52_shipCannonWidth = MAX(_gameSys->getSpriteWidthById(14), _gameSys->getSpriteWidthById(16));
- _s52_shipCannonHeight = MAX(_gameSys->getSpriteHeightById(14), _gameSys->getSpriteHeightById(16));
+ _s52_shipCannonWidth = MAX(_vm->_gameSys->getSpriteWidthById(14), _vm->_gameSys->getSpriteWidthById(16));
+ _s52_shipCannonHeight = MAX(_vm->_gameSys->getSpriteHeightById(14), _vm->_gameSys->getSpriteHeightById(16));
_s52_shipCannonTopY = bottomY - _s52_shipCannonHeight;
_s52_shipCannonFiring = false;
}
-void GnapEngine::scene52_initAlienCannons() {
+void Scene52::initAlienCannons() {
for (int i = 0; i < 3; ++i) {
_s52_alienCannonIds[i] = 0;
_s52_alienCannonFired[i] = 0;
@@ -161,117 +168,112 @@ void GnapEngine::scene52_initAlienCannons() {
_s52_alienCannonSequenceIds[2] = 32;
}
-void GnapEngine::scene52_fireShipCannon(int posX) {
-
- if (_timers[1])
+void Scene52::fireShipCannon(int posX) {
+ if (_vm->_timers[1])
return;
- int cannonNum = scene52_getFreeShipCannon();
+ int cannonNum = getFreeShipCannon();
if (cannonNum != -1) {
_s52_shipCannonPosX = _s52_shipMidX / 2 + posX - _s52_shipCannonWidth / 2;
_s52_shipCannonPosY = _s52_shipCannonTopY;
- _gameSys->setAnimation(0x23, cannonNum + 256, cannonNum + 8);
- _gameSys->insertSequence(0x23, cannonNum + 256, 0, 0, kSeqNone, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
- playSound(0x2D, false);
- if (scene52_shipCannonHitShield(cannonNum)) {
- _gameSys->setAnimation(0, 0, cannonNum + 8);
- _gameSys->removeSequence(0x23, cannonNum + 256, true);
+ _vm->_gameSys->setAnimation(0x23, cannonNum + 256, cannonNum + 8);
+ _vm->_gameSys->insertSequence(0x23, cannonNum + 256, 0, 0, kSeqNone, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
+ _vm->playSound(0x2D, false);
+ if (shipCannonHitShield(cannonNum)) {
+ _vm->_gameSys->setAnimation(0, 0, cannonNum + 8);
+ _vm->_gameSys->removeSequence(0x23, cannonNum + 256, true);
} else {
_s52_shipCannonFired = true;
_s52_shipCannonPosY -= 13;
_s52_shipCannonFiring = true;
}
- _timers[1] = 5;
+ _vm->_timers[1] = 5;
}
-
}
-void GnapEngine::scene52_fireAlienCannon() {
-
- if (_timers[2])
+void Scene52::fireAlienCannon() {
+ if (_vm->_timers[2])
return;
- int cannonNum = scene52_getFreeAlienCannon();
+ int cannonNum = getFreeAlienCannon();
if (cannonNum != -1) {
int alienX1 = _s52_alienLeftX + _s52_alienRowXOfs[0];
int alienX2 = _s52_alienLeftX + _s52_alienRowXOfs[0] + 5 * _s52_alienWidth - (_s52_alienWidth / 2 - 15);
- _s52_alienCannonPosX[cannonNum] = getRandom(alienX2 - alienX1) + alienX1;
+ _s52_alienCannonPosX[cannonNum] = _vm->getRandom(alienX2 - alienX1) + alienX1;
_s52_alienCannonPosY[cannonNum] = 104;
_s52_alienCannonFired[cannonNum] = 1;
- _gameSys->setAnimation(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, cannonNum + 9);
- _gameSys->insertSequence(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, 0, 0,
+ _vm->_gameSys->setAnimation(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, cannonNum + 9);
+ _vm->_gameSys->insertSequence(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, 0, 0,
kSeqNone, 0, _s52_alienCannonPosX[cannonNum], _s52_alienCannonPosY[cannonNum]);
_s52_alienCannonPosY[cannonNum] -= 13;
- _timers[2] = 5;
+ _vm->_timers[2] = 5;
}
-
}
-int GnapEngine::scene52_getFreeShipCannon() {
+int Scene52::getFreeShipCannon() {
if (!_s52_shipCannonFired)
return 0;
return -1;
}
-int GnapEngine::scene52_getFreeAlienCannon() {
+int Scene52::getFreeAlienCannon() {
for (int i = 0; i < 3; ++i)
if (!_s52_alienCannonFired[i])
return i;
return -1;
}
-void GnapEngine::scene52_updateShipCannon() {
- if (_s52_shipCannonFired && _gameSys->getAnimationStatus(8) == 2) {
+void Scene52::updateShipCannon() {
+ if (_s52_shipCannonFired && _vm->_gameSys->getAnimationStatus(8) == 2) {
_s52_shipCannonPosY -= 13;
if (_s52_shipCannonPosY - 13 >= 135) {
- if (scene52_updateHitAlien()) {
- _gameSys->setAnimation(0, 0, 8);
- _gameSys->removeSequence(35, 256, true);
+ if (updateHitAlien()) {
+ _vm->_gameSys->setAnimation(0, 0, 8);
+ _vm->_gameSys->removeSequence(35, 256, true);
_s52_shipCannonFired = false;
- scene52_drawScore(_s52_gameScore);
+ drawScore(_s52_gameScore);
} else {
- _gameSys->setAnimation(35, 256, 8);
- _gameSys->insertSequence(35, 256, 35, 256, kSeqSyncWait, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
+ _vm->_gameSys->setAnimation(35, 256, 8);
+ _vm->_gameSys->insertSequence(35, 256, 35, 256, kSeqSyncWait, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
_s52_shipCannonPosY -= 13;
}
} else {
- _gameSys->setAnimation(0, 0, 8);
- _gameSys->removeSequence(35, 256, true);
+ _vm->_gameSys->setAnimation(0, 0, 8);
+ _vm->_gameSys->removeSequence(35, 256, true);
_s52_shipCannonFired = false;
}
}
}
-void GnapEngine::scene52_updateAlienCannons() {
+void Scene52::updateAlienCannons() {
for (int i = 0; i < 3; ++i) {
- if (_s52_alienCannonFired[i] && _gameSys->getAnimationStatus(i + 9) == 2) {
+ if (_s52_alienCannonFired[i] && _vm->_gameSys->getAnimationStatus(i + 9) == 2) {
_s52_alienCannonPosY[i] += 13;
if (_s52_shipCannonHeight + _s52_alienCannonPosY[i] + 13 <= 550) {
- if (scene52_alienCannonHitShip(i)) {
- _gameSys->setAnimation(0, 0, i + 9);
+ if (alienCannonHitShip(i)) {
+ _vm->_gameSys->setAnimation(0, 0, i + 9);
_s52_alienCannonFired[i] = 0;
- scene52_shipExplode();
- } else if (scene52_alienCannonHitShield(i)) {
+ shipExplode();
+ } else if (alienCannonHitShield(i)) {
_s52_alienCannonFired[i] = 0;
} else {
- _gameSys->insertSequence(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, 0, 0,
+ _vm->_gameSys->insertSequence(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, 0, 0,
kSeqNone, 0, _s52_alienCannonPosX[i], _s52_alienCannonPosY[i]);
- _gameSys->setAnimation(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, i + 9);
+ _vm->_gameSys->setAnimation(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, i + 9);
_s52_alienCannonIds[i] = 1 - _s52_alienCannonIds[i];
_s52_alienCannonPosY[i] += 13;
}
} else {
- _gameSys->setAnimation(0, 0, i + 9);
+ _vm->_gameSys->setAnimation(0, 0, i + 9);
_s52_alienCannonFired[i] = 0;
}
}
}
}
-void GnapEngine::scene52_initAliens() {
-
+void Scene52::initAliens() {
if (!_s52_aliensInitialized) {
- scene52_initAlienSize();
+ initAlienSize();
_s52_aliensInitialized = true;
}
@@ -282,91 +284,88 @@ void GnapEngine::scene52_initAliens() {
_s52_alienSingle = false;
_s52_alienRowDownCtr = 0;
- scene52_initShields();
+ initShields();
_s52_alienRowKind[0] = -1;
_s52_alienRowKind[1] = -1;
_s52_alienRowKind[2] = -1;
_s52_alienRowKind[3] = -1;
- _s52_alienRowKind[4] = getRandom(2) != 0 ? 24 : 27;
- _s52_alienRowKind[5] = getRandom(2) != 0 ? 25 : 28;
- _s52_alienRowKind[6] = getRandom(2) != 0 ? 26 : 29;
+ _s52_alienRowKind[4] = _vm->getRandom(2) != 0 ? 24 : 27;
+ _s52_alienRowKind[5] = _vm->getRandom(2) != 0 ? 25 : 28;
+ _s52_alienRowKind[6] = _vm->getRandom(2) != 0 ? 26 : 29;
for (int i = 0; i < 7; ++i) {
_s52_alienRowAnims[i] = i;
_s52_alienRowXOfs[i] = 0;
- scene52_initAlienRowKind(i, _s52_alienRowKind[i]);
- scene52_insertAlienRow(i);
+ initAlienRowKind(i, _s52_alienRowKind[i]);
+ insertAlienRow(i);
}
-
}
-void GnapEngine::scene52_initAlienRowKind(int rowNum, int alienKind) {
+void Scene52::initAlienRowKind(int rowNum, int alienKind) {
for (int i = 0; i < 5; ++i)
_s52_items[rowNum][i] = alienKind;
}
-void GnapEngine::scene52_insertAlienRow(int rowNum) {
+void Scene52::insertAlienRow(int rowNum) {
if (_s52_alienRowKind[rowNum] >= 0) {
- scene52_insertAlienRowAliens(rowNum);
+ insertAlienRowAliens(rowNum);
_s52_alienRowIds[rowNum] = 256;
- _gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
+ _vm->_gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
++_s52_liveAlienRows;
}
}
-void GnapEngine::scene52_insertAlienRowAliens(int rowNum) {
+void Scene52::insertAlienRowAliens(int rowNum) {
int xOffs = _s52_alienLeftX;
int yOffs = _s52_alienTopY - 52 * rowNum - _s52_alienHeight + 10;
for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0) {
- _gameSys->insertSequence(_s52_items[rowNum][i], i + 256, 0, 0, kSeqNone, 0, xOffs, yOffs);
+ _vm->_gameSys->insertSequence(_s52_items[rowNum][i], i + 256, 0, 0, kSeqNone, 0, xOffs, yOffs);
++_s52_alienSpeed;
}
xOffs += _s52_alienWidth;
}
}
-void GnapEngine::scene52_updateAlienRow(int rowNum) {
-
- if (_s52_alienRowKind[rowNum] != -1 && !scene52_checkAlienRow(rowNum)) {
- scene52_updateAlienRowXOfs();
+void Scene52::updateAlienRow(int rowNum) {
+ if (_s52_alienRowKind[rowNum] != -1 && !checkAlienRow(rowNum)) {
+ updateAlienRowXOfs();
_s52_alienRowIds[rowNum] = -1;
int xOffs = _s52_alienLeftX + _s52_alienRowXOfs[rowNum];
int yOffs = _s52_alienTopY - 52 * rowNum - _s52_alienHeight + 10;
for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0) {
- _gameSys->insertSequence(_s52_items[rowNum][i], i + 256, _s52_items[rowNum][i], i + 256, kSeqSyncWait, 0, xOffs, yOffs);
+ _vm->_gameSys->insertSequence(_s52_items[rowNum][i], i + 256, _s52_items[rowNum][i], i + 256, kSeqSyncWait, 0, xOffs, yOffs);
if (_s52_alienRowIds[rowNum] == -1)
_s52_alienRowIds[rowNum] = i + 256;
} else if (_s52_items[rowNum][i] == -2) {
- _gameSys->removeSequence(_s52_alienRowKind[rowNum], i + 256, true);
+ _vm->_gameSys->removeSequence(_s52_alienRowKind[rowNum], i + 256, true);
_s52_items[rowNum][i] = -1;
--_s52_alienSpeed;
}
xOffs += _s52_alienWidth;
}
if (_s52_alienRowIds[rowNum] == -1) {
- _gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
+ _vm->_gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
// MessageBoxA(0, "No live aliens!", "Error 3:", 0x30u);
} else {
- _gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
+ _vm->_gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
}
if (rowNum == 1) {
for (int j = 0; j < 3; ++j) {
if (_s52_shieldSpriteIds[j] != -1) {
- _gameSys->fillSurface(0, _s52_shieldPosX[j], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, _s52_shieldPosX[j], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_s52_shieldSpriteIds[j] = -1;
}
}
}
if (rowNum == 0 && _s52_bottomAlienFlag)
- scene52_shipExplode();
+ shipExplode();
}
}
-void GnapEngine::scene52_moveDownAlienRow() {
-
+void Scene52::moveDownAlienRow() {
int v2[5], v3, v1, v0, v4;
for (int i = 0; i < 5; ++i)
@@ -394,14 +393,14 @@ void GnapEngine::scene52_moveDownAlienRow() {
_s52_alienRowKind[6] = v0;
_s52_alienRowXOfs[6] = v4;
- scene52_updateAlien(6);
- scene52_initAlienRowKind(6, _s52_alienRowKind[6]);
- scene52_insertAlienRow(6);
+ updateAlien(6);
+ initAlienRowKind(6, _s52_alienRowKind[6]);
+ insertAlienRow(6);
_s52_bottomAlienFlag = _s52_alienRowKind[0] > -1;
}
-int GnapEngine::scene52_updateHitAlien() {
+int Scene52::updateHitAlien() {
int result = 0, rowNum, ya;
int y = _s52_shipCannonTopY - _s52_shipCannonPosY;
@@ -417,12 +416,12 @@ int GnapEngine::scene52_updateHitAlien() {
}
if (rowNum < 7) {
- int hitAlienNum = scene52_getHitAlienNum(rowNum);
+ int hitAlienNum = getHitAlienNum(rowNum);
if (hitAlienNum != -1 && _s52_items[rowNum][hitAlienNum] >= 0) {
_s52_gameScore = ((_s52_items[rowNum][hitAlienNum] - 24) % 3 + _s52_gameScore + 1) % 1000;
_s52_items[rowNum][hitAlienNum] = -2;
- playSound(44, false);
- _gameSys->insertSequence(0x21, 266, 0, 0,
+ _vm->playSound(44, false);
+ _vm->_gameSys->insertSequence(0x21, 266, 0, 0,
kSeqNone, 0, _s52_alienLeftX + hitAlienNum * _s52_alienWidth + _s52_alienRowXOfs[rowNum] - 10, ya - _s52_alienHeight);
result = 1;
}
@@ -431,8 +430,7 @@ int GnapEngine::scene52_updateHitAlien() {
return result;
}
-int GnapEngine::scene52_getHitAlienNum(int rowNum) {
-
+int Scene52::getHitAlienNum(int rowNum) {
int result = -1;
int v3 = _s52_alienLeftX + _s52_alienRowXOfs[rowNum];
@@ -473,7 +471,7 @@ int GnapEngine::scene52_getHitAlienNum(int rowNum) {
return result;
}
-int GnapEngine::scene52_alienCannonHitShip(int cannonNum) {
+int Scene52::alienCannonHitShip(int cannonNum) {
int result = 0;
if (_s52_aliensCount) {
@@ -496,7 +494,7 @@ int GnapEngine::scene52_alienCannonHitShip(int cannonNum) {
return result;
}
-int GnapEngine::scene52_alienCannonHitShield(int cannonNum) {
+int Scene52::alienCannonHitShield(int cannonNum) {
int result = 0;
int v3 = _s52_alienCannonPosY[cannonNum] + 39;
@@ -533,21 +531,21 @@ int GnapEngine::scene52_alienCannonHitShield(int cannonNum) {
} else {
++_s52_shieldSpriteIds[shieldNum];
if (_s52_shieldSpriteIds[shieldNum] <= 21) {
- _gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
+ _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
} else {
- _gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_s52_shieldSpriteIds[shieldNum] = -1;
}
- _gameSys->setAnimation(0, 0, cannonNum + 9);
- _gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_alienCannonPosX[cannonNum] - 18, _s52_arcadeScreenBottom - 44);
- playSound(0x2C, false);
+ _vm->_gameSys->setAnimation(0, 0, cannonNum + 9);
+ _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_alienCannonPosX[cannonNum] - 18, _s52_arcadeScreenBottom - 44);
+ _vm->playSound(0x2C, false);
result = 1;
}
return result;
}
-bool GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
+bool Scene52::shipCannonHitShield(int cannonNum) {
bool result = false;
if (_s52_shipCannonPosX < _s52_shieldPosX[0])
@@ -577,23 +575,23 @@ bool GnapEngine::scene52_shipCannonHitShield(int cannonNum) {
} else {
++_s52_shieldSpriteIds[shieldNum];
if (_s52_shieldSpriteIds[shieldNum] <= 21) {
- _gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
+ _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
} else {
- _gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_s52_shieldSpriteIds[shieldNum] = -1;
}
- _gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_shipCannonPosX - 18, _s52_arcadeScreenBottom - 44);
- playSound(0x2C, false);
+ _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_shipCannonPosX - 18, _s52_arcadeScreenBottom - 44);
+ _vm->playSound(0x2C, false);
result = true;
}
return result;
}
-bool GnapEngine::scene52_shipCannonHitAlien() {
+bool Scene52::shipCannonHitAlien() {
bool result = false;
- if (_s52_aliensCount || scene52_checkAlienRow(0))
+ if (_s52_aliensCount || checkAlienRow(0))
return false;
int alienNextX = _s52_alienLeftX + _s52_alienRowXOfs[0];
@@ -632,18 +630,18 @@ bool GnapEngine::scene52_shipCannonHitAlien() {
return result;
}
-void GnapEngine::scene52_shipExplode() {
+void Scene52::shipExplode() {
if (!_s52_aliensCount) {
- _gameSys->setAnimation(0, 0, 7);
- _gameSys->removeSequence(_s52_ufoSequenceId, 256, true);
- playSound(44, false);
- _gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ _vm->_gameSys->setAnimation(0, 0, 7);
+ _vm->_gameSys->removeSequence(_s52_ufoSequenceId, 256, true);
+ _vm->playSound(44, false);
+ _vm->_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_aliensCount = 1;
- playSound(0x31, false);
+ _vm->playSound(0x31, false);
}
}
-bool GnapEngine::scene52_checkAlienRow(int rowNum) {
+bool Scene52::checkAlienRow(int rowNum) {
for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0)
return false;
@@ -652,14 +650,14 @@ bool GnapEngine::scene52_checkAlienRow(int rowNum) {
bool found = false;
for (int j = 0; j < 5; ++j)
if (_s52_items[rowNum][j] == -2) {
- _gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
+ _vm->_gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
_s52_items[rowNum][j] = -1;
--_s52_alienSpeed;
found = true;
}
if (found) {
- _gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
+ _vm->_gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
--_s52_liveAlienRows;
}
@@ -669,8 +667,7 @@ bool GnapEngine::scene52_checkAlienRow(int rowNum) {
return true;
}
-void GnapEngine::scene52_updateAlienRowXOfs() {
-
+void Scene52::updateAlienRowXOfs() {
int amount = 2 * (3 - _s52_liveAlienRows) + 1;
if (_s52_alienSpeed == 2)
@@ -699,110 +696,109 @@ void GnapEngine::scene52_updateAlienRowXOfs() {
}
}
-void GnapEngine::scene52_initAlienSize() {
- _s52_alienWidth = _gameSys->getSpriteWidthById(0);
- if (_gameSys->getSpriteWidthById(1) > _s52_alienWidth)
- _s52_alienWidth = _gameSys->getSpriteWidthById(1);
- if (_gameSys->getSpriteWidthById(4) > _s52_alienWidth)
- _s52_alienWidth = _gameSys->getSpriteWidthById(4);
- if (_gameSys->getSpriteWidthById(5) > _s52_alienWidth)
- _s52_alienWidth = _gameSys->getSpriteWidthById(5);
- if (_gameSys->getSpriteWidthById(12) > _s52_alienWidth)
- _s52_alienWidth = _gameSys->getSpriteWidthById(12);
- if (_gameSys->getSpriteWidthById(13) > _s52_alienWidth)
- _s52_alienWidth = _gameSys->getSpriteWidthById(13);
-
- _s52_alienHeight = _gameSys->getSpriteHeightById(0);
- if (_gameSys->getSpriteHeightById(1) > _s52_alienHeight)
- _s52_alienHeight = _gameSys->getSpriteHeightById(1);
- if (_gameSys->getSpriteHeightById(4) > _s52_alienHeight)
- _s52_alienHeight = _gameSys->getSpriteHeightById(4);
- if (_gameSys->getSpriteHeightById(5) > _s52_alienHeight)
- _s52_alienHeight = _gameSys->getSpriteHeightById(5);
- if (_gameSys->getSpriteHeightById(12) > _s52_alienHeight)
- _s52_alienHeight = _gameSys->getSpriteHeightById(12);
- if (_gameSys->getSpriteHeightById(13) > _s52_alienHeight)
- _s52_alienHeight = _gameSys->getSpriteHeightById(13);
+void Scene52::initAlienSize() {
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(0);
+ if (_vm->_gameSys->getSpriteWidthById(1) > _s52_alienWidth)
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(1);
+ if (_vm->_gameSys->getSpriteWidthById(4) > _s52_alienWidth)
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(4);
+ if (_vm->_gameSys->getSpriteWidthById(5) > _s52_alienWidth)
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(5);
+ if (_vm->_gameSys->getSpriteWidthById(12) > _s52_alienWidth)
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(12);
+ if (_vm->_gameSys->getSpriteWidthById(13) > _s52_alienWidth)
+ _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(13);
+
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(0);
+ if (_vm->_gameSys->getSpriteHeightById(1) > _s52_alienHeight)
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(1);
+ if (_vm->_gameSys->getSpriteHeightById(4) > _s52_alienHeight)
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(4);
+ if (_vm->_gameSys->getSpriteHeightById(5) > _s52_alienHeight)
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(5);
+ if (_vm->_gameSys->getSpriteHeightById(12) > _s52_alienHeight)
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(12);
+ if (_vm->_gameSys->getSpriteHeightById(13) > _s52_alienHeight)
+ _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(13);
_s52_alienTopY = _s52_shipCannonTopY + 52;
_s52_alienLeftX = (800 - 5 * _s52_alienWidth) / 2;
-
}
-void GnapEngine::scene52_playSound() {
+void Scene52::playSound() {
if (_s52_soundToggle) {
- playSound(0x2F, false);
+ _vm->playSound(0x2F, false);
_s52_soundToggle = false;
} else {
- playSound(0x2E, false);
+ _vm->playSound(0x2E, false);
_s52_soundToggle = true;
}
}
-void GnapEngine::scene52_updateAliens() {
+void Scene52::updateAliens() {
for (int i = 0; i < 7; ++i)
- scene52_updateAlien(i);
+ updateAlien(i);
}
-void GnapEngine::scene52_updateAlien(int rowNum) {
- if (_s52_alienRowKind[rowNum] >= 0 && !scene52_checkAlienRow(rowNum)) {
+void Scene52::updateAlien(int rowNum) {
+ if (_s52_alienRowKind[rowNum] >= 0 && !checkAlienRow(rowNum)) {
for (int i = 0; i < 5; ++i) {
if (_s52_items[rowNum][i] >= 0)
_s52_items[rowNum][i] = -2;
}
- scene52_checkAlienRow(rowNum);
+ checkAlienRow(rowNum);
}
}
-void GnapEngine::scene52_loseShip() {
+void Scene52::loseShip() {
--_s52_shipsLeft;
if (_s52_shipsLeft == 2) {
- _gameSys->fillSurface(0, 120, 140, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, 120, 140, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
} else if (_s52_shipsLeft == 1) {
- _gameSys->fillSurface(0, 120, 185, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
+ _vm->_gameSys->fillSurface(0, 120, 185, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
}
}
-void GnapEngine::scene52_initShields() {
+void Scene52::initShields() {
for (int i = 0; i < 3; ++i) {
- _gameSys->drawSpriteToBackground(_s52_shieldPosX[i], _s52_arcadeScreenBottom - 44, 17);
+ _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[i], _s52_arcadeScreenBottom - 44, 17);
_s52_shieldSpriteIds[i] = 17;
}
}
-void GnapEngine::scene52_initAnims() {
+void Scene52::initAnims() {
for (int i = 0; i < 7; ++i)
- _gameSys->setAnimation(0, 0, i);
- _gameSys->setAnimation(0, 0, 7);
+ _vm->_gameSys->setAnimation(0, 0, i);
+ _vm->_gameSys->setAnimation(0, 0, 7);
for (int j = 0; j < 1; ++j)
- _gameSys->setAnimation(0, 0, j + 8);
+ _vm->_gameSys->setAnimation(0, 0, j + 8);
for (int k = 0; k < 3; ++k)
- _gameSys->setAnimation(0, 0, k + 9);
+ _vm->_gameSys->setAnimation(0, 0, k + 9);
}
-void GnapEngine::scene52_drawScore(int score) {
+void Scene52::drawScore(int score) {
char str[4];
sprintf(str, "%03d", score);
- _gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
- _gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
+ _vm->_gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
}
-void GnapEngine::scene52_run() {
- _timers[1] = 0;
+void Scene52::run() {
+ _vm->_timers[1] = 0;
- hideCursor();
+ _vm->hideCursor();
// TODO loadFont("maturasc", "Matura MT Script Capitals", 2000);
// TODO setFontSize(24);
_s52_gameScore = 0;
- _gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
- _gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
+ _vm->_gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
+ _vm->_gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
- scene52_drawScore(0);
+ drawScore(0);
_s52_shipMidX = 33;
- _s52_shipMidY = _gameSys->getSpriteHeightById(15);
+ _s52_shipMidY = _vm->_gameSys->getSpriteHeightById(15);
_s52_shipPosX = (800 - _s52_shipMidX) / 2;
_s52_arcadeScreenBottom = 496;
_s52_arcadeScreenRight = 595 - _s52_shipMidX;
@@ -817,82 +813,82 @@ void GnapEngine::scene52_run() {
for (int i = 0; i < 3; ++i)
_s52_shieldSpriteIds[i] = -1;
- _gameSys->drawSpriteToBackground(120, 140, 0xF);
- _gameSys->drawSpriteToBackground(120, 185, 0xF);
+ _vm->_gameSys->drawSpriteToBackground(120, 140, 0xF);
+ _vm->_gameSys->drawSpriteToBackground(120, 185, 0xF);
- scene52_initShipCannon(_s52_arcadeScreenBottom);
- scene52_initAlienCannons();
- scene52_initAliens();
+ initShipCannon(_s52_arcadeScreenBottom);
+ initAlienCannons();
+ initAliens();
_s52_nextUfoSequenceId = 0x22;
- _gameSys->setAnimation(0x22, 256, 7);
- _gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ _vm->_gameSys->setAnimation(0x22, 256, 7);
+ _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_ufoSequenceId = _s52_nextUfoSequenceId;
- clearKeyStatus1(Common::KEYCODE_RIGHT);
- clearKeyStatus1(Common::KEYCODE_LEFT);
- clearKeyStatus1(Common::KEYCODE_SPACE);
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _timers[2] = 5;
+ _vm->_timers[2] = 5;
_s52_shipFlag = false;
- _timers[0] = 10;
+ _vm->_timers[0] = 10;
_s52_alienWave = true;
- while (!_sceneDone) {
- gameUpdateTick();
+ while (!_vm->_sceneDone) {
+ _vm->gameUpdateTick();
- while (isKeyStatus2(Common::KEYCODE_RIGHT)) {
- scene52_update();
- if (_gameSys->getAnimationStatus(7) == 2) {
+ while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT)) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
if (_s52_shipPosX < _s52_arcadeScreenRight) {
_s52_shipPosX += 15;
if (_s52_shipPosX > _s52_arcadeScreenRight)
_s52_shipPosX = _s52_arcadeScreenRight;
- _gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_ufoSequenceId = _s52_nextUfoSequenceId;
- if (_s52_bottomAlienFlag && scene52_shipCannonHitAlien())
- scene52_shipExplode();
+ if (_s52_bottomAlienFlag && shipCannonHitAlien())
+ shipExplode();
}
break;
}
}
- while (isKeyStatus2(Common::KEYCODE_LEFT)) {
- scene52_update();
- if (_gameSys->getAnimationStatus(7) == 2) {
+ while (_vm->isKeyStatus2(Common::KEYCODE_LEFT)) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
if (_s52_shipPosX > _s52_arcadeScreenLeft) {
_s52_shipPosX -= 15;
if (_s52_shipPosX < _s52_arcadeScreenLeft)
_s52_shipPosX = _s52_arcadeScreenLeft;
- _gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
+ _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
_s52_ufoSequenceId = _s52_nextUfoSequenceId;
- if (_s52_bottomAlienFlag && scene52_shipCannonHitAlien())
- scene52_shipExplode();
+ if (_s52_bottomAlienFlag && shipCannonHitAlien())
+ shipExplode();
}
break;
}
}
- scene52_update();
+ update();
- if (sceneXX_sub_4466B1()) {
+ if (_vm->sceneXX_sub_4466B1()) {
_s52_alienWave = false;
- _gameSys->waitForUpdate();
- scene52_initAnims();
- clearKeyStatus1(30);
- _sceneDone = true;
+ _vm->_gameSys->waitForUpdate();
+ initAnims();
+ _vm->clearKeyStatus1(30);
+ _vm->_sceneDone = true;
}
}
// TODO freeFont();
- _gameSys->waitForUpdate();
+ _vm->_gameSys->waitForUpdate();
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene52.h b/engines/gnap/scenes/scene52.h
new file mode 100644
index 0000000..0fbc29c
--- /dev/null
+++ b/engines/gnap/scenes/scene52.h
@@ -0,0 +1,118 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE52_H
+#define GNAP_SCENE52_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene52: public Scene {
+public:
+ Scene52(GnapEngine *vm);
+ ~Scene52() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _s52_liveAlienRows;
+ int _s52_gameScore;
+ bool _s52_soundToggle;
+ int _s52_arcadeScreenLeft;
+ int _s52_arcadeScreenRight;
+ int _s52_arcadeScreenBottom;
+ int _s52_shipsLeft;
+ int _s52_shieldSpriteIds[3];
+ int _s52_shieldPosX[3];
+ int _s52_shipPosX;
+ int _s52_shipCannonPosX, _s52_shipCannonPosY;
+ bool _s52_shipCannonFiring;
+ bool _s52_shipCannonFired;
+ int _s52_shipCannonWidth, _s52_shipCannonHeight;
+ int _s52_shipCannonTopY;
+ int _s52_shipMidX, _s52_shipMidY;
+ bool _s52_shipFlag;
+ bool _s52_aliensInitialized;
+ int _s52_alienSpeed, _s52_alienDirection;
+ int _s52_alienWidth, _s52_alienHeight;
+ int _s52_alienLeftX, _s52_alienTopY;
+ int _s52_alienRowDownCtr;
+ int _s52_alienRowKind[7];
+ int _s52_alienRowAnims[7];
+ int _s52_alienRowIds[7];
+ int _s52_alienRowXOfs[7];
+ int _s52_alienCannonFired[3];
+ int _s52_alienCannonPosX[3];
+ int _s52_alienCannonPosY[3];
+ int _s52_alienCannonSequenceIds[3];
+ int _s52_alienCannonIds[3];
+ bool _s52_alienWave, _s52_alienSingle;
+ int _s52_alienCounter;
+ bool _s52_bottomAlienFlag;
+ int _s52_aliensCount;
+ int _s52_items[8][5];
+ int _s52_nextUfoSequenceId, _s52_ufoSequenceId;
+
+ void update();
+ void initShipCannon(int bottomY);
+ void initAlienCannons();
+ void fireShipCannon(int posX);
+ void fireAlienCannon();
+ int getFreeShipCannon();
+ int getFreeAlienCannon();
+ void updateShipCannon();
+ void updateAlienCannons();
+ void initAliens();
+ void initAlienRowKind(int rowNum, int alienKind);
+ void insertAlienRow(int rowNum);
+ void insertAlienRowAliens(int rowNum);
+ void updateAlienRow(int rowNum);
+ void moveDownAlienRow();
+ int updateHitAlien();
+ int getHitAlienNum(int rowNum);
+ int alienCannonHitShip(int cannonNum);
+ int alienCannonHitShield(int cannonNum);
+ bool shipCannonHitShield(int cannonNum);
+ bool shipCannonHitAlien();
+ void shipExplode();
+ bool checkAlienRow(int rowNum);
+ void updateAlienRowXOfs();
+ void initAlienSize();
+ void playSound();
+ void updateAliens();
+ void updateAlien(int rowNum);
+ void loseShip();
+ void initShields();
+ void initAnims();
+ void drawScore(int score);
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE52_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 4386046..f9f4af9 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -72,6 +72,8 @@
#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene49.h"
#include "gnap/scenes/scene50.h"
+#include "gnap/scenes/scene51.h"
+#include "gnap/scenes/scene52.h"
#include "gnap/scenes/scene54.h"
namespace Gnap {
@@ -419,12 +421,14 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 51:
- backgroundId = scene51_init();
+ _scene = new Scene51(this);
+ backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
case 52:
- backgroundId = scene52_init();
+ _scene = new Scene52(this);
+ backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -783,10 +787,12 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = _prevSceneNum;
break;
case 51:
- scene51_run();
+ _scene->run();
+ delete _scene;
break;
case 52:
- scene52_run();
+ _scene->run();
+ delete _scene;
_newSceneNum = _prevSceneNum;
break;
case 53:
Commit: ba0c3f2cc316d932065437b6e749f1d5edc426e4
https://github.com/scummvm/scummvm/commit/ba0c3f2cc316d932065437b6e749f1d5edc426e4
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Refactor scene 53
Changed paths:
A engines/gnap/scenes/scene53.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene53.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index f6bff60..376c279 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2021,10 +2021,6 @@ void GnapEngine::initGlobalSceneVars() {
// Shared by scenes 17 && 18
_s18_garbageCanPos = 8;
- // Scene 53
- _s53_callsMadeCtr = 0;
- _s53_callsRndUsed = 0;
-
// Toy UFO
_toyUfoId = 0;
_toyUfoActionStatus = -1;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index a80d82f..3da744a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -590,19 +590,6 @@ public:
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
- // Scene 53
- int _s53_currHandSequenceId;
- bool _s53_isGnapPhoning;
- int _s53_callsMadeCtr;
- uint _s53_callsRndUsed;
- int scene53_init();
- void scene53_updateHotspots();
- int scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum);
- int scene53_getRandomCallIndex();
- void scene53_runRandomCall();
- void scene53_runChitChatLine();
- void scene53_run();
-
// Scene 54
void scene54_initCutscene1();
void scene54_initCutscene2();
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
index f76f608..7c46146 100644
--- a/engines/gnap/scenes/scene53.cpp
+++ b/engines/gnap/scenes/scene53.cpp
@@ -23,6 +23,7 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
+#include "gnap/scenes/scene53.h"
namespace Gnap {
@@ -44,33 +45,40 @@ enum {
kHSPhoneExit = 14
};
-int GnapEngine::scene53_init() {
- _gameSys->setAnimation(0, 0, 0);
- _gameSys->setAnimation(0, 0, 1);
+Scene53::Scene53(GnapEngine *vm) : Scene(vm) {
+ _s53_isGnapPhoning = false;
+ _s53_currHandSequenceId = -1;
+ _s53_callsMadeCtr = 0;
+ _s53_callsRndUsed = 0;
+}
+
+int Scene53::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
return 0x75;
}
-void GnapEngine::scene53_updateHotspots() {
- setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- setHotspot(kHSPhoneKey1, 336, 238, 361, 270, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey2, 376, 243, 405, 274, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey3, 415, 248, 441, 276, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey4, 329, 276, 358, 303, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey5, 378, 282, 408, 311, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey6, 417, 286, 446, 319, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey7, 332, 311, 361, 342, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey8, 376, 318, 407, 349, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey9, 417, 320, 447, 353, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKey0, 377, 352, 405, 384, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKeySharp, 419, 358, 450, 394, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneKeyStar, 328, 346, 359, 379, SF_GRAB_CURSOR);
- setHotspot(kHSPhoneExit, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
+void Scene53::updateHotspots() {
+ _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHSPhoneKey1, 336, 238, 361, 270, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey2, 376, 243, 405, 274, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey3, 415, 248, 441, 276, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey4, 329, 276, 358, 303, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey5, 378, 282, 408, 311, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey6, 417, 286, 446, 319, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey7, 332, 311, 361, 342, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey8, 376, 318, 407, 349, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey9, 417, 320, 447, 353, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKey0, 377, 352, 405, 384, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKeySharp, 419, 358, 450, 394, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneKeyStar, 328, 346, 359, 379, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHSPhoneExit, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
- setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _hotspotsCount = 15;
+ _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 15;
}
-int GnapEngine::scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum) {
+int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
static const int kGnapHandSequenceIds[13] = {
0x00,
0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
@@ -84,22 +92,22 @@ int GnapEngine::scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum) {
};
if (_s53_isGnapPhoning) {
- _gameSys->setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
- _gameSys->insertSequence(kGnapHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
+ _vm->_gameSys->insertSequence(kGnapHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s53_currHandSequenceId = kGnapHandSequenceIds[buttonNum];
} else {
- _gameSys->setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
- _gameSys->insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
+ _vm->_gameSys->insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s53_currHandSequenceId = kPlatypusHandSequenceIds[buttonNum];
}
- _gnapActionStatus = 6;
- while (_gameSys->getAnimationStatus(6) != 2) {
+ _vm->_gnapActionStatus = 6;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
// checkGameAppStatus();
- updateMouseCursor();
- gameUpdateTick();
+ _vm->updateMouseCursor();
+ _vm->gameUpdateTick();
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
if (buttonNum < 11)
phoneNumber = buttonNum % 10 + 10 * phoneNumber;
@@ -107,12 +115,12 @@ int GnapEngine::scene53_pressPhoneNumberButton(int phoneNumber, int buttonNum) {
return phoneNumber;
}
-int GnapEngine::scene53_getRandomCallIndex() {
+int Scene53::getRandomCallIndex() {
int index, tries = 0;
if (_s53_callsRndUsed == 0x7FFF)
_s53_callsRndUsed = 0;
do {
- index = getRandom(16);
+ index = _vm->getRandom(16);
if (++tries == 300)
_s53_callsRndUsed = 0;
} while (_s53_callsRndUsed & (1 << index));
@@ -120,7 +128,7 @@ int GnapEngine::scene53_getRandomCallIndex() {
return index;
}
-void GnapEngine::scene53_runRandomCall() {
+void Scene53::runRandomCall() {
static const int kCallSequenceIds[15] = {
0x60, 0x61, 0x62, 0x63, 0x64,
0x65, 0x66, 0x67, 0x68, 0x69,
@@ -133,61 +141,59 @@ void GnapEngine::scene53_runRandomCall() {
int index;
do {
- index = scene53_getRandomCallIndex();
+ index = getRandomCallIndex();
} while (!_s53_isGnapPhoning && (index == 0 || index == 3 || index == 4 || index == 11));
- _gameSys->setAnimation(kCallSequenceIds[index], 1, 6);
- _gameSys->insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gameSys->setAnimation(kCallSequenceIds[index], 1, 6);
+ _vm->_gameSys->insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
} else {
- _gameSys->setAnimation(0x74, 1, 6);
- _gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gameSys->setAnimation(0x74, 1, 6);
+ _vm->_gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
_s53_callsMadeCtr = 0;
}
- _gnapActionStatus = 1;
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
-void GnapEngine::scene53_runChitChatLine() {
+void Scene53::runChitChatLine() {
bool flag = false;
int sequenceId = -1;
- _gameSys->setAnimation(0x6E, 1, 6);
- _gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gameSys->setAnimation(0x6E, 1, 6);
+ _vm->_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
- _gnapActionStatus = 1;
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
- if (isFlag(kGFSpringTaken)) {
- _gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s53_currHandSequenceId = 0x45;
} else {
- _gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_s53_currHandSequenceId = 0x5E;
}
- _hotspots[kHSDevice]._flags = SF_DISABLED;
+ _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
while (!flag) {
- updateMouseCursor();
- updateCursorByHotspot();
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- testWalk(0, 0, -1, -1, -1, -1);
-
- _sceneClickedHotspot = getClickedHotspotId();
-
- updateGrabCursorSprite(0, 0);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case 2:
sequenceId = 0x6F;
flag = 1;
@@ -203,10 +209,10 @@ void GnapEngine::scene53_runChitChatLine() {
case 14:
sequenceId = -1;
flag = 1;
- _isLeavingScene = true;
- _sceneDone = true;
- _gnapActionStatus = 0;
- _newSceneNum = 17;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 17;
break;
case 5:
case 6:
@@ -217,59 +223,59 @@ void GnapEngine::scene53_runChitChatLine() {
case 11:
case 12:
case 13:
- scene53_pressPhoneNumberButton(0, _sceneClickedHotspot - 1);
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
break;
}
if (flag && sequenceId != -1) {
- stopSound(0xA0);
- scene53_pressPhoneNumberButton(0, _sceneClickedHotspot - 1);
- _gnapActionStatus = 1;
- _gameSys->setAnimation(sequenceId, 1, 6);
- _gameSys->insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
- _gnapActionStatus = 1;
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ _vm->stopSound(0xA0);
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
+ _vm->_gnapActionStatus = 1;
+ _vm->_gameSys->setAnimation(sequenceId, 1, 6);
+ _vm->_gameSys->insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- _gnapActionStatus = -1;
- _gameSys->setAnimation(0x72, 1, 6);
- _gameSys->insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
- _gnapActionStatus = 1;
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0x72, 1, 6);
+ _vm->_gameSys->insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
}
- scene53_updateHotspots();
+ updateHotspots();
- _gnapActionStatus = 1;
+ _vm->_gnapActionStatus = 1;
- if (isFlag(kGFSpringTaken)) {
- _gameSys->setAnimation(0x73, 40, 6);
- _gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
_s53_currHandSequenceId = 0x73;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
}
-void GnapEngine::scene53_run() {
+void Scene53::run() {
int phoneNumber = 0;
int phoneNumberLen = 0;
- queueInsertDeviceIcon();
+ _vm->queueInsertDeviceIcon();
- if (isFlag(kGFSpringTaken)) {
+ if (_vm->isFlag(kGFSpringTaken)) {
_s53_currHandSequenceId = 0x45;
_s53_isGnapPhoning = true;
} else {
@@ -277,28 +283,25 @@ void GnapEngine::scene53_run() {
_s53_isGnapPhoning = false;
}
- _gameSys->insertSequence(_s53_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_s53_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->setVerbCursor(GRAB_CURSOR);
+ _vm->playSound(0xA0, true);
- endSceneInit();
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
- setVerbCursor(GRAB_CURSOR);
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
- playSound(0xA0, true);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
- while (!_sceneDone) {
- updateMouseCursor();
- updateCursorByHotspot();
-
- testWalk(0, 0, -1, -1, -1, -1);
-
- _sceneClickedHotspot = getClickedHotspotId();
- updateGrabCursorSprite(0, 0);
-
- switch (_sceneClickedHotspot) {
+ switch (_vm->_sceneClickedHotspot) {
case 1:
- if (_gnapActionStatus < 0) {
- runMenu();
- scene53_updateHotspots();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
}
break;
case 2:
@@ -311,82 +314,81 @@ void GnapEngine::scene53_run() {
case 9:
case 10:
case 11:
- stopSound(0xA0);
+ _vm->stopSound(0xA0);
++phoneNumberLen;
- phoneNumber = scene53_pressPhoneNumberButton(phoneNumber, _sceneClickedHotspot - 1);
+ phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1);
debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
if (phoneNumberLen == 7) {
- _gnapActionStatus = 1;
- if (isFlag(kGFSpringTaken)) {
- _gameSys->setAnimation(0x73, 40, 6);
- _gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ _vm->_gnapActionStatus = 1;
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
_s53_currHandSequenceId = 0x73;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
if (phoneNumber == 7284141) {
- scene53_runChitChatLine();
+ runChitChatLine();
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = true;
- _newSceneNum = 17;
- } else if (phoneNumber != 5556789 || isFlag(kGFPictureTaken)) {
- scene53_runRandomCall();
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
+ } else if (phoneNumber != 5556789 || _vm->isFlag(kGFPictureTaken)) {
+ runRandomCall();
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = true;
- _newSceneNum = 17;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
} else {
phoneNumber = 0;
phoneNumberLen = 0;
- _sceneDone = true;
- _newSceneNum = 17;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
if (_s53_isGnapPhoning)
- setFlag(kGFUnk25);
+ _vm->setFlag(kGFUnk25);
else
- setFlag(kGFPlatypusTalkingToAssistant);
+ _vm->setFlag(kGFPlatypusTalkingToAssistant);
}
}
break;
case 12:
case 13:
- scene53_pressPhoneNumberButton(0, _sceneClickedHotspot - 1);
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
break;
case 14:
- if (_gnapActionStatus < 0) {
- _gnapActionStatus = 1;
- if (isFlag(kGFSpringTaken)) {
- _gameSys->setAnimation(0x73, 40, 6);
- _gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_gameSys->getAnimationStatus(6) != 2) {
- updateMouseCursor();
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_gnapActionStatus = 1;
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
// checkGameAppStatus();
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
_s53_currHandSequenceId = 0x73;
- _gnapActionStatus = -1;
+ _vm->_gnapActionStatus = -1;
}
- _isLeavingScene = true;
- _sceneDone = true;
- _gnapActionStatus = 0;
- _newSceneNum = 17;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 17;
}
break;
}
- checkGameKeys();
+ _vm->checkGameKeys();
- if (isKeyStatus1(8)) {
- clearKeyStatus1(8);
- runMenu();
- scene53_updateHotspots();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
}
-
- gameUpdateTick();
+ _vm->gameUpdateTick();
}
}
diff --git a/engines/gnap/scenes/scene53.h b/engines/gnap/scenes/scene53.h
new file mode 100644
index 0000000..7244117
--- /dev/null
+++ b/engines/gnap/scenes/scene53.h
@@ -0,0 +1,57 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_SCENE53_H
+#define GNAP_SCENE53_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene53: public Scene {
+public:
+ Scene53(GnapEngine *vm);
+ ~Scene53() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _s53_isGnapPhoning;
+ int _s53_currHandSequenceId;
+ int _s53_callsMadeCtr;
+ uint _s53_callsRndUsed;
+
+ int pressPhoneNumberButton(int phoneNumber, int buttonNum);
+ int getRandomCallIndex();
+ void runRandomCall();
+ void runChitChatLine();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_SCENE53_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index f9f4af9..c6bc9a1 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -74,6 +74,7 @@
#include "gnap/scenes/scene50.h"
#include "gnap/scenes/scene51.h"
#include "gnap/scenes/scene52.h"
+#include "gnap/scenes/scene53.h"
#include "gnap/scenes/scene54.h"
namespace Gnap {
@@ -433,8 +434,9 @@ int GnapEngine::initSceneLogic() {
initSceneGrid(21, 146, 11, 10);
break;
case 53:
- backgroundId = scene53_init();
- scene53_updateHotspots();
+ _scene = new Scene53(this);
+ backgroundId = _scene->init();
+ _scene->updateHotspots();
_gameSys->setScaleValues(0, 500, 1, 1000);
initSceneGrid(21, 146, 11, 10);
break;
@@ -796,7 +798,8 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = _prevSceneNum;
break;
case 53:
- scene53_run();
+ _scene->run();
+ delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 53;
break;
Commit: 28d8a8be7cba9f1695650c4c5de93eee458ebe7d
https://github.com/scummvm/scummvm/commit/28d8a8be7cba9f1695650c4c5de93eee458ebe7d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Rename and move two fonctions to Scene
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene51.cpp
engines/gnap/scenes/scene52.cpp
engines/gnap/scenes/scenecore.cpp
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 376c279..371e7ef 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -2028,45 +2028,6 @@ void GnapEngine::initGlobalSceneVars() {
_toyUfoY = 50;
}
-bool GnapEngine::sceneXX_sub_4466B1() {
- if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(Common::KEYCODE_UP);
- clearKeyStatus1(Common::KEYCODE_RIGHT);
- clearKeyStatus1(Common::KEYCODE_LEFT);
- clearKeyStatus1(Common::KEYCODE_p);
- return true;
- }
-
- if (isKeyStatus1(Common::KEYCODE_p)) {
- clearKeyStatus1(Common::KEYCODE_p);
- pauseGame();
- updatePause();
- }
-
- return false;
-}
-
-void GnapEngine::sceneXX_playRandomSound(int timerIndex) {
- if (!_timers[timerIndex]) {
- _timers[timerIndex] = getRandom(40) + 50;
- switch (getRandom(4)) {
- case 0:
- playSound(0x1091B, false);
- break;
- case 1:
- playSound(0x10921, false);
- break;
- case 2:
- playSound(0x10927, false);
- break;
- case 3:
- playSound(0x1091D, false);
- break;
- }
- }
-}
-
void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3) {
setGrabCursorSprite(-1);
_gameSys->setAnimation(sequenceId2, _gnapId, 0);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 3da744a..1169c3b 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -576,9 +576,6 @@ public:
int _toyUfoY;
void initGlobalSceneVars();
-
- bool sceneXX_sub_4466B1();
- void sceneXX_playRandomSound(int timerIndex);
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
// Shared by scenes 17 & 18
@@ -589,10 +586,6 @@ public:
int toyUfoGetSequenceId();
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
-
- // Scene 54
- void scene54_initCutscene1();
- void scene54_initCutscene2();
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index c944082..244e901 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -235,7 +235,7 @@ void Scene07::run() {
_vm->_timers[0] = 100;
_vm->_timers[1] = 35;
}
- _vm->sceneXX_playRandomSound(4);
+ playRandomSound(4);
}
_vm->checkGameKeys();
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index d13f763..a5054cb 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -385,7 +385,7 @@ void Scene08::run() {
}
}
}
- _vm->sceneXX_playRandomSound(5);
+ playRandomSound(5);
}
_vm->checkGameKeys();
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index ac0b1be..5feee78 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -187,7 +187,7 @@ void Scene09::run() {
else
_vm->_gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
}
- _vm->sceneXX_playRandomSound(5);
+ playRandomSound(5);
}
_vm->checkGameKeys();
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index 97a8724..9f637b2 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -451,7 +451,7 @@ void Scene49::run() {
updateAnimations();
- if (_vm->sceneXX_sub_4466B1()) {
+ if (clearKeyStatus()) {
_vm->_sceneDone = true;
_vm->_newSceneNum = 2;
_vm->_newCursorValue = 1;
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
index f4a3a84..dc93c6b 100644
--- a/engines/gnap/scenes/scene51.cpp
+++ b/engines/gnap/scenes/scene51.cpp
@@ -724,7 +724,7 @@ void Scene51::run() {
bool startWalk = true;
while (!_vm->_sceneDone) {
- if (_vm->sceneXX_sub_4466B1())
+ if (clearKeyStatus())
_vm->_sceneDone = true;
_vm->gameUpdateTick();
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
index fb16184..ba1b0ff 100644
--- a/engines/gnap/scenes/scene52.cpp
+++ b/engines/gnap/scenes/scene52.cpp
@@ -877,7 +877,7 @@ void Scene52::run() {
update();
- if (_vm->sceneXX_sub_4466B1()) {
+ if (clearKeyStatus()) {
_s52_alienWave = false;
_vm->_gameSys->waitForUpdate();
initAnims();
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c6bc9a1..33ba911 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -821,6 +821,45 @@ void GnapEngine::runSceneLogic() {
}
}
+void Scene::playRandomSound(int timerIndex) {
+ if (!_vm->_timers[timerIndex]) {
+ _vm->_timers[timerIndex] = _vm->getRandom(40) + 50;
+ switch (_vm->getRandom(4)) {
+ case 0:
+ _vm->playSound(0x1091B, false);
+ break;
+ case 1:
+ _vm->playSound(0x10921, false);
+ break;
+ case 2:
+ _vm->playSound(0x10927, false);
+ break;
+ case 3:
+ _vm->playSound(0x1091D, false);
+ break;
+ }
+ }
+}
+
+bool Scene::clearKeyStatus() {
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_p);
+ return true;
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_p)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_p);
+ _vm->pauseGame();
+ _vm->updatePause();
+ }
+
+ return false;
+}
+
void CutScene::run() {
int itemIndex = 0;
int soundId = -1;
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index 1f49fd8..ba729f8 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -34,6 +34,9 @@ public:
Scene(GnapEngine *vm) : _vm(vm) {};
~Scene() {};
+ void playRandomSound(int timerIndex);
+ bool clearKeyStatus();
+
virtual int init() = 0;
virtual void updateHotspots() = 0;
virtual void run() = 0;
Commit: 441565db4d1e4a7934dd2cb580d0df35766222cc
https://github.com/scummvm/scummvm/commit/441565db4d1e4a7934dd2cb580d0df35766222cc
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce code duplication in SceneCore
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 371e7ef..389124b 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -936,7 +936,6 @@ void GnapEngine::startSoundTimerB(int timerIndex) {
}
int GnapEngine::playSoundB() {
-
static const int kSoundIdsB[] = {
0x93D, 0x929, 0x92A, 0x92B, 0x92C, 0x92D,
0x92E, 0x92F, 0x930, 0x931, 0x932, 0x933,
@@ -1791,7 +1790,6 @@ void GnapEngine::gnapUseDeviceOnPlatypuss() {
kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
_gnapSequenceId = newSequenceId;
_gnapSequenceDatNum = 1;
-
}
void GnapEngine::doCallback(int callback) {
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 33ba911..c549a7a 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -454,35 +454,10 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 8;
break;
case 1:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 4;
- break;
case 2:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 4;
- break;
case 3:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 4;
- break;
case 4:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 4;
- break;
case 5:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 4;
- break;
case 6:
_scene->run();
delete _scene;
@@ -508,41 +483,26 @@ void GnapEngine::runSceneLogic() {
_newSceneNum = 10;
break;
case 10:
+ case 12:
+ case 13:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 11;
break;
case 11:
+ case 15:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 12;
break;
- case 12:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 11;
- break;
- case 13:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 11;
- break;
case 14:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 13;
break;
- case 15:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 12;
- break;
case 16:
_scene = new Scene16(this);
_scene->init();
@@ -552,179 +512,49 @@ void GnapEngine::runSceneLogic() {
delete _scene;
break;
case 17:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 18:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
- case 19:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 19;
- break;
- case 20:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 22;
- break;
case 21:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 22:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 23:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 24:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 25:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 26:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 27:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 28:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 29:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 30:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 20;
- break;
case 31:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
_newSceneNum = 20;
break;
- case 32:
+ case 19:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
- _newSceneNum = 37;
+ _newSceneNum = 19;
break;
- case 33:
+ case 20:
_scene->run();
delete _scene;
if (_newSceneNum == 55)
- _newSceneNum = 37;
+ _newSceneNum = 22;
break;
+ case 32:
+ case 33:
case 34:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 35:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 36:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 37:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 38:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 39:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 40:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 41:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 42:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 43:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 44:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 45:
- _scene->run();
- delete _scene;
- if (_newSceneNum == 55)
- _newSceneNum = 37;
- break;
case 46:
_scene->run();
delete _scene;
Commit: 9503f9bdc84a758858037fb84504e9dfa2d3ab72
https://github.com/scummvm/scummvm/commit/9503f9bdc84a758858037fb84504e9dfa2d3ab72
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Add detection for the russian version
Changed paths:
engines/gnap/detection.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 69628f9..cb4802c 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -45,6 +45,14 @@ static const ADGameDescription gameDescriptions[] = {
},
Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO0()
},
+ {
+ "gnap", "",
+ {
+ {"stock_n.dat", 0, "46819043d019a2f36b727cc2bdd6980f", 12995485},
+ AD_LISTEND
+ },
+ Common::RU_RUS, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO0()
+ },
AD_TABLE_END_MARKER
};
Commit: 0a7f2fe938c4502ffa921d66c74e5380f8e2e2d5
https://github.com/scummvm/scummvm/commit/0a7f2fe938c4502ffa921d66c74e5380f8e2e2d5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Remove debug code
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 389124b..bcf2db1 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -708,30 +708,6 @@ void GnapEngine::initGameFlags(int num) {
setFlag(kGFBarnPadlockOpen);
break;
}
-
- //DEBUG!
-#if 0
-// setFlag(kGFPlatypus); // Enable platypus
- setFlag(kGFUnk25);
- invClear();
- invAdd(kItemMagazine);
-#endif
-#if 0
- invAdd(kItemDisguise);
-#endif
-#if 0
- //invAdd(kItemGas);
- invAdd(kItemJoint);
- //invAdd(kItemKeys);
- invAdd(kItemWrench);
- //invAdd(kItemTongs);
- invAdd(kItemDiceQuarterHole);
- //invAdd(kItemPill);
- //invAdd(kItemBucketWithBeer);
- invAdd(kItemChickenBucket);
- invAdd(kItemBanana);
- invAdd(kItemHorn);
-#endif
}
void GnapEngine::loadStockDat() {
Commit: 700d82c1c22fe9b4c586b272f827b2ee9aa659ba
https://github.com/scummvm/scummvm/commit/700d82c1c22fe9b4c586b272f827b2ee9aa659ba
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Fix crash in CutScenes
Changed paths:
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index ba729f8..73723fd 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -59,8 +59,6 @@ public:
void updateAnimationsCb() {}
protected:
- GnapEngine *_vm;
-
int _s99_itemsCount;
int _s99_resourceIdArr[16];
int _s99_sequenceCountArr[16];
Commit: aa8df847f7ab087dc4097f683c583197d2e8b035
https://github.com/scummvm/scummvm/commit/aa8df847f7ab087dc4097f683c583197d2e8b035
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Reduce dereferencing in scene group 4, some renaming
Changed paths:
engines/gnap/scenes/scene16.cpp
engines/gnap/scenes/scene40.cpp
engines/gnap/scenes/scene41.cpp
engines/gnap/scenes/scene41.h
engines/gnap/scenes/scene42.cpp
engines/gnap/scenes/scene42.h
engines/gnap/scenes/scene43.cpp
engines/gnap/scenes/scene43.h
engines/gnap/scenes/scene44.cpp
engines/gnap/scenes/scene44.h
engines/gnap/scenes/scene45.cpp
engines/gnap/scenes/scene45.h
engines/gnap/scenes/scene46.cpp
engines/gnap/scenes/scene46.h
engines/gnap/scenes/scene47.cpp
engines/gnap/scenes/scene48.cpp
engines/gnap/scenes/scene49.cpp
engines/gnap/scenes/scene49.h
engines/gnap/scenes/scene54.cpp
engines/gnap/scenes/scenecore.cpp
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/scenes/scene16.cpp b/engines/gnap/scenes/scene16.cpp
index bfe9afa..370faf4 100644
--- a/engines/gnap/scenes/scene16.cpp
+++ b/engines/gnap/scenes/scene16.cpp
@@ -30,56 +30,56 @@ namespace Gnap {
Scene16::Scene16(GnapEngine *vm) : CutScene(vm) {}
int Scene16::init() {
- _s99_sequenceIdArr[0] = 0x1F2;
- _s99_sequenceIdArr[1] = 0x201;
- _s99_sequenceIdArr[2] = 0x1FC;
- _s99_sequenceIdArr[3] = 0x1F4;
- _s99_sequenceIdArr[4] = 0x1FB;
- _s99_sequenceIdArr[5] = 0x1F0;
- _s99_sequenceIdArr[6] = 0x1FD;
- _s99_sequenceIdArr[7] = 0x1FE;
- _s99_sequenceIdArr[8] = 0x1F7;
- _s99_sequenceIdArr[9] = 0x1F9;
- _s99_sequenceIdArr[10] = 0x1F8;
- _s99_sequenceIdArr[11] = 0x1F1;
- _s99_sequenceIdArr[12] = 0x202;
- _s99_sequenceIdArr[13] = 0x1F6;
- _s99_sequenceIdArr[14] = 0x1F3;
- _s99_sequenceIdArr[15] = 0x1FA;
- _s99_sequenceIdArr[16] = 0x1FF;
- _s99_sequenceIdArr[17] = 0x200;
- _s99_sequenceIdArr[18] = 0x203;
- _s99_sequenceIdArr[19] = 0x206;
- _s99_sequenceIdArr[20] = 0x207;
- _s99_sequenceIdArr[21] = 0x204;
- _s99_sequenceIdArr[22] = 0x205;
- _s99_resourceIdArr[0] = 0x1C;
- _s99_resourceIdArr[1] = 2;
- _s99_resourceIdArr[2] = 0x1B;
- _s99_resourceIdArr[3] = 0;
- _s99_resourceIdArr[4] = 0x167;
- _s99_resourceIdArr[5] = 1;
- _s99_resourceIdArr[6] = 0x15B;
- _s99_resourceIdArr[7] = 0x15A;
- _s99_resourceIdArr[8] = 0x170;
- _s99_resourceIdArr[9] = 0x1EB;
- _s99_resourceIdArr[10] = 0x1EC;
- _s99_resourceIdArr[11] = 0x1BE;
- _s99_resourceIdArr[12] = 0x1BF;
- _s99_sequenceCountArr[0] = 4;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_sequenceCountArr[3] = 6;
- _s99_sequenceCountArr[4] = 1;
- _s99_sequenceCountArr[5] = 3;
- _s99_sequenceCountArr[6] = 1;
- _s99_sequenceCountArr[7] = 1;
- _s99_sequenceCountArr[8] = 1;
- _s99_sequenceCountArr[9] = 1;
- _s99_sequenceCountArr[10] = 1;
- _s99_sequenceCountArr[11] = 1;
- _s99_sequenceCountArr[12] = 1;
- _s99_itemsCount = 13;
+ _sequenceIdArr[0] = 0x1F2;
+ _sequenceIdArr[1] = 0x201;
+ _sequenceIdArr[2] = 0x1FC;
+ _sequenceIdArr[3] = 0x1F4;
+ _sequenceIdArr[4] = 0x1FB;
+ _sequenceIdArr[5] = 0x1F0;
+ _sequenceIdArr[6] = 0x1FD;
+ _sequenceIdArr[7] = 0x1FE;
+ _sequenceIdArr[8] = 0x1F7;
+ _sequenceIdArr[9] = 0x1F9;
+ _sequenceIdArr[10] = 0x1F8;
+ _sequenceIdArr[11] = 0x1F1;
+ _sequenceIdArr[12] = 0x202;
+ _sequenceIdArr[13] = 0x1F6;
+ _sequenceIdArr[14] = 0x1F3;
+ _sequenceIdArr[15] = 0x1FA;
+ _sequenceIdArr[16] = 0x1FF;
+ _sequenceIdArr[17] = 0x200;
+ _sequenceIdArr[18] = 0x203;
+ _sequenceIdArr[19] = 0x206;
+ _sequenceIdArr[20] = 0x207;
+ _sequenceIdArr[21] = 0x204;
+ _sequenceIdArr[22] = 0x205;
+ _resourceIdArr[0] = 0x1C;
+ _resourceIdArr[1] = 2;
+ _resourceIdArr[2] = 0x1B;
+ _resourceIdArr[3] = 0;
+ _resourceIdArr[4] = 0x167;
+ _resourceIdArr[5] = 1;
+ _resourceIdArr[6] = 0x15B;
+ _resourceIdArr[7] = 0x15A;
+ _resourceIdArr[8] = 0x170;
+ _resourceIdArr[9] = 0x1EB;
+ _resourceIdArr[10] = 0x1EC;
+ _resourceIdArr[11] = 0x1BE;
+ _resourceIdArr[12] = 0x1BF;
+ _sequenceCountArr[0] = 4;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 6;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 3;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _itemsCount = 13;
return -1;
}
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
index c3adbf2..ade6636 100644
--- a/engines/gnap/scenes/scene40.cpp
+++ b/engines/gnap/scenes/scene40.cpp
@@ -43,8 +43,10 @@ Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
}
int Scene40::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return _vm->isFlag(kGFUnk23) ? 0x01 : 0x00;
}
@@ -177,8 +179,10 @@ void Scene40::run() {
}
void Scene40::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus)
_vm->_gnapActionStatus = -1;
else
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
index 0cc83ff..605dff0 100644
--- a/engines/gnap/scenes/scene41.cpp
+++ b/engines/gnap/scenes/scene41.cpp
@@ -60,16 +60,18 @@ enum {
};
Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
- _s41_currKidSequenceId = -1;
- _s41_nextKidSequenceId = -1;
- _s41_currToyVendorSequenceId = -1;
- _s41_nextToyVendorSequenceId = -1;
+ _currKidSequenceId = -1;
+ _nextKidSequenceId = -1;
+ _currToyVendorSequenceId = -1;
+ _nextToyVendorSequenceId = -1;
}
int Scene41::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
return 0x129;
}
@@ -96,6 +98,8 @@ void Scene41::updateHotspots() {
}
void Scene41::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -116,26 +120,26 @@ void Scene41::run() {
_vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
_vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_gameSys->insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO))
- _s41_currKidSequenceId = 0x11B;
+ _currKidSequenceId = 0x11B;
else
- _s41_currKidSequenceId = 0x11D;
+ _currKidSequenceId = 0x11D;
- _s41_nextKidSequenceId = -1;
+ _nextKidSequenceId = -1;
- _vm->_gameSys->setAnimation(_s41_currKidSequenceId, 1, 4);
- _vm->_gameSys->insertSequence(_s41_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currKidSequenceId, 1, 4);
+ gameSys.insertSequence(_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s41_currToyVendorSequenceId = 0x118;
- _s41_nextToyVendorSequenceId = -1;
+ _currToyVendorSequenceId = 0x118;
+ _nextToyVendorSequenceId = -1;
- _vm->_gameSys->setAnimation(0x118, 1, 3);
- _vm->_gameSys->insertSequence(_s41_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x118, 1, 3);
+ gameSys.insertSequence(_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_gnapSequenceId = 0x120;
@@ -144,8 +148,8 @@ void Scene41::run() {
_vm->_gnapX = 7;
_vm->_gnapY = 7;
_vm->_gnapId = 140;
- _vm->_gameSys->insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->initPlatypusPos(8, 10, kDirBottomLeft);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 45) {
@@ -329,7 +333,7 @@ void Scene41::run() {
case kHSToyUfo:
if (_vm->_grabCursorSpriteIndex == kItemGum) {
_vm->playGnapPullOutDevice(9, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kASUseGumWithToyUfo;
}
break;
@@ -345,10 +349,10 @@ void Scene41::run() {
if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
_vm->_gnapActionStatus = kASGiveBackToyUfo;
if (_vm->_gnapSequenceId == 0x121 || _vm->_gnapSequenceId == 0x122) {
- _vm->_gameSys->insertSequence(0x123, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x123, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x123;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x123, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x123, _vm->_gnapId, 0);
}
}
}
@@ -372,10 +376,10 @@ void Scene41::run() {
else
sequenceId = 0x121;
}
- _vm->_gameSys->insertSequence(sequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(sequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = sequenceId;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(sequenceId, _vm->_gnapId, 0);
+ gameSys.setAnimation(sequenceId, _vm->_gnapId, 0);
_vm->_toyUfoActionStatus = kASToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
@@ -392,31 +396,31 @@ void Scene41::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _s41_nextToyVendorSequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
switch (_vm->getRandom(3)) {
case 0:
- _s41_nextToyVendorSequenceId = 0x113;
+ _nextToyVendorSequenceId = 0x113;
break;
case 1:
- _s41_nextToyVendorSequenceId = 0x117;
+ _nextToyVendorSequenceId = 0x117;
break;
case 2:
- _s41_nextToyVendorSequenceId = 0x119;
+ _nextToyVendorSequenceId = 0x119;
break;
}
- if (_s41_nextToyVendorSequenceId == _s41_currToyVendorSequenceId)
- _s41_nextToyVendorSequenceId = -1;
+ if (_nextToyVendorSequenceId == _currToyVendorSequenceId)
+ _nextToyVendorSequenceId = -1;
}
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _s41_nextKidSequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
if (_vm->isFlag(kGFGnapControlsToyUFO))
- _s41_nextKidSequenceId = 0x11B;
+ _nextKidSequenceId = 0x11B;
else if (_vm->getRandom(3) != 0)
- _s41_nextKidSequenceId = 0x11D;
+ _nextKidSequenceId = 0x11D;
else
- _s41_nextKidSequenceId = 0x11E;
+ _nextKidSequenceId = 0x11E;
}
}
}
@@ -435,25 +439,27 @@ void Scene41::run() {
}
void Scene41::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
case kASUseQuarterWithToyVendor:
- _vm->_gameSys->setAnimation(0, 0, 0);
- _s41_nextToyVendorSequenceId = 0x114;
+ gameSys.setAnimation(0, 0, 0);
+ _nextToyVendorSequenceId = 0x114;
_vm->_gnapActionStatus = -1;
break;
case kASTalkToyVendor:
- _vm->_gameSys->setAnimation(0, 0, 0);
- _s41_nextToyVendorSequenceId = 0x116;
+ gameSys.setAnimation(0, 0, 0);
+ _nextToyVendorSequenceId = 0x116;
_vm->_gnapActionStatus = -1;
break;
case kASUseGumWithToyUfo:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->playGnapUseDevice(9, 0);
_vm->_gnapActionStatus = -1;
_vm->setGrabCursorSprite(-1);
@@ -461,19 +467,19 @@ void Scene41::updateAnimations() {
_vm->_toyUfoActionStatus = kASUfoGumAttached;
break;
case kASUseChickenBucketWithKid:
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(4) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x11F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x11F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x11F;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x11F, _vm->_gnapId, 0);
- _s41_nextKidSequenceId = 0x11A;
- _vm->_gameSys->insertSequence(0x11A, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
- _s41_currKidSequenceId = _s41_nextKidSequenceId;
- _s41_nextKidSequenceId = 0x11B;
+ gameSys.setAnimation(0x11F, _vm->_gnapId, 0);
+ _nextKidSequenceId = 0x11A;
+ gameSys.insertSequence(0x11A, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = 0x11B;
_vm->_timers[5] = _vm->getRandom(30) + 20;
_vm->_gnapActionStatus = -1;
_vm->setFlag(kGFGnapControlsToyUFO);
@@ -482,49 +488,49 @@ void Scene41::updateAnimations() {
}
break;
case kASGrabKid:
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x110, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x110, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x110;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x110, _vm->_gnapId, 0);
- _s41_nextToyVendorSequenceId = 0x111;
- _vm->_gameSys->insertSequence(0x111, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
- _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
- _s41_nextToyVendorSequenceId = -1;
+ gameSys.setAnimation(0x110, _vm->_gnapId, 0);
+ _nextToyVendorSequenceId = 0x111;
+ gameSys.insertSequence(0x111, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
- _s41_nextKidSequenceId = 0x10F;
- _vm->_gameSys->insertSequence(0x10F, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
- _s41_currKidSequenceId = _s41_nextKidSequenceId;
- _s41_nextKidSequenceId = -1;
+ _nextKidSequenceId = 0x10F;
+ gameSys.insertSequence(0x10F, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
_vm->_gnapActionStatus = -1;
}
break;
case kASGiveBackToyUfo:
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x124, _vm->_gnapId,
+ gameSys.insertSequence(0x124, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x124;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x124, _vm->_gnapId, 0);
- _s41_nextToyVendorSequenceId = 0x112;
- _vm->_gameSys->insertSequence(0x112, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
- _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
- _s41_nextToyVendorSequenceId = -1;
+ gameSys.setAnimation(0x124, _vm->_gnapId, 0);
+ _nextToyVendorSequenceId = 0x112;
+ gameSys.insertSequence(0x112, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
- _s41_nextKidSequenceId = 0x11C;
- _vm->_gameSys->insertSequence(0x11C, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
- _s41_currKidSequenceId = _s41_nextKidSequenceId;
- _s41_nextKidSequenceId = -1;
+ _nextKidSequenceId = 0x11C;
+ gameSys.insertSequence(0x11C, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
_vm->_gnapActionStatus = -1;
_vm->clearFlag(kGFGnapControlsToyUFO);
@@ -534,46 +540,46 @@ void Scene41::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
switch (_vm->_toyUfoActionStatus) {
case kASToyUfoLeaveScene:
_vm->_sceneDone = true;
break;
case kASUfoGumAttached:
_vm->_toyUfoNextSequenceId = 0x873;
- _vm->_gameSys->insertSequence(0x10873, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ gameSys.insertSequence(0x10873, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 365, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
_vm->toyUfoSetStatus(kGFJointTaken);
break;
default:
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
++_vm->_toyUfoId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
break;
}
_vm->_toyUfoActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s41_nextToyVendorSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s41_nextToyVendorSequenceId, 1, _s41_currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextToyVendorSequenceId, 1, 3);
- _s41_currToyVendorSequenceId = _s41_nextToyVendorSequenceId;
- _s41_nextToyVendorSequenceId = -1;
+ if (gameSys.getAnimationStatus(3) == 2 && _nextToyVendorSequenceId != -1) {
+ gameSys.insertSequence(_nextToyVendorSequenceId, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s41_nextKidSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s41_nextKidSequenceId, 1, _s41_currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s41_nextKidSequenceId, 1, 4);
- _s41_currKidSequenceId = _s41_nextKidSequenceId;
- _s41_nextKidSequenceId = -1;
+ if (gameSys.getAnimationStatus(4) == 2 && _nextKidSequenceId != -1) {
+ gameSys.insertSequence(_nextKidSequenceId, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_s41_currKidSequenceId == 0x11E) {
+ if (_currKidSequenceId == 0x11E) {
_vm->_toyUfoActionStatus = kASToyUfoRefresh;
_vm->toyUfoFlyTo(_vm->getRandom(300) + 500, _vm->getRandom(225) + 75, 0, 799, 0, 300, 2);
}
diff --git a/engines/gnap/scenes/scene41.h b/engines/gnap/scenes/scene41.h
index 91e8a1a..0b0cd4e 100644
--- a/engines/gnap/scenes/scene41.h
+++ b/engines/gnap/scenes/scene41.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s41_currKidSequenceId;
- int _s41_nextKidSequenceId;
- int _s41_currToyVendorSequenceId;
- int _s41_nextToyVendorSequenceId;
+ int _currKidSequenceId;
+ int _nextKidSequenceId;
+ int _currToyVendorSequenceId;
+ int _nextToyVendorSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
index 33f961d..8bab502 100644
--- a/engines/gnap/scenes/scene42.cpp
+++ b/engines/gnap/scenes/scene42.cpp
@@ -58,14 +58,16 @@ enum {
};
Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
- _s42_currBBQVendorSequenceId = -1;
- _s42_nextBBQVendorSequenceId = -1;
+ _currBBQVendorSequenceId = -1;
+ _nextBBQVendorSequenceId = -1;
}
int Scene42::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
if (_vm->isFlag(kGFPictureTaken) || (_vm->isFlag(kGFUnk18) && _vm->isFlag(kGFUnk23)))
return 0x153;
return 0x152;
@@ -96,13 +98,15 @@ void Scene42::updateHotspots() {
}
void Scene42::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
- _s42_currBBQVendorSequenceId = 0x14A;
- _s42_nextBBQVendorSequenceId = -1;
+ _currBBQVendorSequenceId = 0x14A;
+ _nextBBQVendorSequenceId = -1;
- _vm->_gameSys->setAnimation(0x14A, 1, 2);
- _vm->_gameSys->insertSequence(_s42_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x14A, 1, 2);
+ gameSys.insertSequence(_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
@@ -110,7 +114,7 @@ void Scene42::run() {
if (_vm->_prevSceneNum == 43 && _vm->isFlag(kGFUnk18)) {
_vm->_toyUfoSequenceId = 0x872;
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
_vm->_toyUfoX = 317;
_vm->_toyUfoY = 61;
_vm->toyUfoSetStatus(kGFJointTaken);
@@ -123,9 +127,9 @@ void Scene42::run() {
_vm->_toyUfoX = 30;
else
_vm->_toyUfoX = 770;
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
}
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
_vm->endSceneInit();
if (_vm->_toyUfoSequenceId == 0x872)
_vm->setGrabCursorSprite(-1);
@@ -329,27 +333,27 @@ void Scene42::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s42_nextBBQVendorSequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextBBQVendorSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
- _s42_nextBBQVendorSequenceId = 0x14C;
+ _nextBBQVendorSequenceId = 0x14C;
break;
case 1:
case 2:
- _s42_nextBBQVendorSequenceId = 0x149;
+ _nextBBQVendorSequenceId = 0x149;
break;
case 3:
case 4:
case 5:
case 6:
- _s42_nextBBQVendorSequenceId = 0x14D;
+ _nextBBQVendorSequenceId = 0x14D;
break;
case 7:
- _s42_nextBBQVendorSequenceId = 0x14A;
+ _nextBBQVendorSequenceId = 0x14A;
break;
}
- if (_s42_nextBBQVendorSequenceId == _s42_currBBQVendorSequenceId && _s42_nextBBQVendorSequenceId != 0x14D)
- _s42_nextBBQVendorSequenceId = -1;
+ if (_nextBBQVendorSequenceId == _currBBQVendorSequenceId && _nextBBQVendorSequenceId != 0x14D)
+ _nextBBQVendorSequenceId = -1;
}
}
}
@@ -368,104 +372,106 @@ void Scene42::run() {
}
void Scene42::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case kASLeaveScene:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->_sceneDone = true;
break;
case kASTalkBBQVendor:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_gnapActionStatus = -1;
- _s42_nextBBQVendorSequenceId = 0x14B;
+ _nextBBQVendorSequenceId = 0x14B;
break;
case kASUseQuarterWithBBQVendor:
case kASGrabChickenLeg:
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
int sequenceId;
if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor) {
_vm->invRemove(kItemDiceQuarterHole);
_vm->invAdd(kItemChickenBucket);
_vm->setGrabCursorSprite(-1);
sequenceId = 0x150;
- _s42_nextBBQVendorSequenceId = 0x148;
+ _nextBBQVendorSequenceId = 0x148;
} else if (_vm->isFlag(kGFUnk27)) {
if (_vm->isFlag(kGFUnk28)) {
sequenceId = 0x7B7;
- _s42_nextBBQVendorSequenceId = 0x145;
+ _nextBBQVendorSequenceId = 0x145;
} else {
_vm->setFlag(kGFUnk28);
sequenceId = 0x14F;
- _s42_nextBBQVendorSequenceId = 0x147;
+ _nextBBQVendorSequenceId = 0x147;
}
} else {
_vm->setFlag(kGFUnk27);
sequenceId = 0x14E;
- _s42_nextBBQVendorSequenceId = 0x146;
+ _nextBBQVendorSequenceId = 0x146;
}
if (sequenceId == 0x7B7) {
- _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId,
+ gameSys.insertSequence(0x107B7, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, _vm->getSequenceTotalDuration(_s42_nextBBQVendorSequenceId),
+ kSeqSyncWait, _vm->getSequenceTotalDuration(_nextBBQVendorSequenceId),
75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceDatNum = 1;
} else {
- _vm->_gameSys->insertSequence(sequenceId, _vm->_gnapId,
+ gameSys.insertSequence(sequenceId, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
}
_vm->_gnapSequenceId = sequenceId;
- _vm->_gameSys->setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
+ gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor)
_vm->_gnapActionStatus = kASUseQuarterWithBBQVendorDone;
else
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
- _s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
- if (_s42_nextBBQVendorSequenceId == 0x145)
- _s42_nextBBQVendorSequenceId = 0x14A;
+ gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
+ _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
+ if (_nextBBQVendorSequenceId == 0x145)
+ _nextBBQVendorSequenceId = 0x14A;
else
- _s42_nextBBQVendorSequenceId = -1;
+ _nextBBQVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 30;
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
}
break;
case kASUseQuarterWithBBQVendorDone:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->setGrabCursorSprite(kItemChickenBucket);
_vm->_gnapActionStatus = -1;
break;
default:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s42_nextBBQVendorSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s42_nextBBQVendorSequenceId, 1, _s42_currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s42_nextBBQVendorSequenceId, 1, 2);
- _s42_currBBQVendorSequenceId = _s42_nextBBQVendorSequenceId;
- _s42_nextBBQVendorSequenceId = -1;
+ if (gameSys.getAnimationStatus(2) == 2 && _nextBBQVendorSequenceId != -1) {
+ gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
+ _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
+ _nextBBQVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 30;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_vm->_toyUfoActionStatus) {
case kASToyUfoLeaveScene:
_vm->_sceneDone = true;
break;
case kASToyUfoPickUpHotSauce:
- _vm->_gameSys->insertSequence(0x10870, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x10870, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
_vm->setFlag(kGFUnk24);
updateHotspots();
_vm->toyUfoSetStatus(kGFGroceryStoreHatTaken);
_vm->_toyUfoSequenceId = 0x870;
- _vm->_gameSys->setAnimation(0x10870, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(0x10870, _vm->_toyUfoId, 3);
_vm->_toyUfoActionStatus = -1;
_vm->_toyUfoX = 0x181;
_vm->_toyUfoY = 53;
@@ -474,16 +480,16 @@ void Scene42::updateAnimations() {
if (_vm->_toyUfoSequenceId == 0x872) {
_vm->hideCursor();
_vm->addFullScreenSprite(0x13E, 255);
- _vm->_gameSys->setAnimation(0x151, 256, 0);
- _vm->_gameSys->insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x151, 256, 0);
+ gameSys.insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
}
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10, 3);
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10,
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10, 3);
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10,
_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
diff --git a/engines/gnap/scenes/scene42.h b/engines/gnap/scenes/scene42.h
index a3008a2..8175e98 100644
--- a/engines/gnap/scenes/scene42.h
+++ b/engines/gnap/scenes/scene42.h
@@ -42,8 +42,8 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s42_currBBQVendorSequenceId;
- int _s42_nextBBQVendorSequenceId;
+ int _currBBQVendorSequenceId;
+ int _nextBBQVendorSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
index 9c7b56a..a3119bf 100644
--- a/engines/gnap/scenes/scene43.cpp
+++ b/engines/gnap/scenes/scene43.cpp
@@ -49,14 +49,16 @@ enum {
};
Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
- _s43_currTwoHeadedGuySequenceId = -1;
- _s43_nextTwoHeadedGuySequenceId = -1;
+ _currTwoHeadedGuySequenceId = -1;
+ _nextTwoHeadedGuySequenceId = -1;
}
int Scene43::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
return 0x13F;
}
@@ -92,16 +94,18 @@ void Scene43::updateHotspots() {
}
void Scene43::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
if (!_vm->isFlag(kGFUnk14))
- _vm->_gameSys->insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s43_currTwoHeadedGuySequenceId = 0x13C;
- _s43_nextTwoHeadedGuySequenceId = -1;
+ _currTwoHeadedGuySequenceId = 0x13C;
+ _nextTwoHeadedGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x13C, 1, 2);
- _vm->_gameSys->insertSequence(_s43_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x13C, 1, 2);
+ gameSys.insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
@@ -112,8 +116,8 @@ void Scene43::run() {
_vm->_toyUfoX = 30;
else
_vm->_toyUfoX = 770;
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->endSceneInit();
} else {
switch (_vm->_prevSceneNum) {
@@ -329,26 +333,26 @@ void Scene43::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s43_nextTwoHeadedGuySequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
switch (_vm->getRandom(5)) {
case 0:
- _s43_nextTwoHeadedGuySequenceId = 0x13C;
+ _nextTwoHeadedGuySequenceId = 0x13C;
break;
case 1:
- _s43_nextTwoHeadedGuySequenceId = 0x134;
+ _nextTwoHeadedGuySequenceId = 0x134;
break;
case 2:
- _s43_nextTwoHeadedGuySequenceId = 0x135;
+ _nextTwoHeadedGuySequenceId = 0x135;
break;
case 3:
- _s43_nextTwoHeadedGuySequenceId = 0x136;
+ _nextTwoHeadedGuySequenceId = 0x136;
break;
case 4:
- _s43_nextTwoHeadedGuySequenceId = 0x13A;
+ _nextTwoHeadedGuySequenceId = 0x13A;
break;
}
- if (_s43_nextTwoHeadedGuySequenceId == _s43_currTwoHeadedGuySequenceId)
- _s43_nextTwoHeadedGuySequenceId = -1;
+ if (_nextTwoHeadedGuySequenceId == _currTwoHeadedGuySequenceId)
+ _nextTwoHeadedGuySequenceId = -1;
}
}
}
@@ -370,89 +374,91 @@ void Scene43::run() {
}
void Scene43::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case 0:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_sceneDone = true;
break;
case 1:
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x13D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x13D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x13D;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x13D, _vm->_gnapId, 0);
- _s43_nextTwoHeadedGuySequenceId = 0x13B;
- _vm->_gameSys->insertSequence(0x13B, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
- _s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
- _s43_nextTwoHeadedGuySequenceId = -1;
+ gameSys.setAnimation(0x13D, _vm->_gnapId, 0);
+ _nextTwoHeadedGuySequenceId = 0x13B;
+ gameSys.insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
_vm->_gnapActionStatus = -1;
}
break;
default:
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_s43_currTwoHeadedGuySequenceId == 0x13A) {
+ if (gameSys.getAnimationStatus(2) == 2) {
+ if (_currTwoHeadedGuySequenceId == 0x13A) {
if (_vm->isFlag(kGFGroceryStoreHatTaken)) {
- _s43_nextTwoHeadedGuySequenceId = 0x13E;
+ _nextTwoHeadedGuySequenceId = 0x13E;
_vm->stopSound(0x108F6);
} else if (_vm->getRandom(2) != 0) {
- _s43_nextTwoHeadedGuySequenceId = 0x137;
+ _nextTwoHeadedGuySequenceId = 0x137;
} else {
- _s43_nextTwoHeadedGuySequenceId = 0x138;
+ _nextTwoHeadedGuySequenceId = 0x138;
}
- } else if (_s43_currTwoHeadedGuySequenceId == 0x13E) {
+ } else if (_currTwoHeadedGuySequenceId == 0x13E) {
_vm->_sceneDone = true;
_vm->_newSceneNum = 54;
}
- if (_s43_nextTwoHeadedGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s43_nextTwoHeadedGuySequenceId, 1, _s43_currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s43_nextTwoHeadedGuySequenceId, 1, 2);
- _s43_currTwoHeadedGuySequenceId = _s43_nextTwoHeadedGuySequenceId;
- _s43_nextTwoHeadedGuySequenceId = -1;
+ if (_nextTwoHeadedGuySequenceId != -1) {
+ gameSys.insertSequence(_nextTwoHeadedGuySequenceId, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 4:
_vm->_sceneDone = true;
_vm->_toyUfoActionStatus = -1;
break;
case 6:
- _vm->_gameSys->insertSequence(0x10871, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x1086F, 1, true);
+ gameSys.insertSequence(0x10871, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x1086F, 1, true);
_vm->setFlag(kGFUnk14);
updateHotspots();
_vm->toyUfoSetStatus(kGFUnk18);
_vm->_toyUfoSequenceId = 0x871;
- _vm->_gameSys->setAnimation(0x10871, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(0x10871, _vm->_toyUfoId, 3);
_vm->_toyUfoActionStatus = -1;
_vm->_toyUfoX = 96;
_vm->_toyUfoY = 131;
break;
case 7:
- _vm->_gameSys->insertSequence(0x10874, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x10874, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
_vm->_toyUfoSequenceId = 0x874;
- _vm->_gameSys->setAnimation(0x10874, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(0x10874, _vm->_toyUfoId, 3);
_vm->_toyUfoActionStatus = 8;
_vm->setFlag(kGFJointTaken);
_vm->_gnapActionStatus = 3;
break;
case 8:
- _s43_nextTwoHeadedGuySequenceId = 0x13A;
+ _nextTwoHeadedGuySequenceId = 0x13A;
_vm->_toyUfoX = 514;
_vm->_toyUfoY = 125;
_vm->toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
@@ -463,12 +469,12 @@ void Scene43::updateAnimations() {
break;
default:
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
++_vm->_toyUfoId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
_vm->_toyUfoActionStatus = -1;
break;
}
diff --git a/engines/gnap/scenes/scene43.h b/engines/gnap/scenes/scene43.h
index 427d18b..fdf6d6e 100644
--- a/engines/gnap/scenes/scene43.h
+++ b/engines/gnap/scenes/scene43.h
@@ -42,8 +42,8 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s43_currTwoHeadedGuySequenceId;
- int _s43_nextTwoHeadedGuySequenceId;
+ int _currTwoHeadedGuySequenceId;
+ int _nextTwoHeadedGuySequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
index 6c3bd90..2e66df7 100644
--- a/engines/gnap/scenes/scene44.cpp
+++ b/engines/gnap/scenes/scene44.cpp
@@ -47,17 +47,19 @@ enum {
};
Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
- _s44_nextSpringGuySequenceId = -1;
- _s44_nextKissingLadySequenceId = -1;
- _s44_currSpringGuySequenceId = -1;
- _s44_currKissingLadySequenceId = -1;
+ _nextSpringGuySequenceId = -1;
+ _nextKissingLadySequenceId = -1;
+ _currSpringGuySequenceId = -1;
+ _currKissingLadySequenceId = -1;
}
int Scene44::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
return 0xFF;
}
@@ -88,37 +90,39 @@ void Scene44::updateHotspots() {
}
void Scene44::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFSpringTaken))
- _s44_currSpringGuySequenceId = 0xF8;
+ _currSpringGuySequenceId = 0xF8;
else
- _s44_currSpringGuySequenceId = 0xF9;
+ _currSpringGuySequenceId = 0xF9;
- _s44_nextSpringGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_s44_currSpringGuySequenceId, 1, 4);
- _vm->_gameSys->insertSequence(_s44_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _nextSpringGuySequenceId = -1;
+ gameSys.setAnimation(_currSpringGuySequenceId, 1, 4);
+ gameSys.insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFUnk13)) {
if (_vm->_prevSceneNum != 50 || _vm->_sceneSavegameLoaded) {
- _s44_currKissingLadySequenceId = 0xF6;
- _s44_nextKissingLadySequenceId = -1;
+ _currKissingLadySequenceId = 0xF6;
+ _nextKissingLadySequenceId = -1;
} else {
_vm->setGrabCursorSprite(kItemGum);
- _s44_currKissingLadySequenceId = 0xF5;
- _s44_nextKissingLadySequenceId = 0xF6;
- _vm->_gameSys->setAnimation(0xF5, 1, 2);
+ _currKissingLadySequenceId = 0xF5;
+ _nextKissingLadySequenceId = 0xF6;
+ gameSys.setAnimation(0xF5, 1, 2);
}
} else {
- _s44_currKissingLadySequenceId = 0xEC;
- _s44_nextKissingLadySequenceId = -1;
- _vm->_gameSys->setAnimation(0xEC, 1, 2);
+ _currKissingLadySequenceId = 0xEC;
+ _nextKissingLadySequenceId = -1;
+ gameSys.setAnimation(0xEC, 1, 2);
}
- _vm->_gameSys->insertSequence(_s44_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
@@ -129,8 +133,8 @@ void Scene44::run() {
_vm->_toyUfoX = 30;
else
_vm->_toyUfoX = 770;
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->endSceneInit();
} else {
switch (_vm->_prevSceneNum) {
@@ -161,7 +165,7 @@ void Scene44::run() {
_vm->_platypusFacing = kDirNone;
_vm->_platypusId = 160;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->endSceneInit();
break;
@@ -308,7 +312,7 @@ void Scene44::run() {
case GRAB_CURSOR:
_vm->playGnapPullOutDevice(8, 0);
_vm->playGnapUseDevice(8, 0);
- _s44_nextSpringGuySequenceId = 0xFB;
+ _nextSpringGuySequenceId = 0xFB;
_vm->invAdd(kItemSpring);
_vm->setFlag(kGFSpringTaken);
updateHotspots();
@@ -369,48 +373,48 @@ void Scene44::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _s44_currKissingLadySequenceId != 0xF5)
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
_vm->updatePlatypusIdleSequence();
if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s44_nextKissingLadySequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextKissingLadySequenceId == -1) {
switch (_vm->getRandom(20)) {
case 0:
- _s44_nextKissingLadySequenceId = 0xED;
+ _nextKissingLadySequenceId = 0xED;
break;
case 1:
- _s44_nextKissingLadySequenceId = 0xEE;
+ _nextKissingLadySequenceId = 0xEE;
break;
case 2:
- _s44_nextKissingLadySequenceId = 0xF0;
+ _nextKissingLadySequenceId = 0xF0;
break;
case 3:
- _s44_nextKissingLadySequenceId = 0xF3;
+ _nextKissingLadySequenceId = 0xF3;
break;
case 4:
- _s44_nextKissingLadySequenceId = 0xF4;
+ _nextKissingLadySequenceId = 0xF4;
break;
default:
- _s44_nextKissingLadySequenceId = 0xEC;
+ _nextKissingLadySequenceId = 0xEC;
break;
}
- if (_s44_nextKissingLadySequenceId != 0xEC && _s44_nextKissingLadySequenceId == _s44_currKissingLadySequenceId)
- _s44_nextKissingLadySequenceId = -1;
+ if (_nextKissingLadySequenceId != 0xEC && _nextKissingLadySequenceId == _currKissingLadySequenceId)
+ _nextKissingLadySequenceId = -1;
}
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s44_nextSpringGuySequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSpringGuySequenceId == -1) {
if (_vm->getRandom(5) != 0) {
if (!_vm->isFlag(kGFSpringTaken))
- _s44_nextSpringGuySequenceId = 0xF9;
+ _nextSpringGuySequenceId = 0xF9;
} else {
if (_vm->isFlag(kGFSpringTaken))
- _s44_nextSpringGuySequenceId = 0xF8;
+ _nextSpringGuySequenceId = 0xF8;
else
- _s44_nextSpringGuySequenceId = 0xFA;
+ _nextSpringGuySequenceId = 0xFA;
}
}
}
@@ -430,32 +434,34 @@ void Scene44::run() {
}
void Scene44::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case 0:
_vm->_sceneDone = true;
break;
case 1:
- _s44_nextKissingLadySequenceId = 0xEF;
+ _nextKissingLadySequenceId = 0xEF;
break;
case 2:
- _s44_nextKissingLadySequenceId = 0xF2;
+ _nextKissingLadySequenceId = 0xF2;
break;
}
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
case 4:
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->insertSequence(0xFE, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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;
- _vm->_gameSys->setAnimation(0xFE, _vm->_platypusId, 1);
- _vm->_gameSys->removeSequence(_s44_currKissingLadySequenceId, 1, true);
+ gameSys.setAnimation(0xFE, _vm->_platypusId, 1);
+ gameSys.removeSequence(_currKissingLadySequenceId, 1, true);
_vm->_platypusActionStatus = 5;
}
break;
@@ -469,49 +475,49 @@ void Scene44::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_s44_nextKissingLadySequenceId == 0xF6) {
- _vm->_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(2) == 2) {
+ if (_nextKissingLadySequenceId == 0xF6) {
+ gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
_vm->initPlatypusPos(5, 8, kDirNone);
- _s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
- _s44_nextKissingLadySequenceId = -1;
- _vm->_gameSys->setAnimation(0, 0, 2);
- } else if (_s44_nextKissingLadySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s44_nextKissingLadySequenceId, 1, _s44_currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s44_nextKissingLadySequenceId, 1, 2);
- _s44_currKissingLadySequenceId = _s44_nextKissingLadySequenceId;
- _s44_nextKissingLadySequenceId = -1;
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
+ gameSys.setAnimation(0, 0, 2);
+ } else if (_nextKissingLadySequenceId != -1) {
+ gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKissingLadySequenceId, 1, 2);
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 20;
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- if (_s44_currSpringGuySequenceId == 0xFB) {
+ if (gameSys.getAnimationStatus(4) == 2) {
+ if (_currSpringGuySequenceId == 0xFB) {
_vm->setGrabCursorSprite(kItemSpring);
- _s44_nextSpringGuySequenceId = 0xF8;
+ _nextSpringGuySequenceId = 0xF8;
}
- if (_s44_nextSpringGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s44_nextSpringGuySequenceId, 1, _s44_currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s44_nextSpringGuySequenceId, 1, 4);
- _s44_currSpringGuySequenceId = _s44_nextSpringGuySequenceId;
- _s44_nextSpringGuySequenceId = -1;
+ if (_nextSpringGuySequenceId != -1) {
+ gameSys.insertSequence(_nextSpringGuySequenceId, 1, _currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextSpringGuySequenceId, 1, 4);
+ _currSpringGuySequenceId = _nextSpringGuySequenceId;
+ _nextSpringGuySequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 20;
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 6:
_vm->_sceneDone = true;
break;
default:
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
++_vm->_toyUfoId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
break;
}
_vm->_toyUfoActionStatus = -1;
diff --git a/engines/gnap/scenes/scene44.h b/engines/gnap/scenes/scene44.h
index f26cba0..3ba5438 100644
--- a/engines/gnap/scenes/scene44.h
+++ b/engines/gnap/scenes/scene44.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s44_nextSpringGuySequenceId;
- int _s44_nextKissingLadySequenceId;
- int _s44_currSpringGuySequenceId;
- int _s44_currKissingLadySequenceId;
+ int _nextSpringGuySequenceId;
+ int _nextKissingLadySequenceId;
+ int _currSpringGuySequenceId;
+ int _currKissingLadySequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
index 15722ab..95aac39 100644
--- a/engines/gnap/scenes/scene45.cpp
+++ b/engines/gnap/scenes/scene45.cpp
@@ -45,16 +45,18 @@ enum {
};
Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
- _s45_currDancerSequenceId = -1;
+ _currDancerSequenceId = -1;
}
int Scene45::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->_gameSys->setAnimation(0, 0, 5);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 4);
+ gameSys.setAnimation(0, 0, 5);
return _vm->isFlag(kGFUnk23) ? 0xA2 : 0xA1;
}
@@ -88,18 +90,20 @@ void Scene45::updateHotspots() {
}
void Scene45::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
if (!_vm->isSoundPlaying(0x1094A))
_vm->playSound(0x1094A, true);
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x96, 1, 3);
- _vm->_gameSys->insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x99, 1, 4);
- _s45_currDancerSequenceId = 0x8F;
- _vm->_gameSys->setAnimation(_s45_currDancerSequenceId, 1, 2);
- _vm->_gameSys->insertSequence(_s45_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
+ _currDancerSequenceId = 0x8F;
+ gameSys.setAnimation(_currDancerSequenceId, 1, 2);
+ gameSys.insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
@@ -110,16 +114,16 @@ void Scene45::run() {
_vm->_toyUfoX = 30;
else
_vm->_toyUfoX = 770;
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 5);
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 5);
+ 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->_gameSys->setAnimation(0x9E, 1, 0);
+ gameSys.setAnimation(0x9E, 1, 0);
_vm->_gnapActionStatus = 1;
- _vm->_gameSys->insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->initPlatypusPos(4, 8, kDirNone);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 46) {
@@ -145,34 +149,34 @@ void Scene45::run() {
if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->setFlag(kGFUnk21);
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x9D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ gameSys.setAnimation(0x9D, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2) {
_vm->gameUpdateTick();
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
int newSeqId = _vm->getRandom(7) + 0x8F;
- _vm->_gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(newSeqId, 1, 2);
- _s45_currDancerSequenceId = newSeqId;
+ gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
- _vm->_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x96, 1, 3);
- _vm->_gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x99, 1, 4);
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
+ gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
}
}
_vm->_gnapSequenceId = 0x9D;
_vm->_gnapSequenceDatNum = 0;
_vm->hideCursor();
_vm->addFullScreenSprite(0x8A, 255);
- _vm->_gameSys->setAnimation(0xA0, 256, 0);
- _vm->_gameSys->insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0xA0, 256, 0);
+ gameSys.insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x107BD, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x107BD, _vm->_gnapId,
+ gameSys.setAnimation(0x107BD, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x107BD, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->removeFullScreenSprite();
@@ -182,7 +186,7 @@ void Scene45::run() {
}
_vm->playPlatypusSequence(0x9A);
- _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094A))
@@ -240,7 +244,7 @@ void Scene45::run() {
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
_vm->playPlatypusSequence(0x9A);
- _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
@@ -352,8 +356,10 @@ void Scene45::run() {
}
void Scene45::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case 0:
_vm->_sceneDone = true;
@@ -362,10 +368,10 @@ void Scene45::updateAnimations() {
_vm->_sceneWaiting = true;
_vm->setFlag(kGFUnk22);
updateHotspots();
- _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9E;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
break;
default:
_vm->_gnapActionStatus = -1;
@@ -373,43 +379,43 @@ void Scene45::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->getRandom(2) != 0)
_vm->playPlatypusSequence(0x9B);
else
_vm->playPlatypusSequence(0x9C);
- _vm->_gameSys->setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
int newSeqId = _vm->getRandom(7) + 0x8F;
- _vm->_gameSys->insertSequence(newSeqId, 1, _s45_currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(newSeqId, 1, 2);
- _s45_currDancerSequenceId = newSeqId;
+ gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _vm->_gameSys->getAnimationStatus(4) == 2) {
- _vm->_gameSys->insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x96, 1, 3);
- _vm->_gameSys->insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x99, 1, 4);
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
+ gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
}
- if (_vm->_gameSys->getAnimationStatus(5) == 2) {
+ if (gameSys.getAnimationStatus(5) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 2:
_vm->_sceneDone = true;
break;
default:
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
++_vm->_toyUfoId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 5);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 5);
break;
}
_vm->_toyUfoActionStatus = -1;
diff --git a/engines/gnap/scenes/scene45.h b/engines/gnap/scenes/scene45.h
index 549e077..3aa7f9c 100644
--- a/engines/gnap/scenes/scene45.h
+++ b/engines/gnap/scenes/scene45.h
@@ -42,7 +42,7 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s45_currDancerSequenceId;
+ int _currDancerSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
index 74b60de..5de3d49 100644
--- a/engines/gnap/scenes/scene46.cpp
+++ b/engines/gnap/scenes/scene46.cpp
@@ -45,18 +45,20 @@ enum {
};
Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
- _s46_currSackGuySequenceId = -1;
- _s46_nextItchyGuySequenceId = -1;
- _s46_nextSackGuySequenceId = -1;
- _s46_currItchyGuySequenceId = -1;
+ _currSackGuySequenceId = -1;
+ _nextItchyGuySequenceId = -1;
+ _nextSackGuySequenceId = -1;
+ _currItchyGuySequenceId = -1;
}
int Scene46::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->_gameSys->setAnimation(0, 0, 4);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 4);
return 0x4E;
}
@@ -81,19 +83,20 @@ void Scene46::updateHotspots() {
}
void Scene46::run() {
- _vm->queueInsertDeviceIcon();
+ GameSys gameSys = *_vm->_gameSys;
- _vm->_gameSys->insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->queueInsertDeviceIcon();
+ gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
- _s46_currSackGuySequenceId = 0x4B;
- _s46_nextSackGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x4B, 1, 3);
- _vm->_gameSys->insertSequence(_s46_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _currSackGuySequenceId = 0x4B;
+ _nextSackGuySequenceId = -1;
+ gameSys.setAnimation(0x4B, 1, 3);
+ gameSys.insertSequence(_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s46_currItchyGuySequenceId = 0x47;
- _s46_nextItchyGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x47, 1, 4);
- _vm->_gameSys->insertSequence(_s46_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _currItchyGuySequenceId = 0x47;
+ _nextItchyGuySequenceId = -1;
+ gameSys.setAnimation(0x47, 1, 4);
+ gameSys.insertSequence(_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
@@ -104,8 +107,8 @@ void Scene46::run() {
_vm->_toyUfoX = 30;
else
_vm->_toyUfoX = 770;
- _vm->_gameSys->setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
- _vm->_gameSys->insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 44) {
_vm->initGnapPos(-1, 8, kDirUpRight);
@@ -290,17 +293,17 @@ void Scene46::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s46_nextItchyGuySequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextItchyGuySequenceId == -1) {
if (_vm->getRandom(2) != 0)
- _s46_nextItchyGuySequenceId = 0x49;
+ _nextItchyGuySequenceId = 0x49;
else
- _s46_nextItchyGuySequenceId = 0x48;
+ _nextItchyGuySequenceId = 0x48;
}
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s46_nextSackGuySequenceId == -1)
- _s46_nextSackGuySequenceId = 0x4C;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSackGuySequenceId == -1)
+ _nextSackGuySequenceId = 0x4C;
}
}
@@ -317,51 +320,53 @@ void Scene46::run() {
}
void Scene46::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case 0:
_vm->_sceneDone = true;
break;
case 1:
- _s46_nextItchyGuySequenceId = 0x46;
+ _nextItchyGuySequenceId = 0x46;
break;
case 2:
- _s46_nextSackGuySequenceId = 0x4A;
+ _nextSackGuySequenceId = 0x4A;
break;
}
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s46_nextSackGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s46_nextSackGuySequenceId, 1, _s46_currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s46_nextSackGuySequenceId, 1, 3);
- _s46_currSackGuySequenceId = _s46_nextSackGuySequenceId;
- _s46_nextSackGuySequenceId = -1;
+ if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) {
+ gameSys.insertSequence(_nextSackGuySequenceId, 1, _currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextSackGuySequenceId, 1, 3);
+ _currSackGuySequenceId = _nextSackGuySequenceId;
+ _nextSackGuySequenceId = -1;
_vm->_timers[5] = _vm->getRandom(50) + 80;
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s46_nextItchyGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s46_nextItchyGuySequenceId, 1, _s46_currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s46_nextItchyGuySequenceId, 1, 4);
- _s46_currItchyGuySequenceId = _s46_nextItchyGuySequenceId;
- _s46_nextItchyGuySequenceId = -1;
+ if (gameSys.getAnimationStatus(4) == 2 && _nextItchyGuySequenceId != -1) {
+ gameSys.insertSequence(_nextItchyGuySequenceId, 1, _currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextItchyGuySequenceId, 1, 4);
+ _currItchyGuySequenceId = _nextItchyGuySequenceId;
+ _nextItchyGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(50) + 80;
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 3:
_vm->_sceneDone = true;
break;
default:
_vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_gameSys->insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
++_vm->_toyUfoId;
- _vm->_gameSys->setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
break;
}
_vm->_toyUfoActionStatus = -1;
diff --git a/engines/gnap/scenes/scene46.h b/engines/gnap/scenes/scene46.h
index c7beca2..9a57828 100644
--- a/engines/gnap/scenes/scene46.h
+++ b/engines/gnap/scenes/scene46.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s46_currSackGuySequenceId;
- int _s46_nextItchyGuySequenceId;
- int _s46_nextSackGuySequenceId;
- int _s46_currItchyGuySequenceId;
+ int _currSackGuySequenceId;
+ int _nextItchyGuySequenceId;
+ int _nextSackGuySequenceId;
+ int _currItchyGuySequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
index ec0be02..1c96139 100644
--- a/engines/gnap/scenes/scene47.cpp
+++ b/engines/gnap/scenes/scene47.cpp
@@ -30,27 +30,27 @@ namespace Gnap {
Scene471::Scene471(GnapEngine *vm) : CutScene(vm) {}
int Scene471::init() {
- _s99_sequenceIdArr[0] = 0x301;
- _s99_sequenceIdArr[1] = 0x305;
- _s99_sequenceIdArr[2] = 0x302;
- _s99_sequenceIdArr[3] = 0x304;
- _s99_sequenceIdArr[4] = 0x300;
- _s99_resourceIdArr[0] = 3;
- _s99_resourceIdArr[1] = 0;
- _s99_resourceIdArr[2] = 1;
- _s99_resourceIdArr[3] = 0;
- _s99_resourceIdArr[4] = 2;
- _s99_sequenceCountArr[0] = 1;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_sequenceCountArr[3] = 1;
- _s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_canSkip[4] = false;
- _s99_itemsCount = 5;
+ _sequenceIdArr[0] = 0x301;
+ _sequenceIdArr[1] = 0x305;
+ _sequenceIdArr[2] = 0x302;
+ _sequenceIdArr[3] = 0x304;
+ _sequenceIdArr[4] = 0x300;
+ _resourceIdArr[0] = 3;
+ _resourceIdArr[1] = 0;
+ _resourceIdArr[2] = 1;
+ _resourceIdArr[3] = 0;
+ _resourceIdArr[4] = 2;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
return -1;
}
@@ -58,24 +58,24 @@ int Scene471::init() {
Scene472::Scene472(GnapEngine *vm) : CutScene(vm) {}
int Scene472::init() {
- _s99_sequenceIdArr[0] = 0x306;
- _s99_sequenceIdArr[1] = 0x309;
- _s99_sequenceIdArr[2] = 0x307;
- _s99_sequenceIdArr[3] = 0x308;
- _s99_sequenceIdArr[4] = 0x30A;
- _s99_resourceIdArr[0] = 0x8E;
- _s99_resourceIdArr[1] = 0x90;
- _s99_resourceIdArr[2] = 0x8F;
- _s99_resourceIdArr[3] = 0x91;
- _s99_sequenceCountArr[0] = 2;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_sequenceCountArr[3] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_itemsCount = 4;
+ _sequenceIdArr[0] = 0x306;
+ _sequenceIdArr[1] = 0x309;
+ _sequenceIdArr[2] = 0x307;
+ _sequenceIdArr[3] = 0x308;
+ _sequenceIdArr[4] = 0x30A;
+ _resourceIdArr[0] = 0x8E;
+ _resourceIdArr[1] = 0x90;
+ _resourceIdArr[2] = 0x8F;
+ _resourceIdArr[3] = 0x91;
+ _sequenceCountArr[0] = 2;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _itemsCount = 4;
return -1;
}
@@ -83,15 +83,15 @@ int Scene472::init() {
Scene473::Scene473(GnapEngine *vm) : CutScene(vm) {}
int Scene473::init() {
- _s99_sequenceIdArr[0] = 0x320;
- _s99_sequenceIdArr[1] = 0x321;
- _s99_resourceIdArr[0] = 0x142;
- _s99_resourceIdArr[1] = 0x143;
- _s99_sequenceCountArr[0] = 1;
- _s99_sequenceCountArr[1] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_itemsCount = 2;
+ _sequenceIdArr[0] = 0x320;
+ _sequenceIdArr[1] = 0x321;
+ _resourceIdArr[0] = 0x142;
+ _resourceIdArr[1] = 0x143;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _itemsCount = 2;
return -1;
}
@@ -99,19 +99,19 @@ int Scene473::init() {
Scene474::Scene474(GnapEngine *vm) : CutScene(vm) {}
int Scene474::init() {
- _s99_sequenceIdArr[0] = 0x30C;
- _s99_sequenceIdArr[1] = 0x30D;
- _s99_sequenceIdArr[2] = 0x30B;
- _s99_resourceIdArr[0] = 0x142;
- _s99_resourceIdArr[1] = 0x141;
- _s99_resourceIdArr[2] = 0x177;
- _s99_sequenceCountArr[0] = 1;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_itemsCount = 3;
+ _sequenceIdArr[0] = 0x30C;
+ _sequenceIdArr[1] = 0x30D;
+ _sequenceIdArr[2] = 0x30B;
+ _resourceIdArr[0] = 0x142;
+ _resourceIdArr[1] = 0x141;
+ _resourceIdArr[2] = 0x177;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _itemsCount = 3;
return -1;
}
@@ -119,17 +119,17 @@ int Scene474::init() {
Scene475::Scene475(GnapEngine *vm) : CutScene(vm) {}
int Scene475::init() {
- _s99_sequenceIdArr[0] = 0x30E;
- _s99_sequenceIdArr[1] = 0x30F;
- _s99_sequenceIdArr[2] = 0x310;
- _s99_sequenceIdArr[3] = 0x311;
- _s99_resourceIdArr[0] = 0x206;
- _s99_resourceIdArr[1] = 0x207;
- _s99_sequenceCountArr[0] = 3;
- _s99_sequenceCountArr[1] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_itemsCount = 2;
+ _sequenceIdArr[0] = 0x30E;
+ _sequenceIdArr[1] = 0x30F;
+ _sequenceIdArr[2] = 0x310;
+ _sequenceIdArr[3] = 0x311;
+ _resourceIdArr[0] = 0x206;
+ _resourceIdArr[1] = 0x207;
+ _sequenceCountArr[0] = 3;
+ _sequenceCountArr[1] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _itemsCount = 2;
return -1;
}
@@ -137,12 +137,12 @@ int Scene475::init() {
Scene476::Scene476(GnapEngine *vm) : CutScene(vm) {}
int Scene476::init() {
- _s99_sequenceIdArr[0] = 0x31E;
- _s99_sequenceIdArr[1] = 0x31F;
- _s99_resourceIdArr[0] = 0x2FA;
- _s99_sequenceCountArr[0] = 2;
- _s99_canSkip[0] = false;
- _s99_itemsCount = 1;
+ _sequenceIdArr[0] = 0x31E;
+ _sequenceIdArr[1] = 0x31F;
+ _resourceIdArr[0] = 0x2FA;
+ _sequenceCountArr[0] = 2;
+ _canSkip[0] = false;
+ _itemsCount = 1;
return -1;
}
@@ -152,47 +152,47 @@ Scene477::Scene477(GnapEngine *vm) : CutScene(vm) {}
int Scene477::init() {
int v0, v4, v2, v3;
- _s99_sequenceIdArr[0] = 0x316;
- _s99_sequenceIdArr[1] = 0x31A;
- _s99_sequenceIdArr[2] = 0x314;
- _s99_sequenceIdArr[3] = 0x31B;
+ _sequenceIdArr[0] = 0x316;
+ _sequenceIdArr[1] = 0x31A;
+ _sequenceIdArr[2] = 0x314;
+ _sequenceIdArr[3] = 0x31B;
int v1 = 4;
if (!_vm->isFlag(kGFTwigTaken)) {
- _s99_sequenceIdArr[4] = 0x31C;
+ _sequenceIdArr[4] = 0x31C;
v1 = 5;
}
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _s99_sequenceIdArr[v1++] = 0x31D;
+ _sequenceIdArr[v1++] = 0x31D;
v4 = v1;
- _s99_sequenceIdArr[v1] = 0x319;
+ _sequenceIdArr[v1] = 0x319;
v0 = v1 + 1;
v3 = v0;
- _s99_sequenceIdArr[v0++] = 0x317;
- _s99_sequenceIdArr[v0++] = 0x312;
- _s99_sequenceIdArr[v0] = 0x31A;
+ _sequenceIdArr[v0++] = 0x317;
+ _sequenceIdArr[v0++] = 0x312;
+ _sequenceIdArr[v0] = 0x31A;
v2 = v0 + 1;
if (!_vm->isFlag(kGFTwigTaken))
- _s99_sequenceIdArr[v2++] = 0x31C;
+ _sequenceIdArr[v2++] = 0x31C;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _s99_sequenceIdArr[v2++] = 0x31D;
- _s99_sequenceIdArr[v2] = 0x313;
- _s99_sequenceIdArr[v2 + 1] = 0x315;
- _s99_resourceIdArr[0] = 0x2B8;
- _s99_resourceIdArr[1] = 0x20C;
- _s99_resourceIdArr[2] = 0x2B8;
- _s99_resourceIdArr[3] = 0x20B;
- _s99_resourceIdArr[4] = 0x20B;
- _s99_sequenceCountArr[0] = v4;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = v2 - v3;
- _s99_sequenceCountArr[3] = 1;
- _s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_canSkip[4] = false;
- _s99_itemsCount = 5;
+ _sequenceIdArr[v2++] = 0x31D;
+ _sequenceIdArr[v2] = 0x313;
+ _sequenceIdArr[v2 + 1] = 0x315;
+ _resourceIdArr[0] = 0x2B8;
+ _resourceIdArr[1] = 0x20C;
+ _resourceIdArr[2] = 0x2B8;
+ _resourceIdArr[3] = 0x20B;
+ _resourceIdArr[4] = 0x20B;
+ _sequenceCountArr[0] = v4;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = v2 - v3;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
return -1;
}
diff --git a/engines/gnap/scenes/scene48.cpp b/engines/gnap/scenes/scene48.cpp
index 46d624e..27f8d82 100644
--- a/engines/gnap/scenes/scene48.cpp
+++ b/engines/gnap/scenes/scene48.cpp
@@ -30,59 +30,59 @@ namespace Gnap {
Scene48::Scene48(GnapEngine *vm) : CutScene(vm) {}
int Scene48::init() {
- _s99_sequenceIdArr[0] = 390;
- _s99_sequenceIdArr[1] = 391;
- _s99_sequenceIdArr[2] = 392;
- _s99_sequenceIdArr[3] = 393;
- _s99_sequenceIdArr[4] = 394;
- _s99_sequenceIdArr[5] = 395;
- _s99_sequenceIdArr[6] = 396;
- _s99_sequenceIdArr[7] = 397;
- _s99_sequenceIdArr[8] = 398;
- _s99_sequenceIdArr[9] = 399;
- _s99_sequenceIdArr[10] = 400;
- _s99_sequenceIdArr[11] = 401;
- _s99_sequenceIdArr[12] = 402;
- _s99_resourceIdArr[0] = 238;
- _s99_resourceIdArr[1] = 42;
- _s99_resourceIdArr[2] = 2;
- _s99_resourceIdArr[3] = 37;
- _s99_resourceIdArr[4] = 35;
- _s99_resourceIdArr[5] = 38;
- _s99_resourceIdArr[6] = 39;
- _s99_resourceIdArr[7] = 40;
- _s99_resourceIdArr[8] = 41;
- _s99_resourceIdArr[9] = 36;
- _s99_resourceIdArr[10] = 41;
- _s99_resourceIdArr[11] = 388;
- _s99_resourceIdArr[12] = 387;
- _s99_sequenceCountArr[0] = 1;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_sequenceCountArr[3] = 1;
- _s99_sequenceCountArr[4] = 1;
- _s99_sequenceCountArr[5] = 1;
- _s99_sequenceCountArr[6] = 1;
- _s99_sequenceCountArr[7] = 1;
- _s99_sequenceCountArr[8] = 1;
- _s99_sequenceCountArr[9] = 1;
- _s99_sequenceCountArr[10] = 1;
- _s99_sequenceCountArr[11] = 1;
- _s99_sequenceCountArr[12] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_canSkip[4] = false;
- _s99_canSkip[5] = false;
- _s99_canSkip[6] = false;
- _s99_canSkip[7] = false;
- _s99_canSkip[8] = false;
- _s99_canSkip[9] = false;
- _s99_canSkip[10] = false;
- _s99_canSkip[11] = false;
- _s99_canSkip[12] = false;
- _s99_itemsCount = 13;
+ _sequenceIdArr[0] = 390;
+ _sequenceIdArr[1] = 391;
+ _sequenceIdArr[2] = 392;
+ _sequenceIdArr[3] = 393;
+ _sequenceIdArr[4] = 394;
+ _sequenceIdArr[5] = 395;
+ _sequenceIdArr[6] = 396;
+ _sequenceIdArr[7] = 397;
+ _sequenceIdArr[8] = 398;
+ _sequenceIdArr[9] = 399;
+ _sequenceIdArr[10] = 400;
+ _sequenceIdArr[11] = 401;
+ _sequenceIdArr[12] = 402;
+ _resourceIdArr[0] = 238;
+ _resourceIdArr[1] = 42;
+ _resourceIdArr[2] = 2;
+ _resourceIdArr[3] = 37;
+ _resourceIdArr[4] = 35;
+ _resourceIdArr[5] = 38;
+ _resourceIdArr[6] = 39;
+ _resourceIdArr[7] = 40;
+ _resourceIdArr[8] = 41;
+ _resourceIdArr[9] = 36;
+ _resourceIdArr[10] = 41;
+ _resourceIdArr[11] = 388;
+ _resourceIdArr[12] = 387;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 1;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _canSkip[5] = false;
+ _canSkip[6] = false;
+ _canSkip[7] = false;
+ _canSkip[8] = false;
+ _canSkip[9] = false;
+ _canSkip[10] = false;
+ _canSkip[11] = false;
+ _canSkip[12] = false;
+ _itemsCount = 13;
return -1;
}
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
index 9f637b2..3753d98 100644
--- a/engines/gnap/scenes/scene49.cpp
+++ b/engines/gnap/scenes/scene49.cpp
@@ -41,31 +41,33 @@ static const ObstacleDef kObstacleDefs[] = {
};
Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
- _s49_scoreBarFlash = false;
- _s49_scoreBarPos = -1;
- _s49_scoreLevel = -1;
- _s49_obstacleIndex = -1;
- _s49_truckSequenceId = -1;
- _s49_truckId = -1;
- _s49_truckLaneNum = -1;
+ _scoreBarFlash = false;
+ _scoreBarPos = -1;
+ _scoreLevel = -1;
+ _obstacleIndex = -1;
+ _truckSequenceId = -1;
+ _truckId = -1;
+ _truckLaneNum = -1;
for (int i = 0; i < 5; i++) {
- _s49_obstacles[i]._currSequenceId = -1;
- _s49_obstacles[i]._closerSequenceId = -1;
- _s49_obstacles[i]._passedSequenceId = -1;
- _s49_obstacles[i]._splashSequenceId = -1;
- _s49_obstacles[i]._collisionSequenceId = -1;
- _s49_obstacles[i]._prevId = -1;
- _s49_obstacles[i]._currId = -1;
- _s49_obstacles[i]._laneNum = -1;
+ _obstacles[i]._currSequenceId = -1;
+ _obstacles[i]._closerSequenceId = -1;
+ _obstacles[i]._passedSequenceId = -1;
+ _obstacles[i]._splashSequenceId = -1;
+ _obstacles[i]._collisionSequenceId = -1;
+ _obstacles[i]._prevId = -1;
+ _obstacles[i]._currId = -1;
+ _obstacles[i]._laneNum = -1;
}
}
int Scene49::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
for (int i = 0; i < 5; ++i)
- _vm->_gameSys->setAnimation(0, 0, i + 2);
+ gameSys.setAnimation(0, 0, i + 2);
_vm->_timers[2] = 0;
_vm->_timers[0] = 0;
_vm->_timers[1] = 0;
@@ -87,68 +89,68 @@ void Scene49::checkObstacles() {
}
for (int j = 0; j < 5; ++j) {
- if (_s49_obstacles[j]._currSequenceId == 0) {
+ if (_obstacles[j]._currSequenceId == 0) {
_vm->_timers[3] = 35;
- _s49_obstacles[j]._currSequenceId = kObstacleDefs[_s49_obstacleIndex]._sequenceId;
- switch (_s49_obstacles[j]._currSequenceId) {
+ _obstacles[j]._currSequenceId = kObstacleDefs[_obstacleIndex]._sequenceId;
+ switch (_obstacles[j]._currSequenceId) {
case 0xB4:
- _s49_obstacles[j]._laneNum = 1;
- _s49_obstacles[j]._closerSequenceId = 180;
- _s49_obstacles[j]._passedSequenceId = 181;
- _s49_obstacles[j]._splashSequenceId = 182;
- _s49_obstacles[j]._collisionSequenceId = 192;
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 180;
+ _obstacles[j]._passedSequenceId = 181;
+ _obstacles[j]._splashSequenceId = 182;
+ _obstacles[j]._collisionSequenceId = 192;
break;
case 0xB7:
- _s49_obstacles[j]._laneNum = 2;
- _s49_obstacles[j]._closerSequenceId = 183;
- _s49_obstacles[j]._passedSequenceId = 184;
- _s49_obstacles[j]._splashSequenceId = 185;
- _s49_obstacles[j]._collisionSequenceId = 193;
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 183;
+ _obstacles[j]._passedSequenceId = 184;
+ _obstacles[j]._splashSequenceId = 185;
+ _obstacles[j]._collisionSequenceId = 193;
break;
case 0xBD:
- _s49_obstacles[j]._laneNum = 3;
- _s49_obstacles[j]._closerSequenceId = 189;
- _s49_obstacles[j]._passedSequenceId = 190;
- _s49_obstacles[j]._splashSequenceId = 191;
- _s49_obstacles[j]._collisionSequenceId = 195;
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 189;
+ _obstacles[j]._passedSequenceId = 190;
+ _obstacles[j]._splashSequenceId = 191;
+ _obstacles[j]._collisionSequenceId = 195;
break;
case 0xBA:
- _s49_obstacles[j]._laneNum = 2;
- _s49_obstacles[j]._closerSequenceId = 186;
- _s49_obstacles[j]._passedSequenceId = 187;
- _s49_obstacles[j]._splashSequenceId = 188;
- _s49_obstacles[j]._collisionSequenceId = 194;
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 186;
+ _obstacles[j]._passedSequenceId = 187;
+ _obstacles[j]._splashSequenceId = 188;
+ _obstacles[j]._collisionSequenceId = 194;
break;
case 0xCB:
- _s49_obstacles[j]._laneNum = 1;
- _s49_obstacles[j]._closerSequenceId = 203;
- _s49_obstacles[j]._passedSequenceId = 204;
- _s49_obstacles[j]._splashSequenceId = 0;
- _s49_obstacles[j]._collisionSequenceId = 209;
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 203;
+ _obstacles[j]._passedSequenceId = 204;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 209;
break;
case 0xCD:
- _s49_obstacles[j]._laneNum = 2;
- _s49_obstacles[j]._closerSequenceId = 205;
- _s49_obstacles[j]._passedSequenceId = 206;
- _s49_obstacles[j]._splashSequenceId = 0;
- _s49_obstacles[j]._collisionSequenceId = 210;
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 205;
+ _obstacles[j]._passedSequenceId = 206;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 210;
break;
case 0xCF:
- _s49_obstacles[j]._laneNum = 3;
- _s49_obstacles[j]._closerSequenceId = 207;
- _s49_obstacles[j]._passedSequenceId = 208;
- _s49_obstacles[j]._splashSequenceId = 0;
- _s49_obstacles[j]._collisionSequenceId = 211;
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 207;
+ _obstacles[j]._passedSequenceId = 208;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 211;
break;
}
- _s49_obstacles[j]._prevId = _s49_truckId;
- _s49_obstacles[j]._currId = _s49_obstacles[j]._prevId;
- _vm->_gameSys->setAnimation(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, j + 2);
- _vm->_gameSys->insertSequence(_s49_obstacles[j]._currSequenceId, _s49_obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
- _vm->_timers[2] = kObstacleDefs[_s49_obstacleIndex]._ticks;
- ++_s49_obstacleIndex;
- if (_s49_obstacleIndex == 50)
- _s49_obstacleIndex = 0;
+ _obstacles[j]._prevId = _truckId;
+ _obstacles[j]._currId = _obstacles[j]._prevId;
+ _vm->_gameSys->setAnimation(_obstacles[j]._currSequenceId, _obstacles[j]._currId, j + 2);
+ _vm->_gameSys->insertSequence(_obstacles[j]._currSequenceId, _obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_timers[2] = kObstacleDefs[_obstacleIndex]._ticks;
+ ++_obstacleIndex;
+ if (_obstacleIndex == 50)
+ _obstacleIndex = 0;
break;
}
}
@@ -158,72 +160,74 @@ void Scene49::checkObstacles() {
}
void Scene49::updateObstacle(int id) {
- Scene49Obstacle &obstacle = _s49_obstacles[id];
+ GameSys gameSys = *_vm->_gameSys;
+ Scene49Obstacle &obstacle = _obstacles[id];
+
obstacle._currId = obstacle._prevId;
switch (obstacle._laneNum) {
case 1:
- obstacle._prevId = _s49_truckId + 1;
+ obstacle._prevId = _truckId + 1;
break;
case 2:
- if (_s49_truckLaneNum != 2 && _s49_truckLaneNum != 3)
- obstacle._prevId = _s49_truckId - 1;
+ if (_truckLaneNum != 2 && _truckLaneNum != 3)
+ obstacle._prevId = _truckId - 1;
else
- obstacle._prevId = _s49_truckId + 1;
+ obstacle._prevId = _truckId + 1;
break;
case 3:
- if (_s49_truckLaneNum != 1 && _s49_truckLaneNum != 2)
- obstacle._prevId = _s49_truckId;
+ if (_truckLaneNum != 1 && _truckLaneNum != 2)
+ obstacle._prevId = _truckId;
else
- obstacle._prevId = _s49_truckId - 1;
+ obstacle._prevId = _truckId - 1;
break;
}
if (obstacle._currSequenceId == obstacle._closerSequenceId) {
- if (_s49_truckLaneNum == obstacle._laneNum) {
+ if (_truckLaneNum == obstacle._laneNum) {
if (obstacle._splashSequenceId) {
- _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
_vm->playSound(224, false);
increaseScore(30);
- } else if ((obstacle._laneNum == 1 && _s49_truckSequenceId == 0xB0) ||
- (obstacle._laneNum == 2 && (_s49_truckSequenceId == 0xB1 || _s49_truckSequenceId == 0xB2)) ||
- (obstacle._laneNum == 3 && _s49_truckSequenceId == 0xB3)) {
- _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ } else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
+ (obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
+ (obstacle._laneNum == 3 && _truckSequenceId == 0xB3)) {
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._passedSequenceId;
} else {
- _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, 256, 0);
- _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ gameSys.setAnimation(obstacle._collisionSequenceId, 256, 0);
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
- _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, 256,
- _s49_truckSequenceId, _s49_truckId,
+ gameSys.insertSequence(obstacle._collisionSequenceId, 256,
+ _truckSequenceId, _truckId,
kSeqSyncExists, 0, 0, -50);
- _s49_truckSequenceId = obstacle._collisionSequenceId;
- _s49_truckId = 256;
+ _truckSequenceId = obstacle._collisionSequenceId;
+ _truckId = 256;
obstacle._currSequenceId = obstacle._passedSequenceId;
_vm->playSound(225, false);
decreaseScore(30);
}
} else {
- _vm->_gameSys->setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._passedSequenceId;
}
} else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
- if (_s49_truckLaneNum == obstacle._laneNum) {
+ if (_truckLaneNum == obstacle._laneNum) {
if (obstacle._splashSequenceId) {
- _vm->_gameSys->setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
@@ -231,56 +235,58 @@ void Scene49::updateObstacle(int id) {
increaseScore(30);
}
} else if (obstacle._splashSequenceId) {
- _vm->_gameSys->setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
- _vm->_gameSys->insertSequence(obstacle._splashSequenceId, obstacle._prevId,
+ gameSys.setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._splashSequenceId, obstacle._prevId,
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._splashSequenceId;
}
} else {
- _vm->_gameSys->setAnimation(0, 0, id + 2);
+ gameSys.setAnimation(0, 0, id + 2);
clearObstacle(id);
}
}
void Scene49::increaseScore(int amount) {
- if (_s49_scoreBarPos + amount <= 556) {
- _s49_scoreBarPos += amount;
- _vm->_gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 255, 0, 0);
+ if (_scoreBarPos + amount <= 556) {
+ _scoreBarPos += amount;
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
}
- _s49_scoreLevel = _s49_scoreBarPos + amount >= 556;
+ _scoreLevel = _scoreBarPos + amount >= 556;
}
void Scene49::decreaseScore(int amount) {
- if (_s49_scoreBarPos >= 226 && _s49_scoreLevel == 0) {
- if (_s49_scoreBarFlash)
+ if (_scoreBarPos >= 226 && _scoreLevel == 0) {
+ if (_scoreBarFlash)
refreshScoreBar();
- _vm->_gameSys->fillSurface(0, _s49_scoreBarPos, 508, amount, 22, 89, 0, 5);
- _s49_scoreBarPos -= amount;
- _s49_scoreLevel = 0;
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
+ _scoreBarPos -= amount;
+ _scoreLevel = 0;
}
}
void Scene49::refreshScoreBar() {
- if (_s49_scoreBarFlash)
+ if (_scoreBarFlash)
_vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
else
_vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
- _s49_scoreBarFlash = !_s49_scoreBarFlash;
+ _scoreBarFlash = !_scoreBarFlash;
}
void Scene49::clearObstacle(int index) {
- _s49_obstacles[index]._currSequenceId = 0;
- _s49_obstacles[index]._closerSequenceId = 0;
- _s49_obstacles[index]._passedSequenceId = 0;
- _s49_obstacles[index]._splashSequenceId = 0;
- _s49_obstacles[index]._collisionSequenceId = 0;
- _s49_obstacles[index]._prevId = 0;
- _s49_obstacles[index]._currId = 0;
- _s49_obstacles[index]._laneNum = 0;
+ _obstacles[index]._currSequenceId = 0;
+ _obstacles[index]._closerSequenceId = 0;
+ _obstacles[index]._passedSequenceId = 0;
+ _obstacles[index]._splashSequenceId = 0;
+ _obstacles[index]._collisionSequenceId = 0;
+ _obstacles[index]._prevId = 0;
+ _obstacles[index]._currId = 0;
+ _obstacles[index]._laneNum = 0;
}
void Scene49::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
bool animToggle6 = false;
bool animToggle5 = false;
bool animToggle4 = false;
@@ -294,64 +300,64 @@ void Scene49::run() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
- _s49_scoreBarPos = 196;
- _s49_scoreLevel = 0;
- _s49_scoreBarFlash = false;
+ _scoreBarPos = 196;
+ _scoreLevel = 0;
+ _scoreBarFlash = false;
switch (_vm->getRandom(3)) {
case 0:
- _s49_truckSequenceId = 0xAD;
- _s49_truckLaneNum = 1;
+ _truckSequenceId = 0xAD;
+ _truckLaneNum = 1;
break;
case 1:
- _s49_truckSequenceId = 0xAE;
- _s49_truckLaneNum = 2;
+ _truckSequenceId = 0xAE;
+ _truckLaneNum = 2;
break;
case 2:
- _s49_truckSequenceId = 0xAF;
- _s49_truckLaneNum = 3;
+ _truckSequenceId = 0xAF;
+ _truckLaneNum = 3;
break;
}
- int bgWidth1 = _vm->_gameSys->getSpriteWidthById(0x5E);
+ int bgWidth1 = gameSys.getSpriteWidthById(0x5E);
int bgX1 = 600;
- int bgWidth2 = _vm->_gameSys->getSpriteWidthById(0x5F);
+ int bgWidth2 = gameSys.getSpriteWidthById(0x5F);
int bgX2 = 400;
- int bgWidth3 = _vm->_gameSys->getSpriteWidthById(4);
+ int bgWidth3 = gameSys.getSpriteWidthById(4);
int bgX3 = 700;
- int bgWidth4 = _vm->_gameSys->getSpriteWidthById(5);
+ int bgWidth4 = gameSys.getSpriteWidthById(5);
int bgX4 = 500;
- int bgWidth5 = _vm->_gameSys->getSpriteWidthById(6);
+ int bgWidth5 = gameSys.getSpriteWidthById(6);
int bgX5 = 300;
- int bgWidth6 = _vm->_gameSys->getSpriteWidthById(7);
+ int bgWidth6 = gameSys.getSpriteWidthById(7);
int bgX6 = 100;
- _vm->_gameSys->setAnimation(0xC8, 251, 1);
- _vm->_gameSys->setAnimation(_s49_truckSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
- _vm->_gameSys->insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
- _vm->_gameSys->insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
- _vm->_gameSys->insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
- _vm->_gameSys->insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
- _vm->_gameSys->insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
- _vm->_gameSys->insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
- _vm->_gameSys->insertSequence(_s49_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
+ gameSys.setAnimation(0xC8, 251, 1);
+ gameSys.setAnimation(_truckSequenceId, 256, 0);
+ gameSys.insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
+ gameSys.insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
+ gameSys.insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
+ gameSys.insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
+ gameSys.insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
+ gameSys.insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
+ gameSys.insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
+ gameSys.insertSequence(_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
_vm->_timers[0] = 2;
for (int i = 0; i < 5; ++i)
clearObstacle(i);
- _s49_obstacleIndex = 0;
+ _obstacleIndex = 0;
_vm->_timers[2] = _vm->getRandom(20) + 10;
- _s49_truckId = 256;
+ _truckId = 256;
_vm->_timers[3] = 35;
while (!_vm->_sceneDone) {
@@ -376,72 +382,72 @@ void Scene49::run() {
if (bgX6 <= -bgWidth6)
bgX6 = 799;
bgAnimToggle = !bgAnimToggle;
- _vm->_gameSys->insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
- _vm->_gameSys->insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
- _vm->_gameSys->insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
- _vm->_gameSys->insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
- _vm->_gameSys->insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
- _vm->_gameSys->insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
+ gameSys.insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
+ gameSys.insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
+ gameSys.insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
+ gameSys.insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
+ gameSys.insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
+ gameSys.insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
_vm->_timers[0] = 2;
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (gameSys.getAnimationStatus(1) == 2) {
streetAnimToggle = !streetAnimToggle;
- _vm->_gameSys->setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
- _vm->_gameSys->insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
+ gameSys.setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
+ gameSys.insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
}
checkObstacles();
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- switch (_s49_truckSequenceId) {
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_truckSequenceId) {
case 0xB1:
- _s49_truckLaneNum = 1;
+ _truckLaneNum = 1;
break;
case 0xB0:
case 0xB3:
- _s49_truckLaneNum = 2;
+ _truckLaneNum = 2;
break;
case 0xB2:
- _s49_truckLaneNum = 3;
+ _truckLaneNum = 3;
break;
}
animToggle3 = !animToggle3;
- if (_s49_truckLaneNum == 1) {
- _vm->_gameSys->setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
- _vm->_gameSys->insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
- _s49_truckSequenceId = 0xAD;
- } else if (_s49_truckLaneNum == 2) {
- _vm->_gameSys->setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
- _vm->_gameSys->insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
- _s49_truckSequenceId = 0xAE;
+ if (_truckLaneNum == 1) {
+ gameSys.setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAD;
+ } else if (_truckLaneNum == 2) {
+ gameSys.setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAE;
} else {
- _vm->_gameSys->setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
- _vm->_gameSys->insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncWait, 0, 0, -50);
- _s49_truckSequenceId = 0xAF;
+ gameSys.setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAF;
}
- _s49_truckId = (animToggle3 ? 1 : 0) + 256;
- if (_s49_scoreLevel == 1) {
- if (!_vm->_gameSys->isSequenceActive(0xD4, 266)) {
- _vm->_gameSys->setAnimation(0xD4, 266, 8);
- _vm->_gameSys->insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
+ _truckId = (animToggle3 ? 1 : 0) + 256;
+ if (_scoreLevel == 1) {
+ if (!gameSys.isSequenceActive(0xD4, 266)) {
+ gameSys.setAnimation(0xD4, 266, 8);
+ gameSys.insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
}
- ++_s49_scoreLevel;
+ ++_scoreLevel;
_vm->_timers[1] = 2;
animToggle4 = false;
animToggle5 = false;
animToggle6 = false;
- _s49_scoreBarFlash = false;
+ _scoreBarFlash = false;
}
}
- if (_s49_scoreLevel != 0 && !_vm->_timers[1]) {
+ if (_scoreLevel != 0 && !_vm->_timers[1]) {
refreshScoreBar();
_vm->_timers[1] = 8;
if (animToggle6) {
if (animToggle5) {
- if (animToggle4 && !_vm->_gameSys->isSequenceActive(212, 266))
- _vm->_gameSys->insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
+ if (animToggle4 && !gameSys.isSequenceActive(212, 266))
+ gameSys.insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
animToggle4 = !animToggle4;
}
animToggle5 = !animToggle5;
@@ -459,22 +465,22 @@ void Scene49::run() {
if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
// Steer right
- if (_s49_truckSequenceId == 0xB3)
- _s49_truckLaneNum = 2;
- if (_s49_truckSequenceId == 0xB1)
- _s49_truckLaneNum = 1;
- if (_s49_truckLaneNum != 3 && _s49_truckLaneNum != 2) {
- if (_s49_scoreLevel) {
+ if (_truckSequenceId == 0xB3)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB1)
+ _truckLaneNum = 1;
+ if (_truckLaneNum != 3 && _truckLaneNum != 2) {
+ if (_scoreLevel) {
_vm->_sceneDone = true;
_vm->_newSceneNum = 47;
}
} else {
- int steerSequenceId = (_s49_truckLaneNum == 3) ? 0xB3 : 0xB1;
- if (_s49_truckSequenceId == 0xAE || _s49_truckSequenceId == 0xAF) {
- _vm->_gameSys->setAnimation(steerSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
- _s49_truckSequenceId = steerSequenceId;
- _s49_truckId = 256;
+ int steerSequenceId = (_truckLaneNum == 3) ? 0xB3 : 0xB1;
+ if (_truckSequenceId == 0xAE || _truckSequenceId == 0xAF) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
}
}
_vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
@@ -482,17 +488,17 @@ void Scene49::run() {
if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
// Steer left
- if (_s49_truckSequenceId == 0xB0)
- _s49_truckLaneNum = 2;
- if (_s49_truckSequenceId == 0xB2)
- _s49_truckLaneNum = 3;
- if (_s49_truckLaneNum == 1 || _s49_truckLaneNum == 2) {
- int steerSequenceId = (_s49_truckLaneNum == 1) ? 0xB0 : 0xB2;
- if (_s49_truckSequenceId == 0xAD || _s49_truckSequenceId == 0xAE) {
- _vm->_gameSys->setAnimation(steerSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(steerSequenceId, 256, _s49_truckSequenceId, _s49_truckId, kSeqSyncExists, 0, 0, -50);
- _s49_truckSequenceId = steerSequenceId;
- _s49_truckId = 256;
+ if (_truckSequenceId == 0xB0)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB2)
+ _truckLaneNum = 3;
+ if (_truckLaneNum == 1 || _truckLaneNum == 2) {
+ int steerSequenceId = (_truckLaneNum == 1) ? 0xB0 : 0xB2;
+ if (_truckSequenceId == 0xAD || _truckSequenceId == 0xAE) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
}
}
_vm->clearKeyStatus1(Common::KEYCODE_LEFT);
@@ -503,14 +509,16 @@ void Scene49::run() {
}
void Scene49::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
for (int i = 0; i < 5; ++i) {
- if (_vm->_gameSys->getAnimationStatus(i + 2) == 2) {
- if (_s49_obstacles[i]._currSequenceId)
+ if (gameSys.getAnimationStatus(i + 2) == 2) {
+ if (_obstacles[i]._currSequenceId)
updateObstacle(i);
}
}
- if (_vm->_gameSys->getAnimationStatus(8) == 2) {
+ if (gameSys.getAnimationStatus(8) == 2) {
_vm->_sceneDone = true;
_vm->_newSceneNum = 47;
}
diff --git a/engines/gnap/scenes/scene49.h b/engines/gnap/scenes/scene49.h
index f44b2ed..d69d977 100644
--- a/engines/gnap/scenes/scene49.h
+++ b/engines/gnap/scenes/scene49.h
@@ -58,14 +58,14 @@ public:
virtual void updateAnimationsCb() {};
private:
- int _s49_scoreBarPos;
- int _s49_scoreLevel;
- bool _s49_scoreBarFlash;
- int _s49_obstacleIndex;
- Scene49Obstacle _s49_obstacles[5];
- int _s49_truckSequenceId;
- int _s49_truckId;
- int _s49_truckLaneNum;
+ int _scoreBarPos;
+ int _scoreLevel;
+ bool _scoreBarFlash;
+ int _obstacleIndex;
+ Scene49Obstacle _obstacles[5];
+ int _truckSequenceId;
+ int _truckId;
+ int _truckLaneNum;
void checkObstacles();
void updateObstacle(int id);
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
index 935a166..222c6e8 100644
--- a/engines/gnap/scenes/scene54.cpp
+++ b/engines/gnap/scenes/scene54.cpp
@@ -30,31 +30,31 @@ namespace Gnap {
Scene541::Scene541(GnapEngine *vm) : CutScene(vm) {}
int Scene541::init() {
- _s99_sequenceIdArr[0] = 0x1BE;
- _s99_sequenceIdArr[1] = 0x1BF;
- _s99_sequenceIdArr[2] = 0x1BA;
- _s99_sequenceIdArr[3] = 0x1BB;
- _s99_sequenceIdArr[4] = 0x1BD;
- _s99_sequenceIdArr[5] = 0x1BC;
- _s99_resourceIdArr[0] = 0x3C;
- _s99_resourceIdArr[1] = 0x43;
- _s99_resourceIdArr[2] = 0x44;
+ _sequenceIdArr[0] = 0x1BE;
+ _sequenceIdArr[1] = 0x1BF;
+ _sequenceIdArr[2] = 0x1BA;
+ _sequenceIdArr[3] = 0x1BB;
+ _sequenceIdArr[4] = 0x1BD;
+ _sequenceIdArr[5] = 0x1BC;
+ _resourceIdArr[0] = 0x3C;
+ _resourceIdArr[1] = 0x43;
+ _resourceIdArr[2] = 0x44;
if (_vm->isFlag(kGFPictureTaken))
- _s99_resourceIdArr[3] = 0x47;
+ _resourceIdArr[3] = 0x47;
else
- _s99_resourceIdArr[3] = 0x46;
- _s99_resourceIdArr[4] = 0x45;
- _s99_sequenceCountArr[0] = 1;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 1;
- _s99_sequenceCountArr[3] = 2;
- _s99_sequenceCountArr[4] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_canSkip[4] = false;
- _s99_itemsCount = 5;
+ _resourceIdArr[3] = 0x46;
+ _resourceIdArr[4] = 0x45;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 2;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
return -1;
}
@@ -62,73 +62,73 @@ int Scene541::init() {
Scene542::Scene542(GnapEngine *vm) : CutScene(vm) {}
int Scene542::init() {
- _s99_sequenceIdArr[0] = 0x1C9;
- _s99_sequenceIdArr[1] = 0x1C7;
- _s99_sequenceIdArr[2] = 0x1CC;
- _s99_sequenceIdArr[3] = 0x1C8;
- _s99_sequenceIdArr[4] = 0x1CB;
- _s99_sequenceIdArr[5] = 0x1C0;
- _s99_sequenceIdArr[6] = 0x1CA;
- _s99_sequenceIdArr[7] = 0x1CE;
- _s99_sequenceIdArr[8] = 0x1CD;
- _s99_sequenceIdArr[9] = 0x1C1;
- _s99_sequenceIdArr[10] = 0x1C2;
- _s99_sequenceIdArr[11] = 0x1C3;
- _s99_sequenceIdArr[12] = 0x1C4;
- _s99_sequenceIdArr[13] = 0x1C6;
- _s99_sequenceIdArr[14] = 0x1C5;
- _s99_sequenceIdArr[15] = 0x1D0;
- _s99_sequenceIdArr[16] = 0x1D0;
- _s99_sequenceIdArr[17] = 0x1D0;
- _s99_resourceIdArr[0] = 0xD5;
- _s99_resourceIdArr[1] = 0x14C;
- _s99_resourceIdArr[2] = 0xD5;
- _s99_resourceIdArr[3] = 0xBF;
- _s99_resourceIdArr[4] = 0xD6;
- _s99_resourceIdArr[5] = 0x154;
- _s99_resourceIdArr[6] = 0x155;
- _s99_resourceIdArr[7] = 0xB9;
- _s99_resourceIdArr[8] = 0xBA;
- _s99_resourceIdArr[9] = 0x17B;
- _s99_resourceIdArr[10] = 0x17A;
- _s99_resourceIdArr[11] = 0x17C;
- _s99_resourceIdArr[12] = 0x17A;
- _s99_resourceIdArr[13] = 0x1B7;
- _s99_resourceIdArr[14] = 0x1B8;
- _s99_resourceIdArr[15] = 0x1B9;
- _s99_sequenceCountArr[0] = 2;
- _s99_sequenceCountArr[1] = 1;
- _s99_sequenceCountArr[2] = 2;
- _s99_sequenceCountArr[3] = 1;
- _s99_sequenceCountArr[4] = 1;
- _s99_sequenceCountArr[5] = 1;
- _s99_sequenceCountArr[6] = 1;
- _s99_sequenceCountArr[7] = 1;
- _s99_sequenceCountArr[8] = 1;
- _s99_sequenceCountArr[9] = 1;
- _s99_sequenceCountArr[10] = 1;
- _s99_sequenceCountArr[11] = 1;
- _s99_sequenceCountArr[12] = 1;
- _s99_sequenceCountArr[13] = 1;
- _s99_sequenceCountArr[14] = 1;
- _s99_sequenceCountArr[15] = 1;
- _s99_canSkip[0] = false;
- _s99_canSkip[1] = false;
- _s99_canSkip[2] = false;
- _s99_canSkip[3] = false;
- _s99_canSkip[4] = false;
- _s99_canSkip[5] = false;
- _s99_canSkip[6] = false;
- _s99_canSkip[7] = false;
- _s99_canSkip[8] = false;
- _s99_canSkip[9] = false;
- _s99_canSkip[10] = false;
- _s99_canSkip[11] = false;
- _s99_canSkip[12] = false;
- _s99_canSkip[13] = true;
- _s99_canSkip[14] = true;
- _s99_canSkip[15] = false;
- _s99_itemsCount = 16;
+ _sequenceIdArr[0] = 0x1C9;
+ _sequenceIdArr[1] = 0x1C7;
+ _sequenceIdArr[2] = 0x1CC;
+ _sequenceIdArr[3] = 0x1C8;
+ _sequenceIdArr[4] = 0x1CB;
+ _sequenceIdArr[5] = 0x1C0;
+ _sequenceIdArr[6] = 0x1CA;
+ _sequenceIdArr[7] = 0x1CE;
+ _sequenceIdArr[8] = 0x1CD;
+ _sequenceIdArr[9] = 0x1C1;
+ _sequenceIdArr[10] = 0x1C2;
+ _sequenceIdArr[11] = 0x1C3;
+ _sequenceIdArr[12] = 0x1C4;
+ _sequenceIdArr[13] = 0x1C6;
+ _sequenceIdArr[14] = 0x1C5;
+ _sequenceIdArr[15] = 0x1D0;
+ _sequenceIdArr[16] = 0x1D0;
+ _sequenceIdArr[17] = 0x1D0;
+ _resourceIdArr[0] = 0xD5;
+ _resourceIdArr[1] = 0x14C;
+ _resourceIdArr[2] = 0xD5;
+ _resourceIdArr[3] = 0xBF;
+ _resourceIdArr[4] = 0xD6;
+ _resourceIdArr[5] = 0x154;
+ _resourceIdArr[6] = 0x155;
+ _resourceIdArr[7] = 0xB9;
+ _resourceIdArr[8] = 0xBA;
+ _resourceIdArr[9] = 0x17B;
+ _resourceIdArr[10] = 0x17A;
+ _resourceIdArr[11] = 0x17C;
+ _resourceIdArr[12] = 0x17A;
+ _resourceIdArr[13] = 0x1B7;
+ _resourceIdArr[14] = 0x1B8;
+ _resourceIdArr[15] = 0x1B9;
+ _sequenceCountArr[0] = 2;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 2;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 1;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _sequenceCountArr[13] = 1;
+ _sequenceCountArr[14] = 1;
+ _sequenceCountArr[15] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _canSkip[5] = false;
+ _canSkip[6] = false;
+ _canSkip[7] = false;
+ _canSkip[8] = false;
+ _canSkip[9] = false;
+ _canSkip[10] = false;
+ _canSkip[11] = false;
+ _canSkip[12] = false;
+ _canSkip[13] = true;
+ _canSkip[14] = true;
+ _canSkip[15] = false;
+ _itemsCount = 16;
return -1;
}
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c549a7a..8c16bb5 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -699,7 +699,7 @@ void CutScene::run() {
if (_vm->_prevSceneNum == 2) {
soundId = 0x36B;
- duration = MAX(1, 300 / _vm->getSequenceTotalDuration(_s99_sequenceIdArr[_s99_itemsCount - 1]));//CHECKME
+ duration = MAX(1, 300 / _vm->getSequenceTotalDuration(_sequenceIdArr[_itemsCount - 1]));//CHECKME
_vm->_timers[0] = 0;
}
@@ -708,11 +708,11 @@ void CutScene::run() {
_vm->hideCursor();
- _vm->_gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[0]);
+ _vm->_gameSys->drawSpriteToBackground(0, 0, _resourceIdArr[0]);
- for (int j = 0; j < _s99_sequenceCountArr[0]; ++j)
- _vm->_gameSys->insertSequence(_s99_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s99_sequenceIdArr[0], 2, 0);
+ for (int j = 0; j < _sequenceCountArr[0]; ++j)
+ _vm->_gameSys->insertSequence(_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_sequenceIdArr[0], 2, 0);
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -729,14 +729,14 @@ void CutScene::run() {
_vm->_gameSys->requestClear2(false);
_vm->_gameSys->requestClear1();
_vm->_gameSys->setAnimation(0, 0, 0);
- firstSequenceIndex += _s99_sequenceCountArr[itemIndex++];
- if (itemIndex >= _s99_itemsCount) {
+ firstSequenceIndex += _sequenceCountArr[itemIndex++];
+ if (itemIndex >= _itemsCount) {
_vm->_sceneDone = true;
} else {
- for (int m = 0; m < _s99_sequenceCountArr[itemIndex]; ++m)
- _vm->_gameSys->insertSequence(_s99_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->drawSpriteToBackground(0, 0, _s99_resourceIdArr[itemIndex]);
- _vm->_gameSys->setAnimation(_s99_sequenceIdArr[firstSequenceIndex], 2, 0);
+ for (int m = 0; m < _sequenceCountArr[itemIndex]; ++m)
+ _vm->_gameSys->insertSequence(_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->drawSpriteToBackground(0, 0, _resourceIdArr[itemIndex]);
+ _vm->_gameSys->setAnimation(_sequenceIdArr[firstSequenceIndex], 2, 0);
}
}
@@ -744,13 +744,13 @@ void CutScene::run() {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
_vm->clearKeyStatus1(29);
- if (_s99_canSkip[itemIndex])
+ if (_canSkip[itemIndex])
skip = true;
else
_vm->_sceneDone = true;
}
- if (!_vm->_timers[0] && itemIndex == _s99_itemsCount - 1) {
+ if (!_vm->_timers[0] && itemIndex == _itemsCount - 1) {
_vm->_timers[0] = 2;
volume = MAX(1, volume - duration);
_vm->setSoundVolume(soundId, volume);
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index 73723fd..209f07a 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -59,11 +59,11 @@ public:
void updateAnimationsCb() {}
protected:
- int _s99_itemsCount;
- int _s99_resourceIdArr[16];
- int _s99_sequenceCountArr[16];
- int _s99_sequenceIdArr[50];
- bool _s99_canSkip[16];
+ int _itemsCount;
+ int _resourceIdArr[16];
+ int _sequenceCountArr[16];
+ int _sequenceIdArr[50];
+ bool _canSkip[16];
};
} // End of namespace Gnap
Commit: 71ba82154e491e167029571d32a18291f7da830a
https://github.com/scummvm/scummvm/commit/71ba82154e491e167029571d32a18291f7da830a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Group cutscenes in a single scene group file
Changed paths:
A engines/gnap/scenes/groupcs.cpp
A engines/gnap/scenes/groupcs.h
R engines/gnap/scenes/scene16.cpp
R engines/gnap/scenes/scene16.h
R engines/gnap/scenes/scene47.cpp
R engines/gnap/scenes/scene47.h
R engines/gnap/scenes/scene48.cpp
R engines/gnap/scenes/scene48.h
R engines/gnap/scenes/scene54.cpp
R engines/gnap/scenes/scene54.h
engines/gnap/module.mk
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index a2e5c77..bb565eb 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -10,6 +10,7 @@ MODULE_OBJS := \
menu.o \
resource.o \
sound.o \
+ scenes/groupcs.o \
scenes/scene00.o \
scenes/scene01.o \
scenes/scene02.o \
@@ -26,7 +27,6 @@ MODULE_OBJS := \
scenes/scene13.o \
scenes/scene14.o \
scenes/scene15.o \
- scenes/scene16.o \
scenes/scene17.o \
scenes/scene18.o \
scenes/scene19.o \
@@ -53,14 +53,11 @@ MODULE_OBJS := \
scenes/scene44.o \
scenes/scene45.o \
scenes/scene46.o \
- scenes/scene47.o \
- scenes/scene48.o \
scenes/scene49.o \
scenes/scene50.o \
scenes/scene51.o \
scenes/scene52.o \
scenes/scene53.o \
- scenes/scene54.o \
scenes/scenecore.o
# This module can be built as a plugin
diff --git a/engines/gnap/scenes/groupcs.cpp b/engines/gnap/scenes/groupcs.cpp
new file mode 100644
index 0000000..92491a3
--- /dev/null
+++ b/engines/gnap/scenes/groupcs.cpp
@@ -0,0 +1,430 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/groupcs.h"
+
+
+namespace Gnap {
+
+Scene16::Scene16(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene16::init() {
+ _sequenceIdArr[0] = 0x1F2;
+ _sequenceIdArr[1] = 0x201;
+ _sequenceIdArr[2] = 0x1FC;
+ _sequenceIdArr[3] = 0x1F4;
+ _sequenceIdArr[4] = 0x1FB;
+ _sequenceIdArr[5] = 0x1F0;
+ _sequenceIdArr[6] = 0x1FD;
+ _sequenceIdArr[7] = 0x1FE;
+ _sequenceIdArr[8] = 0x1F7;
+ _sequenceIdArr[9] = 0x1F9;
+ _sequenceIdArr[10] = 0x1F8;
+ _sequenceIdArr[11] = 0x1F1;
+ _sequenceIdArr[12] = 0x202;
+ _sequenceIdArr[13] = 0x1F6;
+ _sequenceIdArr[14] = 0x1F3;
+ _sequenceIdArr[15] = 0x1FA;
+ _sequenceIdArr[16] = 0x1FF;
+ _sequenceIdArr[17] = 0x200;
+ _sequenceIdArr[18] = 0x203;
+ _sequenceIdArr[19] = 0x206;
+ _sequenceIdArr[20] = 0x207;
+ _sequenceIdArr[21] = 0x204;
+ _sequenceIdArr[22] = 0x205;
+ _resourceIdArr[0] = 0x1C;
+ _resourceIdArr[1] = 2;
+ _resourceIdArr[2] = 0x1B;
+ _resourceIdArr[3] = 0;
+ _resourceIdArr[4] = 0x167;
+ _resourceIdArr[5] = 1;
+ _resourceIdArr[6] = 0x15B;
+ _resourceIdArr[7] = 0x15A;
+ _resourceIdArr[8] = 0x170;
+ _resourceIdArr[9] = 0x1EB;
+ _resourceIdArr[10] = 0x1EC;
+ _resourceIdArr[11] = 0x1BE;
+ _resourceIdArr[12] = 0x1BF;
+ _sequenceCountArr[0] = 4;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 6;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 3;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _itemsCount = 13;
+
+ return -1;
+}
+
+/*****************************************************************************/
+
+Scene471::Scene471(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene471::init() {
+ _sequenceIdArr[0] = 0x301;
+ _sequenceIdArr[1] = 0x305;
+ _sequenceIdArr[2] = 0x302;
+ _sequenceIdArr[3] = 0x304;
+ _sequenceIdArr[4] = 0x300;
+ _resourceIdArr[0] = 3;
+ _resourceIdArr[1] = 0;
+ _resourceIdArr[2] = 1;
+ _resourceIdArr[3] = 0;
+ _resourceIdArr[4] = 2;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
+
+ return -1;
+}
+
+Scene472::Scene472(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene472::init() {
+ _sequenceIdArr[0] = 0x306;
+ _sequenceIdArr[1] = 0x309;
+ _sequenceIdArr[2] = 0x307;
+ _sequenceIdArr[3] = 0x308;
+ _sequenceIdArr[4] = 0x30A;
+ _resourceIdArr[0] = 0x8E;
+ _resourceIdArr[1] = 0x90;
+ _resourceIdArr[2] = 0x8F;
+ _resourceIdArr[3] = 0x91;
+ _sequenceCountArr[0] = 2;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _itemsCount = 4;
+
+ return -1;
+}
+
+Scene473::Scene473(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene473::init() {
+ _sequenceIdArr[0] = 0x320;
+ _sequenceIdArr[1] = 0x321;
+ _resourceIdArr[0] = 0x142;
+ _resourceIdArr[1] = 0x143;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _itemsCount = 2;
+
+ return -1;
+}
+
+Scene474::Scene474(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene474::init() {
+ _sequenceIdArr[0] = 0x30C;
+ _sequenceIdArr[1] = 0x30D;
+ _sequenceIdArr[2] = 0x30B;
+ _resourceIdArr[0] = 0x142;
+ _resourceIdArr[1] = 0x141;
+ _resourceIdArr[2] = 0x177;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _itemsCount = 3;
+
+ return -1;
+}
+
+Scene475::Scene475(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene475::init() {
+ _sequenceIdArr[0] = 0x30E;
+ _sequenceIdArr[1] = 0x30F;
+ _sequenceIdArr[2] = 0x310;
+ _sequenceIdArr[3] = 0x311;
+ _resourceIdArr[0] = 0x206;
+ _resourceIdArr[1] = 0x207;
+ _sequenceCountArr[0] = 3;
+ _sequenceCountArr[1] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _itemsCount = 2;
+
+ return -1;
+}
+
+Scene476::Scene476(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene476::init() {
+ _sequenceIdArr[0] = 0x31E;
+ _sequenceIdArr[1] = 0x31F;
+ _resourceIdArr[0] = 0x2FA;
+ _sequenceCountArr[0] = 2;
+ _canSkip[0] = false;
+ _itemsCount = 1;
+
+ return -1;
+}
+
+Scene477::Scene477(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene477::init() {
+ int v0, v4, v2, v3;
+
+ _sequenceIdArr[0] = 0x316;
+ _sequenceIdArr[1] = 0x31A;
+ _sequenceIdArr[2] = 0x314;
+ _sequenceIdArr[3] = 0x31B;
+ int v1 = 4;
+ if (!_vm->isFlag(kGFTwigTaken)) {
+ _sequenceIdArr[4] = 0x31C;
+ v1 = 5;
+ }
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _sequenceIdArr[v1++] = 0x31D;
+ v4 = v1;
+ _sequenceIdArr[v1] = 0x319;
+ v0 = v1 + 1;
+ v3 = v0;
+ _sequenceIdArr[v0++] = 0x317;
+ _sequenceIdArr[v0++] = 0x312;
+ _sequenceIdArr[v0] = 0x31A;
+ v2 = v0 + 1;
+ if (!_vm->isFlag(kGFTwigTaken))
+ _sequenceIdArr[v2++] = 0x31C;
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _sequenceIdArr[v2++] = 0x31D;
+ _sequenceIdArr[v2] = 0x313;
+ _sequenceIdArr[v2 + 1] = 0x315;
+ _resourceIdArr[0] = 0x2B8;
+ _resourceIdArr[1] = 0x20C;
+ _resourceIdArr[2] = 0x2B8;
+ _resourceIdArr[3] = 0x20B;
+ _resourceIdArr[4] = 0x20B;
+ _sequenceCountArr[0] = v4;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = v2 - v3;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
+
+ return -1;
+}
+
+/*****************************************************************************/
+
+Scene48::Scene48(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene48::init() {
+ _sequenceIdArr[0] = 390;
+ _sequenceIdArr[1] = 391;
+ _sequenceIdArr[2] = 392;
+ _sequenceIdArr[3] = 393;
+ _sequenceIdArr[4] = 394;
+ _sequenceIdArr[5] = 395;
+ _sequenceIdArr[6] = 396;
+ _sequenceIdArr[7] = 397;
+ _sequenceIdArr[8] = 398;
+ _sequenceIdArr[9] = 399;
+ _sequenceIdArr[10] = 400;
+ _sequenceIdArr[11] = 401;
+ _sequenceIdArr[12] = 402;
+ _resourceIdArr[0] = 238;
+ _resourceIdArr[1] = 42;
+ _resourceIdArr[2] = 2;
+ _resourceIdArr[3] = 37;
+ _resourceIdArr[4] = 35;
+ _resourceIdArr[5] = 38;
+ _resourceIdArr[6] = 39;
+ _resourceIdArr[7] = 40;
+ _resourceIdArr[8] = 41;
+ _resourceIdArr[9] = 36;
+ _resourceIdArr[10] = 41;
+ _resourceIdArr[11] = 388;
+ _resourceIdArr[12] = 387;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 1;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _canSkip[5] = false;
+ _canSkip[6] = false;
+ _canSkip[7] = false;
+ _canSkip[8] = false;
+ _canSkip[9] = false;
+ _canSkip[10] = false;
+ _canSkip[11] = false;
+ _canSkip[12] = false;
+ _itemsCount = 13;
+
+ return -1;
+}
+
+/*****************************************************************************/
+
+Scene541::Scene541(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene541::init() {
+ _sequenceIdArr[0] = 0x1BE;
+ _sequenceIdArr[1] = 0x1BF;
+ _sequenceIdArr[2] = 0x1BA;
+ _sequenceIdArr[3] = 0x1BB;
+ _sequenceIdArr[4] = 0x1BD;
+ _sequenceIdArr[5] = 0x1BC;
+ _resourceIdArr[0] = 0x3C;
+ _resourceIdArr[1] = 0x43;
+ _resourceIdArr[2] = 0x44;
+ if (_vm->isFlag(kGFPictureTaken))
+ _resourceIdArr[3] = 0x47;
+ else
+ _resourceIdArr[3] = 0x46;
+ _resourceIdArr[4] = 0x45;
+ _sequenceCountArr[0] = 1;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 1;
+ _sequenceCountArr[3] = 2;
+ _sequenceCountArr[4] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _itemsCount = 5;
+
+ return -1;
+}
+
+Scene542::Scene542(GnapEngine *vm) : CutScene(vm) {}
+
+int Scene542::init() {
+ _sequenceIdArr[0] = 0x1C9;
+ _sequenceIdArr[1] = 0x1C7;
+ _sequenceIdArr[2] = 0x1CC;
+ _sequenceIdArr[3] = 0x1C8;
+ _sequenceIdArr[4] = 0x1CB;
+ _sequenceIdArr[5] = 0x1C0;
+ _sequenceIdArr[6] = 0x1CA;
+ _sequenceIdArr[7] = 0x1CE;
+ _sequenceIdArr[8] = 0x1CD;
+ _sequenceIdArr[9] = 0x1C1;
+ _sequenceIdArr[10] = 0x1C2;
+ _sequenceIdArr[11] = 0x1C3;
+ _sequenceIdArr[12] = 0x1C4;
+ _sequenceIdArr[13] = 0x1C6;
+ _sequenceIdArr[14] = 0x1C5;
+ _sequenceIdArr[15] = 0x1D0;
+ _sequenceIdArr[16] = 0x1D0;
+ _sequenceIdArr[17] = 0x1D0;
+ _resourceIdArr[0] = 0xD5;
+ _resourceIdArr[1] = 0x14C;
+ _resourceIdArr[2] = 0xD5;
+ _resourceIdArr[3] = 0xBF;
+ _resourceIdArr[4] = 0xD6;
+ _resourceIdArr[5] = 0x154;
+ _resourceIdArr[6] = 0x155;
+ _resourceIdArr[7] = 0xB9;
+ _resourceIdArr[8] = 0xBA;
+ _resourceIdArr[9] = 0x17B;
+ _resourceIdArr[10] = 0x17A;
+ _resourceIdArr[11] = 0x17C;
+ _resourceIdArr[12] = 0x17A;
+ _resourceIdArr[13] = 0x1B7;
+ _resourceIdArr[14] = 0x1B8;
+ _resourceIdArr[15] = 0x1B9;
+ _sequenceCountArr[0] = 2;
+ _sequenceCountArr[1] = 1;
+ _sequenceCountArr[2] = 2;
+ _sequenceCountArr[3] = 1;
+ _sequenceCountArr[4] = 1;
+ _sequenceCountArr[5] = 1;
+ _sequenceCountArr[6] = 1;
+ _sequenceCountArr[7] = 1;
+ _sequenceCountArr[8] = 1;
+ _sequenceCountArr[9] = 1;
+ _sequenceCountArr[10] = 1;
+ _sequenceCountArr[11] = 1;
+ _sequenceCountArr[12] = 1;
+ _sequenceCountArr[13] = 1;
+ _sequenceCountArr[14] = 1;
+ _sequenceCountArr[15] = 1;
+ _canSkip[0] = false;
+ _canSkip[1] = false;
+ _canSkip[2] = false;
+ _canSkip[3] = false;
+ _canSkip[4] = false;
+ _canSkip[5] = false;
+ _canSkip[6] = false;
+ _canSkip[7] = false;
+ _canSkip[8] = false;
+ _canSkip[9] = false;
+ _canSkip[10] = false;
+ _canSkip[11] = false;
+ _canSkip[12] = false;
+ _canSkip[13] = true;
+ _canSkip[14] = true;
+ _canSkip[15] = false;
+ _itemsCount = 16;
+
+ return -1;
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/groupcs.h b/engines/gnap/scenes/groupcs.h
new file mode 100644
index 0000000..26f51ab
--- /dev/null
+++ b/engines/gnap/scenes/groupcs.h
@@ -0,0 +1,122 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUPCS_H
+#define GNAP_GROUPCS_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene16: public CutScene {
+public:
+ Scene16(GnapEngine *vm);
+ ~Scene16() {}
+
+ virtual int init();
+};
+
+class Scene471: public CutScene {
+public:
+ Scene471(GnapEngine *vm);
+ ~Scene471() {}
+
+ virtual int init();
+};
+
+class Scene472: public CutScene {
+public:
+ Scene472(GnapEngine *vm);
+ ~Scene472() {}
+
+ virtual int init();
+};
+
+class Scene473: public CutScene {
+public:
+ Scene473(GnapEngine *vm);
+ ~Scene473() {}
+
+ virtual int init();
+};
+
+class Scene474: public CutScene {
+public:
+ Scene474(GnapEngine *vm);
+ ~Scene474() {}
+
+ virtual int init();
+};
+
+class Scene475: public CutScene {
+public:
+ Scene475(GnapEngine *vm);
+ ~Scene475() {}
+
+ virtual int init();
+};
+
+class Scene476: public CutScene {
+public:
+ Scene476(GnapEngine *vm);
+ ~Scene476() {}
+
+ virtual int init();
+};
+
+class Scene477: public CutScene {
+public:
+ Scene477(GnapEngine *vm);
+ ~Scene477() {}
+
+ virtual int init();
+};
+
+class Scene48: public CutScene {
+public:
+ Scene48(GnapEngine *vm);
+ ~Scene48() {}
+
+ virtual int init();
+};
+
+class Scene541: public CutScene {
+public:
+ Scene541(GnapEngine *vm);
+ ~Scene541() {}
+
+ virtual int init();
+};
+
+class Scene542: public CutScene {
+public:
+ Scene542(GnapEngine *vm);
+ ~Scene542() {}
+
+ virtual int init();
+};
+} // End of namespace Gnap
+
+#endif // GNAP_GROUPCS_H
diff --git a/engines/gnap/scenes/scene16.cpp b/engines/gnap/scenes/scene16.cpp
deleted file mode 100644
index 370faf4..0000000
--- a/engines/gnap/scenes/scene16.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene16.h"
-
-namespace Gnap {
-
-Scene16::Scene16(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene16::init() {
- _sequenceIdArr[0] = 0x1F2;
- _sequenceIdArr[1] = 0x201;
- _sequenceIdArr[2] = 0x1FC;
- _sequenceIdArr[3] = 0x1F4;
- _sequenceIdArr[4] = 0x1FB;
- _sequenceIdArr[5] = 0x1F0;
- _sequenceIdArr[6] = 0x1FD;
- _sequenceIdArr[7] = 0x1FE;
- _sequenceIdArr[8] = 0x1F7;
- _sequenceIdArr[9] = 0x1F9;
- _sequenceIdArr[10] = 0x1F8;
- _sequenceIdArr[11] = 0x1F1;
- _sequenceIdArr[12] = 0x202;
- _sequenceIdArr[13] = 0x1F6;
- _sequenceIdArr[14] = 0x1F3;
- _sequenceIdArr[15] = 0x1FA;
- _sequenceIdArr[16] = 0x1FF;
- _sequenceIdArr[17] = 0x200;
- _sequenceIdArr[18] = 0x203;
- _sequenceIdArr[19] = 0x206;
- _sequenceIdArr[20] = 0x207;
- _sequenceIdArr[21] = 0x204;
- _sequenceIdArr[22] = 0x205;
- _resourceIdArr[0] = 0x1C;
- _resourceIdArr[1] = 2;
- _resourceIdArr[2] = 0x1B;
- _resourceIdArr[3] = 0;
- _resourceIdArr[4] = 0x167;
- _resourceIdArr[5] = 1;
- _resourceIdArr[6] = 0x15B;
- _resourceIdArr[7] = 0x15A;
- _resourceIdArr[8] = 0x170;
- _resourceIdArr[9] = 0x1EB;
- _resourceIdArr[10] = 0x1EC;
- _resourceIdArr[11] = 0x1BE;
- _resourceIdArr[12] = 0x1BF;
- _sequenceCountArr[0] = 4;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _sequenceCountArr[3] = 6;
- _sequenceCountArr[4] = 1;
- _sequenceCountArr[5] = 3;
- _sequenceCountArr[6] = 1;
- _sequenceCountArr[7] = 1;
- _sequenceCountArr[8] = 1;
- _sequenceCountArr[9] = 1;
- _sequenceCountArr[10] = 1;
- _sequenceCountArr[11] = 1;
- _sequenceCountArr[12] = 1;
- _itemsCount = 13;
-
- return -1;
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene16.h b/engines/gnap/scenes/scene16.h
deleted file mode 100644
index e9d3b7f..0000000
--- a/engines/gnap/scenes/scene16.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE16_H
-#define GNAP_SCENE16_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene16: public CutScene {
-public:
- Scene16(GnapEngine *vm);
- ~Scene16() {}
-
- virtual int init();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE16_H
diff --git a/engines/gnap/scenes/scene47.cpp b/engines/gnap/scenes/scene47.cpp
deleted file mode 100644
index 1c96139..0000000
--- a/engines/gnap/scenes/scene47.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene47.h"
-
-namespace Gnap {
-
-Scene471::Scene471(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene471::init() {
- _sequenceIdArr[0] = 0x301;
- _sequenceIdArr[1] = 0x305;
- _sequenceIdArr[2] = 0x302;
- _sequenceIdArr[3] = 0x304;
- _sequenceIdArr[4] = 0x300;
- _resourceIdArr[0] = 3;
- _resourceIdArr[1] = 0;
- _resourceIdArr[2] = 1;
- _resourceIdArr[3] = 0;
- _resourceIdArr[4] = 2;
- _sequenceCountArr[0] = 1;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _sequenceCountArr[3] = 1;
- _sequenceCountArr[4] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _canSkip[4] = false;
- _itemsCount = 5;
-
- return -1;
-}
-
-Scene472::Scene472(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene472::init() {
- _sequenceIdArr[0] = 0x306;
- _sequenceIdArr[1] = 0x309;
- _sequenceIdArr[2] = 0x307;
- _sequenceIdArr[3] = 0x308;
- _sequenceIdArr[4] = 0x30A;
- _resourceIdArr[0] = 0x8E;
- _resourceIdArr[1] = 0x90;
- _resourceIdArr[2] = 0x8F;
- _resourceIdArr[3] = 0x91;
- _sequenceCountArr[0] = 2;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _sequenceCountArr[3] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _itemsCount = 4;
-
- return -1;
-}
-
-Scene473::Scene473(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene473::init() {
- _sequenceIdArr[0] = 0x320;
- _sequenceIdArr[1] = 0x321;
- _resourceIdArr[0] = 0x142;
- _resourceIdArr[1] = 0x143;
- _sequenceCountArr[0] = 1;
- _sequenceCountArr[1] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _itemsCount = 2;
-
- return -1;
-}
-
-Scene474::Scene474(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene474::init() {
- _sequenceIdArr[0] = 0x30C;
- _sequenceIdArr[1] = 0x30D;
- _sequenceIdArr[2] = 0x30B;
- _resourceIdArr[0] = 0x142;
- _resourceIdArr[1] = 0x141;
- _resourceIdArr[2] = 0x177;
- _sequenceCountArr[0] = 1;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _itemsCount = 3;
-
- return -1;
-}
-
-Scene475::Scene475(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene475::init() {
- _sequenceIdArr[0] = 0x30E;
- _sequenceIdArr[1] = 0x30F;
- _sequenceIdArr[2] = 0x310;
- _sequenceIdArr[3] = 0x311;
- _resourceIdArr[0] = 0x206;
- _resourceIdArr[1] = 0x207;
- _sequenceCountArr[0] = 3;
- _sequenceCountArr[1] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _itemsCount = 2;
-
- return -1;
-}
-
-Scene476::Scene476(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene476::init() {
- _sequenceIdArr[0] = 0x31E;
- _sequenceIdArr[1] = 0x31F;
- _resourceIdArr[0] = 0x2FA;
- _sequenceCountArr[0] = 2;
- _canSkip[0] = false;
- _itemsCount = 1;
-
- return -1;
-}
-
-Scene477::Scene477(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene477::init() {
- int v0, v4, v2, v3;
-
- _sequenceIdArr[0] = 0x316;
- _sequenceIdArr[1] = 0x31A;
- _sequenceIdArr[2] = 0x314;
- _sequenceIdArr[3] = 0x31B;
- int v1 = 4;
- if (!_vm->isFlag(kGFTwigTaken)) {
- _sequenceIdArr[4] = 0x31C;
- v1 = 5;
- }
- if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _sequenceIdArr[v1++] = 0x31D;
- v4 = v1;
- _sequenceIdArr[v1] = 0x319;
- v0 = v1 + 1;
- v3 = v0;
- _sequenceIdArr[v0++] = 0x317;
- _sequenceIdArr[v0++] = 0x312;
- _sequenceIdArr[v0] = 0x31A;
- v2 = v0 + 1;
- if (!_vm->isFlag(kGFTwigTaken))
- _sequenceIdArr[v2++] = 0x31C;
- if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _sequenceIdArr[v2++] = 0x31D;
- _sequenceIdArr[v2] = 0x313;
- _sequenceIdArr[v2 + 1] = 0x315;
- _resourceIdArr[0] = 0x2B8;
- _resourceIdArr[1] = 0x20C;
- _resourceIdArr[2] = 0x2B8;
- _resourceIdArr[3] = 0x20B;
- _resourceIdArr[4] = 0x20B;
- _sequenceCountArr[0] = v4;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = v2 - v3;
- _sequenceCountArr[3] = 1;
- _sequenceCountArr[4] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _canSkip[4] = false;
- _itemsCount = 5;
-
- return -1;
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene47.h b/engines/gnap/scenes/scene47.h
deleted file mode 100644
index f1c1034..0000000
--- a/engines/gnap/scenes/scene47.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE47_H
-#define GNAP_SCENE47_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene471: public CutScene {
-public:
- Scene471(GnapEngine *vm);
- ~Scene471() {}
-
- virtual int init();
-};
-
-class Scene472: public CutScene {
-public:
- Scene472(GnapEngine *vm);
- ~Scene472() {}
-
- virtual int init();
-};
-
-class Scene473: public CutScene {
-public:
- Scene473(GnapEngine *vm);
- ~Scene473() {}
-
- virtual int init();
-};
-
-class Scene474: public CutScene {
-public:
- Scene474(GnapEngine *vm);
- ~Scene474() {}
-
- virtual int init();
-};
-
-class Scene475: public CutScene {
-public:
- Scene475(GnapEngine *vm);
- ~Scene475() {}
-
- virtual int init();
-};
-
-class Scene476: public CutScene {
-public:
- Scene476(GnapEngine *vm);
- ~Scene476() {}
-
- virtual int init();
-};
-
-class Scene477: public CutScene {
-public:
- Scene477(GnapEngine *vm);
- ~Scene477() {}
-
- virtual int init();
-};
-} // End of namespace Gnap
-#endif // GNAP_SCENE47_H
diff --git a/engines/gnap/scenes/scene48.cpp b/engines/gnap/scenes/scene48.cpp
deleted file mode 100644
index 27f8d82..0000000
--- a/engines/gnap/scenes/scene48.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene48.h"
-
-namespace Gnap {
-
-Scene48::Scene48(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene48::init() {
- _sequenceIdArr[0] = 390;
- _sequenceIdArr[1] = 391;
- _sequenceIdArr[2] = 392;
- _sequenceIdArr[3] = 393;
- _sequenceIdArr[4] = 394;
- _sequenceIdArr[5] = 395;
- _sequenceIdArr[6] = 396;
- _sequenceIdArr[7] = 397;
- _sequenceIdArr[8] = 398;
- _sequenceIdArr[9] = 399;
- _sequenceIdArr[10] = 400;
- _sequenceIdArr[11] = 401;
- _sequenceIdArr[12] = 402;
- _resourceIdArr[0] = 238;
- _resourceIdArr[1] = 42;
- _resourceIdArr[2] = 2;
- _resourceIdArr[3] = 37;
- _resourceIdArr[4] = 35;
- _resourceIdArr[5] = 38;
- _resourceIdArr[6] = 39;
- _resourceIdArr[7] = 40;
- _resourceIdArr[8] = 41;
- _resourceIdArr[9] = 36;
- _resourceIdArr[10] = 41;
- _resourceIdArr[11] = 388;
- _resourceIdArr[12] = 387;
- _sequenceCountArr[0] = 1;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _sequenceCountArr[3] = 1;
- _sequenceCountArr[4] = 1;
- _sequenceCountArr[5] = 1;
- _sequenceCountArr[6] = 1;
- _sequenceCountArr[7] = 1;
- _sequenceCountArr[8] = 1;
- _sequenceCountArr[9] = 1;
- _sequenceCountArr[10] = 1;
- _sequenceCountArr[11] = 1;
- _sequenceCountArr[12] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _canSkip[4] = false;
- _canSkip[5] = false;
- _canSkip[6] = false;
- _canSkip[7] = false;
- _canSkip[8] = false;
- _canSkip[9] = false;
- _canSkip[10] = false;
- _canSkip[11] = false;
- _canSkip[12] = false;
- _itemsCount = 13;
-
- return -1;
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene48.h b/engines/gnap/scenes/scene48.h
deleted file mode 100644
index 24e54b4..0000000
--- a/engines/gnap/scenes/scene48.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE48_H
-#define GNAP_SCENE48_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene48: public CutScene {
-public:
- Scene48(GnapEngine *vm);
- ~Scene48() {}
-
- virtual int init();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE48_H
diff --git a/engines/gnap/scenes/scene54.cpp b/engines/gnap/scenes/scene54.cpp
deleted file mode 100644
index 222c6e8..0000000
--- a/engines/gnap/scenes/scene54.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene54.h"
-
-namespace Gnap {
-
-Scene541::Scene541(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene541::init() {
- _sequenceIdArr[0] = 0x1BE;
- _sequenceIdArr[1] = 0x1BF;
- _sequenceIdArr[2] = 0x1BA;
- _sequenceIdArr[3] = 0x1BB;
- _sequenceIdArr[4] = 0x1BD;
- _sequenceIdArr[5] = 0x1BC;
- _resourceIdArr[0] = 0x3C;
- _resourceIdArr[1] = 0x43;
- _resourceIdArr[2] = 0x44;
- if (_vm->isFlag(kGFPictureTaken))
- _resourceIdArr[3] = 0x47;
- else
- _resourceIdArr[3] = 0x46;
- _resourceIdArr[4] = 0x45;
- _sequenceCountArr[0] = 1;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 1;
- _sequenceCountArr[3] = 2;
- _sequenceCountArr[4] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _canSkip[4] = false;
- _itemsCount = 5;
-
- return -1;
-}
-
-Scene542::Scene542(GnapEngine *vm) : CutScene(vm) {}
-
-int Scene542::init() {
- _sequenceIdArr[0] = 0x1C9;
- _sequenceIdArr[1] = 0x1C7;
- _sequenceIdArr[2] = 0x1CC;
- _sequenceIdArr[3] = 0x1C8;
- _sequenceIdArr[4] = 0x1CB;
- _sequenceIdArr[5] = 0x1C0;
- _sequenceIdArr[6] = 0x1CA;
- _sequenceIdArr[7] = 0x1CE;
- _sequenceIdArr[8] = 0x1CD;
- _sequenceIdArr[9] = 0x1C1;
- _sequenceIdArr[10] = 0x1C2;
- _sequenceIdArr[11] = 0x1C3;
- _sequenceIdArr[12] = 0x1C4;
- _sequenceIdArr[13] = 0x1C6;
- _sequenceIdArr[14] = 0x1C5;
- _sequenceIdArr[15] = 0x1D0;
- _sequenceIdArr[16] = 0x1D0;
- _sequenceIdArr[17] = 0x1D0;
- _resourceIdArr[0] = 0xD5;
- _resourceIdArr[1] = 0x14C;
- _resourceIdArr[2] = 0xD5;
- _resourceIdArr[3] = 0xBF;
- _resourceIdArr[4] = 0xD6;
- _resourceIdArr[5] = 0x154;
- _resourceIdArr[6] = 0x155;
- _resourceIdArr[7] = 0xB9;
- _resourceIdArr[8] = 0xBA;
- _resourceIdArr[9] = 0x17B;
- _resourceIdArr[10] = 0x17A;
- _resourceIdArr[11] = 0x17C;
- _resourceIdArr[12] = 0x17A;
- _resourceIdArr[13] = 0x1B7;
- _resourceIdArr[14] = 0x1B8;
- _resourceIdArr[15] = 0x1B9;
- _sequenceCountArr[0] = 2;
- _sequenceCountArr[1] = 1;
- _sequenceCountArr[2] = 2;
- _sequenceCountArr[3] = 1;
- _sequenceCountArr[4] = 1;
- _sequenceCountArr[5] = 1;
- _sequenceCountArr[6] = 1;
- _sequenceCountArr[7] = 1;
- _sequenceCountArr[8] = 1;
- _sequenceCountArr[9] = 1;
- _sequenceCountArr[10] = 1;
- _sequenceCountArr[11] = 1;
- _sequenceCountArr[12] = 1;
- _sequenceCountArr[13] = 1;
- _sequenceCountArr[14] = 1;
- _sequenceCountArr[15] = 1;
- _canSkip[0] = false;
- _canSkip[1] = false;
- _canSkip[2] = false;
- _canSkip[3] = false;
- _canSkip[4] = false;
- _canSkip[5] = false;
- _canSkip[6] = false;
- _canSkip[7] = false;
- _canSkip[8] = false;
- _canSkip[9] = false;
- _canSkip[10] = false;
- _canSkip[11] = false;
- _canSkip[12] = false;
- _canSkip[13] = true;
- _canSkip[14] = true;
- _canSkip[15] = false;
- _itemsCount = 16;
-
- return -1;
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene54.h b/engines/gnap/scenes/scene54.h
deleted file mode 100644
index a27d157..0000000
--- a/engines/gnap/scenes/scene54.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE54_H
-#define GNAP_SCENE54_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene541: public CutScene {
-public:
- Scene541(GnapEngine *vm);
- ~Scene541() {}
-
- virtual int init();
-};
-
-class Scene542: public CutScene {
-public:
- Scene542(GnapEngine *vm);
- ~Scene542() {}
-
- virtual int init();
-};
-} // End of namespace Gnap
-#endif // GNAP_SCENE54_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 8c16bb5..309c872 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -25,6 +25,8 @@
#include "gnap/resource.h"
#include "gnap/scenes/scenecore.h"
+#include "gnap/scenes/groupcs.h"
+
#include "gnap/scenes/scene00.h"
#include "gnap/scenes/scene01.h"
#include "gnap/scenes/scene02.h"
@@ -41,7 +43,6 @@
#include "gnap/scenes/scene13.h"
#include "gnap/scenes/scene14.h"
#include "gnap/scenes/scene15.h"
-#include "gnap/scenes/scene16.h"
#include "gnap/scenes/scene17.h"
#include "gnap/scenes/scene18.h"
#include "gnap/scenes/scene19.h"
@@ -68,14 +69,11 @@
#include "gnap/scenes/scene44.h"
#include "gnap/scenes/scene45.h"
#include "gnap/scenes/scene46.h"
-#include "gnap/scenes/scene47.h"
-#include "gnap/scenes/scene48.h"
#include "gnap/scenes/scene49.h"
#include "gnap/scenes/scene50.h"
#include "gnap/scenes/scene51.h"
#include "gnap/scenes/scene52.h"
#include "gnap/scenes/scene53.h"
-#include "gnap/scenes/scene54.h"
namespace Gnap {
Commit: 19d205b3da025609f171bf7e77b71bb28fcb6604
https://github.com/scummvm/scummvm/commit/19d205b3da025609f171bf7e77b71bb28fcb6604
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Prepare the merge of scene group 0 (WIP)
Changed paths:
engines/gnap/scenes/scene01.cpp
engines/gnap/scenes/scene01.h
engines/gnap/scenes/scene02.cpp
engines/gnap/scenes/scene02.h
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
index 39d21fc..39f572a 100644
--- a/engines/gnap/scenes/scene01.cpp
+++ b/engines/gnap/scenes/scene01.cpp
@@ -28,39 +28,39 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSExitTruck = 1,
- kHSMud = 2,
- kHSPigs = 3,
- kHSSpaceship = 4,
- kHSDevice = 5,
- kHSWalkArea1 = 6,
- kHSWalkArea2 = 7,
- kHSWalkArea3 = 8,
- kHSWalkArea4 = 9,
- kHSWalkArea5 = 10,
- kHSWalkArea6 = 11,
- kHSWalkArea7 = 12,
- kHSWalkArea8 = 13
+ kHS01Platypus = 0,
+ kHS01ExitTruck = 1,
+ kHS01Mud = 2,
+ kHS01Pigs = 3,
+ kHS01Spaceship = 4,
+ kHS01Device = 5,
+ kHS01WalkArea1 = 6,
+ kHS01WalkArea2 = 7,
+ kHS01WalkArea3 = 8,
+ kHS01WalkArea4 = 9,
+ kHS01WalkArea5 = 10,
+ kHS01WalkArea6 = 11,
+ kHS01WalkArea7 = 12,
+ kHS01WalkArea8 = 13
};
enum {
- kASLookSpaceship = 1,
- kASLookSpaceshipDone = 2,
- kASLeaveScene = 3,
- kASTakeMud = 5,
- kASLookPigs = 6,
- kASUsePigs = 7
+ kAS01LookSpaceship = 1,
+ kAS01LookSpaceshipDone = 2,
+ kAS01LeaveScene = 3,
+ kAS01TakeMud = 5,
+ kAS01LookPigs = 6,
+ kAS01UsePigs = 7
};
Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
- _s01_pigsIdCtr = 0;
- _s01_smokeIdCtr = 0;
- _s01_spaceshipSurface = nullptr;
+ _pigsIdCtr = 0;
+ _smokeIdCtr = 0;
+ _spaceshipSurface = nullptr;
}
Scene01::~Scene01() {
- delete _s01_spaceshipSurface;
+ delete _spaceshipSurface;
}
int Scene01::init() {
@@ -70,24 +70,24 @@ int Scene01::init() {
}
void Scene01::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
- _vm->setHotspot(kHSMud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
- _vm->setHotspot(kHSPigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
- _vm->setHotspot(kHSSpaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 162, 426);
- _vm->setHotspot(kHSWalkArea2, 162, 0, 237, 396);
- _vm->setHotspot(kHSWalkArea3, 237, 0, 319, 363);
- _vm->setHotspot(kHSWalkArea4, 520, 0, 800, 404);
- _vm->setHotspot(kHSWalkArea5, 300, 447, 800, 600);
- _vm->setHotspot(kHSWalkArea6, 678, 0, 800, 404);
- _vm->setHotspot(kHSWalkArea7, 0, 0, 520, 351);
- _vm->setHotspot(kHSWalkArea8, 0, 546, 300, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS01Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS01ExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ _vm->setHotspot(kHS01Mud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ _vm->setHotspot(kHS01Pigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
+ _vm->setHotspot(kHS01Spaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ _vm->setHotspot(kHS01WalkArea1, 0, 0, 162, 426);
+ _vm->setHotspot(kHS01WalkArea2, 162, 0, 237, 396);
+ _vm->setHotspot(kHS01WalkArea3, 237, 0, 319, 363);
+ _vm->setHotspot(kHS01WalkArea4, 520, 0, 800, 404);
+ _vm->setHotspot(kHS01WalkArea5, 300, 447, 800, 600);
+ _vm->setHotspot(kHS01WalkArea6, 678, 0, 800, 404);
+ _vm->setHotspot(kHS01WalkArea7, 0, 0, 520, 351);
+ _vm->setHotspot(kHS01WalkArea8, 0, 546, 300, 600);
+ _vm->setDeviceHotspot(kHS01Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspots[kHS01Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_vm->isFlag(kGFMudTaken))
- _vm->_hotspots[kHSMud]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS01Mud]._flags = SF_WALKABLE | SF_DISABLED;
_vm->_hotspotsCount = 14;
}
@@ -136,14 +136,14 @@ void Scene01::run() {
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS01Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSPlatypus:
+ case kHS01Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -172,7 +172,7 @@ void Scene01::run() {
}
break;
- case kHSSpaceship:
+ case kHS01Spaceship:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
@@ -181,7 +181,7 @@ void Scene01::run() {
case LOOK_CURSOR:
_vm->_gnapIdleFacing = kDirUpLeft;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kASLookSpaceship;
+ _vm->_gnapActionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
case TALK_CURSOR:
@@ -193,7 +193,7 @@ void Scene01::run() {
}
break;
- case kHSMud:
+ case kHS01Mud:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
@@ -204,7 +204,7 @@ void Scene01::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTakeMud;
+ _vm->_gnapActionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -215,7 +215,7 @@ void Scene01::run() {
}
break;
- case kHSPigs:
+ case kHS01Pigs:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
@@ -224,17 +224,17 @@ void Scene01::run() {
case LOOK_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kASLookPigs;
+ _vm->_gnapActionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kASUsePigs;
+ _vm->_gnapActionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kASLookPigs;
+ _vm->_gnapActionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -244,25 +244,25 @@ void Scene01::run() {
}
break;
- case kHSExitTruck:
+ case kHS01ExitTruck:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
- case kHSWalkArea6:
- case kHSWalkArea7:
- case kHSWalkArea8:
+ case kHS01WalkArea1:
+ case kHS01WalkArea2:
+ case kHS01WalkArea3:
+ case kHS01WalkArea4:
+ case kHS01WalkArea5:
+ case kHS01WalkArea6:
+ case kHS01WalkArea7:
+ case kHS01WalkArea8:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -312,26 +312,26 @@ void Scene01::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLookSpaceship:
- _s01_spaceshipSurface = _vm->_gameSys->createSurface(47);
- _vm->_gameSys->insertSpriteDrawItem(_s01_spaceshipSurface, 0, 0, 255);
+ case kAS01LookSpaceship:
+ _spaceshipSurface = _vm->_gameSys->createSurface(47);
+ _vm->_gameSys->insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
_vm->_gameSys->setAnimation(133, 256, 0);
_vm->_gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = kASLookSpaceshipDone;
+ _vm->_gnapActionStatus = kAS01LookSpaceshipDone;
break;
- case kASLookSpaceshipDone:
+ case kAS01LookSpaceshipDone:
_vm->_gameSys->removeSequence(133, 256, true);
- _vm->_gameSys->removeSpriteDrawItem(_s01_spaceshipSurface, 255);
- _vm->deleteSurface(&_s01_spaceshipSurface);
+ _vm->_gameSys->removeSpriteDrawItem(_spaceshipSurface, 255);
+ _vm->deleteSurface(&_spaceshipSurface);
_vm->_gnapActionStatus = -1;
break;
- case kASLeaveScene:
+ case kAS01LeaveScene:
_vm->_sceneDone = true;
break;
- case kASTakeMud:
+ case kAS01TakeMud:
_vm->playGnapPullOutDevice(2, 3);
_vm->playGnapUseDevice(0, 0);
_vm->_gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
@@ -339,14 +339,14 @@ void Scene01::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
- case kASLookPigs:
+ case kAS01LookPigs:
_vm->playSound(138, false);
_vm->playSound(139, false);
_vm->playSound(140, false);
_vm->_gnapActionStatus = -1;
break;
- case kASUsePigs:
+ case kAS01UsePigs:
_vm->playGnapPullOutDevice(7, 2);
_vm->playGnapUseDevice(0, 0);
_vm->_gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
@@ -364,18 +364,18 @@ void Scene01::updateAnimations() {
}
if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- _s01_smokeIdCtr = (_s01_smokeIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x86, _s01_smokeIdCtr + 20, 4);
- _vm->_gameSys->insertSequence(0x86, _s01_smokeIdCtr + 20,
- 0x86, (_s01_smokeIdCtr + 1) % 2 + 20,
+ _smokeIdCtr = (_smokeIdCtr + 1) % 2;
+ _vm->_gameSys->setAnimation(0x86, _smokeIdCtr + 20, 4);
+ _vm->_gameSys->insertSequence(0x86, _smokeIdCtr + 20,
+ 0x86, (_smokeIdCtr + 1) % 2 + 20,
kSeqSyncWait, 0, 0, 0);
}
if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _s01_pigsIdCtr = (_s01_pigsIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x7F, _s01_pigsIdCtr + 40, 2);
- _vm->_gameSys->insertSequence(0x7F, _s01_pigsIdCtr + 40,
- 0x7F, (_s01_pigsIdCtr + 1) % 2 + 40,
+ _pigsIdCtr = (_pigsIdCtr + 1) % 2;
+ _vm->_gameSys->setAnimation(0x7F, _pigsIdCtr + 40, 2);
+ _vm->_gameSys->insertSequence(0x7F, _pigsIdCtr + 40,
+ 0x7F, (_pigsIdCtr + 1) % 2 + 40,
kSeqSyncWait, 0, 0, 0);
}
}
diff --git a/engines/gnap/scenes/scene01.h b/engines/gnap/scenes/scene01.h
index c6de546..8aca9fa 100644
--- a/engines/gnap/scenes/scene01.h
+++ b/engines/gnap/scenes/scene01.h
@@ -42,8 +42,9 @@ public:
virtual void updateAnimationsCb() {}
private:
- int _s01_pigsIdCtr, _s01_smokeIdCtr;
- Graphics::Surface *_s01_spaceshipSurface;
+ int _pigsIdCtr;
+ int _smokeIdCtr;
+ Graphics::Surface *_spaceshipSurface;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
index 47ac557..b95810a 100644
--- a/engines/gnap/scenes/scene02.cpp
+++ b/engines/gnap/scenes/scene02.cpp
@@ -28,42 +28,42 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSChicken = 1,
- kHSTruck1 = 2,
- kHSTruck2 = 3,
- kHSTruckGrill = 4,
- kHSDevice = 5,
- kHSExitHouse = 6,
- kHSExitBarn = 7,
- kHSExitCreek = 8,
- kHSExitPigpen = 9,
- kHSWalkArea1 = 10,
- kHSWalkArea2 = 11,
- kHSWalkArea3 = 12,
- kHSWalkArea4 = 13
+ kHS02Platypus = 0,
+ kHS02Chicken = 1,
+ kHS02Truck1 = 2,
+ kHS02Truck2 = 3,
+ kHS02TruckGrill = 4,
+ kHS02Device = 5,
+ kHS02ExitHouse = 6,
+ kHS02ExitBarn = 7,
+ kHS02ExitCreek = 8,
+ kHS02ExitPigpen = 9,
+ kHS02WalkArea1 = 10,
+ kHS02WalkArea2 = 11,
+ kHS02WalkArea3 = 12,
+ kHS02WalkArea4 = 13
};
enum {
- kASUseTruckNoKeys = 0,
- kASUseGasWithTruck = 1,
- kASUseTruckGas = 2,
- kASUseTruckNoGas = 3,
- kASGrabTruckGrill = 5,
- kASLeaveScene = 6,
- kASTalkChicken = 7,
- kASGrabChicken = 8,
- kASGrabChickenDone = 9,
- kASUseTruckNoKeysDone = 11,
- kASUseGasWithTruckDone = 12,
- kASUseTwigWithChicken = 16
+ kAS02UseTruckNoKeys = 0,
+ kAS02UseGasWithTruck = 1,
+ kAS02UseTruckGas = 2,
+ kAS02UseTruckNoGas = 3,
+ kAS02GrabTruckGrill = 5,
+ kAS02LeaveScene = 6,
+ kAS02TalkChicken = 7,
+ kAS02GrabChicken = 8,
+ kAS02GrabChickenDone = 9,
+ kAS02UseTruckNoKeysDone = 11,
+ kAS02UseGasWithTruckDone = 12,
+ kAS02UseTwigWithChicken = 16
};
Scene02::Scene02(GnapEngine *vm) : Scene(vm) {
- _s02_truckGrillCtr = 0;
- _s02_nextChickenSequenceId = 0;
- _s02_currChickenSequenceId = 0;
- _s02_gnapTruckSequenceId = 0;
+ _truckGrillCtr = 0;
+ _nextChickenSequenceId = 0;
+ _currChickenSequenceId = 0;
+ _gnapTruckSequenceId = 0;
}
int Scene02::init() {
@@ -72,22 +72,22 @@ int Scene02::init() {
}
void Scene02::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
- _vm->setHotspot(kHSChicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSTruck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
- _vm->setHotspot(kHSTruck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
- _vm->setHotspot(kHSTruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
- _vm->setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
- _vm->setHotspot(kHSExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
- _vm->setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- _vm->setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHSWalkArea1, 92, 140, 304, 430, 0, 3, 1);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 800, 380);
- _vm->setHotspot(kHSWalkArea3, 0, 0, 386, 445);
- _vm->setHotspot(kHSWalkArea4, 386, 0, 509, 410);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS02Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
+ _vm->setHotspot(kHS02Chicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS02Truck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
+ _vm->setHotspot(kHS02Truck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
+ _vm->setHotspot(kHS02TruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
+ _vm->setHotspot(kHS02ExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
+ _vm->setHotspot(kHS02ExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
+ _vm->setHotspot(kHS02ExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHS02ExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS02WalkArea1, 92, 140, 304, 430, 0, 3, 1);
+ _vm->setHotspot(kHS02WalkArea2, 0, 0, 800, 380);
+ _vm->setHotspot(kHS02WalkArea3, 0, 0, 386, 445);
+ _vm->setHotspot(kHS02WalkArea4, 386, 0, 509, 410);
+ _vm->setDeviceHotspot(kHS02Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspots[kHS02Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_vm->_hotspotsCount = 14;
}
@@ -95,11 +95,11 @@ void Scene02::run() {
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
- _s02_currChickenSequenceId = 0x14B;
+ _currChickenSequenceId = 0x14B;
_vm->_gameSys->setAnimation(0x14B, 179, 2);
_vm->_gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
- _s02_nextChickenSequenceId = -1;
+ _nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -159,14 +159,14 @@ void Scene02::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS02Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSPlatypus:
+ case kHS02Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -195,13 +195,13 @@ void Scene02::run() {
}
break;
- case kHSChicken:
+ case kHS02Chicken:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASUseTwigWithChicken;
+ _vm->_gnapActionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
@@ -212,14 +212,14 @@ void Scene02::run() {
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kASGrabChicken;
+ _vm->_gnapActionStatus = kAS02GrabChicken;
else
_vm->_gnapActionStatus = -1;
break;
case TALK_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkChicken;
+ _vm->_gnapActionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -229,23 +229,23 @@ void Scene02::run() {
}
break;
- case kHSTruck1:
- case kHSTruck2:
+ case kHS02Truck1:
+ case kHS02Truck2:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemKeys) {
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kASUseTruckGas;
+ _vm->_gnapActionStatus = kAS02UseTruckGas;
else
- _vm->_gnapActionStatus = kASUseTruckNoGas;
+ _vm->_gnapActionStatus = kAS02UseTruckNoGas;
}
} else if (_vm->_grabCursorSpriteIndex == kItemGas) {
- _vm->_hotspots[kHSWalkArea4]._flags |= SF_WALKABLE;
+ _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))
- _vm->_gnapActionStatus = kASUseGasWithTruck;
- _vm->_hotspots[kHSWalkArea4]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS02UseGasWithTruck;
+ _vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
} else {
@@ -257,14 +257,14 @@ void Scene02::run() {
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->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kASUseTruckGas;
+ _vm->_gnapActionStatus = kAS02UseTruckGas;
else
- _vm->_gnapActionStatus = kASUseTruckNoGas;
+ _vm->_gnapActionStatus = kAS02UseTruckNoGas;
}
} else {
_vm->_gnapIdleFacing = kDirUnk4;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
- _vm->_gnapActionStatus = kASUseTruckNoKeys;
+ _vm->_gnapActionStatus = kAS02UseTruckNoKeys;
}
break;
case TALK_CURSOR:
@@ -276,7 +276,7 @@ void Scene02::run() {
}
break;
- case kHSTruckGrill:
+ case kHS02TruckGrill:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
@@ -288,7 +288,7 @@ void Scene02::run() {
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabTruckGrill;
+ _vm->_gnapActionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -299,11 +299,11 @@ void Scene02::run() {
}
break;
- case kHSExitHouse:
+ case kHS02ExitHouse:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
updateHotspots();
@@ -311,11 +311,11 @@ void Scene02::run() {
}
break;
- case kHSExitBarn:
+ case kHS02ExitBarn:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
updateHotspots();
@@ -323,32 +323,32 @@ void Scene02::run() {
}
break;
- case kHSExitCreek:
+ case kHS02ExitCreek:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
}
break;
- case kHSExitPigpen:
+ case kHS02ExitPigpen:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
+ case kHS02WalkArea1:
+ case kHS02WalkArea2:
+ case kHS02WalkArea3:
+ case kHS02WalkArea4:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -379,12 +379,12 @@ void Scene02::run() {
else
_vm->_gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_vm->_timers[5] && _s02_nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
if (_vm->getRandom(6) != 0) {
- _s02_nextChickenSequenceId = 0x14B;
+ _nextChickenSequenceId = 0x14B;
_vm->_timers[5] = _vm->getRandom(20) + 30;
} else {
- _s02_nextChickenSequenceId = 0x14D;
+ _nextChickenSequenceId = 0x14D;
_vm->_timers[5] = _vm->getRandom(20) + 50;
}
}
@@ -406,14 +406,14 @@ void Scene02::run() {
void Scene02::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
- case kASUseTruckNoKeys:
+ case kAS02UseTruckNoKeys:
_vm->_gameSys->insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x14E, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x14E;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASUseTruckNoKeysDone;
+ _vm->_gnapActionStatus = kAS02UseTruckNoKeysDone;
break;
- case kASUseGasWithTruck:
+ case kAS02UseGasWithTruck:
_vm->_gameSys->insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x151, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x151;
@@ -421,9 +421,9 @@ void Scene02::updateAnimations() {
_vm->invRemove(kItemGas);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFTruckFilledWithGas);
- _vm->_gnapActionStatus = kASUseGasWithTruckDone;
+ _vm->_gnapActionStatus = kAS02UseGasWithTruckDone;
break;
- case kASUseTruckGas:
+ case kAS02UseTruckGas:
_vm->_timers[5] = 9999;
_vm->_timers[4] = 9999;
_vm->hideCursor();
@@ -440,7 +440,7 @@ void Scene02::updateAnimations() {
_vm->_newSceneNum = 47;
_vm->_sceneDone = true;
break;
- case kASUseTruckNoGas:
+ case kAS02UseTruckNoGas:
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->_timers[4] = 250;
@@ -457,54 +457,54 @@ void Scene02::updateAnimations() {
_vm->_sceneDone = true;
_vm->setFlag(kGFUnk25);
break;
- case kASGrabTruckGrill:
- switch (_s02_truckGrillCtr) {
+ case kAS02GrabTruckGrill:
+ switch (_truckGrillCtr) {
case 0:
- _s02_gnapTruckSequenceId = 0x158;
+ _gnapTruckSequenceId = 0x158;
break;
case 1:
- _s02_gnapTruckSequenceId = 0x159;
+ _gnapTruckSequenceId = 0x159;
break;
case 2:
- _s02_gnapTruckSequenceId = 0x157;
+ _gnapTruckSequenceId = 0x157;
break;
}
- _s02_truckGrillCtr = (_s02_truckGrillCtr + 1) % 3;
- _vm->_gameSys->insertSequence(_s02_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s02_gnapTruckSequenceId, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = _s02_gnapTruckSequenceId;
+ _truckGrillCtr = (_truckGrillCtr + 1) % 3;
+ _vm->_gameSys->insertSequence(_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = _gnapTruckSequenceId;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
break;
- case kASLeaveScene:
+ case kAS02LeaveScene:
_vm->_sceneDone = true;
break;
- case kASTalkChicken:
- _s02_nextChickenSequenceId = 0x14C;
+ case kAS02TalkChicken:
+ _nextChickenSequenceId = 0x14C;
break;
- case kASGrabChicken:
- _s02_nextChickenSequenceId = 0x150;
+ case kAS02GrabChicken:
+ _nextChickenSequenceId = 0x150;
_vm->_timers[2] = 100;
break;
- case kASGrabChickenDone:
+ case kAS02GrabChickenDone:
_vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _s02_currChickenSequenceId = 0x14B;
+ _currChickenSequenceId = 0x14B;
_vm->_gameSys->setAnimation(0x14B, 179, 2);
- _vm->_gameSys->insertSequence(_s02_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->_timers[5] = 30;
break;
- case kASUseTwigWithChicken:
+ case kAS02UseTwigWithChicken:
_vm->playGnapShowItem(5, 0, 0);
- _vm->_gameSys->insertSequence(0x155, 179, _s02_currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
- _s02_currChickenSequenceId = 0x155;
- _s02_nextChickenSequenceId = -1;
+ _vm->_gameSys->insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
+ _currChickenSequenceId = 0x155;
+ _nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
- case kASUseTruckNoKeysDone:
- case kASUseGasWithTruckDone:
+ case kAS02UseTruckNoKeysDone:
+ case kAS02UseGasWithTruckDone:
default:
_vm->_gnapActionStatus = -1;
break;
@@ -512,25 +512,25 @@ void Scene02::updateAnimations() {
}
if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_s02_nextChickenSequenceId == 0x150) {
- _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_s02_currChickenSequenceId, 179, true);
- _s02_nextChickenSequenceId = -1;
- _s02_currChickenSequenceId = -1;
- _vm->_gnapActionStatus = kASGrabChickenDone;
+ if (_nextChickenSequenceId == 0x150) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ _nextChickenSequenceId = -1;
+ _currChickenSequenceId = -1;
+ _vm->_gnapActionStatus = kAS02GrabChickenDone;
_vm->_timers[5] = 500;
- } else if (_s02_nextChickenSequenceId == 0x14C) {
- _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _s02_currChickenSequenceId = _s02_nextChickenSequenceId;
- _s02_nextChickenSequenceId = -1;
+ } else if (_nextChickenSequenceId == 0x14C) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
- } else if (_s02_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s02_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_s02_nextChickenSequenceId, 179, _s02_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _s02_currChickenSequenceId = _s02_nextChickenSequenceId;
- _s02_nextChickenSequenceId = -1;
+ } else if (_nextChickenSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
}
}
}
diff --git a/engines/gnap/scenes/scene02.h b/engines/gnap/scenes/scene02.h
index d9c341c..187f24d 100644
--- a/engines/gnap/scenes/scene02.h
+++ b/engines/gnap/scenes/scene02.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {}
private:
- int _s02_truckGrillCtr;
- int _s02_nextChickenSequenceId;
- int _s02_currChickenSequenceId;
- int _s02_gnapTruckSequenceId;
+ int _truckGrillCtr;
+ int _nextChickenSequenceId;
+ int _currChickenSequenceId;
+ int _gnapTruckSequenceId;
};
} // End of namespace Gnap
Commit: ffb93fa214ae0550a5afd571b9fe998dcb856fb7
https://github.com/scummvm/scummvm/commit/ffb93fa214ae0550a5afd571b9fe998dcb856fb7
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Prepare the merge of scene group 0 (WIP 2)
Changed paths:
engines/gnap/scenes/scene03.cpp
engines/gnap/scenes/scene03.h
engines/gnap/scenes/scene04.cpp
engines/gnap/scenes/scene04.h
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
index 2bcbe40..3c35ee3 100644
--- a/engines/gnap/scenes/scene03.cpp
+++ b/engines/gnap/scenes/scene03.cpp
@@ -27,36 +27,36 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSGrass = 1,
- kHSExitTruck = 2,
- kHSCreek = 3,
- kHSTrappedPlatypus = 4,
- kHSDevice = 5,
- kHSWalkAreas1 = 6,
- kHSWalkAreas2 = 7,
- kHSPlatypusWalkArea = 8,
- kHSWalkAreas3 = 9
+ kHS03Platypus = 0,
+ kHS03Grass = 1,
+ kHS03ExitTruck = 2,
+ kHS03Creek = 3,
+ kHS03TrappedPlatypus = 4,
+ kHS03Device = 5,
+ kHS03WalkAreas1 = 6,
+ kHS03WalkAreas2 = 7,
+ kHS03PlatypusWalkArea = 8,
+ kHS03WalkAreas3 = 9
};
enum {
- kASLeaveScene = 0,
- kASFreePlatypus = 1,
- kASHypnotizePlat = 2,
- kASHypnotizeScaredPlat = 3,
- kASFreePlatypusDone = 4,
- kASGrabPlatypus = 5,
- kASGrabCreek = 6,
- kASGrabCreekDone = 7,
- kASGrabScaredPlatypus = 8
+ kAS03LeaveScene = 0,
+ kAS03FreePlatypus = 1,
+ kAS03HypnotizePlat = 2,
+ kAS03HypnotizeScaredPlat= 3,
+ kAS03FreePlatypusDone = 4,
+ kAS03GrabPlatypus = 5,
+ kAS03GrabCreek = 6,
+ kAS03GrabCreekDone = 7,
+ kAS03GrabScaredPlatypus = 8
};
Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
- _s03_nextPlatSequenceId = -1;
- _s03_platypusScared = false;
- _s03_platypusHypnotized = false;
- _s03_nextFrogSequenceId = -1;
- _s03_currFrogSequenceId = -1;
+ _nextPlatSequenceId = -1;
+ _platypusScared = false;
+ _platypusHypnotized = false;
+ _nextFrogSequenceId = -1;
+ _currFrogSequenceId = -1;
}
int Scene03::init() {
@@ -67,24 +67,24 @@ int Scene03::init() {
}
void Scene03::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSGrass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- _vm->setHotspot(kHSExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
- _vm->setHotspot(kHSCreek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHSTrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
- _vm->setHotspot(kHSWalkAreas1, 0, 500, 300, 600);
- _vm->setHotspot(kHSWalkAreas2, 300, 447, 800, 600);
- _vm->setHotspot(kHSPlatypusWalkArea, 235, 0, 800, 600);
- _vm->setHotspot(kHSWalkAreas3, 0, 0, 800, 354);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS03Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS03Grass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHS03ExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
+ _vm->setHotspot(kHS03Creek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS03TrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
+ _vm->setHotspot(kHS03WalkAreas1, 0, 500, 300, 600);
+ _vm->setHotspot(kHS03WalkAreas2, 300, 447, 800, 600);
+ _vm->setHotspot(kHS03PlatypusWalkArea, 235, 0, 800, 600);
+ _vm->setHotspot(kHS03WalkAreas3, 0, 0, 800, 354);
+ _vm->setDeviceHotspot(kHS03Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspots[kHS03Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_vm->isFlag(kGFGrassTaken))
- _vm->_hotspots[kHSGrass]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS03Grass]._flags = SF_WALKABLE | SF_DISABLED;
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSTrappedPlatypus]._flags = SF_DISABLED;
- if (_vm->isFlag(kGFPlatypus) || _s03_platypusHypnotized)
- _vm->_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->_hotspots[kHS03TrappedPlatypus]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized)
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
_vm->_hotspotsCount = 10;
}
@@ -95,14 +95,14 @@ void Scene03::run() {
_vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
- _s03_platypusHypnotized = false;
+ _platypusHypnotized = false;
_vm->initGnapPos(3, 4, kDirBottomRight);
_vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
- _s03_currFrogSequenceId = 0x1C6;
- _s03_nextFrogSequenceId = -1;
+ _currFrogSequenceId = 0x1C6;
+ _nextFrogSequenceId = -1;
_vm->_gameSys->setAnimation(0x1C6, 253, 2);
_vm->_timers[6] = _vm->getRandom(20) + 30;
@@ -140,7 +140,7 @@ void Scene03::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSPlatypus:
+ case kHS03Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -169,7 +169,7 @@ void Scene03::run() {
}
break;
- case kHSGrass:
+ case kHS03Grass:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -185,7 +185,7 @@ void Scene03::run() {
_vm->playGnapUseDevice(0, 0);
_vm->_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x1B3, 253, 5);
- _vm->_hotspots[kHSGrass]._flags |= SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -196,15 +196,15 @@ void Scene03::run() {
}
break;
- case kHSExitTruck:
+ case kHS03ExitTruck:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
- _vm->_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
else
@@ -212,7 +212,7 @@ void Scene03::run() {
}
break;
- case kHSCreek:
+ case kHS03Creek:
if (_vm->_gnapActionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
@@ -223,11 +223,11 @@ void Scene03::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypusWalkArea]._flags |= SF_WALKABLE;
+ _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))
- _vm->_gnapActionStatus = kASGrabCreek;
+ _vm->_gnapActionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -238,7 +238,7 @@ void Scene03::run() {
}
break;
- case kHSTrappedPlatypus:
+ case kHS03TrappedPlatypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -250,27 +250,27 @@ void Scene03::run() {
_vm->playGnapScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- if (_s03_platypusHypnotized) {
+ if (_platypusHypnotized) {
_vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
- _vm->_gnapActionStatus = kASFreePlatypus;
+ _vm->_gnapActionStatus = kAS03FreePlatypus;
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- if (_s03_platypusScared)
- _vm->_gnapActionStatus = kASGrabScaredPlatypus;
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnapActionStatus = kASGrabPlatypus;
+ _vm->_gnapActionStatus = kAS03GrabPlatypus;
}
break;
case TALK_CURSOR:
- if (_s03_platypusHypnotized) {
+ if (_platypusHypnotized) {
_vm->playGnapBrainPulsating(8, 4);
} else {
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- if (_s03_platypusScared)
- _vm->_gnapActionStatus = kASHypnotizeScaredPlat;
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03HypnotizeScaredPlat;
else
- _vm->_gnapActionStatus = kASHypnotizePlat;
+ _vm->_gnapActionStatus = kAS03HypnotizePlat;
}
break;
case PLAT_CURSOR:
@@ -281,30 +281,30 @@ void Scene03::run() {
}
break;
- case kHSDevice:
+ case kHS03Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSWalkAreas1:
- case kHSWalkAreas2:
- case kHSWalkAreas3:
+ case kHS03WalkAreas1:
+ case kHS03WalkAreas2:
+ case kHS03WalkAreas3:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
- case kHSPlatypusWalkArea:
+ case kHS03PlatypusWalkArea:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatypus) || _s03_platypusHypnotized) {
+ if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
- if (_s03_platypusScared)
- _vm->_gnapActionStatus = kASGrabScaredPlatypus;
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnapActionStatus = kASGrabPlatypus;
+ _vm->_gnapActionStatus = kAS03GrabPlatypus;
}
}
break;
@@ -328,18 +328,18 @@ void Scene03::run() {
_vm->updatePlatypusIdleSequence();
if (_vm->_gnapActionStatus < 0)
_vm->updateGnapIdleSequence();
- if (!_vm->_timers[1] && !_s03_platypusScared) {
+ if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_s03_platypusHypnotized)
- _s03_nextPlatSequenceId = 450;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ _nextPlatSequenceId = 450;
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s03_nextFrogSequenceId == -1) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextFrogSequenceId == -1) {
if (_vm->getRandom(5) == 1)
- _s03_nextFrogSequenceId = 0x1C6;
+ _nextFrogSequenceId = 0x1C6;
else
- _s03_nextFrogSequenceId = 0x1C7;
+ _nextFrogSequenceId = 0x1C7;
}
}
if (!_vm->_timers[4]) {
@@ -377,13 +377,13 @@ void Scene03::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS03LeaveScene:
_vm->_sceneDone = true;
break;
- case kASFreePlatypus:
- _s03_nextPlatSequenceId = 0x1BC;
+ case kAS03FreePlatypus:
+ _nextPlatSequenceId = 0x1BC;
break;
- case kASFreePlatypusDone:
+ case kAS03FreePlatypusDone:
_vm->_gnapActionStatus = -1;
_vm->_platX = 6;
_vm->_platY = 6;
@@ -395,10 +395,10 @@ void Scene03::updateAnimations() {
_vm->_platypusSequenceDatNum = 1;
_vm->_platypusSequenceId = 0x7CA;
_vm->setFlag(kGFPlatypus);
- _s03_nextPlatSequenceId = -1;
+ _nextPlatSequenceId = -1;
updateHotspots();
break;
- case kASHypnotizePlat:
+ case kAS03HypnotizePlat:
_vm->playGnapBrainPulsating(0, 0);
_vm->addFullScreenSprite(0x106, 255);
_vm->_gameSys->setAnimation(0x1C9, 256, 1);
@@ -411,10 +411,10 @@ void Scene03::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x1BA;
_vm->_gnapActionStatus = -1;
- _s03_platypusHypnotized = true;
+ _platypusHypnotized = true;
updateHotspots();
break;
- case kASHypnotizeScaredPlat:
+ case kAS03HypnotizeScaredPlat:
_vm->playGnapBrainPulsating(0, 0);
_vm->_gameSys->insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_vm->_gameSys->setAnimation(0x1BF, 99, 1);
@@ -431,23 +431,23 @@ void Scene03::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x1BA;
_vm->_gnapActionStatus = -1;
- _s03_platypusHypnotized = true;
+ _platypusHypnotized = true;
updateHotspots();
break;
- case kASGrabPlatypus:
- _s03_nextPlatSequenceId = 0x1BD;
- _s03_platypusHypnotized = false;
+ case kAS03GrabPlatypus:
+ _nextPlatSequenceId = 0x1BD;
+ _platypusHypnotized = false;
break;
- case kASGrabScaredPlatypus:
- _s03_nextPlatSequenceId = 0x1C0;
- _s03_platypusHypnotized = false;
+ case kAS03GrabScaredPlatypus:
+ _nextPlatSequenceId = 0x1C0;
+ _platypusHypnotized = false;
break;
- case kASGrabCreek:
+ case kAS03GrabCreek:
_vm->_gameSys->insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x1B4, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x1B4;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASGrabCreekDone;
+ _vm->_gnapActionStatus = kAS03GrabCreekDone;
break;
default:
_vm->_gnapActionStatus = -1;
@@ -456,20 +456,20 @@ void Scene03::updateAnimations() {
}
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- if (_s03_nextPlatSequenceId == 0x1BD || _s03_nextPlatSequenceId == 0x1C0) {
+ if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
_vm->_gameSys->setAnimation(0, 0, 1);
- _s03_platypusScared = true;
+ _platypusScared = true;
_vm->_gameSys->insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s03_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x1B5;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapIdleFacing = kDirNone;
- _vm->_platypusSequenceId = _s03_nextPlatSequenceId;
+ _vm->_platypusSequenceId = _nextPlatSequenceId;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_s03_nextPlatSequenceId, 99, 1);
- _s03_nextPlatSequenceId = -1;
+ _vm->_gameSys->setAnimation(_nextPlatSequenceId, 99, 1);
+ _nextPlatSequenceId = -1;
_vm->_gnapActionStatus = -1;
- } else if (_s03_nextPlatSequenceId == 0x1BC) {
+ } else if (_nextPlatSequenceId == 0x1BC) {
_vm->_gnapX = 3;
_vm->_gnapY = 6;
_vm->_gameSys->insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -479,30 +479,30 @@ void Scene03::updateAnimations() {
_vm->_gnapSequenceId = 0x1B6;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapIdleFacing = kDirNone;
- _vm->_gnapActionStatus = kASFreePlatypusDone;
- _s03_nextPlatSequenceId = -1;
- } else if (_s03_nextPlatSequenceId == 0x1C2 && !_s03_platypusScared) {
+ _vm->_gnapActionStatus = kAS03FreePlatypusDone;
+ _nextPlatSequenceId = -1;
+ } else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_gameSys->insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0x1C2;
_vm->_platypusSequenceDatNum = 0;
_vm->_gameSys->setAnimation(0x1C2, 99, 1);
- _s03_nextPlatSequenceId = -1;
- } else if (_s03_nextPlatSequenceId == -1 && _s03_platypusScared && !_s03_platypusHypnotized) {
+ _nextPlatSequenceId = -1;
+ } else if (_nextPlatSequenceId == -1 && _platypusScared && !_platypusHypnotized) {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_gameSys->setAnimation(0x1BE, 99, 1);
_vm->_gameSys->insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0x1BE;
_vm->_platypusSequenceDatNum = 0;
- _s03_nextPlatSequenceId = -1;
+ _nextPlatSequenceId = -1;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s03_nextFrogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s03_nextFrogSequenceId, 253, 2);
- _vm->_gameSys->insertSequence(_s03_nextFrogSequenceId, 253, _s03_currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
- _s03_currFrogSequenceId = _s03_nextFrogSequenceId;
- _s03_nextFrogSequenceId = -1;
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextFrogSequenceId, 253, 2);
+ _vm->_gameSys->insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
+ _currFrogSequenceId = _nextFrogSequenceId;
+ _nextFrogSequenceId = -1;
}
if (_vm->_gameSys->getAnimationStatus(5) == 2) {
diff --git a/engines/gnap/scenes/scene03.h b/engines/gnap/scenes/scene03.h
index e8a7ccf..aac06cc 100644
--- a/engines/gnap/scenes/scene03.h
+++ b/engines/gnap/scenes/scene03.h
@@ -42,11 +42,11 @@ public:
virtual void updateAnimationsCb() {}
private:
- bool _s03_platypusHypnotized;
- bool _s03_platypusScared;
- int _s03_nextPlatSequenceId;
- int _s03_nextFrogSequenceId;
- int _s03_currFrogSequenceId;
+ bool _platypusHypnotized;
+ bool _platypusScared;
+ int _nextPlatSequenceId;
+ int _nextFrogSequenceId;
+ int _currFrogSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
index 299656c..d61ceac 100644
--- a/engines/gnap/scenes/scene04.cpp
+++ b/engines/gnap/scenes/scene04.cpp
@@ -28,38 +28,38 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSTwig = 1,
- kHSDog = 2,
- kHSAxe = 3,
- kHSDoor = 4,
- kHSExitTruck = 5,
- kHSDevice = 6,
- kHSWindow = 7,
- kHSExitBarn = 8,
- kHSWalkArea1 = 9,
- kHSWalkArea2 = 10
+ kHS04Platypus = 0,
+ kHS04Twig = 1,
+ kHS04Dog = 2,
+ kHS04Axe = 3,
+ kHS04Door = 4,
+ kHS04ExitTruck = 5,
+ kHS04Device = 6,
+ kHS04Window = 7,
+ kHS04ExitBarn = 8,
+ kHS04WalkArea1 = 9,
+ kHS04WalkArea2 = 10
};
enum {
- kASOpenDoor = 1,
- kASGetKeyFirst = 2,
- kASGetKeyAnother = 3,
- kASLeaveScene = 4,
- kASGetKeyFirstDone = 6,
- kASGetKeyFirst2 = 7,
- kASGetKeyAnother2 = 8,
- kASGetKeyAnotherDone = 9,
- kASOpenDoorDone = 10,
- kASGrabDog = 12,
- kASGrabAxe = 13
+ kAS04OpenDoor = 1,
+ kAS04GetKeyFirst = 2,
+ kAS04GetKeyAnother = 3,
+ kAS04LeaveScene = 4,
+ kAS04GetKeyFirstDone = 6,
+ kAS04GetKeyFirst2 = 7,
+ kAS04GetKeyAnother2 = 8,
+ kAS04GetKeyAnotherDone = 9,
+ kAS04OpenDoorDone = 10,
+ kAS04GrabDog = 12,
+ kAS04GrabAxe = 13
};
Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
- _s04_dogIdCtr = 0;
- _s04_triedWindow = false;
- _s04_nextDogSequenceId = -1;
- _s04_currDogSequenceId = -1;
+ _dogIdCtr = 0;
+ _triedWindow = false;
+ _nextDogSequenceId = -1;
+ _currDogSequenceId = -1;
}
int Scene04::init() {
@@ -70,23 +70,23 @@ int Scene04::init() {
}
void Scene04::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSTwig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- _vm->setHotspot(kHSDog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHSAxe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHSDoor, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHSExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSWindow, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHSExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 562, 461);
- _vm->setHotspot(kHSWalkArea2, 562, 0, 800, 500);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS04Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS04Twig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHS04Dog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS04Axe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS04Door, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS04ExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS04Window, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS04ExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
+ _vm->setHotspot(kHS04WalkArea1, 0, 0, 562, 461);
+ _vm->setHotspot(kHS04WalkArea2, 562, 0, 800, 500);
+ _vm->setDeviceHotspot(kHS04Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspots[kHS04Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_vm->isFlag(kGFTwigTaken))
- _vm->_hotspots[kHSTwig]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS04Twig]._flags = SF_WALKABLE | SF_DISABLED;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant) || _vm->_cursorValue == 1)
- _vm->_hotspots[kHSAxe]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS04Axe]._flags = SF_DISABLED;
_vm->_hotspotsCount = 11;
}
@@ -94,13 +94,13 @@ void Scene04::run() {
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(4);
- _vm->_gameSys->insertSequence(0x210, 139 - _s04_dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x210, 139 - _dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
- _s04_currDogSequenceId = 0x210;
- _s04_nextDogSequenceId = -1;
+ _currDogSequenceId = 0x210;
+ _nextDogSequenceId = -1;
- _vm->_gameSys->setAnimation(0x210, 139 - _s04_dogIdCtr, 3);
- _s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
+ _vm->_gameSys->setAnimation(0x210, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_vm->_timers[5] = _vm->getRandom(150) + 300;
_vm->_timers[7] = _vm->getRandom(150) + 200;
@@ -174,14 +174,14 @@ void Scene04::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS04Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSPlatypus:
+ case kHS04Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -213,7 +213,7 @@ void Scene04::run() {
}
break;
- case kHSTwig:
+ case kHS04Twig:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
@@ -237,7 +237,7 @@ void Scene04::run() {
}
break;
- case kHSAxe:
+ case kHS04Axe:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
@@ -249,7 +249,7 @@ void Scene04::run() {
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabAxe;
+ _vm->_gnapActionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
break;
@@ -262,7 +262,7 @@ void Scene04::run() {
}
break;
- case kHSDog:
+ case kHS04Dog:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
@@ -271,19 +271,19 @@ void Scene04::run() {
case LOOK_CURSOR:
if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
- _s04_nextDogSequenceId = 0x20F;
+ _nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kASGrabDog;
+ _vm->_gnapActionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
_vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
- _s04_nextDogSequenceId = 0x20E;
+ _nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
@@ -294,7 +294,7 @@ void Scene04::run() {
}
break;
- case kHSDoor:
+ case kHS04Door:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
@@ -307,13 +307,13 @@ void Scene04::run() {
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASOpenDoor;
+ _vm->_gnapActionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
_vm->_gnapIdleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
break;
@@ -325,11 +325,11 @@ void Scene04::run() {
}
break;
- case kHSExitTruck:
+ case kHS04ExitTruck:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -339,7 +339,7 @@ void Scene04::run() {
}
break;
- case kHSWindow:
+ case kHS04Window:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
@@ -349,11 +349,11 @@ void Scene04::run() {
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 (_s04_triedWindow) {
- _vm->_gnapActionStatus = kASGetKeyAnother;
+ if (_triedWindow) {
+ _vm->_gnapActionStatus = kAS04GetKeyAnother;
} else {
- _vm->_gnapActionStatus = kASGetKeyFirst;
- _s04_triedWindow = true;
+ _vm->_gnapActionStatus = kAS04GetKeyFirst;
+ _triedWindow = true;
}
}
break;
@@ -369,11 +369,11 @@ void Scene04::run() {
}
break;
- case kHSExitBarn:
+ case kHS04ExitBarn:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
@@ -383,8 +383,8 @@ void Scene04::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
+ case kHS04WalkArea1:
+ case kHS04WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -419,8 +419,8 @@ void Scene04::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 60;
- if (_s04_nextDogSequenceId == -1)
- _s04_nextDogSequenceId = 0x210;
+ if (_nextDogSequenceId == -1)
+ _nextDogSequenceId = 0x210;
}
if (!_vm->_timers[8]) {
_vm->_timers[8] = _vm->getRandom(150) + 400;
@@ -445,10 +445,10 @@ void Scene04::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS04LeaveScene:
_vm->_sceneDone = true;
break;
- case kASOpenDoor:
+ case kAS04OpenDoor:
_vm->_gameSys->insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
_vm->_gnapX = 6;
@@ -459,29 +459,29 @@ void Scene04::updateAnimations() {
_vm->_gameSys->setAnimation(0x107B5, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gnapActionStatus = kASOpenDoorDone;
+ _vm->_gnapActionStatus = kAS04OpenDoorDone;
break;
- case kASOpenDoorDone:
+ case kAS04OpenDoorDone:
_vm->_gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
- case kASGetKeyFirst:
+ case kAS04GetKeyFirst:
_vm->_gameSys->insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x204, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x204;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASGetKeyFirst2;
+ _vm->_gnapActionStatus = kAS04GetKeyFirst2;
break;
- case kASGetKeyFirst2:
+ case kAS04GetKeyFirst2:
_vm->_gameSys->insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->setAnimation(0x20B, 256, 0);
_vm->_gnapSequenceId = 0x206;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASGetKeyFirstDone;
+ _vm->_gnapActionStatus = kAS04GetKeyFirstDone;
break;
- case kASGetKeyFirstDone:
+ case kAS04GetKeyFirstDone:
_vm->_gameSys->requestRemoveSequence(0x1FF, 256);
_vm->_gameSys->requestRemoveSequence(0x20B, 256);
_vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
@@ -492,23 +492,23 @@ void Scene04::updateAnimations() {
_vm->_gnapSequenceDatNum = 1;
_vm->_gnapActionStatus = -1;
break;
- case kASGetKeyAnother:
+ case kAS04GetKeyAnother:
_vm->_gameSys->insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0x202, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x202;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASGetKeyAnother2;
+ _vm->_gnapActionStatus = kAS04GetKeyAnother2;
break;
- case kASGetKeyAnother2:
+ case kAS04GetKeyAnother2:
_vm->_gameSys->insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->setAnimation(0x20A, 256, 0);
_vm->_gnapSequenceId = 0x203;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASGetKeyAnotherDone;
+ _vm->_gnapActionStatus = kAS04GetKeyAnotherDone;
break;
- case kASGetKeyAnotherDone:
+ case kAS04GetKeyAnotherDone:
_vm->_gameSys->removeSequence(0x1FF, 256, true);
_vm->_gameSys->removeSequence(0x20A, 256, true);
_vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
@@ -519,10 +519,10 @@ void Scene04::updateAnimations() {
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->_gnapActionStatus = -1;
break;
- case kASGrabDog:
- _s04_nextDogSequenceId = 0x201;
+ case kAS04GrabDog:
+ _nextDogSequenceId = 0x201;
break;
- case kASGrabAxe:
+ case kAS04GrabAxe:
_vm->_gameSys->insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->requestRemoveSequence(0x212, 100);
_vm->_gnapSequenceDatNum = 0;
@@ -544,27 +544,27 @@ void Scene04::updateAnimations() {
}
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_s04_nextDogSequenceId == 0x201) {
- _vm->_gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
- _s04_currDogSequenceId, 139 - (_s04_dogIdCtr + 1) % 2,
+ if (_nextDogSequenceId == 0x201) {
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
- _s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
- _s04_currDogSequenceId = 0x201;
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
+ _currDogSequenceId = 0x201;
_vm->_gnapSequenceId = 0x200;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
_vm->_timers[6] = _vm->getRandom(20) + 60;
- _s04_nextDogSequenceId = -1;
- } else if (_s04_nextDogSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr,
- _s04_currDogSequenceId, 139 - (_s04_dogIdCtr + 1) % 2,
+ _nextDogSequenceId = -1;
+ } else if (_nextDogSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s04_nextDogSequenceId, 139 - _s04_dogIdCtr, 3);
- _s04_dogIdCtr = (_s04_dogIdCtr + 1) % 2;
- _s04_currDogSequenceId = _s04_nextDogSequenceId;
- _s04_nextDogSequenceId = -1;
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = -1;
}
}
}
diff --git a/engines/gnap/scenes/scene04.h b/engines/gnap/scenes/scene04.h
index 519799b..10b6964 100644
--- a/engines/gnap/scenes/scene04.h
+++ b/engines/gnap/scenes/scene04.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {}
private:
- bool _s04_triedWindow;
- int _s04_dogIdCtr;
- int _s04_nextDogSequenceId;
- int _s04_currDogSequenceId;
+ bool _triedWindow;
+ int _dogIdCtr;
+ int _nextDogSequenceId;
+ int _currDogSequenceId;
};
} // End of namespace Gnap
Commit: 9fc9de7882b04c633d6b551ef5ea437ecade26cd
https://github.com/scummvm/scummvm/commit/9fc9de7882b04c633d6b551ef5ea437ecade26cd
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T09:54:21+02:00
Commit Message:
GNAP: Prepare the merge of scene group 0 (WIP 3)
Changed paths:
engines/gnap/scenes/scene05.cpp
engines/gnap/scenes/scene05.h
engines/gnap/scenes/scene06.cpp
engines/gnap/scenes/scene06.h
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
index f28a37d..8046465 100644
--- a/engines/gnap/scenes/scene05.cpp
+++ b/engines/gnap/scenes/scene05.cpp
@@ -28,33 +28,33 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSHaystack = 1,
- kHSPadlock = 2,
- kHSLadder = 3,
- kHSExitHouse = 4,
- kHSChicken = 5,
- kHSDevice = 6,
- kHSWalkArea1 = 7,
- kHSWalkArea2 = 8,
- kHSWalkArea3 = 9
+ kHS05Platypus = 0,
+ kHS05Haystack = 1,
+ kHS05Padlock = 2,
+ kHS05Ladder = 3,
+ kHS05ExitHouse = 4,
+ kHS05Chicken = 5,
+ kHS05Device = 6,
+ kHS05WalkArea1 = 7,
+ kHS05WalkArea2 = 8,
+ kHS05WalkArea3 = 9
};
enum {
- kASPlatSearchHaystack = 0,
- kASTryPickPadlock = 1,
- kASPickPadlock = 2,
- kASTalkChicken = 3,
- kASGrabChicken = 4,
- kASGrabLadder = 5,
- kASEnterBarn = 6,
- kASUseTwigWithChicken = 11,
- kASLeaveScene = 12
+ kAS05PlatSearchHaystack = 0,
+ kAS05TryPickPadlock = 1,
+ kAS05PickPadlock = 2,
+ kAS05TalkChicken = 3,
+ kAS05GrabChicken = 4,
+ kAS05GrabLadder = 5,
+ kAS05EnterBarn = 6,
+ kAS05UseTwigWithChicken = 11,
+ kAS05LeaveScene = 12
};
Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
- _s05_nextChickenSequenceId = -1;
- _s05_currChickenSequenceId = -1;
+ _nextChickenSequenceId = -1;
+ _currChickenSequenceId = -1;
}
int Scene05::init() {
@@ -65,20 +65,20 @@ int Scene05::init() {
}
void Scene05::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSHaystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHSPadlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHSLadder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHSChicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSWalkArea1, 104, 0, 421, 480);
- _vm->setHotspot(kHSWalkArea2, 422, 0, 800, 487);
- _vm->setHotspot(kHSWalkArea3, 0, 0, 104, 499);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS05Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS05Haystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS05Padlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS05Ladder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS05ExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS05Chicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS05WalkArea1, 104, 0, 421, 480);
+ _vm->setHotspot(kHS05WalkArea2, 422, 0, 800, 487);
+ _vm->setHotspot(kHS05WalkArea3, 0, 0, 104, 499);
+ _vm->setDeviceHotspot(kHS05Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspots[kHS05Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_hotspots[kHSPadlock]._flags = SF_EXIT_U_CURSOR;
+ _vm->_hotspots[kHS05Padlock]._flags = SF_EXIT_U_CURSOR;
_vm->_hotspotsCount = 10;
}
@@ -86,11 +86,11 @@ void Scene05::run() {
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
- _s05_currChickenSequenceId = 0x142;
+ _currChickenSequenceId = 0x142;
_vm->_gameSys->setAnimation(0x142, 100, 3);
_vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
- _s05_nextChickenSequenceId = -1;
+ _nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(10) + 30;
_vm->_timers[6] = _vm->getRandom(150) + 300;
@@ -125,14 +125,14 @@ void Scene05::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS05Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSPlatypus:
+ case kHS05Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -161,7 +161,7 @@ void Scene05::run() {
}
break;
- case kHSHaystack:
+ case kHS05Haystack:
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
@@ -180,7 +180,7 @@ void Scene05::run() {
if (_vm->isFlag(kGFPlatypus)) {
_vm->gnapUseDeviceOnPlatypuss();
if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
- _vm->_platypusActionStatus = kASPlatSearchHaystack;
+ _vm->_platypusActionStatus = kAS05PlatSearchHaystack;
_vm->_platypusFacing = kDirUnk4;
}
if (_vm->_gnapX == 4 && (_vm->_gnapY == 8 || _vm->_gnapY == 7))
@@ -193,13 +193,13 @@ void Scene05::run() {
}
break;
- case kHSChicken:
+ case kHS05Chicken:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASUseTwigWithChicken;
+ _vm->_gnapActionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
} else {
@@ -210,12 +210,12 @@ void Scene05::run() {
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabChicken;
+ _vm->_gnapActionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkChicken;
+ _vm->_gnapActionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -225,7 +225,7 @@ void Scene05::run() {
}
break;
- case kHSLadder:
+ case kHS05Ladder:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
@@ -237,7 +237,7 @@ void Scene05::run() {
case GRAB_CURSOR:
_vm->_gnapIdleFacing = kDirBottomLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabLadder;
+ _vm->_gnapActionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -248,11 +248,11 @@ void Scene05::run() {
}
break;
- case kHSPadlock:
+ case kHS05Padlock:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
- _vm->_gnapActionStatus = kASEnterBarn;
+ _vm->_gnapActionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
else
@@ -261,7 +261,7 @@ void Scene05::run() {
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->_gnapActionStatus = kASPickPadlock;
+ _vm->_gnapActionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
@@ -273,7 +273,7 @@ void Scene05::run() {
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTryPickPadlock;
+ _vm->_gnapActionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -284,11 +284,11 @@ void Scene05::run() {
}
break;
- case kHSExitHouse:
+ case kHS05ExitHouse:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -298,13 +298,13 @@ void Scene05::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
+ case kHS05WalkArea1:
+ case kHS05WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
- case kHSWalkArea3:
+ case kHS05WalkArea3:
// Nothing
break;
@@ -328,11 +328,11 @@ void Scene05::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus != kASTalkChicken && _s05_nextChickenSequenceId == -1) {
+ if (_vm->_gnapActionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
if (_vm->getRandom(4) != 0)
- _s05_nextChickenSequenceId = 0x142;
+ _nextChickenSequenceId = 0x142;
else
- _s05_nextChickenSequenceId = 0x143;
+ _nextChickenSequenceId = 0x143;
}
}
if (!_vm->_timers[6]) {
@@ -360,17 +360,17 @@ void Scene05::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS05LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
- case kASTryPickPadlock:
+ case kAS05TryPickPadlock:
_vm->_gameSys->insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x148;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
break;
- case kASPickPadlock:
+ case kAS05PickPadlock:
_vm->_gameSys->setAnimation(0x147, _vm->_gnapId, 0);
_vm->_gameSys->insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x147;
@@ -381,16 +381,16 @@ void Scene05::updateAnimations() {
_vm->_newSceneNum = 6;
_vm->_timers[2] = 100;
_vm->invRemove(kItemNeedle);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS05LeaveScene;
break;
- case kASTalkChicken:
- _s05_nextChickenSequenceId = 0x144;
+ case kAS05TalkChicken:
+ _nextChickenSequenceId = 0x144;
_vm->_gnapActionStatus = -1;
break;
- case kASGrabChicken:
- _s05_nextChickenSequenceId = 0x14B;
+ case kAS05GrabChicken:
+ _nextChickenSequenceId = 0x14B;
break;
- case kASGrabLadder:
+ case kAS05GrabLadder:
while (_vm->_gameSys->isSequenceActive(0x149, 39))
_vm->gameUpdateTick();
_vm->_gameSys->insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
@@ -401,16 +401,16 @@ void Scene05::updateAnimations() {
_vm->_timers[6] = 300;
_vm->_gnapActionStatus = -1;
break;
- case kASEnterBarn:
+ case kAS05EnterBarn:
_vm->_gameSys->insertSequence(0x107B1, 1,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gameSys->setAnimation(0x107B1, 1, 0);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS05LeaveScene;
break;
- case kASUseTwigWithChicken:
+ case kAS05UseTwigWithChicken:
_vm->playGnapShowItem(5, 0, 0);
- _s05_nextChickenSequenceId = 0x14F;
+ _nextChickenSequenceId = 0x14F;
_vm->_gnapActionStatus = -1;
break;
}
@@ -431,7 +431,7 @@ void Scene05::updateAnimations() {
_vm->_timers[1] = 30;
_vm->_platypusActionStatus = -1;
}
- if (_vm->_platypusActionStatus == kASPlatSearchHaystack) {
+ if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_gameSys->insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
@@ -445,20 +445,20 @@ void Scene05::updateAnimations() {
}
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_s05_nextChickenSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ if (_nextChickenSequenceId == 0x14B) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x14C;
- _s05_currChickenSequenceId = _s05_nextChickenSequenceId;
- _s05_nextChickenSequenceId = -1;
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
- } else if (_s05_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s05_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s05_nextChickenSequenceId, 100, _s05_currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s05_currChickenSequenceId = _s05_nextChickenSequenceId;
- _s05_nextChickenSequenceId = -1;
+ } else if (_nextChickenSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
}
}
}
diff --git a/engines/gnap/scenes/scene05.h b/engines/gnap/scenes/scene05.h
index 083abe5..a3be46b 100644
--- a/engines/gnap/scenes/scene05.h
+++ b/engines/gnap/scenes/scene05.h
@@ -42,8 +42,8 @@ public:
virtual void updateAnimationsCb() {}
private:
- int _s05_nextChickenSequenceId;
- int _s05_currChickenSequenceId;
+ int _nextChickenSequenceId;
+ int _currChickenSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
index 3bd79fd..aae5125 100644
--- a/engines/gnap/scenes/scene06.cpp
+++ b/engines/gnap/scenes/scene06.cpp
@@ -28,33 +28,33 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSGas = 1,
- kHSLadder = 2,
- kHSHorse = 3,
- kHSExitOutsideBarn = 4,
- kHSDevice = 5,
- kHSWalkArea1 = 6,
- kHSWalkArea2 = 7,
- kHSWalkArea3 = 8,
- kHSWalkArea4 = 9,
- kHSWalkArea5 = 10
+ kHS06Platypus = 0,
+ kHS06Gas = 1,
+ kHS06Ladder = 2,
+ kHS06Horse = 3,
+ kHS06ExitOutsideBarn = 4,
+ kHS06Device = 5,
+ kHS06WalkArea1 = 6,
+ kHS06WalkArea2 = 7,
+ kHS06WalkArea3 = 8,
+ kHS06WalkArea4 = 9,
+ kHS06WalkArea5 = 10
};
enum {
- kASTryToGetGas = 0,
- kASTryToClimbLadder = 1,
- kASTryToClimbLadderDone = 2,
- kASTalkToHorse = 3,
- kASUseTwigOnHorse = 4,
- kASLeaveScene = 5
+ kAS06TryToGetGas = 0,
+ kAS06TryToClimbLadder = 1,
+ kAS06TryToClimbLadderDone = 2,
+ kAS06TalkToHorse = 3,
+ kAS06UseTwigOnHorse = 4,
+ kAS06LeaveScene = 5
};
Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
- _s06_horseTurnedBack = false;;
- _s06_nextPlatSequenceId = -1;
- _s06_nextHorseSequenceId = -1;
- _s06_currHorseSequenceId = -1;
+ _horseTurnedBack = false;;
+ _nextPlatSequenceId = -1;
+ _nextHorseSequenceId = -1;
+ _currHorseSequenceId = -1;
}
int Scene06::init() {
@@ -69,22 +69,22 @@ int Scene06::init() {
}
void Scene06::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSGas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSLadder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHSHorse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 200, 515);
- _vm->setHotspot(kHSWalkArea2, 200, 0, 285, 499);
- _vm->setHotspot(kHSWalkArea3, 688, 0, 800, 499);
- _vm->setHotspot(kHSWalkArea4, 475, 469, 800, 505);
- _vm->setHotspot(kHSWalkArea5, 0, 0, 800, 504);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS06Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS06Gas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS06Ladder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS06Horse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS06ExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHS06WalkArea1, 0, 0, 200, 515);
+ _vm->setHotspot(kHS06WalkArea2, 200, 0, 285, 499);
+ _vm->setHotspot(kHS06WalkArea3, 688, 0, 800, 499);
+ _vm->setHotspot(kHS06WalkArea4, 475, 469, 800, 505);
+ _vm->setHotspot(kHS06WalkArea5, 0, 0, 800, 504);
+ _vm->setDeviceHotspot(kHS06Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFGasTaken))
- _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
if (_vm->_cursorValue == 4) {
- _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
- _vm->_hotspots[kHSGas]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS06Gas]._flags = SF_DISABLED;
}
_vm->_hotspotsCount = 11;
}
@@ -94,11 +94,11 @@ void Scene06::run() {
_vm->startSoundTimerC(7);
- _s06_horseTurnedBack = false;
+ _horseTurnedBack = false;
_vm->_gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
- _s06_currHorseSequenceId = 0xF1;
- _s06_nextHorseSequenceId = -1;
+ _currHorseSequenceId = 0xF1;
+ _nextHorseSequenceId = -1;
_vm->_gameSys->setAnimation(0xF1, 120, 2);
_vm->_timers[4] = _vm->getRandom(40) + 25;
@@ -130,14 +130,14 @@ void Scene06::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS06Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case kHSPlatypus:
+ case kHS06Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
@@ -166,7 +166,7 @@ void Scene06::run() {
}
break;
- case kHSGas:
+ case kHS06Gas:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
@@ -179,10 +179,10 @@ void Scene06::run() {
if (_vm->isFlag(kGFUnk04)) {
_vm->playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
- _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
- _vm->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASTryToGetGas;
+ _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
_vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
@@ -200,7 +200,7 @@ void Scene06::run() {
}
break;
- case kHSLadder:
+ case kHS06Ladder:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
@@ -214,7 +214,7 @@ void Scene06::run() {
_vm->playGnapImpossible(0, 0);
else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASTryToClimbLadder;
+ _vm->_gnapActionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
break;
@@ -227,16 +227,16 @@ void Scene06::run() {
}
break;
- case kHSHorse:
+ case kHS06Horse:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemTwig && _s06_horseTurnedBack) {
- _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
+ _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _vm->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnapIdleFacing = kDirUpLeft;
_vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
_vm->_platypusFacing = kDirNone;
- _vm->_gnapActionStatus = kASUseTwigOnHorse;
+ _vm->_gnapActionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
@@ -246,14 +246,14 @@ void Scene06::run() {
_vm->playGnapScratchingHead(3, 2);
break;
case TALK_CURSOR:
- if (_s06_horseTurnedBack) {
+ if (_horseTurnedBack) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
_vm->_gnapIdleFacing = kDirBottomLeft;
- _vm->_hotspots[kHSWalkArea5]._flags |= SF_WALKABLE;
+ _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->_hotspots[kHSWalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASTalkToHorse;
+ _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS06TalkToHorse;
}
break;
case GRAB_CURSOR:
@@ -265,11 +265,11 @@ void Scene06::run() {
}
break;
- case kHSExitOutsideBarn:
+ case kHS06ExitOutsideBarn:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -277,11 +277,11 @@ void Scene06::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
+ case kHS06WalkArea1:
+ case kHS06WalkArea2:
+ case kHS06WalkArea3:
+ case kHS06WalkArea4:
+ case kHS06WalkArea5:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -304,21 +304,21 @@ void Scene06::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s06_nextHorseSequenceId == -1) {
- if (_s06_horseTurnedBack) {
- _s06_nextHorseSequenceId = 0xF5;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (_horseTurnedBack) {
+ _nextHorseSequenceId = 0xF5;
} else {
switch (_vm->getRandom(5)) {
case 0:
case 1:
case 2:
- _s06_nextHorseSequenceId = 0xF1;
+ _nextHorseSequenceId = 0xF1;
break;
case 3:
- _s06_nextHorseSequenceId = 0xF3;
+ _nextHorseSequenceId = 0xF3;
break;
case 4:
- _s06_nextHorseSequenceId = 0xF4;
+ _nextHorseSequenceId = 0xF4;
break;
}
}
@@ -343,34 +343,34 @@ void Scene06::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS06LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
- case kASTryToGetGas:
+ case kAS06TryToGetGas:
_vm->_gameSys->insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xFC;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
break;
- case kASTryToClimbLadder:
+ case kAS06TryToClimbLadder:
_vm->_gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(0xFD, _vm->_gnapId, 0);
_vm->_gameSys->insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xFD;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASTryToClimbLadderDone;
+ _vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
break;
- case kASTryToClimbLadderDone:
+ case kAS06TryToClimbLadderDone:
_vm->_gnapX = 6;
_vm->_gnapY = 7;
_vm->_gnapActionStatus = -1;
break;
- case kASTalkToHorse:
- _s06_nextHorseSequenceId = 0xF6;
+ case kAS06TalkToHorse:
+ _nextHorseSequenceId = 0xF6;
break;
- case kASUseTwigOnHorse:
- _s06_nextPlatSequenceId = 0xFB;
+ case kAS06UseTwigOnHorse:
+ _nextPlatSequenceId = 0xFB;
break;
default:
_vm->_gnapActionStatus = -1;
@@ -384,7 +384,7 @@ void Scene06::updateAnimations() {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->invAdd(kItemGas);
_vm->setFlag(kGFGasTaken);
- _vm->_hotspots[kHSLadder]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
_vm->setGrabCursorSprite(kItemGas);
_vm->_platypusActionStatus = -1;
_vm->_platX = 6;
@@ -396,20 +396,20 @@ void Scene06::updateAnimations() {
_vm->_gnapActionStatus = -1;
_vm->showCursor();
}
- if (_s06_nextPlatSequenceId == 0xFB) {
+ if (_nextPlatSequenceId == 0xFB) {
_vm->_gameSys->setAnimation(0, 0, 1);
- _s06_nextHorseSequenceId = 0xF2;
+ _nextHorseSequenceId = 0xF2;
_vm->_platypusActionStatus = 6;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s06_nextHorseSequenceId != -1) {
- switch (_s06_nextHorseSequenceId) {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
+ switch (_nextHorseSequenceId) {
case 0xF2:
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
_vm->_gameSys->setAnimation(0xFA, 256, 1);
- _vm->_gameSys->insertSequence(0xF2, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
@@ -420,24 +420,24 @@ void Scene06::updateAnimations() {
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B7;
_vm->_gnapSequenceDatNum = 1;
- _s06_currHorseSequenceId = _s06_nextHorseSequenceId;
- _s06_nextHorseSequenceId = -1;
- _s06_nextPlatSequenceId = -1;
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
+ _nextPlatSequenceId = -1;
_vm->invRemove(kItemTwig);
break;
case 0xF6:
- _vm->_gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(0xF6, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _s06_horseTurnedBack = true;
- _s06_currHorseSequenceId = _s06_nextHorseSequenceId;
- _s06_nextHorseSequenceId = -1;
+ _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(0xF6, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _horseTurnedBack = true;
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
default:
- _vm->_gameSys->setAnimation(_s06_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(_s06_nextHorseSequenceId, 120, _s06_currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _s06_currHorseSequenceId = _s06_nextHorseSequenceId;
- _s06_nextHorseSequenceId = -1;
+ _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(_nextHorseSequenceId, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
break;
}
}
diff --git a/engines/gnap/scenes/scene06.h b/engines/gnap/scenes/scene06.h
index 1f15be5..ff6ff9f 100644
--- a/engines/gnap/scenes/scene06.h
+++ b/engines/gnap/scenes/scene06.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb() {}
private:
- bool _s06_horseTurnedBack;
- int _s06_nextPlatSequenceId;
- int _s06_nextHorseSequenceId;
- int _s06_currHorseSequenceId;
+ bool _horseTurnedBack;
+ int _nextPlatSequenceId;
+ int _nextHorseSequenceId;
+ int _currHorseSequenceId;
};
} // End of namespace Gnap
Commit: 0a1c36a26b6fb824f0dd862b05a5fa6dae0b3435
https://github.com/scummvm/scummvm/commit/0a1c36a26b6fb824f0dd862b05a5fa6dae0b3435
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:38+02:00
Commit Message:
GNAP: Prepare the merge of scene group 0 (End)
Changed paths:
engines/gnap/datarchive.cpp
engines/gnap/scenes/scene07.cpp
engines/gnap/scenes/scene08.cpp
engines/gnap/scenes/scene08.h
engines/gnap/scenes/scene09.cpp
engines/gnap/scenes/scene09.h
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index a2de0b3..0eb6601 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -83,6 +83,7 @@ DatManager::~DatManager() {
void DatManager::open(int index, const char *filename) {
close(index);
_datArchives[index] = new DatArchive(filename);
+ warning("Loading %s - %d", filename, index);
}
void DatManager::close(int index) {
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
index 244e901..41ddf4c 100644
--- a/engines/gnap/scenes/scene07.cpp
+++ b/engines/gnap/scenes/scene07.cpp
@@ -29,18 +29,18 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSExitHouse = 1,
- kHSDice = 2,
- kHSDevice = 3,
- kHSWalkArea1 = 4,
- kHSWalkArea2 = 5,
- kHSWalkArea3 = 6
+ kHS07Platypus = 0,
+ kHS07ExitHouse = 1,
+ kHS07Dice = 2,
+ kHS07Device = 3,
+ kHS07WalkArea1 = 4,
+ kHS07WalkArea2 = 5,
+ kHS07WalkArea3 = 6
};
enum {
- kASWait = 0,
- kASLeaveScene = 1
+ kAS07Wait = 0,
+ kAS07LeaveScene = 1
};
Scene07::Scene07(GnapEngine *vm) : Scene(vm) {
@@ -51,15 +51,15 @@ int Scene07::init() {
}
void Scene07::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
- _vm->setHotspot(kHSDice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 325, 445);
- _vm->setHotspot(kHSWalkArea2, 325, 0, 799, 445, _vm->_isLeavingScene ? SF_WALKABLE : SF_NONE);
- _vm->setHotspot(kHSWalkArea3, 160, 0, 325, 495);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS07Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS07ExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
+ _vm->setHotspot(kHS07Dice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS07WalkArea1, 0, 0, 325, 445);
+ _vm->setHotspot(kHS07WalkArea2, 325, 0, 799, 445, _vm->_isLeavingScene ? SF_WALKABLE : SF_NONE);
+ _vm->setHotspot(kHS07WalkArea3, 160, 0, 325, 495);
+ _vm->setDeviceHotspot(kHS07Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHSDice]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS07Dice]._flags = SF_DISABLED;
_vm->_hotspotsCount = 7;
}
@@ -87,7 +87,7 @@ void Scene07::run() {
_vm->_gnapIdleFacing = kDirBottomRight;
_vm->_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASWait;
+ _vm->_gnapActionStatus = kAS07Wait;
_vm->_platX = 3;
_vm->_platY = 8;
_vm->_platypusId = 160;
@@ -115,7 +115,7 @@ void Scene07::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSPlatypus:
+ case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapMoan1(_vm->_platX, _vm->_platY);
@@ -132,16 +132,16 @@ void Scene07::run() {
}
break;
- case kHSExitHouse:
+ case kHS07ExitHouse:
_vm->_isLeavingScene = true;
if (_vm->_gnapX > 8)
_vm->gnapWalkTo(_vm->_gnapX, 7, 0, 0x107AD, 1);
else
_vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS07LeaveScene;
break;
- case kHSDice:
+ case kHS07Dice:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 8, 3, 3);
} else {
@@ -169,7 +169,7 @@ void Scene07::run() {
}
break;
- case kHSDevice:
+ case kHS07Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
@@ -177,12 +177,12 @@ void Scene07::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
+ case kHS07WalkArea1:
+ case kHS07WalkArea2:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
- case kHSWalkArea3:
+ case kHS07WalkArea3:
// Nothing
break;
@@ -254,7 +254,7 @@ void Scene07::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS07LeaveScene:
_vm->_newSceneNum = 8;
_vm->_sceneDone = true;
break;
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
index a5054cb..2b977a4 100644
--- a/engines/gnap/scenes/scene08.cpp
+++ b/engines/gnap/scenes/scene08.cpp
@@ -28,35 +28,35 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSExitBackdoor = 1,
- kHSExitCrash = 2,
- kHSMan = 3,
- kHSDoor = 4,
- kHSMeat = 5,
- kHSBone = 6,
- kHSToy = 7,
- kHSWalkArea1 = 8,
- kHSDevice = 9,
- kHSWalkArea2 = 10
+ kH08SPlatypus = 0,
+ kHS08ExitBackdoor = 1,
+ kHS08ExitCrash = 2,
+ kHS08Man = 3,
+ kHS08Door = 4,
+ kHS08Meat = 5,
+ kHS08Bone = 6,
+ kHS08Toy = 7,
+ kHS08WalkArea1 = 8,
+ kHS08Device = 9,
+ kHS08WalkArea2 = 10
};
enum {
- kASLeaveScene = 0,
- kASTalkMan = 1,
- kASLookMan = 2,
- kASLookDog = 3,
- kASGrabDog = 4,
- kASTalkDog = 5,
- kASPlatWithMan = 6,
- kASPlatWithDog = 7
+ kAS08LeaveScene = 0,
+ kAS08TalkMan = 1,
+ kAS08LookMan = 2,
+ kAS08LookDog = 3,
+ kAS08GrabDog = 4,
+ kAS08TalkDog = 5,
+ kAS08PlatWithMan = 6,
+ kAS08PlatWithDog = 7
};
Scene08::Scene08(GnapEngine *vm) : Scene(vm) {
- _s08_nextDogSequenceId = -1;
- _s08_currDogSequenceId = -1;
- _s08_nextManSequenceId = -1;
- _s08_currManSequenceId = -1;
+ _nextDogSequenceId = -1;
+ _currDogSequenceId = -1;
+ _nextManSequenceId = -1;
+ _currManSequenceId = -1;
}
int Scene08::init() {
@@ -64,33 +64,33 @@ int Scene08::init() {
}
void Scene08::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHSExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHSMan, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSDoor, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSMeat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSToy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 290, 340, -1, -1);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 799, 420);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kH08SPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08ExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS08ExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS08Man, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Door, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Meat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Bone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Toy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08WalkArea1, 290, 340, -1, -1);
+ _vm->setHotspot(kHS08WalkArea2, 0, 0, 799, 420);
+ _vm->setDeviceHotspot(kHS08Device, -1, -1, -1, -1);
if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_hotspots[kHSMeat]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS08Meat]._flags = SF_WALKABLE | SF_DISABLED;
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_hotspots[kHSBone]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS08Bone]._flags = SF_WALKABLE | SF_DISABLED;
if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_hotspots[kHSToy]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspots[kHS08Toy]._flags = SF_WALKABLE | SF_DISABLED;
_vm->_hotspotsCount = 11;
}
void Scene08::updateAnimationsCb() {
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s08_currDogSequenceId = _s08_nextDogSequenceId;
- if ( _s08_nextDogSequenceId != 0x135 )
- _s08_nextDogSequenceId = 0x134;
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ if ( _nextDogSequenceId != 0x135 )
+ _nextDogSequenceId = 0x134;
}
}
@@ -100,17 +100,17 @@ void Scene08::run() {
_vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
- _s08_currDogSequenceId = 0x135;
- _s08_nextDogSequenceId = 0x135;
+ _currDogSequenceId = 0x135;
+ _nextDogSequenceId = 0x135;
_vm->_gameSys->setAnimation(0x135, 100, 3);
- _vm->_gameSys->insertSequence(_s08_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
- _s08_currManSequenceId = 0x140;
- _s08_nextManSequenceId = -1;
+ _currManSequenceId = 0x140;
+ _nextManSequenceId = -1;
_vm->_gameSys->setAnimation(0x140, 100, 2);
- _vm->_gameSys->insertSequence(_s08_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(50) + 75;
@@ -146,7 +146,7 @@ void Scene08::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS08Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
@@ -155,7 +155,7 @@ void Scene08::run() {
}
break;
- case kHSPlatypus:
+ case kH08SPlatypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -180,25 +180,25 @@ void Scene08::run() {
}
break;
- case kHSExitBackdoor:
+ case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
- case kHSExitCrash:
+ case kHS08ExitCrash:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
- case kHSMan:
+ case kHS08Man:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(6, 6, 7, 0);
} else {
@@ -206,7 +206,7 @@ void Scene08::run() {
case LOOK_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLookMan;
+ _vm->_gnapActionStatus = kAS08LookMan;
_vm->_gnapIdleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
@@ -216,13 +216,13 @@ void Scene08::run() {
_vm->_gnapIdleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkMan;
+ _vm->_gnapActionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->gnapUseDeviceOnPlatypuss();
_vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kASPlatWithMan;
+ _vm->_platypusActionStatus = kAS08PlatWithMan;
_vm->_platypusFacing = kDirNone;
_vm->playGnapIdle(6, 6);
break;
@@ -230,35 +230,35 @@ void Scene08::run() {
}
break;
- case kHSDoor:
+ case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
_vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASGrabDog;
+ _vm->_gnapActionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapScratchingHead(6, 0);
_vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASLookDog;
+ _vm->_gnapActionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASGrabDog;
+ _vm->_gnapActionStatus = kAS08GrabDog;
_vm->_gnapIdleFacing = kDirUpRight;
break;
case TALK_CURSOR:
_vm->_gnapIdleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkDog;
+ _vm->_gnapActionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
_vm->gnapActionIdle(0x14D);
_vm->gnapUseDeviceOnPlatypuss();
_vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kASPlatWithDog;
+ _vm->_platypusActionStatus = kAS08PlatWithDog;
_vm->_platypusFacing = kDirNone;
_vm->playGnapIdle(3, 7);
break;
@@ -266,7 +266,7 @@ void Scene08::run() {
}
break;
- case kHSMeat:
+ case kHS08Meat:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(6, 8, 5, 6);
} else {
@@ -275,13 +275,13 @@ void Scene08::run() {
_vm->playGnapScratchingHead(6, 7);
break;
case GRAB_CURSOR:
- if (_s08_currDogSequenceId == 0x135) {
+ if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(6, 7);
} else {
_vm->gnapActionIdle(0x14D);
_vm->playGnapPullOutDevice(6, 7);
_vm->playGnapUseDevice(0, 0);
- _s08_nextDogSequenceId = 0x149;
+ _nextDogSequenceId = 0x149;
}
break;
case TALK_CURSOR:
@@ -292,7 +292,7 @@ void Scene08::run() {
}
break;
- case kHSBone:
+ case kHS08Bone:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(2, 7, 3, 6);
} else {
@@ -301,13 +301,13 @@ void Scene08::run() {
_vm->playGnapScratchingHead(3, 6);
break;
case GRAB_CURSOR:
- if (_s08_currDogSequenceId == 0x135) {
+ if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(3, 6);
} else {
_vm->gnapActionIdle(0x14D);
_vm->playGnapPullOutDevice(3, 6);
_vm->playGnapUseDevice(0, 0);
- _s08_nextDogSequenceId = 0x14A;
+ _nextDogSequenceId = 0x14A;
}
break;
case TALK_CURSOR:
@@ -318,7 +318,7 @@ void Scene08::run() {
}
break;
- case kHSToy:
+ case kHS08Toy:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(8, 7, 7, 6);
} else {
@@ -327,13 +327,13 @@ void Scene08::run() {
_vm->playGnapScratchingHead(7, 6);
break;
case GRAB_CURSOR:
- if (_s08_currDogSequenceId == 0x135) {
+ if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(7, 6);
} else {
_vm->gnapActionIdle(0x14D);
_vm->playGnapPullOutDevice(7, 6);
_vm->playGnapUseDevice(0, 0);
- _s08_nextDogSequenceId = 0x14B;
+ _nextDogSequenceId = 0x14B;
}
break;
case TALK_CURSOR:
@@ -344,8 +344,8 @@ void Scene08::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
+ case kHS08WalkArea1:
+ case kHS08WalkArea2:
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(-1, 6, -1, -1, 1);
break;
@@ -366,21 +366,21 @@ void Scene08::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s08_nextManSequenceId == -1 &&
- (_s08_currDogSequenceId == 0x134 || _s08_currDogSequenceId == 0x135)) {
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextManSequenceId == -1 &&
+ (_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
case 0:
- _s08_nextManSequenceId = 0x138;
+ _nextManSequenceId = 0x138;
break;
case 1:
- _s08_nextManSequenceId = 0x136;
+ _nextManSequenceId = 0x136;
break;
case 2:
- _s08_nextManSequenceId = 0x13B;
+ _nextManSequenceId = 0x13B;
break;
case 3:
- _s08_nextManSequenceId = 0x13A;
+ _nextManSequenceId = 0x13A;
break;
}
}
@@ -406,34 +406,34 @@ void Scene08::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS08LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
- case kASTalkMan:
- _s08_nextManSequenceId = 0x13F;
+ case kAS08TalkMan:
+ _nextManSequenceId = 0x13F;
_vm->_gnapActionStatus = -1;
break;
- case kASLookMan:
- _s08_nextManSequenceId = 0x140;
+ case kAS08LookMan:
+ _nextManSequenceId = 0x140;
_vm->_gnapActionStatus = -1;
break;
- case kASLookDog:
- _s08_nextManSequenceId = 0x137;
+ case kAS08LookDog:
+ _nextManSequenceId = 0x137;
_vm->_gnapActionStatus = -1;
break;
- case kASGrabDog:
- if (_s08_currDogSequenceId == 0x135)
- _s08_nextDogSequenceId = 0x133;
+ case kAS08GrabDog:
+ if (_currDogSequenceId == 0x135)
+ _nextDogSequenceId = 0x133;
else
- _s08_nextDogSequenceId = 0x13C;
+ _nextDogSequenceId = 0x13C;
_vm->_gnapActionStatus = -1;
break;
- case kASTalkDog:
- if (_s08_currDogSequenceId == 0x135)
- _s08_nextDogSequenceId = 0x133;
+ case kAS08TalkDog:
+ if (_currDogSequenceId == 0x135)
+ _nextDogSequenceId = 0x133;
else
- _s08_nextDogSequenceId = 0x13C;
+ _nextDogSequenceId = 0x13C;
_vm->_gnapActionStatus = -1;
break;
}
@@ -442,61 +442,61 @@ void Scene08::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
- case kASPlatWithDog:
- _s08_nextDogSequenceId = 0x147;
+ case kAS08PlatWithDog:
+ _nextDogSequenceId = 0x147;
break;
- case kASPlatWithMan:
- _s08_nextManSequenceId = 0x140;
+ case kAS08PlatWithMan:
+ _nextManSequenceId = 0x140;
_vm->_platypusActionStatus = -1;
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s08_nextManSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s08_nextManSequenceId, 100, 2);
- _vm->_gameSys->insertSequence(_s08_nextManSequenceId, 100, _s08_currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s08_currManSequenceId = _s08_nextManSequenceId;
- _s08_nextManSequenceId = -1;
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextManSequenceId, 100, 2);
+ _vm->_gameSys->insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currManSequenceId = _nextManSequenceId;
+ _nextManSequenceId = -1;
}
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_s08_currDogSequenceId == 0x147)
+ if (_currDogSequenceId == 0x147)
_vm->_platypusActionStatus = -1;
- if (_s08_currDogSequenceId == 0x149 || _s08_currDogSequenceId == 0x14A || _s08_currDogSequenceId == 0x14B) {
+ if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
if (_vm->getRandom(2) != 0)
- _s08_nextManSequenceId = 0x13D;
+ _nextManSequenceId = 0x13D;
else
- _s08_nextManSequenceId = 0x13E;
- } else if (_s08_currDogSequenceId == 0x133)
- _s08_nextManSequenceId = 0x139;
- if (_s08_nextDogSequenceId == 0x149 || _s08_nextDogSequenceId == 0x14A || _s08_nextDogSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- switch (_s08_nextDogSequenceId) {
+ _nextManSequenceId = 0x13E;
+ } else if (_currDogSequenceId == 0x133)
+ _nextManSequenceId = 0x139;
+ if (_nextDogSequenceId == 0x149 || _nextDogSequenceId == 0x14A || _nextDogSequenceId == 0x14B) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ switch (_nextDogSequenceId) {
case 0x149:
_vm->setFlag(kGFBarnPadlockOpen);
- _vm->_hotspots[kHSMeat]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_hotspots[kHS08Meat]._flags = SF_DISABLED | SF_WALKABLE;
_vm->_gameSys->removeSequence(0x144, 1, true);
break;
case 0x14A:
_vm->setFlag(kGFTruckFilledWithGas);
- _vm->_hotspots[kHSBone]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_hotspots[kHS08Bone]._flags = SF_DISABLED | SF_WALKABLE;
_vm->_gameSys->removeSequence(0x145, 1, true);
break;
case 0x14B:
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_hotspots[kHSToy]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_hotspots[kHS08Toy]._flags = SF_DISABLED | SF_WALKABLE;
_vm->_gameSys->removeSequence(0x146, 1, true);
break;
}
- _s08_currDogSequenceId = _s08_nextDogSequenceId;
- _s08_nextDogSequenceId = 0x134;
- } else if (_s08_nextDogSequenceId == 0x147) {
- _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = 0x134;
+ } else if (_nextDogSequenceId == 0x147) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _s08_currDogSequenceId = _s08_nextDogSequenceId;
- _s08_nextDogSequenceId = 0x134;
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = 0x134;
_vm->_platX = 1;
_vm->_platY = 8;
_vm->_platypusId = 160;
@@ -505,13 +505,13 @@ void Scene08::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
_vm->gnapWalkStep();
- } else if (_s08_nextDogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s08_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_s08_nextDogSequenceId, 100, _s08_currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s08_currDogSequenceId = _s08_nextDogSequenceId;
- if (_s08_nextDogSequenceId != 0x135)
- _s08_nextDogSequenceId = 0x134;
- if (_s08_currDogSequenceId == 0x133) {
+ } else if (_nextDogSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ if (_nextDogSequenceId != 0x135)
+ _nextDogSequenceId = 0x134;
+ if (_currDogSequenceId == 0x133) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
_vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/scene08.h b/engines/gnap/scenes/scene08.h
index ab538ce..b73bc49 100644
--- a/engines/gnap/scenes/scene08.h
+++ b/engines/gnap/scenes/scene08.h
@@ -42,10 +42,10 @@ public:
virtual void updateAnimationsCb();
private:
- int _s08_nextDogSequenceId;
- int _s08_currDogSequenceId;
- int _s08_nextManSequenceId;
- int _s08_currManSequenceId;
+ int _nextDogSequenceId;
+ int _currDogSequenceId;
+ int _nextManSequenceId;
+ int _currManSequenceId;
};
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
index 5feee78..7e92ca1 100644
--- a/engines/gnap/scenes/scene09.cpp
+++ b/engines/gnap/scenes/scene09.cpp
@@ -28,20 +28,20 @@
namespace Gnap {
enum {
- kHSPlatypus = 0,
- kHSExitKitchen = 1,
- kHSExitHouse = 2,
- kHSTrash = 3,
- kHSDevice = 4,
- kHSWalkArea1 = 5,
- kHSWalkArea2 = 6,
- kHSWalkArea3 = 7
+ kHS09Platypus = 0,
+ kHS09ExitKitchen = 1,
+ kHS09ExitHouse = 2,
+ kHS09Trash = 3,
+ kHS09Device = 4,
+ kHS09WalkArea1 = 5,
+ kHS09WalkArea2 = 6,
+ kHS09WalkArea3 = 7
};
enum {
- kASLeaveScene = 0,
- kASSearchTrash = 1,
- kASSearchTrashDone = 2
+ kAS09LeaveScene = 0,
+ kAS09SearchTrash = 1,
+ kAS09SearchTrashDone = 2
};
Scene09::Scene09(GnapEngine *vm) : Scene(vm) {
@@ -52,14 +52,14 @@ int Scene09::init() {
}
void Scene09::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
- _vm->setHotspot(kHSExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHSTrash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 799, 400);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 630, 450);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 175, 495);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
+ _vm->setHotspot(kHS09Platypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS09ExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
+ _vm->setHotspot(kHS09ExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS09Trash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS09WalkArea1, 0, 0, 799, 400);
+ _vm->setHotspot(kHS09WalkArea2, 0, 0, 630, 450);
+ _vm->setHotspot(kHS09WalkArea2, 0, 0, 175, 495);
+ _vm->setDeviceHotspot(kHS09Device, -1, -1, -1, -1);
_vm->_hotspotsCount = 8;
}
@@ -97,7 +97,7 @@ void Scene09::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
+ case kHS09Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
updateHotspots();
@@ -106,7 +106,7 @@ void Scene09::run() {
}
break;
- case kHSPlatypus:
+ case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapMoan1(_vm->_platX, _vm->_platY);
@@ -123,25 +123,25 @@ void Scene09::run() {
}
break;
- case kHSExitKitchen:
+ case kHS09ExitKitchen:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
_vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
_vm->_platypusFacing = kDirUnk4;
break;
- case kHSExitHouse:
+ case kHS09ExitHouse:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
_vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
+ _vm->_gnapActionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
_vm->_platypusFacing = kDirUnk4;
break;
- case kHSTrash:
+ case kHS09Trash:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(9, 6, 8, 0);
} else {
@@ -150,7 +150,7 @@ void Scene09::run() {
_vm->playGnapScratchingHead(8, 3);
break;
case GRAB_CURSOR:
- _vm->_gnapActionStatus = kASSearchTrash;
+ _vm->_gnapActionStatus = kAS09SearchTrash;
_vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
break;
case TALK_CURSOR:
@@ -161,9 +161,9 @@ void Scene09::run() {
}
break;
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
+ case kHS09WalkArea1:
+ case kHS09WalkArea2:
+ case kHS09WalkArea3:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -208,11 +208,11 @@ void Scene09::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
+ case kAS09LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
- case kASSearchTrash:
+ case kAS09SearchTrash:
_vm->_gameSys->setAnimation(0x4C, 120, 0);
_vm->_gameSys->insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->removeSequence(0x4B, 2, true);
@@ -222,9 +222,9 @@ void Scene09::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapX = 9;
_vm->_gnapY = 6;
- _vm->_gnapActionStatus = kASSearchTrashDone;
+ _vm->_gnapActionStatus = kAS09SearchTrashDone;
break;
- case kASSearchTrashDone:
+ case kAS09SearchTrashDone:
_vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[2] = 360;
_vm->_timers[4] = _vm->getRandom(150) + 100;
diff --git a/engines/gnap/scenes/scene09.h b/engines/gnap/scenes/scene09.h
index c914d16..2a1576e 100644
--- a/engines/gnap/scenes/scene09.h
+++ b/engines/gnap/scenes/scene09.h
@@ -40,8 +40,6 @@ public:
virtual void run();
virtual void updateAnimations();
virtual void updateAnimationsCb() {}
-
-private:
};
} // End of namespace Gnap
Commit: 5381edd40e96be464400923d0c6e40fae43b8ea2
https://github.com/scummvm/scummvm/commit/5381edd40e96be464400923d0c6e40fae43b8ea2
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:45+02:00
Commit Message:
GNAP: group first scenes, rename intro
Changed paths:
A engines/gnap/scenes/group0.cpp
A engines/gnap/scenes/group0.h
A engines/gnap/scenes/intro.cpp
A engines/gnap/scenes/intro.h
R engines/gnap/scenes/scene00.cpp
R engines/gnap/scenes/scene00.h
R engines/gnap/scenes/scene01.cpp
R engines/gnap/scenes/scene01.h
R engines/gnap/scenes/scene02.cpp
R engines/gnap/scenes/scene02.h
R engines/gnap/scenes/scene03.cpp
R engines/gnap/scenes/scene03.h
R engines/gnap/scenes/scene04.cpp
R engines/gnap/scenes/scene04.h
R engines/gnap/scenes/scene05.cpp
R engines/gnap/scenes/scene05.h
R engines/gnap/scenes/scene06.cpp
R engines/gnap/scenes/scene06.h
R engines/gnap/scenes/scene07.cpp
R engines/gnap/scenes/scene07.h
R engines/gnap/scenes/scene08.cpp
R engines/gnap/scenes/scene08.h
R engines/gnap/scenes/scene09.cpp
R engines/gnap/scenes/scene09.h
engines/gnap/module.mk
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index bb565eb..0e1271a 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -11,16 +11,8 @@ MODULE_OBJS := \
resource.o \
sound.o \
scenes/groupcs.o \
- scenes/scene00.o \
- scenes/scene01.o \
- scenes/scene02.o \
- scenes/scene03.o \
- scenes/scene04.o \
- scenes/scene05.o \
- scenes/scene06.o \
- scenes/scene07.o \
- scenes/scene08.o \
- scenes/scene09.o \
+ scenes/group0.o \
+ scenes/intro.o \
scenes/scene10.o \
scenes/scene11.o \
scenes/scene12.o \
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
new file mode 100644
index 0000000..5e45555
--- /dev/null
+++ b/engines/gnap/scenes/group0.cpp
@@ -0,0 +1,3733 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group0.h"
+
+namespace Gnap {
+
+enum {
+ kHS01Platypus = 0,
+ kHS01ExitTruck = 1,
+ kHS01Mud = 2,
+ kHS01Pigs = 3,
+ kHS01Spaceship = 4,
+ kHS01Device = 5,
+ kHS01WalkArea1 = 6,
+ kHS01WalkArea2 = 7,
+ kHS01WalkArea3 = 8,
+ kHS01WalkArea4 = 9,
+ kHS01WalkArea5 = 10,
+ kHS01WalkArea6 = 11,
+ kHS01WalkArea7 = 12,
+ kHS01WalkArea8 = 13
+};
+
+enum {
+ kAS01LookSpaceship = 1,
+ kAS01LookSpaceshipDone = 2,
+ kAS01LeaveScene = 3,
+ kAS01TakeMud = 5,
+ kAS01LookPigs = 6,
+ kAS01UsePigs = 7
+};
+
+Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
+ _pigsIdCtr = 0;
+ _smokeIdCtr = 0;
+ _spaceshipSurface = nullptr;
+}
+
+Scene01::~Scene01() {
+ delete _spaceshipSurface;
+}
+
+int Scene01::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return 0x88;
+}
+
+void Scene01::updateHotspots() {
+ _vm->setHotspot(kHS01Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS01ExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ _vm->setHotspot(kHS01Mud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ _vm->setHotspot(kHS01Pigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
+ _vm->setHotspot(kHS01Spaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ _vm->setHotspot(kHS01WalkArea1, 0, 0, 162, 426);
+ _vm->setHotspot(kHS01WalkArea2, 162, 0, 237, 396);
+ _vm->setHotspot(kHS01WalkArea3, 237, 0, 319, 363);
+ _vm->setHotspot(kHS01WalkArea4, 520, 0, 800, 404);
+ _vm->setHotspot(kHS01WalkArea5, 300, 447, 800, 600);
+ _vm->setHotspot(kHS01WalkArea6, 678, 0, 800, 404);
+ _vm->setHotspot(kHS01WalkArea7, 0, 0, 520, 351);
+ _vm->setHotspot(kHS01WalkArea8, 0, 546, 300, 600);
+ _vm->setDeviceHotspot(kHS01Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS01Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->_hotspots[kHS01Mud]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspotsCount = 14;
+}
+
+void Scene01::run() {
+ // NOTE Removed _s01_dword_474380 which was set when the mud was taken
+ // which is also set in the global game flags.
+
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(5);
+
+ _vm->_gameSys->setAnimation(134, 20, 4);
+ _vm->_gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_gameSys->setAnimation(0x7F, 40, 2);
+ _vm->_gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ if (!_vm->isFlag(kGFMudTaken))
+ _vm->_gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum == 2) {
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107B9, 1);
+ } else {
+ _vm->initGnapPos(1, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 3, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+
+ case kHS01Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS01Platypus:
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS01Spaceship:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kAS01LookSpaceship;
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS01Mud:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _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->_gnapActionStatus = kAS01TakeMud;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS01Pigs:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS01LookPigs;
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS01UsePigs;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS01LookPigs;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS01ExitTruck:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS01LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 2;
+ }
+ break;
+
+ case kHS01WalkArea1:
+ case kHS01WalkArea2:
+ case kHS01WalkArea3:
+ case kHS01WalkArea4:
+ case kHS01WalkArea5:
+ case kHS01WalkArea6:
+ case kHS01WalkArea7:
+ case kHS01WalkArea8:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_timers[4] == 0) {
+ // Update bird animation
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(1) == 0)
+ _vm->_gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene01::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS01LookSpaceship:
+ _spaceshipSurface = _vm->_gameSys->createSurface(47);
+ _vm->_gameSys->insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
+ _vm->_gameSys->setAnimation(133, 256, 0);
+ _vm->_gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS01LookSpaceshipDone;
+ break;
+
+ case kAS01LookSpaceshipDone:
+ _vm->_gameSys->removeSequence(133, 256, true);
+ _vm->_gameSys->removeSpriteDrawItem(_spaceshipSurface, 255);
+ _vm->deleteSurface(&_spaceshipSurface);
+ _vm->_gnapActionStatus = -1;
+ break;
+
+ case kAS01LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+
+ case kAS01TakeMud:
+ _vm->playGnapPullOutDevice(2, 3);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(128, 40, 3);
+ _vm->_gnapActionStatus = -1;
+ break;
+
+ case kAS01LookPigs:
+ _vm->playSound(138, false);
+ _vm->playSound(139, false);
+ _vm->playSound(140, false);
+ _vm->_gnapActionStatus = -1;
+ break;
+
+ case kAS01UsePigs:
+ _vm->playGnapPullOutDevice(7, 2);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->invAdd(kItemMud);
+ _vm->setGrabCursorSprite(kItemMud);
+ _vm->setFlag(kGFMudTaken);
+ updateHotspots();
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ _smokeIdCtr = (_smokeIdCtr + 1) % 2;
+ _vm->_gameSys->setAnimation(0x86, _smokeIdCtr + 20, 4);
+ _vm->_gameSys->insertSequence(0x86, _smokeIdCtr + 20,
+ 0x86, (_smokeIdCtr + 1) % 2 + 20,
+ kSeqSyncWait, 0, 0, 0);
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _pigsIdCtr = (_pigsIdCtr + 1) % 2;
+ _vm->_gameSys->setAnimation(0x7F, _pigsIdCtr + 40, 2);
+ _vm->_gameSys->insertSequence(0x7F, _pigsIdCtr + 40,
+ 0x7F, (_pigsIdCtr + 1) % 2 + 40,
+ kSeqSyncWait, 0, 0, 0);
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS02Platypus = 0,
+ kHS02Chicken = 1,
+ kHS02Truck1 = 2,
+ kHS02Truck2 = 3,
+ kHS02TruckGrill = 4,
+ kHS02Device = 5,
+ kHS02ExitHouse = 6,
+ kHS02ExitBarn = 7,
+ kHS02ExitCreek = 8,
+ kHS02ExitPigpen = 9,
+ kHS02WalkArea1 = 10,
+ kHS02WalkArea2 = 11,
+ kHS02WalkArea3 = 12,
+ kHS02WalkArea4 = 13
+};
+
+enum {
+ kAS02UseTruckNoKeys = 0,
+ kAS02UseGasWithTruck = 1,
+ kAS02UseTruckGas = 2,
+ kAS02UseTruckNoGas = 3,
+ kAS02GrabTruckGrill = 5,
+ kAS02LeaveScene = 6,
+ kAS02TalkChicken = 7,
+ kAS02GrabChicken = 8,
+ kAS02GrabChickenDone = 9,
+ kAS02UseTruckNoKeysDone = 11,
+ kAS02UseGasWithTruckDone = 12,
+ kAS02UseTwigWithChicken = 16
+};
+
+Scene02::Scene02(GnapEngine *vm) : Scene(vm) {
+ _truckGrillCtr = 0;
+ _nextChickenSequenceId = 0;
+ _currChickenSequenceId = 0;
+ _gnapTruckSequenceId = 0;
+}
+
+int Scene02::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ return _vm->isFlag(kGFTruckKeysUsed) ? 0x15A : 0x15B;
+}
+
+void Scene02::updateHotspots() {
+ _vm->setHotspot(kHS02Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
+ _vm->setHotspot(kHS02Chicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS02Truck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
+ _vm->setHotspot(kHS02Truck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
+ _vm->setHotspot(kHS02TruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
+ _vm->setHotspot(kHS02ExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
+ _vm->setHotspot(kHS02ExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
+ _vm->setHotspot(kHS02ExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHS02ExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS02WalkArea1, 92, 140, 304, 430, 0, 3, 1);
+ _vm->setHotspot(kHS02WalkArea2, 0, 0, 800, 380);
+ _vm->setHotspot(kHS02WalkArea3, 0, 0, 386, 445);
+ _vm->setHotspot(kHS02WalkArea4, 386, 0, 509, 410);
+ _vm->setDeviceHotspot(kHS02Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS02Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 14;
+}
+
+void Scene02::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(6);
+
+ _currChickenSequenceId = 0x14B;
+ _vm->_gameSys->setAnimation(0x14B, 179, 2);
+ _vm->_gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextChickenSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ _vm->queueInsertDeviceIcon();
+
+ switch (_vm->_prevSceneNum) {
+ case 3:
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ break;
+ case 4:
+ _vm->initGnapPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 6, 0, 0x107B9, 1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
+ updateHotspots();
+ _vm->_gameSys->waitForUpdate();
+ break;
+ case 47:
+ _vm->clearFlag(kGFUnk25);
+ _vm->initGnapPos(5, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(6, 7, kDirUnk4);
+ _vm->endSceneInit();
+ break;
+ case 49:
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(6, 7, kDirNone);
+ _vm->endSceneInit();
+ break;
+ default:
+ _vm->initGnapPos(-1, 6, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ break;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 6, 7, 6, 8, 6);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS02Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS02Platypus:
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS02Chicken:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS02UseTwigWithChicken;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(9, 8);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kAS02GrabChicken;
+ else
+ _vm->_gnapActionStatus = -1;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS02TalkChicken;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS02Truck1:
+ case kHS02Truck2:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemKeys) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemKeys);
+ if (_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_gnapActionStatus = kAS02UseTruckGas;
+ else
+ _vm->_gnapActionStatus = kAS02UseTruckNoGas;
+ }
+ } 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))
+ _vm->_gnapActionStatus = kAS02UseGasWithTruck;
+ _vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(2, 2);
+ 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->isFlag(kGFTruckFilledWithGas))
+ _vm->_gnapActionStatus = kAS02UseTruckGas;
+ else
+ _vm->_gnapActionStatus = kAS02UseTruckNoGas;
+ }
+ } else {
+ _vm->_gnapIdleFacing = kDirUnk4;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ _vm->_gnapActionStatus = kAS02UseTruckNoKeys;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS02TruckGrill:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(2, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS02GrabTruckGrill;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS02ExitHouse:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kAS02LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
+ updateHotspots();
+ _vm->_newSceneNum = 4;
+ }
+ break;
+
+ case kHS02ExitBarn:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kAS02LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
+ updateHotspots();
+ _vm->_newSceneNum = 5;
+ }
+ break;
+
+ case kHS02ExitCreek:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS02LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 3;
+ }
+ break;
+
+ case kHS02ExitPigpen:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS02LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 1;
+ }
+ break;
+
+ case kHS02WalkArea1:
+ case kHS02WalkArea2:
+ case kHS02WalkArea3:
+ case kHS02WalkArea4:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ // Update bird animation
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
+ if (_vm->getRandom(6) != 0) {
+ _nextChickenSequenceId = 0x14B;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ } else {
+ _nextChickenSequenceId = 0x14D;
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ }
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene02::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
+ case kAS02UseTruckNoKeys:
+ _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x14E, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x14E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS02UseTruckNoKeysDone;
+ break;
+ case kAS02UseGasWithTruck:
+ _vm->_gameSys->insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x151, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x151;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemGas);
+ _vm->setGrabCursorSprite(-1);
+ _vm->setFlag(kGFTruckFilledWithGas);
+ _vm->_gnapActionStatus = kAS02UseGasWithTruckDone;
+ break;
+ case kAS02UseTruckGas:
+ _vm->_timers[5] = 9999;
+ _vm->_timers[4] = 9999;
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->waitForUpdate();
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_gnapSequenceId = 0x14F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemKeys);
+ _vm->setGrabCursorSprite(-1);
+ }
+ _vm->_newSceneNum = 47;
+ _vm->_sceneDone = true;
+ break;
+ case kAS02UseTruckNoGas:
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->_timers[4] = 250;
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->waitForUpdate();
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_gnapSequenceId = 0x14F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemKeys);
+ _vm->setGrabCursorSprite(-1);
+ }
+ _vm->_newSceneNum = 47;
+ _vm->_sceneDone = true;
+ _vm->setFlag(kGFUnk25);
+ break;
+ case kAS02GrabTruckGrill:
+ switch (_truckGrillCtr) {
+ case 0:
+ _gnapTruckSequenceId = 0x158;
+ break;
+ case 1:
+ _gnapTruckSequenceId = 0x159;
+ break;
+ case 2:
+ _gnapTruckSequenceId = 0x157;
+ break;
+ }
+ _truckGrillCtr = (_truckGrillCtr + 1) % 3;
+ _vm->_gameSys->insertSequence(_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = _gnapTruckSequenceId;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS02LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS02TalkChicken:
+ _nextChickenSequenceId = 0x14C;
+ break;
+ case kAS02GrabChicken:
+ _nextChickenSequenceId = 0x150;
+ _vm->_timers[2] = 100;
+ break;
+ case kAS02GrabChickenDone:
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _currChickenSequenceId = 0x14B;
+ _vm->_gameSys->setAnimation(0x14B, 179, 2);
+ _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[5] = 30;
+ break;
+ case kAS02UseTwigWithChicken:
+ _vm->playGnapShowItem(5, 0, 0);
+ _vm->_gameSys->insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
+ _currChickenSequenceId = 0x155;
+ _nextChickenSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS02UseTruckNoKeysDone:
+ case kAS02UseGasWithTruckDone:
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (_nextChickenSequenceId == 0x150) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ _nextChickenSequenceId = -1;
+ _currChickenSequenceId = -1;
+ _vm->_gnapActionStatus = kAS02GrabChickenDone;
+ _vm->_timers[5] = 500;
+ } else if (_nextChickenSequenceId == 0x14C) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextChickenSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS03Platypus = 0,
+ kHS03Grass = 1,
+ kHS03ExitTruck = 2,
+ kHS03Creek = 3,
+ kHS03TrappedPlatypus = 4,
+ kHS03Device = 5,
+ kHS03WalkAreas1 = 6,
+ kHS03WalkAreas2 = 7,
+ kHS03PlatypusWalkArea = 8,
+ kHS03WalkAreas3 = 9
+};
+
+enum {
+ kAS03LeaveScene = 0,
+ kAS03FreePlatypus = 1,
+ kAS03HypnotizePlat = 2,
+ kAS03HypnotizeScaredPlat= 3,
+ kAS03FreePlatypusDone = 4,
+ kAS03GrabPlatypus = 5,
+ kAS03GrabCreek = 6,
+ kAS03GrabCreekDone = 7,
+ kAS03GrabScaredPlatypus = 8
+};
+
+Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
+ _nextPlatSequenceId = -1;
+ _platypusScared = false;
+ _platypusHypnotized = false;
+ _nextFrogSequenceId = -1;
+ _currFrogSequenceId = -1;
+}
+
+int Scene03::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ return 0x1CC;
+}
+
+void Scene03::updateHotspots() {
+ _vm->setHotspot(kHS03Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS03Grass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHS03ExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
+ _vm->setHotspot(kHS03Creek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS03TrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
+ _vm->setHotspot(kHS03WalkAreas1, 0, 500, 300, 600);
+ _vm->setHotspot(kHS03WalkAreas2, 300, 447, 800, 600);
+ _vm->setHotspot(kHS03PlatypusWalkArea, 235, 0, 800, 600);
+ _vm->setHotspot(kHS03WalkAreas3, 0, 0, 800, 354);
+ _vm->setDeviceHotspot(kHS03Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS03Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFGrassTaken))
+ _vm->_hotspots[kHS03Grass]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS03TrappedPlatypus]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized)
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->_hotspotsCount = 10;
+}
+
+void Scene03::run() {
+ _vm->playSound(0x10925, true);
+ _vm->startSoundTimerC(7);
+
+ _vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
+
+ _platypusHypnotized = false;
+
+ _vm->initGnapPos(3, 4, kDirBottomRight);
+
+ _vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currFrogSequenceId = 0x1C6;
+ _nextFrogSequenceId = -1;
+ _vm->_gameSys->setAnimation(0x1C6, 253, 2);
+
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->initPlatypusPos(5, 4, kDirNone);
+ } else {
+ _vm->_timers[1] = _vm->getRandom(40) + 20;
+ _vm->_gameSys->setAnimation(0x1C2, 99, 1);
+ _vm->_gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1C2;
+ _vm->_platypusSequenceDatNum = 0;
+ }
+
+ _vm->_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFGrassTaken))
+ _vm->_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->endSceneInit();
+
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(3, 6, -1, 0x107B9, 1);
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS03Platypus:
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS03Grass:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(9, 6);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapPullOutDevice(9, 6);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1B3, 253, 5);
+ _vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS03ExitTruck:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kAS03LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 2;
+ else
+ _vm->_newSceneNum = 33;
+ }
+ break;
+
+ case kHS03Creek:
+ if (_vm->_gnapActionStatus == -1) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(2, 8);
+ break;
+ 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))
+ _vm->_gnapActionStatus = kAS03GrabCreek;
+ if (!_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS03TrappedPlatypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 4);
+ break;
+ case GRAB_CURSOR:
+ if (_platypusHypnotized) {
+ _vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
+ _vm->_gnapActionStatus = kAS03FreePlatypus;
+ } else {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
+ else
+ _vm->_gnapActionStatus = kAS03GrabPlatypus;
+ }
+ break;
+ case TALK_CURSOR:
+ if (_platypusHypnotized) {
+ _vm->playGnapBrainPulsating(8, 4);
+ } else {
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03HypnotizeScaredPlat;
+ else
+ _vm->_gnapActionStatus = kAS03HypnotizePlat;
+ }
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS03Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS03WalkAreas1:
+ case kHS03WalkAreas2:
+ case kHS03WalkAreas3:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS03PlatypusWalkArea:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ } else {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
+ if (_platypusScared)
+ _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
+ else
+ _vm->_gnapActionStatus = kAS03GrabPlatypus;
+ }
+ }
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10925))
+ _vm->playSound(0x10925, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[1] && !_platypusScared) {
+ _vm->_timers[1] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ _nextPlatSequenceId = 450;
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextFrogSequenceId == -1) {
+ if (_vm->getRandom(5) == 1)
+ _nextFrogSequenceId = 0x1C6;
+ else
+ _nextFrogSequenceId = 0x1C7;
+ }
+ }
+ if (!_vm->_timers[4]) {
+ // Update bird animation
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ _vm->_gameSys->insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ _vm->_gameSys->setAnimation(0x1C5, 253, 4);
+ _vm->_gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene03::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS03LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS03FreePlatypus:
+ _nextPlatSequenceId = 0x1BC;
+ break;
+ case kAS03FreePlatypusDone:
+ _vm->_gnapActionStatus = -1;
+ _vm->_platX = 6;
+ _vm->_platY = 6;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_platypusId = 120;
+ _vm->_gameSys->insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
+ kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusSequenceId = 0x7CA;
+ _vm->setFlag(kGFPlatypus);
+ _nextPlatSequenceId = -1;
+ updateHotspots();
+ break;
+ case kAS03HypnotizePlat:
+ _vm->playGnapBrainPulsating(0, 0);
+ _vm->addFullScreenSprite(0x106, 255);
+ _vm->_gameSys->setAnimation(0x1C9, 256, 1);
+ _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->_gameSys->setAnimation(0x1BA, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x1BA;
+ _vm->_gnapActionStatus = -1;
+ _platypusHypnotized = true;
+ updateHotspots();
+ break;
+ case kAS03HypnotizeScaredPlat:
+ _vm->playGnapBrainPulsating(0, 0);
+ _vm->_gameSys->insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1BF, 99, 1);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->addFullScreenSprite(0x106, 255);
+ _vm->_gameSys->setAnimation(0x1C9, 256, 1);
+ _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->_gameSys->setAnimation(0x1BA, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x1BA;
+ _vm->_gnapActionStatus = -1;
+ _platypusHypnotized = true;
+ updateHotspots();
+ break;
+ case kAS03GrabPlatypus:
+ _nextPlatSequenceId = 0x1BD;
+ _platypusHypnotized = false;
+ break;
+ case kAS03GrabScaredPlatypus:
+ _nextPlatSequenceId = 0x1C0;
+ _platypusHypnotized = false;
+ break;
+ case kAS03GrabCreek:
+ _vm->_gameSys->insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1B4, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x1B4;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS03GrabCreekDone;
+ break;
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _platypusScared = true;
+ _vm->_gameSys->insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x1B5;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirNone;
+ _vm->_platypusSequenceId = _nextPlatSequenceId;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(_nextPlatSequenceId, 99, 1);
+ _nextPlatSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextPlatSequenceId == 0x1BC) {
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gameSys->insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1BC, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1BC, 99, 0);
+ _vm->_gnapId = 20 * _vm->_gnapY;
+ _vm->_gnapSequenceId = 0x1B6;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirNone;
+ _vm->_gnapActionStatus = kAS03FreePlatypusDone;
+ _nextPlatSequenceId = -1;
+ } else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1C2;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x1C2, 99, 1);
+ _nextPlatSequenceId = -1;
+ } else if (_nextPlatSequenceId == -1 && _platypusScared && !_platypusHypnotized) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0x1BE, 99, 1);
+ _vm->_gameSys->insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x1BE;
+ _vm->_platypusSequenceDatNum = 0;
+ _nextPlatSequenceId = -1;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextFrogSequenceId, 253, 2);
+ _vm->_gameSys->insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
+ _currFrogSequenceId = _nextFrogSequenceId;
+ _nextFrogSequenceId = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(5) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ _vm->invAdd(kItemGrass);
+ _vm->setGrabCursorSprite(kItemGrass);
+ _vm->setFlag(kGFGrassTaken);
+ updateHotspots();
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS04Platypus = 0,
+ kHS04Twig = 1,
+ kHS04Dog = 2,
+ kHS04Axe = 3,
+ kHS04Door = 4,
+ kHS04ExitTruck = 5,
+ kHS04Device = 6,
+ kHS04Window = 7,
+ kHS04ExitBarn = 8,
+ kHS04WalkArea1 = 9,
+ kHS04WalkArea2 = 10
+};
+
+enum {
+ kAS04OpenDoor = 1,
+ kAS04GetKeyFirst = 2,
+ kAS04GetKeyAnother = 3,
+ kAS04LeaveScene = 4,
+ kAS04GetKeyFirstDone = 6,
+ kAS04GetKeyFirst2 = 7,
+ kAS04GetKeyAnother2 = 8,
+ kAS04GetKeyAnotherDone = 9,
+ kAS04OpenDoorDone = 10,
+ kAS04GrabDog = 12,
+ kAS04GrabAxe = 13
+};
+
+Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
+ _dogIdCtr = 0;
+ _triedWindow = false;
+ _nextDogSequenceId = -1;
+ _currDogSequenceId = -1;
+}
+
+int Scene04::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ return 0x214;
+}
+
+void Scene04::updateHotspots() {
+ _vm->setHotspot(kHS04Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS04Twig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
+ _vm->setHotspot(kHS04Dog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS04Axe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS04Door, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS04ExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS04Window, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS04ExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
+ _vm->setHotspot(kHS04WalkArea1, 0, 0, 562, 461);
+ _vm->setHotspot(kHS04WalkArea2, 562, 0, 800, 500);
+ _vm->setDeviceHotspot(kHS04Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS04Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHS04Twig]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant) || _vm->_cursorValue == 1)
+ _vm->_hotspots[kHS04Axe]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene04::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(4);
+
+ _vm->_gameSys->insertSequence(0x210, 139 - _dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currDogSequenceId = 0x210;
+ _nextDogSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x210, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
+ _vm->_timers[5] = _vm->getRandom(150) + 300;
+ _vm->_timers[7] = _vm->getRandom(150) + 200;
+ _vm->_timers[8] = _vm->getRandom(150) + 400;
+
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant) && _vm->_cursorValue == 4)
+ _vm->_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFTwigTaken))
+ _vm->_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ _vm->_timers[3] = 300;
+ // TODO setCursor((LPCSTR)IDC_WAIT);
+ _vm->setGrabCursorSprite(kItemKeys);
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ _vm->_platX = 6;
+ _vm->_platY = 7;
+ _vm->_platypusId = 141;
+ _vm->_gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ _vm->_gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->invRemove(kItemDisguise);
+ _vm->invAdd(kItemKeys);
+ _vm->setFlag(kGFKeysTaken);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_platypusSequenceId = 0x20C;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusFacing = kDirBottomRight;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->waitForUpdate();
+ } else {
+ _vm->_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
+ if (_vm->_prevSceneNum == 2) {
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(6, 9, -1, 0x107BA, 1);
+ } else if (_vm->_prevSceneNum == 38) {
+ _vm->initGnapPos(5, 7, kDirBottomRight);
+ _vm->initPlatypusPos(4, 7, kDirNone);
+ _vm->endSceneInit();
+ } else {
+ _vm->initGnapPos(12, 9, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(9, 9, -1, 0x107BA, 1);
+ }
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 4, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS04Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS04Platypus:
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->_cursorValue == 4)
+ _vm->gnapKissPlatypus(0);
+ else
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04Twig:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->playGnapUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gameSys->insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x1FD, 100, 2);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04Axe:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS04GrabAxe;
+ _vm->setFlag(kGFPlatypusTalkingToAssistant);
+ updateHotspots();
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04Dog:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ _nextDogSequenceId = 0x20F;
+ }
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kAS04GrabDog;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ _nextDogSequenceId = 0x20E;
+ }
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04Door:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapScratchingHead(4, 3);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->_cursorValue == 1) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS04OpenDoor;
+ _vm->_timers[5] = 300;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ } else {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS04LeaveScene;
+ _vm->_newSceneNum = 38;
+ }
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04ExitTruck:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS04LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 2;
+ else
+ _vm->_newSceneNum = 33;
+ }
+ break;
+
+ case kHS04Window:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ } else if (_vm->isFlag(kGFKeysTaken)) {
+ _vm->playGnapImpossible(0, 0);
+ } 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 (_triedWindow) {
+ _vm->_gnapActionStatus = kAS04GetKeyAnother;
+ } else {
+ _vm->_gnapActionStatus = kAS04GetKeyFirst;
+ _triedWindow = true;
+ }
+ }
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS04ExitBarn:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS04LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 5;
+ else
+ _vm->_newSceneNum = 35;
+ }
+ break;
+
+ case kHS04WalkArea1:
+ case kHS04WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ _vm->platypusSub426234();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(150) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(150) + 200;
+ _vm->_gameSys->insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
+ if (_nextDogSequenceId == -1)
+ _nextDogSequenceId = 0x210;
+ }
+ if (!_vm->_timers[8]) {
+ _vm->_timers[8] = _vm->getRandom(150) + 400;
+ _vm->_gameSys->insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene04::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS04LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS04OpenDoor:
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ _vm->_gameSys->setAnimation(0x107B5, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapActionStatus = kAS04OpenDoorDone;
+ break;
+ case kAS04OpenDoorDone:
+ _vm->_gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS04GetKeyFirst:
+ _vm->_gameSys->insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x204, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x204;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS04GetKeyFirst2;
+ break;
+ case kAS04GetKeyFirst2:
+ _vm->_gameSys->insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20B, 256, 0);
+ _vm->_gnapSequenceId = 0x206;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS04GetKeyFirstDone;
+ break;
+ case kAS04GetKeyFirstDone:
+ _vm->_gameSys->requestRemoveSequence(0x1FF, 256);
+ _vm->_gameSys->requestRemoveSequence(0x20B, 256);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS04GetKeyAnother:
+ _vm->_gameSys->insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x202, _vm->_gnapId, 0);
+ _vm->_gnapSequenceId = 0x202;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS04GetKeyAnother2;
+ break;
+ case kAS04GetKeyAnother2:
+ _vm->_gameSys->insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20A, 256, 0);
+ _vm->_gnapSequenceId = 0x203;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS04GetKeyAnotherDone;
+ break;
+ case kAS04GetKeyAnotherDone:
+ _vm->_gameSys->removeSequence(0x1FF, 256, true);
+ _vm->_gameSys->removeSequence(0x20A, 256, true);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS04GrabDog:
+ _nextDogSequenceId = 0x201;
+ break;
+ case kAS04GrabAxe:
+ _vm->_gameSys->insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0x212, 100);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x211;
+ _vm->_gnapActionStatus = -1;
+ break;
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->invAdd(kItemTwig);
+ _vm->setGrabCursorSprite(kItemTwig);
+ _vm->setFlag(kGFTwigTaken);
+ updateHotspots();
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_nextDogSequenceId == 0x201) {
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
+ _currDogSequenceId = 0x201;
+ _vm->_gnapSequenceId = 0x200;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[6] = _vm->getRandom(20) + 60;
+ _nextDogSequenceId = -1;
+ } else if (_nextDogSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ _dogIdCtr = (_dogIdCtr + 1) % 2;
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS05Platypus = 0,
+ kHS05Haystack = 1,
+ kHS05Padlock = 2,
+ kHS05Ladder = 3,
+ kHS05ExitHouse = 4,
+ kHS05Chicken = 5,
+ kHS05Device = 6,
+ kHS05WalkArea1 = 7,
+ kHS05WalkArea2 = 8,
+ kHS05WalkArea3 = 9
+};
+
+enum {
+ kAS05PlatSearchHaystack = 0,
+ kAS05TryPickPadlock = 1,
+ kAS05PickPadlock = 2,
+ kAS05TalkChicken = 3,
+ kAS05GrabChicken = 4,
+ kAS05GrabLadder = 5,
+ kAS05EnterBarn = 6,
+ kAS05UseTwigWithChicken = 11,
+ kAS05LeaveScene = 12
+};
+
+Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
+ _nextChickenSequenceId = -1;
+ _currChickenSequenceId = -1;
+}
+
+int Scene05::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return _vm->isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
+}
+
+void Scene05::updateHotspots() {
+ _vm->setHotspot(kHS05Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS05Haystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS05Padlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS05Ladder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS05ExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS05Chicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS05WalkArea1, 104, 0, 421, 480);
+ _vm->setHotspot(kHS05WalkArea2, 422, 0, 800, 487);
+ _vm->setHotspot(kHS05WalkArea3, 0, 0, 104, 499);
+ _vm->setDeviceHotspot(kHS05Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS05Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_hotspots[kHS05Padlock]._flags = SF_EXIT_U_CURSOR;
+ _vm->_hotspotsCount = 10;
+}
+
+void Scene05::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(7);
+
+ _currChickenSequenceId = 0x142;
+ _vm->_gameSys->setAnimation(0x142, 100, 3);
+ _vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextChickenSequenceId = -1;
+
+ _vm->_timers[5] = _vm->getRandom(10) + 30;
+ _vm->_timers[6] = _vm->getRandom(150) + 300;
+
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->endSceneInit();
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 9, -1, 0x107B9, 1);
+ } else {
+ _vm->initGnapPos(6, 8, kDirBottomRight);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 12, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS05Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS05Platypus:
+ if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS05Haystack:
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ } else if (_vm->isFlag(kGFNeedleTaken)) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->gnapUseDeviceOnPlatypuss();
+ if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
+ _vm->_platypusActionStatus = kAS05PlatSearchHaystack;
+ _vm->_platypusFacing = kDirUnk4;
+ }
+ if (_vm->_gnapX == 4 && (_vm->_gnapY == 8 || _vm->_gnapY == 7))
+ _vm->gnapWalkStep();
+ _vm->playGnapIdle(_vm->_platX, _vm->_platY);
+ }
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS05Chicken:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS05UseTwigWithChicken;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(9, 7);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS05GrabChicken;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS05TalkChicken;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS05Ladder:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(2, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS05GrabLadder;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS05Padlock:
+ if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
+ _vm->_gnapActionStatus = kAS05EnterBarn;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 6;
+ else
+ _vm->_newSceneNum = 36;
+ } else if (_vm->_gnapActionStatus < 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->_gnapActionStatus = kAS05PickPadlock;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(7, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS05TryPickPadlock;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS05ExitHouse:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS05LeaveScene;
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 4;
+ else
+ _vm->_newSceneNum = 37;
+ }
+ break;
+
+ case kHS05WalkArea1:
+ case kHS05WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS05WalkArea3:
+ // Nothing
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
+ if (_vm->getRandom(4) != 0)
+ _nextChickenSequenceId = 0x142;
+ else
+ _nextChickenSequenceId = 0x143;
+ }
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(150) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene05::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS05LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS05TryPickPadlock:
+ _vm->_gameSys->insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x148;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS05PickPadlock:
+ _vm->_gameSys->setAnimation(0x147, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x147;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->setFlag(kGFBarnPadlockOpen);
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_newSceneNum = 6;
+ _vm->_timers[2] = 100;
+ _vm->invRemove(kItemNeedle);
+ _vm->_gnapActionStatus = kAS05LeaveScene;
+ break;
+ case kAS05TalkChicken:
+ _nextChickenSequenceId = 0x144;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS05GrabChicken:
+ _nextChickenSequenceId = 0x14B;
+ break;
+ case kAS05GrabLadder:
+ while (_vm->_gameSys->isSequenceActive(0x149, 39))
+ _vm->gameUpdateTick();
+ _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x14D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[2] = 200;
+ _vm->_timers[6] = 300;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS05EnterBarn:
+ _vm->_gameSys->insertSequence(0x107B1, 1,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gameSys->setAnimation(0x107B1, 1, 0);
+ _vm->_gnapActionStatus = kAS05LeaveScene;
+ break;
+ case kAS05UseTwigWithChicken:
+ _vm->playGnapShowItem(5, 0, 0);
+ _nextChickenSequenceId = 0x14F;
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (_vm->_platypusSequenceId == 0x146) {
+ _vm->_platX = 4;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusId = 20 * _vm->_platY;
+ _vm->invAdd(kItemNeedle);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->setGrabCursorSprite(kItemNeedle);
+ _vm->showCursor();
+ _vm->_timers[1] = 30;
+ _vm->_platypusActionStatus = -1;
+ }
+ if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->_platypusSequenceId = 0x146;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x146, 256, 1);
+ _vm->_timers[1] = 300;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_nextChickenSequenceId == 0x14B) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x14C;
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextChickenSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS06Platypus = 0,
+ kHS06Gas = 1,
+ kHS06Ladder = 2,
+ kHS06Horse = 3,
+ kHS06ExitOutsideBarn = 4,
+ kHS06Device = 5,
+ kHS06WalkArea1 = 6,
+ kHS06WalkArea2 = 7,
+ kHS06WalkArea3 = 8,
+ kHS06WalkArea4 = 9,
+ kHS06WalkArea5 = 10
+};
+
+enum {
+ kAS06TryToGetGas = 0,
+ kAS06TryToClimbLadder = 1,
+ kAS06TryToClimbLadderDone = 2,
+ kAS06TalkToHorse = 3,
+ kAS06UseTwigOnHorse = 4,
+ kAS06LeaveScene = 5
+};
+
+Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
+ _horseTurnedBack = false;;
+ _nextPlatSequenceId = -1;
+ _nextHorseSequenceId = -1;
+ _currHorseSequenceId = -1;
+}
+
+int Scene06::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_vm->isFlag(kGFSceneFlag1)) {
+ _vm->playSound(0x11B, false);
+ _vm->clearFlag(kGFSceneFlag1);
+ }
+ return 0x101;
+}
+
+void Scene06::updateHotspots() {
+ _vm->setHotspot(kHS06Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS06Gas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS06Ladder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS06Horse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS06ExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHS06WalkArea1, 0, 0, 200, 515);
+ _vm->setHotspot(kHS06WalkArea2, 200, 0, 285, 499);
+ _vm->setHotspot(kHS06WalkArea3, 688, 0, 800, 499);
+ _vm->setHotspot(kHS06WalkArea4, 475, 469, 800, 505);
+ _vm->setHotspot(kHS06WalkArea5, 0, 0, 800, 504);
+ _vm->setDeviceHotspot(kHS06Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFGasTaken))
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
+ if (_vm->_cursorValue == 4) {
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS06Gas]._flags = SF_DISABLED;
+ }
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene06::run() {
+ bool triedDeviceOnGas = false;
+
+ _vm->startSoundTimerC(7);
+
+ _horseTurnedBack = false;
+ _vm->_gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currHorseSequenceId = 0xF1;
+ _nextHorseSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0xF1, 120, 2);
+ _vm->_timers[4] = _vm->getRandom(40) + 25;
+
+ if (_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFGasTaken) && _vm->_cursorValue != 4)
+ _vm->_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->initGnapPos(5, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 5, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS06Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS06Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
+ _vm->gnapUseDisguiseOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFKeysTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS06Gas:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(5, 0);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFUnk04)) {
+ _vm->playGnapImpossible(0, 0);
+ } else if (triedDeviceOnGas) {
+ _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS06TryToGetGas;
+ } else {
+ triedDeviceOnGas = true;
+ _vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFUnk04))
+ _vm->playGnapImpossible(0, 0);
+ else
+ _vm->playGnapScratchingHead(5, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS06Ladder:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 4);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFGasTaken))
+ _vm->playGnapImpossible(0, 0);
+ else {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS06TryToClimbLadder;
+ _vm->setFlag(kGFGasTaken);
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS06Horse:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
+ _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
+ _vm->_platypusFacing = kDirNone;
+ _vm->_gnapActionStatus = kAS06UseTwigOnHorse;
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(3, 2);
+ break;
+ case TALK_CURSOR:
+ if (_horseTurnedBack) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ } else {
+ _vm->_gnapIdleFacing = 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->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS06TalkToHorse;
+ }
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS06ExitOutsideBarn:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS06LeaveScene;
+ if (_vm->_cursorValue == 1)
+ _vm->_newSceneNum = 5;
+ else
+ _vm->_newSceneNum = 35;
+ }
+ break;
+
+ case kHS06WalkArea1:
+ case kHS06WalkArea2:
+ case kHS06WalkArea3:
+ case kHS06WalkArea4:
+ case kHS06WalkArea5:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(40) + 25;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (_horseTurnedBack) {
+ _nextHorseSequenceId = 0xF5;
+ } else {
+ switch (_vm->getRandom(5)) {
+ case 0:
+ case 1:
+ case 2:
+ _nextHorseSequenceId = 0xF1;
+ break;
+ case 3:
+ _nextHorseSequenceId = 0xF3;
+ break;
+ case 4:
+ _nextHorseSequenceId = 0xF4;
+ break;
+ }
+ }
+ }
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene06::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS06LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS06TryToGetGas:
+ _vm->_gameSys->insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xFC;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS06TryToClimbLadder:
+ _vm->_gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xFD, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xFD;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
+ break;
+ case kAS06TryToClimbLadderDone:
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS06TalkToHorse:
+ _nextHorseSequenceId = 0xF6;
+ break;
+ case kAS06UseTwigOnHorse:
+ _nextPlatSequenceId = 0xFB;
+ break;
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusSequenceId == 0xFA) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->invAdd(kItemGas);
+ _vm->setFlag(kGFGasTaken);
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
+ _vm->setGrabCursorSprite(kItemGas);
+ _vm->_platypusActionStatus = -1;
+ _vm->_platX = 6;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->setFlag(kGFUnk04);
+ _vm->_gnapActionStatus = -1;
+ _vm->showCursor();
+ }
+ if (_nextPlatSequenceId == 0xFB) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _nextHorseSequenceId = 0xF2;
+ _vm->_platypusActionStatus = 6;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
+ switch (_nextHorseSequenceId) {
+ case 0xF2:
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0xFA, 256, 1);
+ _vm->_gameSys->insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFA, 256, 0xFB, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xFA;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B7;
+ _vm->_gnapSequenceDatNum = 1;
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
+ _nextPlatSequenceId = -1;
+ _vm->invRemove(kItemTwig);
+ break;
+ case 0xF6:
+ _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(0xF6, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _horseTurnedBack = true;
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ break;
+ default:
+ _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
+ _vm->_gameSys->insertSequence(_nextHorseSequenceId, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _currHorseSequenceId = _nextHorseSequenceId;
+ _nextHorseSequenceId = -1;
+ break;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS07Platypus = 0,
+ kHS07ExitHouse = 1,
+ kHS07Dice = 2,
+ kHS07Device = 3,
+ kHS07WalkArea1 = 4,
+ kHS07WalkArea2 = 5,
+ kHS07WalkArea3 = 6
+};
+
+enum {
+ kAS07Wait = 0,
+ kAS07LeaveScene = 1
+};
+
+Scene07::Scene07(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene07::init() {
+ return 0x92;
+}
+
+void Scene07::updateHotspots() {
+ _vm->setHotspot(kHS07Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS07ExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
+ _vm->setHotspot(kHS07Dice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS07WalkArea1, 0, 0, 325, 445);
+ _vm->setHotspot(kHS07WalkArea2, 325, 0, 799, 445, _vm->_isLeavingScene ? SF_WALKABLE : SF_NONE);
+ _vm->setHotspot(kHS07WalkArea3, 160, 0, 325, 495);
+ _vm->setDeviceHotspot(kHS07Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypus))
+ _vm->_hotspots[kHS07Dice]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene07::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
+
+ _vm->invRemove(kItemGas);
+ _vm->invRemove(kItemNeedle);
+
+ if (!_vm->isFlag(kGFPlatypus))
+ _vm->_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 8) {
+ _vm->initGnapPos(7, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 7, kDirUnk4);
+ _vm->endSceneInit();
+ } else {
+ _vm->_gnapX = 6;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ _vm->_gnapSequenceId = 0x8F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS07Wait;
+ _vm->_platX = 3;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceId = 0x91;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ }
+
+ _vm->_timers[3] = 600;
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
+
+ if (_vm->testWalk(0, 1, 8, 7, 6, 7))
+ updateHotspots();
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS07Platypus:
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ break;
+
+ case kHS07ExitHouse:
+ _vm->_isLeavingScene = true;
+ if (_vm->_gnapX > 8)
+ _vm->gnapWalkTo(_vm->_gnapX, 7, 0, 0x107AD, 1);
+ else
+ _vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kAS07LeaveScene;
+ break;
+
+ case kHS07Dice:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 8, 3, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ break;
+ case GRAB_CURSOR:
+ _vm->setFlag(kGFPlatypus);
+ _vm->invAdd(kItemDice);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(3, 3);
+ _vm->_gameSys->setAnimation(0x8E, 1, 2);
+ _vm->_gameSys->insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_vm->getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = _vm->getGnapSequenceId(gskUseDevice, 0, 0);
+ _vm->_gnapSequenceDatNum = 1;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS07Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
+ }
+ break;
+
+ case kHS07WalkArea1:
+ case kHS07WalkArea2:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS07WalkArea3:
+ // Nothing
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updateGnapIdleSequence();
+ if (_vm->_platypusActionStatus < 0 && _vm->_gnapActionStatus < 0) {
+ if (_vm->_timers[0]) {
+ if (!_vm->_timers[1]) {
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ int gnapRandomValue = _vm->getRandom(20);
+ // TODO Cleanup
+ if (_vm->_platypusFacing != kDirNone) {
+ if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7CA) {
+ if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7CA) {
+ if (_vm->_platY == 9)
+ _vm->playPlatypusSequence(0x107CA);
+ } else {
+ _vm->playPlatypusSequence(0x10845);
+ }
+ } else {
+ _vm->playPlatypusSequence(0x107CC);
+ }
+ } else if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7C9) {
+ if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7C9) {
+ if (_vm->_platY == 9)
+ _vm->playPlatypusSequence(0x107C9);
+ } else {
+ _vm->playPlatypusSequence(0x10844);
+ }
+ } else {
+ _vm->playPlatypusSequence(0x107CB);
+ }
+ _vm->_gameSys->setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
+ }
+ } else {
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
+ _vm->platypusMakeRoom();
+ }
+ } else {
+ _vm->_timers[0] = 100;
+ _vm->_timers[1] = 35;
+ }
+ playRandomSound(4);
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(40) + 50;
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene07::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS07LeaveScene:
+ _vm->_newSceneNum = 8;
+ _vm->_sceneDone = true;
+ break;
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->setGrabCursorSprite(kItemDice);
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kH08SPlatypus = 0,
+ kHS08ExitBackdoor = 1,
+ kHS08ExitCrash = 2,
+ kHS08Man = 3,
+ kHS08Door = 4,
+ kHS08Meat = 5,
+ kHS08Bone = 6,
+ kHS08Toy = 7,
+ kHS08WalkArea1 = 8,
+ kHS08Device = 9,
+ kHS08WalkArea2 = 10
+};
+
+enum {
+ kAS08LeaveScene = 0,
+ kAS08TalkMan = 1,
+ kAS08LookMan = 2,
+ kAS08LookDog = 3,
+ kAS08GrabDog = 4,
+ kAS08TalkDog = 5,
+ kAS08PlatWithMan = 6,
+ kAS08PlatWithDog = 7
+};
+
+Scene08::Scene08(GnapEngine *vm) : Scene(vm) {
+ _nextDogSequenceId = -1;
+ _currDogSequenceId = -1;
+ _nextManSequenceId = -1;
+ _currManSequenceId = -1;
+}
+
+int Scene08::init() {
+ return 0x150;
+}
+
+void Scene08::updateHotspots() {
+ _vm->setHotspot(kH08SPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08ExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS08ExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS08Man, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Door, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Meat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Bone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08Toy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS08WalkArea1, 290, 340, -1, -1);
+ _vm->setHotspot(kHS08WalkArea2, 0, 0, 799, 420);
+ _vm->setDeviceHotspot(kHS08Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_hotspots[kHS08Meat]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_hotspots[kHS08Bone]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_hotspots[kHS08Toy]._flags = SF_WALKABLE | SF_DISABLED;
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene08::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ if ( _nextDogSequenceId != 0x135 )
+ _nextDogSequenceId = 0x134;
+ }
+}
+
+void Scene08::run() {
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currDogSequenceId = 0x135;
+ _nextDogSequenceId = 0x135;
+
+ _vm->_gameSys->setAnimation(0x135, 100, 3);
+ _vm->_gameSys->insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currManSequenceId = 0x140;
+ _nextManSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x140, 100, 2);
+ _vm->_gameSys->insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
+
+ if (!_vm->isFlag(kGFBarnPadlockOpen))
+ _vm->_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 7, kDirNone);
+
+ _vm->endSceneInit();
+
+ _vm->gnapWalkTo(1, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS08Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+ }
+ break;
+
+ case kH08SPlatypus:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapKissPlatypus(8);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ }
+ break;
+
+ case kHS08ExitBackdoor:
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS08LeaveScene;
+ _vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
+ _vm->_newSceneNum = 9;
+ break;
+
+ case kHS08ExitCrash:
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS08LeaveScene;
+ _vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
+ _vm->_newSceneNum = 7;
+ break;
+
+ case kHS08Man:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 6, 7, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS08LookMan;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS08TalkMan;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kAS08PlatWithMan;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(6, 6);
+ break;
+ }
+ }
+ break;
+
+ case kHS08Door:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 7, 5, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS08GrabDog;
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS08LookDog;
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS08GrabDog;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS08TalkDog;
+ break;
+ case PLAT_CURSOR:
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kAS08PlatWithDog;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(3, 7);
+ break;
+ }
+ }
+ break;
+
+ case kHS08Meat:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 8, 5, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 7);
+ break;
+ case GRAB_CURSOR:
+ if (_currDogSequenceId == 0x135) {
+ _vm->playGnapScratchingHead(6, 7);
+ } else {
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(6, 7);
+ _vm->playGnapUseDevice(0, 0);
+ _nextDogSequenceId = 0x149;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS08Bone:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(2, 7, 3, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(3, 6);
+ break;
+ case GRAB_CURSOR:
+ if (_currDogSequenceId == 0x135) {
+ _vm->playGnapScratchingHead(3, 6);
+ } else {
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(3, 6);
+ _vm->playGnapUseDevice(0, 0);
+ _nextDogSequenceId = 0x14A;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS08Toy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(8, 7, 7, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(7, 6);
+ break;
+ case GRAB_CURSOR:
+ if (_currDogSequenceId == 0x135) {
+ _vm->playGnapScratchingHead(7, 6);
+ } else {
+ _vm->gnapActionIdle(0x14D);
+ _vm->playGnapPullOutDevice(7, 6);
+ _vm->playGnapUseDevice(0, 0);
+ _nextDogSequenceId = 0x14B;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS08WalkArea1:
+ case kHS08WalkArea2:
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(-1, 6, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapActionIdle(0x14D);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(50) + 125;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextManSequenceId == -1 &&
+ (_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
+ int _gnapRandomValue = _vm->getRandom(4);
+ switch (_gnapRandomValue) {
+ case 0:
+ _nextManSequenceId = 0x138;
+ break;
+ case 1:
+ _nextManSequenceId = 0x136;
+ break;
+ case 2:
+ _nextManSequenceId = 0x13B;
+ break;
+ case 3:
+ _nextManSequenceId = 0x13A;
+ break;
+ }
+ }
+ }
+ playRandomSound(5);
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(50) + 75;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene08::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS08LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS08TalkMan:
+ _nextManSequenceId = 0x13F;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS08LookMan:
+ _nextManSequenceId = 0x140;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS08LookDog:
+ _nextManSequenceId = 0x137;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS08GrabDog:
+ if (_currDogSequenceId == 0x135)
+ _nextDogSequenceId = 0x133;
+ else
+ _nextDogSequenceId = 0x13C;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS08TalkDog:
+ if (_currDogSequenceId == 0x135)
+ _nextDogSequenceId = 0x133;
+ else
+ _nextDogSequenceId = 0x13C;
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
+ case kAS08PlatWithDog:
+ _nextDogSequenceId = 0x147;
+ break;
+ case kAS08PlatWithMan:
+ _nextManSequenceId = 0x140;
+ _vm->_platypusActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextManSequenceId, 100, 2);
+ _vm->_gameSys->insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currManSequenceId = _nextManSequenceId;
+ _nextManSequenceId = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_currDogSequenceId == 0x147)
+ _vm->_platypusActionStatus = -1;
+ if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
+ if (_vm->getRandom(2) != 0)
+ _nextManSequenceId = 0x13D;
+ else
+ _nextManSequenceId = 0x13E;
+ } else if (_currDogSequenceId == 0x133)
+ _nextManSequenceId = 0x139;
+ if (_nextDogSequenceId == 0x149 || _nextDogSequenceId == 0x14A || _nextDogSequenceId == 0x14B) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ switch (_nextDogSequenceId) {
+ case 0x149:
+ _vm->setFlag(kGFBarnPadlockOpen);
+ _vm->_hotspots[kHS08Meat]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x144, 1, true);
+ break;
+ case 0x14A:
+ _vm->setFlag(kGFTruckFilledWithGas);
+ _vm->_hotspots[kHS08Bone]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x145, 1, true);
+ break;
+ case 0x14B:
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->_hotspots[kHS08Toy]._flags = SF_DISABLED | SF_WALKABLE;
+ _vm->_gameSys->removeSequence(0x146, 1, true);
+ break;
+ }
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = 0x134;
+ } else if (_nextDogSequenceId == 0x147) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ _nextDogSequenceId = 0x134;
+ _vm->_platX = 1;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceId = 0x148;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_platypusSequenceDatNum = 0;
+ if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
+ _vm->gnapWalkStep();
+ } else if (_nextDogSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
+ _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currDogSequenceId = _nextDogSequenceId;
+ if (_nextDogSequenceId != 0x135)
+ _nextDogSequenceId = 0x134;
+ if (_currDogSequenceId == 0x133) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x14D;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ }
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS09Platypus = 0,
+ kHS09ExitKitchen = 1,
+ kHS09ExitHouse = 2,
+ kHS09Trash = 3,
+ kHS09Device = 4,
+ kHS09WalkArea1 = 5,
+ kHS09WalkArea2 = 6,
+ kHS09WalkArea3 = 7
+};
+
+enum {
+ kAS09LeaveScene = 0,
+ kAS09SearchTrash = 1,
+ kAS09SearchTrashDone = 2
+};
+
+Scene09::Scene09(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene09::init() {
+ return 0x4E;
+}
+
+void Scene09::updateHotspots() {
+ _vm->setHotspot(kHS09Platypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS09ExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
+ _vm->setHotspot(kHS09ExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS09Trash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS09WalkArea1, 0, 0, 799, 400);
+ _vm->setHotspot(kHS09WalkArea2, 0, 0, 630, 450);
+ _vm->setHotspot(kHS09WalkArea2, 0, 0, 175, 495);
+ _vm->setDeviceHotspot(kHS09Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 8;
+}
+
+void Scene09::run() {
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 8) {
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x10919))
+ _vm->playSound(0x10919, true);
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS09Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+ }
+ break;
+
+ case kHS09Platypus:
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ break;
+
+ case kHS09ExitKitchen:
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 10;
+ _vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kAS09LeaveScene;
+ _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->_platypusFacing = kDirUnk4;
+ break;
+
+ case kHS09ExitHouse:
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 8;
+ _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS09LeaveScene;
+ _vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
+ _vm->_platypusFacing = kDirUnk4;
+ break;
+
+ case kHS09Trash:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(9, 6, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 3);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapActionStatus = kAS09SearchTrash;
+ _vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS09WalkArea1:
+ case kHS09WalkArea2:
+ case kHS09WalkArea3:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(150) + 100;
+ if (_vm->_timers[4] & 1)
+ _vm->_gameSys->insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ playRandomSound(5);
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(150) + 50;
+ _vm->_timers[5] = _vm->getRandom(40) + 50;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene09::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS09LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS09SearchTrash:
+ _vm->_gameSys->setAnimation(0x4C, 120, 0);
+ _vm->_gameSys->insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x4B, 2, true);
+ _vm->_gnapSequenceId = 0x4C;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 9;
+ _vm->_gnapY = 6;
+ _vm->_gnapActionStatus = kAS09SearchTrashDone;
+ break;
+ case kAS09SearchTrashDone:
+ _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[2] = 360;
+ _vm->_timers[4] = _vm->getRandom(150) + 100;
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group0.h b/engines/gnap/scenes/group0.h
new file mode 100644
index 0000000..a705ba1
--- /dev/null
+++ b/engines/gnap/scenes/group0.h
@@ -0,0 +1,183 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP01_H
+#define GNAP_GROUP01_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene01: public Scene {
+public:
+ Scene01(GnapEngine *vm);
+ ~Scene01();
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ int _pigsIdCtr;
+ int _smokeIdCtr;
+ Graphics::Surface *_spaceshipSurface;
+};
+
+class Scene02: public Scene {
+public:
+ Scene02(GnapEngine *vm);
+ ~Scene02() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ int _truckGrillCtr;
+ int _nextChickenSequenceId;
+ int _currChickenSequenceId;
+ int _gnapTruckSequenceId;
+};
+
+class Scene03: public Scene {
+public:
+ Scene03(GnapEngine *vm);
+ ~Scene03() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ bool _platypusHypnotized;
+ bool _platypusScared;
+ int _nextPlatSequenceId;
+ int _nextFrogSequenceId;
+ int _currFrogSequenceId;
+};
+
+class Scene04: public Scene {
+public:
+ Scene04(GnapEngine *vm);
+ ~Scene04() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ bool _triedWindow;
+ int _dogIdCtr;
+ int _nextDogSequenceId;
+ int _currDogSequenceId;
+};
+
+class Scene05: public Scene {
+public:
+ Scene05(GnapEngine *vm);
+ ~Scene05() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ int _nextChickenSequenceId;
+ int _currChickenSequenceId;
+};
+
+class Scene06: public Scene {
+public:
+ Scene06(GnapEngine *vm);
+ ~Scene06() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+
+private:
+ bool _horseTurnedBack;
+ int _nextPlatSequenceId;
+ int _nextHorseSequenceId;
+ int _currHorseSequenceId;
+};
+
+class Scene07: public Scene {
+public:
+ Scene07(GnapEngine *vm);
+ ~Scene07() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+};
+
+class Scene08: public Scene {
+public:
+ Scene08(GnapEngine *vm);
+ ~Scene08() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _nextDogSequenceId;
+ int _currDogSequenceId;
+ int _nextManSequenceId;
+ int _currManSequenceId;
+};
+
+class Scene09: public Scene {
+public:
+ Scene09(GnapEngine *vm);
+ ~Scene09() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {}
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_GROUP01_H
diff --git a/engines/gnap/scenes/intro.cpp b/engines/gnap/scenes/intro.cpp
new file mode 100644
index 0000000..0463f12
--- /dev/null
+++ b/engines/gnap/scenes/intro.cpp
@@ -0,0 +1,181 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "video/avi_decoder.h"
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/intro.h"
+
+namespace Gnap {
+
+SceneIntro::SceneIntro(GnapEngine *vm) : Scene(vm) {
+}
+
+int SceneIntro::init() {
+ return 0x37C;
+}
+
+void SceneIntro::run() {
+ const int animIdArr[] = {
+ 0x356, 0x357, 0x358, 0x35A, 0x35F,
+ 0x360, 0x361, 0x362, 0x363, 0x364,
+ 0x365, 0x368, 0x369, 0x36B, 0x378,
+ 0x36C, 0x36D, 0x36E, 0x36F, 0x370,
+ 0x371, 0x372, 0x373, 0x374, 0x375,
+ 0x376, 0x377, 0x378, 0x379, 0x37A,
+ 0x37B, 0};
+
+ const int backgroundIdArr[] = {
+ 0x354, 0x355, 0, 1, 3,
+ 4, 5, 6, 7, 8,
+ 7, 9, 0xA, 0xB, 0xC,
+ 0xD, 0xE, 0xF, 0x10, 0x11,
+ 0x12, 0x13, 0x17, 0x14, 0x19,
+ 0x1A, 0x14, 0x15, 0x16, 0x14,
+ 0x19, 0};
+
+ int index = 0;
+ bool skip = false;
+
+ _vm->hideCursor();
+ _vm->_dat->open(1, "musop_n.dat");
+
+ Video::VideoDecoder *videoDecoder = new Video::AVIDecoder();
+ if (!videoDecoder->loadFile("hoffman.avi")) {
+ delete videoDecoder;
+ warning("Unable to open video 'hoffman.avi' - Skipping intro");
+ return;
+ }
+ videoDecoder->start();
+
+ int vidPosX = (800 - videoDecoder->getWidth()) / 2;
+ int vidPosY = (600 - videoDecoder->getHeight()) / 2;
+ bool skipVideo = false;
+
+ _vm->screenEffect(1, 255, 255, 255);
+
+ while (!_vm->shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) {
+ if (videoDecoder->needsUpdate()) {
+ const Graphics::Surface *frame = videoDecoder->decodeNextFrame();
+ if (frame) {
+ if (frame->format.bytesPerPixel == 1) {
+ _vm->_system->copyRectToScreen(frame->getPixels(), frame->pitch, vidPosX, vidPosY, frame->w, frame->h);
+ } else if (frame->format.bytesPerPixel != 4) {
+ Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
+ _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ frame1->free();
+ delete frame1;
+ } else {
+ // The intro AVI is played upside down, it's the only video played in the English version
+ for (uint16 y = 0; y < frame->h / 2; y++) {
+ uint32 *ptrFrom = (uint32*)frame->getBasePtr(0, y);
+ uint32 *ptrTo = (uint32*)frame->getBasePtr(0, frame->h - y - 1);
+ for (uint16 x = 0; x < frame->w; x++) {
+ uint32 t = *ptrFrom;
+ *ptrFrom = *ptrTo;
+ *ptrTo = t;
+ ptrFrom++;
+ ptrTo++;
+ }
+ }
+
+ Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
+ _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
+ frame1->free();
+ delete frame1;
+ }
+ _vm->_system->updateScreen();
+ }
+ }
+
+ Common::Event event;
+ while (g_system->getEventManager()->pollEvent(event)) {
+ if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE) ||
+ event.type == Common::EVENT_LBUTTONUP)
+ skipVideo = true;
+ }
+
+ _vm->_system->delayMillis(10);
+ }
+
+ delete videoDecoder;
+
+ _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _vm->_gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x356, 2, 0);
+
+ while (!_vm->_sceneDone) {
+ _vm->gameUpdateTick();
+
+ if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip ) {
+ skip = false;
+ _vm->_gameSys->requestClear2(false);
+ _vm->_gameSys->requestClear1();
+ if ( index == 11 || index == 1 )
+ _vm->screenEffect(0, 0, 0, 0);
+
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (++index >= 31)
+ _vm->_sceneDone = true;
+ else {
+ _vm->_gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
+ if (index == 2) {
+ _vm->playSound(0x10000, false);
+ _vm->_gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
+ } else if (index == 3)
+ _vm->_gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ else if (index == 12)
+ _vm->_gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ _vm->_gameSys->setAnimation(animIdArr[index], 2, 0);
+
+ if (index == 11)
+ _vm->stopSound(0x10000);
+ }
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(29);
+ if (index == 0) {
+ skip = true;
+ _vm->stopSound(0x3CF);
+ } else if (index == 1)
+ skip = true;
+ else
+ _vm->_sceneDone = true;
+ }
+ }
+
+ _vm->stopSound(0x10000);
+
+ _vm->_newSceneNum = 1;
+ _vm->_newCursorValue = 1;
+
+ _vm->_dat->open(1, "stock_n.dat");
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/intro.h b/engines/gnap/scenes/intro.h
new file mode 100644
index 0000000..c744999
--- /dev/null
+++ b/engines/gnap/scenes/intro.h
@@ -0,0 +1,47 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_INTRO_H
+#define GNAP_INTRO_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class SceneIntro: public Scene {
+public:
+ SceneIntro(GnapEngine *vm);
+ ~SceneIntro() {}
+
+ virtual int init();
+ virtual void updateHotspots() {}
+ virtual void run();
+ virtual void updateAnimations() {}
+ virtual void updateAnimationsCb() {}
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_INTRO_H
diff --git a/engines/gnap/scenes/scene00.cpp b/engines/gnap/scenes/scene00.cpp
deleted file mode 100644
index 9ee0eb3..0000000
--- a/engines/gnap/scenes/scene00.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "video/avi_decoder.h"
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene00.h"
-
-namespace Gnap {
-
-Scene00::Scene00(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene00::init() {
- return 0x37C;
-}
-
-void Scene00::run() {
- const int animIdArr[] = {
- 0x356, 0x357, 0x358, 0x35A, 0x35F,
- 0x360, 0x361, 0x362, 0x363, 0x364,
- 0x365, 0x368, 0x369, 0x36B, 0x378,
- 0x36C, 0x36D, 0x36E, 0x36F, 0x370,
- 0x371, 0x372, 0x373, 0x374, 0x375,
- 0x376, 0x377, 0x378, 0x379, 0x37A,
- 0x37B, 0};
-
- const int backgroundIdArr[] = {
- 0x354, 0x355, 0, 1, 3,
- 4, 5, 6, 7, 8,
- 7, 9, 0xA, 0xB, 0xC,
- 0xD, 0xE, 0xF, 0x10, 0x11,
- 0x12, 0x13, 0x17, 0x14, 0x19,
- 0x1A, 0x14, 0x15, 0x16, 0x14,
- 0x19, 0};
-
- int index = 0;
- bool skip = false;
-
- _vm->hideCursor();
- _vm->_dat->open(1, "musop_n.dat");
-
- Video::VideoDecoder *videoDecoder = new Video::AVIDecoder();
- if (!videoDecoder->loadFile("hoffman.avi")) {
- delete videoDecoder;
- warning("Unable to open video 'hoffman.avi' - Skipping intro");
- return;
- }
- videoDecoder->start();
-
- int vidPosX = (800 - videoDecoder->getWidth()) / 2;
- int vidPosY = (600 - videoDecoder->getHeight()) / 2;
- bool skipVideo = false;
-
- _vm->screenEffect(1, 255, 255, 255);
-
- while (!_vm->shouldQuit() && !videoDecoder->endOfVideo() && !skipVideo) {
- if (videoDecoder->needsUpdate()) {
- const Graphics::Surface *frame = videoDecoder->decodeNextFrame();
- if (frame) {
- if (frame->format.bytesPerPixel == 1) {
- _vm->_system->copyRectToScreen(frame->getPixels(), frame->pitch, vidPosX, vidPosY, frame->w, frame->h);
- } else if (frame->format.bytesPerPixel != 4) {
- Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
- _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
- frame1->free();
- delete frame1;
- } else {
- // The intro AVI is played upside down, it's the only video played in the English version
- for (uint16 y = 0; y < frame->h / 2; y++) {
- uint32 *ptrFrom = (uint32*)frame->getBasePtr(0, y);
- uint32 *ptrTo = (uint32*)frame->getBasePtr(0, frame->h - y - 1);
- for (uint16 x = 0; x < frame->w; x++) {
- uint32 t = *ptrFrom;
- *ptrFrom = *ptrTo;
- *ptrTo = t;
- ptrFrom++;
- ptrTo++;
- }
- }
-
- Graphics::Surface *frame1 = frame->convertTo(_vm->_system->getScreenFormat());
- _vm->_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, vidPosX, vidPosY, frame1->w, frame1->h);
- frame1->free();
- delete frame1;
- }
- _vm->_system->updateScreen();
- }
- }
-
- Common::Event event;
- while (g_system->getEventManager()->pollEvent(event)) {
- if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE) ||
- event.type == Common::EVENT_LBUTTONUP)
- skipVideo = true;
- }
-
- _vm->_system->delayMillis(10);
- }
-
- delete videoDecoder;
-
- _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _vm->_gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x356, 2, 0);
-
- while (!_vm->_sceneDone) {
- _vm->gameUpdateTick();
-
- if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip ) {
- skip = false;
- _vm->_gameSys->requestClear2(false);
- _vm->_gameSys->requestClear1();
- if ( index == 11 || index == 1 )
- _vm->screenEffect(0, 0, 0, 0);
-
- _vm->_gameSys->setAnimation(0, 0, 0);
- if (++index >= 31)
- _vm->_sceneDone = true;
- else {
- _vm->_gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
- if (index == 2) {
- _vm->playSound(0x10000, false);
- _vm->_gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
- } else if (index == 3)
- _vm->_gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
- else if (index == 12)
- _vm->_gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _vm->_gameSys->setAnimation(animIdArr[index], 2, 0);
-
- if (index == 11)
- _vm->stopSound(0x10000);
- }
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(29);
- if (index == 0) {
- skip = true;
- _vm->stopSound(0x3CF);
- } else if (index == 1)
- skip = true;
- else
- _vm->_sceneDone = true;
- }
- }
-
- _vm->stopSound(0x10000);
-
- _vm->_newSceneNum = 1;
- _vm->_newCursorValue = 1;
-
- _vm->_dat->open(1, "stock_n.dat");
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene00.h b/engines/gnap/scenes/scene00.h
deleted file mode 100644
index d71722b..0000000
--- a/engines/gnap/scenes/scene00.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE00_H
-#define GNAP_SCENE00_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene00: public Scene {
-public:
- Scene00(GnapEngine *vm);
- ~Scene00() {}
-
- virtual int init();
- virtual void updateHotspots() {}
- virtual void run();
- virtual void updateAnimations() {}
- virtual void updateAnimationsCb() {}
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE00_H
diff --git a/engines/gnap/scenes/scene01.cpp b/engines/gnap/scenes/scene01.cpp
deleted file mode 100644
index 39f572a..0000000
--- a/engines/gnap/scenes/scene01.cpp
+++ /dev/null
@@ -1,383 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene01.h"
-
-namespace Gnap {
-
-enum {
- kHS01Platypus = 0,
- kHS01ExitTruck = 1,
- kHS01Mud = 2,
- kHS01Pigs = 3,
- kHS01Spaceship = 4,
- kHS01Device = 5,
- kHS01WalkArea1 = 6,
- kHS01WalkArea2 = 7,
- kHS01WalkArea3 = 8,
- kHS01WalkArea4 = 9,
- kHS01WalkArea5 = 10,
- kHS01WalkArea6 = 11,
- kHS01WalkArea7 = 12,
- kHS01WalkArea8 = 13
-};
-
-enum {
- kAS01LookSpaceship = 1,
- kAS01LookSpaceshipDone = 2,
- kAS01LeaveScene = 3,
- kAS01TakeMud = 5,
- kAS01LookPigs = 6,
- kAS01UsePigs = 7
-};
-
-Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
- _pigsIdCtr = 0;
- _smokeIdCtr = 0;
- _spaceshipSurface = nullptr;
-}
-
-Scene01::~Scene01() {
- delete _spaceshipSurface;
-}
-
-int Scene01::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
- return 0x88;
-}
-
-void Scene01::updateHotspots() {
- _vm->setHotspot(kHS01Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS01ExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
- _vm->setHotspot(kHS01Mud, 138, 282, 204, 318, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
- _vm->setHotspot(kHS01Pigs, 408, 234, 578, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 4);
- _vm->setHotspot(kHS01Spaceship, 0, 200, 94, 292, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
- _vm->setHotspot(kHS01WalkArea1, 0, 0, 162, 426);
- _vm->setHotspot(kHS01WalkArea2, 162, 0, 237, 396);
- _vm->setHotspot(kHS01WalkArea3, 237, 0, 319, 363);
- _vm->setHotspot(kHS01WalkArea4, 520, 0, 800, 404);
- _vm->setHotspot(kHS01WalkArea5, 300, 447, 800, 600);
- _vm->setHotspot(kHS01WalkArea6, 678, 0, 800, 404);
- _vm->setHotspot(kHS01WalkArea7, 0, 0, 520, 351);
- _vm->setHotspot(kHS01WalkArea8, 0, 546, 300, 600);
- _vm->setDeviceHotspot(kHS01Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS01Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->isFlag(kGFMudTaken))
- _vm->_hotspots[kHS01Mud]._flags = SF_WALKABLE | SF_DISABLED;
- _vm->_hotspotsCount = 14;
-}
-
-void Scene01::run() {
- // NOTE Removed _s01_dword_474380 which was set when the mud was taken
- // which is also set in the global game flags.
-
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(5);
-
- _vm->_gameSys->setAnimation(134, 20, 4);
- _vm->_gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_gameSys->setAnimation(0x7F, 40, 2);
- _vm->_gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[4] = _vm->getRandom(100) + 300;
-
- if (!_vm->isFlag(kGFMudTaken))
- _vm->_gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum == 2) {
- _vm->initGnapPos(11, 6, kDirBottomLeft);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 6, kDirUnk4);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107B9, 1);
- } else {
- _vm->initGnapPos(1, 6, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(1, 7, kDirNone);
- _vm->endSceneInit();
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
- _vm->testWalk(0, 3, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
-
- case kHS01Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS01Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS01Spaceship:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kAS01LookSpaceship;
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS01Mud:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _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->_gnapActionStatus = kAS01TakeMud;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS01Pigs:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS01LookPigs;
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS01UsePigs;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS01LookPigs;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS01ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS01LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
- _vm->_newSceneNum = 2;
- }
- break;
-
- case kHS01WalkArea1:
- case kHS01WalkArea2:
- case kHS01WalkArea3:
- case kHS01WalkArea4:
- case kHS01WalkArea5:
- case kHS01WalkArea6:
- case kHS01WalkArea7:
- case kHS01WalkArea8:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (_vm->_timers[4] == 0) {
- // Update bird animation
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->getRandom(1) == 0)
- _vm->_gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene01::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS01LookSpaceship:
- _spaceshipSurface = _vm->_gameSys->createSurface(47);
- _vm->_gameSys->insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
- _vm->_gameSys->setAnimation(133, 256, 0);
- _vm->_gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = kAS01LookSpaceshipDone;
- break;
-
- case kAS01LookSpaceshipDone:
- _vm->_gameSys->removeSequence(133, 256, true);
- _vm->_gameSys->removeSpriteDrawItem(_spaceshipSurface, 255);
- _vm->deleteSurface(&_spaceshipSurface);
- _vm->_gnapActionStatus = -1;
- break;
-
- case kAS01LeaveScene:
- _vm->_sceneDone = true;
- break;
-
- case kAS01TakeMud:
- _vm->playGnapPullOutDevice(2, 3);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(128, 40, 3);
- _vm->_gnapActionStatus = -1;
- break;
-
- case kAS01LookPigs:
- _vm->playSound(138, false);
- _vm->playSound(139, false);
- _vm->playSound(140, false);
- _vm->_gnapActionStatus = -1;
- break;
-
- case kAS01UsePigs:
- _vm->playGnapPullOutDevice(7, 2);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->invAdd(kItemMud);
- _vm->setGrabCursorSprite(kItemMud);
- _vm->setFlag(kGFMudTaken);
- updateHotspots();
- }
-
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- _smokeIdCtr = (_smokeIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x86, _smokeIdCtr + 20, 4);
- _vm->_gameSys->insertSequence(0x86, _smokeIdCtr + 20,
- 0x86, (_smokeIdCtr + 1) % 2 + 20,
- kSeqSyncWait, 0, 0, 0);
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _pigsIdCtr = (_pigsIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x7F, _pigsIdCtr + 40, 2);
- _vm->_gameSys->insertSequence(0x7F, _pigsIdCtr + 40,
- 0x7F, (_pigsIdCtr + 1) % 2 + 40,
- kSeqSyncWait, 0, 0, 0);
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene01.h b/engines/gnap/scenes/scene01.h
deleted file mode 100644
index 8aca9fa..0000000
--- a/engines/gnap/scenes/scene01.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE01_H
-#define GNAP_SCENE01_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene01: public Scene {
-public:
- Scene01(GnapEngine *vm);
- ~Scene01();
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- int _pigsIdCtr;
- int _smokeIdCtr;
- Graphics::Surface *_spaceshipSurface;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE01_H
diff --git a/engines/gnap/scenes/scene02.cpp b/engines/gnap/scenes/scene02.cpp
deleted file mode 100644
index b95810a..0000000
--- a/engines/gnap/scenes/scene02.cpp
+++ /dev/null
@@ -1,538 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene02.h"
-
-namespace Gnap {
-
-enum {
- kHS02Platypus = 0,
- kHS02Chicken = 1,
- kHS02Truck1 = 2,
- kHS02Truck2 = 3,
- kHS02TruckGrill = 4,
- kHS02Device = 5,
- kHS02ExitHouse = 6,
- kHS02ExitBarn = 7,
- kHS02ExitCreek = 8,
- kHS02ExitPigpen = 9,
- kHS02WalkArea1 = 10,
- kHS02WalkArea2 = 11,
- kHS02WalkArea3 = 12,
- kHS02WalkArea4 = 13
-};
-
-enum {
- kAS02UseTruckNoKeys = 0,
- kAS02UseGasWithTruck = 1,
- kAS02UseTruckGas = 2,
- kAS02UseTruckNoGas = 3,
- kAS02GrabTruckGrill = 5,
- kAS02LeaveScene = 6,
- kAS02TalkChicken = 7,
- kAS02GrabChicken = 8,
- kAS02GrabChickenDone = 9,
- kAS02UseTruckNoKeysDone = 11,
- kAS02UseGasWithTruckDone = 12,
- kAS02UseTwigWithChicken = 16
-};
-
-Scene02::Scene02(GnapEngine *vm) : Scene(vm) {
- _truckGrillCtr = 0;
- _nextChickenSequenceId = 0;
- _currChickenSequenceId = 0;
- _gnapTruckSequenceId = 0;
-}
-
-int Scene02::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- return _vm->isFlag(kGFTruckKeysUsed) ? 0x15A : 0x15B;
-}
-
-void Scene02::updateHotspots() {
- _vm->setHotspot(kHS02Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE);
- _vm->setHotspot(kHS02Chicken, 606, 455, 702, 568, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHS02Truck1, 385, 258, 464, 304, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 5);
- _vm->setHotspot(kHS02Truck2, 316, 224, 390, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 6);
- _vm->setHotspot(kHS02TruckGrill, 156, 318, 246, 390, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 7);
- _vm->setHotspot(kHS02ExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 5);
- _vm->setHotspot(kHS02ExitBarn, 610, 0, 800, 164, SF_EXIT_U_CURSOR, 10, 5);
- _vm->setHotspot(kHS02ExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- _vm->setHotspot(kHS02ExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHS02WalkArea1, 92, 140, 304, 430, 0, 3, 1);
- _vm->setHotspot(kHS02WalkArea2, 0, 0, 800, 380);
- _vm->setHotspot(kHS02WalkArea3, 0, 0, 386, 445);
- _vm->setHotspot(kHS02WalkArea4, 386, 0, 509, 410);
- _vm->setDeviceHotspot(kHS02Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS02Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _vm->_hotspotsCount = 14;
-}
-
-void Scene02::run() {
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(6);
-
- _currChickenSequenceId = 0x14B;
- _vm->_gameSys->setAnimation(0x14B, 179, 2);
- _vm->_gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
-
- _nextChickenSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- _vm->_timers[4] = _vm->getRandom(100) + 300;
-
- _vm->queueInsertDeviceIcon();
-
- switch (_vm->_prevSceneNum) {
- case 3:
- _vm->initGnapPos(11, 6, kDirBottomLeft);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 6, kDirUnk4);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
- break;
- case 4:
- _vm->initGnapPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(7, 6, 0, 0x107B9, 1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
- updateHotspots();
- _vm->_gameSys->waitForUpdate();
- break;
- case 47:
- _vm->clearFlag(kGFUnk25);
- _vm->initGnapPos(5, 6, kDirBottomLeft);
- _vm->initPlatypusPos(6, 7, kDirUnk4);
- _vm->endSceneInit();
- break;
- case 49:
- _vm->initGnapPos(5, 6, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(6, 7, kDirNone);
- _vm->endSceneInit();
- break;
- default:
- _vm->initGnapPos(-1, 6, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(-1, 7, kDirNone);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- break;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 6, 7, 6, 8, 6);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS02Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS02Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS02Chicken:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS02UseTwigWithChicken;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(9, 8);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kAS02GrabChicken;
- else
- _vm->_gnapActionStatus = -1;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS02TalkChicken;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS02Truck1:
- case kHS02Truck2:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemKeys) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemKeys);
- if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kAS02UseTruckGas;
- else
- _vm->_gnapActionStatus = kAS02UseTruckNoGas;
- }
- } 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))
- _vm->_gnapActionStatus = kAS02UseGasWithTruck;
- _vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 2);
- 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->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kAS02UseTruckGas;
- else
- _vm->_gnapActionStatus = kAS02UseTruckNoGas;
- }
- } else {
- _vm->_gnapIdleFacing = kDirUnk4;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
- _vm->_gnapActionStatus = kAS02UseTruckNoKeys;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS02TruckGrill:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 4);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS02GrabTruckGrill;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS02ExitHouse:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
- updateHotspots();
- _vm->_newSceneNum = 4;
- }
- break;
-
- case kHS02ExitBarn:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
- updateHotspots();
- _vm->_newSceneNum = 5;
- }
- break;
-
- case kHS02ExitCreek:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
- _vm->_newSceneNum = 3;
- }
- break;
-
- case kHS02ExitPigpen:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
- _vm->_newSceneNum = 1;
- }
- break;
-
- case kHS02WalkArea1:
- case kHS02WalkArea2:
- case kHS02WalkArea3:
- case kHS02WalkArea4:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- // Update bird animation
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
- if (_vm->getRandom(6) != 0) {
- _nextChickenSequenceId = 0x14B;
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- } else {
- _nextChickenSequenceId = 0x14D;
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- }
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene02::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
- case kAS02UseTruckNoKeys:
- _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x14E, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x14E;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS02UseTruckNoKeysDone;
- break;
- case kAS02UseGasWithTruck:
- _vm->_gameSys->insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x151, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x151;
- _vm->_gnapSequenceDatNum = 0;
- _vm->invRemove(kItemGas);
- _vm->setGrabCursorSprite(-1);
- _vm->setFlag(kGFTruckFilledWithGas);
- _vm->_gnapActionStatus = kAS02UseGasWithTruckDone;
- break;
- case kAS02UseTruckGas:
- _vm->_timers[5] = 9999;
- _vm->_timers[4] = 9999;
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->waitForUpdate();
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnapSequenceId = 0x14F;
- _vm->_gnapSequenceDatNum = 0;
- _vm->invRemove(kItemKeys);
- _vm->setGrabCursorSprite(-1);
- }
- _vm->_newSceneNum = 47;
- _vm->_sceneDone = true;
- break;
- case kAS02UseTruckNoGas:
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _vm->_timers[4] = 250;
- if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->waitForUpdate();
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnapSequenceId = 0x14F;
- _vm->_gnapSequenceDatNum = 0;
- _vm->invRemove(kItemKeys);
- _vm->setGrabCursorSprite(-1);
- }
- _vm->_newSceneNum = 47;
- _vm->_sceneDone = true;
- _vm->setFlag(kGFUnk25);
- break;
- case kAS02GrabTruckGrill:
- switch (_truckGrillCtr) {
- case 0:
- _gnapTruckSequenceId = 0x158;
- break;
- case 1:
- _gnapTruckSequenceId = 0x159;
- break;
- case 2:
- _gnapTruckSequenceId = 0x157;
- break;
- }
- _truckGrillCtr = (_truckGrillCtr + 1) % 3;
- _vm->_gameSys->insertSequence(_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = _gnapTruckSequenceId;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS02LeaveScene:
- _vm->_sceneDone = true;
- break;
- case kAS02TalkChicken:
- _nextChickenSequenceId = 0x14C;
- break;
- case kAS02GrabChicken:
- _nextChickenSequenceId = 0x150;
- _vm->_timers[2] = 100;
- break;
- case kAS02GrabChickenDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _currChickenSequenceId = 0x14B;
- _vm->_gameSys->setAnimation(0x14B, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- _vm->_timers[5] = 30;
- break;
- case kAS02UseTwigWithChicken:
- _vm->playGnapShowItem(5, 0, 0);
- _vm->_gameSys->insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
- _currChickenSequenceId = 0x155;
- _nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS02UseTruckNoKeysDone:
- case kAS02UseGasWithTruckDone:
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_nextChickenSequenceId == 0x150) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
- _nextChickenSequenceId = -1;
- _currChickenSequenceId = -1;
- _vm->_gnapActionStatus = kAS02GrabChickenDone;
- _vm->_timers[5] = 500;
- } else if (_nextChickenSequenceId == 0x14C) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _currChickenSequenceId = _nextChickenSequenceId;
- _nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- } else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _currChickenSequenceId = _nextChickenSequenceId;
- _nextChickenSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene02.h b/engines/gnap/scenes/scene02.h
deleted file mode 100644
index 187f24d..0000000
--- a/engines/gnap/scenes/scene02.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE02_H
-#define GNAP_SCENE02_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene02: public Scene {
-public:
- Scene02(GnapEngine *vm);
- ~Scene02() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- int _truckGrillCtr;
- int _nextChickenSequenceId;
- int _currChickenSequenceId;
- int _gnapTruckSequenceId;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE02_H
diff --git a/engines/gnap/scenes/scene03.cpp b/engines/gnap/scenes/scene03.cpp
deleted file mode 100644
index 3c35ee3..0000000
--- a/engines/gnap/scenes/scene03.cpp
+++ /dev/null
@@ -1,517 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene03.h"
-namespace Gnap {
-
-enum {
- kHS03Platypus = 0,
- kHS03Grass = 1,
- kHS03ExitTruck = 2,
- kHS03Creek = 3,
- kHS03TrappedPlatypus = 4,
- kHS03Device = 5,
- kHS03WalkAreas1 = 6,
- kHS03WalkAreas2 = 7,
- kHS03PlatypusWalkArea = 8,
- kHS03WalkAreas3 = 9
-};
-
-enum {
- kAS03LeaveScene = 0,
- kAS03FreePlatypus = 1,
- kAS03HypnotizePlat = 2,
- kAS03HypnotizeScaredPlat= 3,
- kAS03FreePlatypusDone = 4,
- kAS03GrabPlatypus = 5,
- kAS03GrabCreek = 6,
- kAS03GrabCreekDone = 7,
- kAS03GrabScaredPlatypus = 8
-};
-
-Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
- _nextPlatSequenceId = -1;
- _platypusScared = false;
- _platypusHypnotized = false;
- _nextFrogSequenceId = -1;
- _currFrogSequenceId = -1;
-}
-
-int Scene03::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 5);
- return 0x1CC;
-}
-
-void Scene03::updateHotspots() {
- _vm->setHotspot(kHS03Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS03Grass, 646, 408, 722, 458, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- _vm->setHotspot(kHS03ExitTruck, 218, 64, 371, 224, SF_EXIT_U_CURSOR | SF_WALKABLE, 4, 4);
- _vm->setHotspot(kHS03Creek, 187, 499, 319, 587, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHS03TrappedPlatypus, 450, 256, 661, 414, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 5);
- _vm->setHotspot(kHS03WalkAreas1, 0, 500, 300, 600);
- _vm->setHotspot(kHS03WalkAreas2, 300, 447, 800, 600);
- _vm->setHotspot(kHS03PlatypusWalkArea, 235, 0, 800, 600);
- _vm->setHotspot(kHS03WalkAreas3, 0, 0, 800, 354);
- _vm->setDeviceHotspot(kHS03Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS03Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->isFlag(kGFGrassTaken))
- _vm->_hotspots[kHS03Grass]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS03TrappedPlatypus]._flags = SF_DISABLED;
- if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized)
- _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->_hotspotsCount = 10;
-}
-
-void Scene03::run() {
- _vm->playSound(0x10925, true);
- _vm->startSoundTimerC(7);
-
- _vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
-
- _platypusHypnotized = false;
-
- _vm->initGnapPos(3, 4, kDirBottomRight);
-
- _vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
-
- _currFrogSequenceId = 0x1C6;
- _nextFrogSequenceId = -1;
- _vm->_gameSys->setAnimation(0x1C6, 253, 2);
-
- _vm->_timers[6] = _vm->getRandom(20) + 30;
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- _vm->_timers[5] = _vm->getRandom(100) + 200;
-
- if (_vm->isFlag(kGFPlatypus)) {
- _vm->initPlatypusPos(5, 4, kDirNone);
- } else {
- _vm->_timers[1] = _vm->getRandom(40) + 20;
- _vm->_gameSys->setAnimation(0x1C2, 99, 1);
- _vm->_gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1C2;
- _vm->_platypusSequenceDatNum = 0;
- }
-
- _vm->_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFGrassTaken))
- _vm->_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- _vm->endSceneInit();
-
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(3, 6, -1, 0x107B9, 1);
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS03Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS03Grass:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFGrassTaken)) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 6);
- break;
- case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(9, 6);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1B3, 253, 5);
- _vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS03ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS03LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
- _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 2;
- else
- _vm->_newSceneNum = 33;
- }
- break;
-
- case kHS03Creek:
- if (_vm->_gnapActionStatus == -1) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 8);
- break;
- 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))
- _vm->_gnapActionStatus = kAS03GrabCreek;
- if (!_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS03TrappedPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
- break;
- case GRAB_CURSOR:
- if (_platypusHypnotized) {
- _vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
- _vm->_gnapActionStatus = kAS03FreePlatypus;
- } else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- if (_platypusScared)
- _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
- else
- _vm->_gnapActionStatus = kAS03GrabPlatypus;
- }
- break;
- case TALK_CURSOR:
- if (_platypusHypnotized) {
- _vm->playGnapBrainPulsating(8, 4);
- } else {
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- if (_platypusScared)
- _vm->_gnapActionStatus = kAS03HypnotizeScaredPlat;
- else
- _vm->_gnapActionStatus = kAS03HypnotizePlat;
- }
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS03Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS03WalkAreas1:
- case kHS03WalkAreas2:
- case kHS03WalkAreas3:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHS03PlatypusWalkArea:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- } else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
- if (_platypusScared)
- _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
- else
- _vm->_gnapActionStatus = kAS03GrabPlatypus;
- }
- }
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10925))
- _vm->playSound(0x10925, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[1] && !_platypusScared) {
- _vm->_timers[1] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
- _nextPlatSequenceId = 450;
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextFrogSequenceId == -1) {
- if (_vm->getRandom(5) == 1)
- _nextFrogSequenceId = 0x1C6;
- else
- _nextFrogSequenceId = 0x1C7;
- }
- }
- if (!_vm->_timers[4]) {
- // Update bird animation
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
- _vm->_gameSys->insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 200;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- _vm->_gameSys->setAnimation(0x1C5, 253, 4);
- _vm->_gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(100) + 200;
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- _vm->_timers[6] = _vm->getRandom(20) + 30;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene03::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS03LeaveScene:
- _vm->_sceneDone = true;
- break;
- case kAS03FreePlatypus:
- _nextPlatSequenceId = 0x1BC;
- break;
- case kAS03FreePlatypusDone:
- _vm->_gnapActionStatus = -1;
- _vm->_platX = 6;
- _vm->_platY = 6;
- _vm->_platypusFacing = kDirUnk4;
- _vm->_platypusId = 120;
- _vm->_gameSys->insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
- kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 1;
- _vm->_platypusSequenceId = 0x7CA;
- _vm->setFlag(kGFPlatypus);
- _nextPlatSequenceId = -1;
- updateHotspots();
- break;
- case kAS03HypnotizePlat:
- _vm->playGnapBrainPulsating(0, 0);
- _vm->addFullScreenSprite(0x106, 255);
- _vm->_gameSys->setAnimation(0x1C9, 256, 1);
- _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
- _vm->gameUpdateTick();
- _vm->removeFullScreenSprite();
- _vm->_gameSys->setAnimation(0x1BA, 99, 1);
- _vm->_gameSys->insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x1BA;
- _vm->_gnapActionStatus = -1;
- _platypusHypnotized = true;
- updateHotspots();
- break;
- case kAS03HypnotizeScaredPlat:
- _vm->playGnapBrainPulsating(0, 0);
- _vm->_gameSys->insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1BF, 99, 1);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
- _vm->gameUpdateTick();
- _vm->addFullScreenSprite(0x106, 255);
- _vm->_gameSys->setAnimation(0x1C9, 256, 1);
- _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
- _vm->gameUpdateTick();
- _vm->removeFullScreenSprite();
- _vm->_gameSys->setAnimation(0x1BA, 99, 1);
- _vm->_gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x1BA;
- _vm->_gnapActionStatus = -1;
- _platypusHypnotized = true;
- updateHotspots();
- break;
- case kAS03GrabPlatypus:
- _nextPlatSequenceId = 0x1BD;
- _platypusHypnotized = false;
- break;
- case kAS03GrabScaredPlatypus:
- _nextPlatSequenceId = 0x1C0;
- _platypusHypnotized = false;
- break;
- case kAS03GrabCreek:
- _vm->_gameSys->insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1B4, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x1B4;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS03GrabCreekDone;
- break;
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _platypusScared = true;
- _vm->_gameSys->insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x1B5;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirNone;
- _vm->_platypusSequenceId = _nextPlatSequenceId;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_nextPlatSequenceId, 99, 1);
- _nextPlatSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- } else if (_nextPlatSequenceId == 0x1BC) {
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gameSys->insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1BC, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1BC, 99, 0);
- _vm->_gnapId = 20 * _vm->_gnapY;
- _vm->_gnapSequenceId = 0x1B6;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirNone;
- _vm->_gnapActionStatus = kAS03FreePlatypusDone;
- _nextPlatSequenceId = -1;
- } else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1C2;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x1C2, 99, 1);
- _nextPlatSequenceId = -1;
- } else if (_nextPlatSequenceId == -1 && _platypusScared && !_platypusHypnotized) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0x1BE, 99, 1);
- _vm->_gameSys->insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x1BE;
- _vm->_platypusSequenceDatNum = 0;
- _nextPlatSequenceId = -1;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextFrogSequenceId, 253, 2);
- _vm->_gameSys->insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
- _currFrogSequenceId = _nextFrogSequenceId;
- _nextFrogSequenceId = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(5) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 5);
- _vm->invAdd(kItemGrass);
- _vm->setGrabCursorSprite(kItemGrass);
- _vm->setFlag(kGFGrassTaken);
- updateHotspots();
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene03.h b/engines/gnap/scenes/scene03.h
deleted file mode 100644
index aac06cc..0000000
--- a/engines/gnap/scenes/scene03.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE03_H
-#define GNAP_SCENE03_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene03: public Scene {
-public:
- Scene03(GnapEngine *vm);
- ~Scene03() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- bool _platypusHypnotized;
- bool _platypusScared;
- int _nextPlatSequenceId;
- int _nextFrogSequenceId;
- int _currFrogSequenceId;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE03_H
diff --git a/engines/gnap/scenes/scene04.cpp b/engines/gnap/scenes/scene04.cpp
deleted file mode 100644
index d61ceac..0000000
--- a/engines/gnap/scenes/scene04.cpp
+++ /dev/null
@@ -1,572 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene04.h"
-
-namespace Gnap {
-
-enum {
- kHS04Platypus = 0,
- kHS04Twig = 1,
- kHS04Dog = 2,
- kHS04Axe = 3,
- kHS04Door = 4,
- kHS04ExitTruck = 5,
- kHS04Device = 6,
- kHS04Window = 7,
- kHS04ExitBarn = 8,
- kHS04WalkArea1 = 9,
- kHS04WalkArea2 = 10
-};
-
-enum {
- kAS04OpenDoor = 1,
- kAS04GetKeyFirst = 2,
- kAS04GetKeyAnother = 3,
- kAS04LeaveScene = 4,
- kAS04GetKeyFirstDone = 6,
- kAS04GetKeyFirst2 = 7,
- kAS04GetKeyAnother2 = 8,
- kAS04GetKeyAnotherDone = 9,
- kAS04OpenDoorDone = 10,
- kAS04GrabDog = 12,
- kAS04GrabAxe = 13
-};
-
-Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
- _dogIdCtr = 0;
- _triedWindow = false;
- _nextDogSequenceId = -1;
- _currDogSequenceId = -1;
-}
-
-int Scene04::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- return 0x214;
-}
-
-void Scene04::updateHotspots() {
- _vm->setHotspot(kHS04Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS04Twig, 690, 394, 769, 452, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 6);
- _vm->setHotspot(kHS04Dog, 550, 442, 680, 552, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHS04Axe, 574, 342, 680, 412, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHS04Door, 300, 244, 386, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHS04ExitTruck, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHS04Window, 121, 295, 237, 342, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHS04ExitBarn, 585, 154, 800, 276, SF_EXIT_U_CURSOR, 10, 8);
- _vm->setHotspot(kHS04WalkArea1, 0, 0, 562, 461);
- _vm->setHotspot(kHS04WalkArea2, 562, 0, 800, 500);
- _vm->setDeviceHotspot(kHS04Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS04Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->isFlag(kGFTwigTaken))
- _vm->_hotspots[kHS04Twig]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant) || _vm->_cursorValue == 1)
- _vm->_hotspots[kHS04Axe]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 11;
-}
-
-void Scene04::run() {
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(4);
-
- _vm->_gameSys->insertSequence(0x210, 139 - _dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
-
- _currDogSequenceId = 0x210;
- _nextDogSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x210, 139 - _dogIdCtr, 3);
- _dogIdCtr = (_dogIdCtr + 1) % 2;
- _vm->_timers[6] = _vm->getRandom(20) + 60;
- _vm->_timers[5] = _vm->getRandom(150) + 300;
- _vm->_timers[7] = _vm->getRandom(150) + 200;
- _vm->_timers[8] = _vm->getRandom(150) + 400;
-
- if (!_vm->isFlag(kGFPlatypusTalkingToAssistant) && _vm->_cursorValue == 4)
- _vm->_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFTwigTaken))
- _vm->_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- _vm->_timers[3] = 300;
- // TODO setCursor((LPCSTR)IDC_WAIT);
- _vm->setGrabCursorSprite(kItemKeys);
- _vm->_gnapX = 4;
- _vm->_gnapY = 7;
- _vm->_gnapId = 140;
- _vm->_platX = 6;
- _vm->_platY = 7;
- _vm->_platypusId = 141;
- _vm->_gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
- _vm->_gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
- _vm->endSceneInit();
- _vm->invRemove(kItemDisguise);
- _vm->invAdd(kItemKeys);
- _vm->setFlag(kGFKeysTaken);
- _vm->clearFlag(kGFPlatyPussDisguised);
- _vm->_platypusSequenceId = 0x20C;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusFacing = kDirBottomRight;
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->waitForUpdate();
- } else {
- _vm->_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
- if (_vm->_prevSceneNum == 2) {
- _vm->initGnapPos(5, 11, kDirUpRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(6, 9, -1, 0x107BA, 1);
- } else if (_vm->_prevSceneNum == 38) {
- _vm->initGnapPos(5, 7, kDirBottomRight);
- _vm->initPlatypusPos(4, 7, kDirNone);
- _vm->endSceneInit();
- } else {
- _vm->initGnapPos(12, 9, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 8, kDirNone);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(9, 9, -1, 0x107BA, 1);
- }
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 4, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS04Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS04Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- if (_vm->_cursorValue == 4)
- _vm->gnapKissPlatypus(0);
- else
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04Twig:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- break;
- case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->playGnapUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->_gameSys->insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1FD, 100, 2);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04Axe:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS04GrabAxe;
- _vm->setFlag(kGFPlatypusTalkingToAssistant);
- updateHotspots();
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04Dog:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
- _vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
- _nextDogSequenceId = 0x20F;
- }
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kAS04GrabDog;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
- _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
- _nextDogSequenceId = 0x20E;
- }
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04Door:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapScratchingHead(4, 3);
- break;
- case GRAB_CURSOR:
- if (_vm->_cursorValue == 1) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS04OpenDoor;
- _vm->_timers[5] = 300;
- _vm->_gnapIdleFacing = kDirUpLeft;
- } else {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
- _vm->_newSceneNum = 38;
- }
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 2;
- else
- _vm->_newSceneNum = 33;
- }
- break;
-
- case kHS04Window:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
- } else if (_vm->isFlag(kGFKeysTaken)) {
- _vm->playGnapImpossible(0, 0);
- } 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 (_triedWindow) {
- _vm->_gnapActionStatus = kAS04GetKeyAnother;
- } else {
- _vm->_gnapActionStatus = kAS04GetKeyFirst;
- _triedWindow = true;
- }
- }
- break;
- case GRAB_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS04ExitBarn:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 5;
- else
- _vm->_newSceneNum = 35;
- }
- break;
-
- case kHS04WalkArea1:
- case kHS04WalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->platypusSub426234();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence2();
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(150) + 300;
- if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(150) + 200;
- _vm->_gameSys->insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(20) + 60;
- if (_nextDogSequenceId == -1)
- _nextDogSequenceId = 0x210;
- }
- if (!_vm->_timers[8]) {
- _vm->_timers[8] = _vm->getRandom(150) + 400;
- _vm->_gameSys->insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene04::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS04LeaveScene:
- _vm->_sceneDone = true;
- break;
- case kAS04OpenDoor:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
- _vm->_gameSys->setAnimation(0x107B5, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gnapActionStatus = kAS04OpenDoorDone;
- break;
- case kAS04OpenDoorDone:
- _vm->_gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- break;
- case kAS04GetKeyFirst:
- _vm->_gameSys->insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x204, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x204;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyFirst2;
- break;
- case kAS04GetKeyFirst2:
- _vm->_gameSys->insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20B, 256, 0);
- _vm->_gnapSequenceId = 0x206;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyFirstDone;
- break;
- case kAS04GetKeyFirstDone:
- _vm->_gameSys->requestRemoveSequence(0x1FF, 256);
- _vm->_gameSys->requestRemoveSequence(0x20B, 256);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS04GetKeyAnother:
- _vm->_gameSys->insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x202, _vm->_gnapId, 0);
- _vm->_gnapSequenceId = 0x202;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyAnother2;
- break;
- case kAS04GetKeyAnother2:
- _vm->_gameSys->insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20A, 256, 0);
- _vm->_gnapSequenceId = 0x203;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyAnotherDone;
- break;
- case kAS04GetKeyAnotherDone:
- _vm->_gameSys->removeSequence(0x1FF, 256, true);
- _vm->_gameSys->removeSequence(0x20A, 256, true);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS04GrabDog:
- _nextDogSequenceId = 0x201;
- break;
- case kAS04GrabAxe:
- _vm->_gameSys->insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0x212, 100);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x211;
- _vm->_gnapActionStatus = -1;
- break;
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->invAdd(kItemTwig);
- _vm->setGrabCursorSprite(kItemTwig);
- _vm->setFlag(kGFTwigTaken);
- updateHotspots();
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_nextDogSequenceId == 0x201) {
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
- _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
- _dogIdCtr = (_dogIdCtr + 1) % 2;
- _currDogSequenceId = 0x201;
- _vm->_gnapSequenceId = 0x200;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- _vm->_timers[6] = _vm->getRandom(20) + 60;
- _nextDogSequenceId = -1;
- } else if (_nextDogSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
- _currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
- _dogIdCtr = (_dogIdCtr + 1) % 2;
- _currDogSequenceId = _nextDogSequenceId;
- _nextDogSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene04.h b/engines/gnap/scenes/scene04.h
deleted file mode 100644
index 10b6964..0000000
--- a/engines/gnap/scenes/scene04.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE04_H
-#define GNAP_SCENE04_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene04: public Scene {
-public:
- Scene04(GnapEngine *vm);
- ~Scene04() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- bool _triedWindow;
- int _dogIdCtr;
- int _nextDogSequenceId;
- int _currDogSequenceId;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE04_H
diff --git a/engines/gnap/scenes/scene05.cpp b/engines/gnap/scenes/scene05.cpp
deleted file mode 100644
index 8046465..0000000
--- a/engines/gnap/scenes/scene05.cpp
+++ /dev/null
@@ -1,466 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene05.h"
-
-namespace Gnap {
-
-enum {
- kHS05Platypus = 0,
- kHS05Haystack = 1,
- kHS05Padlock = 2,
- kHS05Ladder = 3,
- kHS05ExitHouse = 4,
- kHS05Chicken = 5,
- kHS05Device = 6,
- kHS05WalkArea1 = 7,
- kHS05WalkArea2 = 8,
- kHS05WalkArea3 = 9
-};
-
-enum {
- kAS05PlatSearchHaystack = 0,
- kAS05TryPickPadlock = 1,
- kAS05PickPadlock = 2,
- kAS05TalkChicken = 3,
- kAS05GrabChicken = 4,
- kAS05GrabLadder = 5,
- kAS05EnterBarn = 6,
- kAS05UseTwigWithChicken = 11,
- kAS05LeaveScene = 12
-};
-
-Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
- _nextChickenSequenceId = -1;
- _currChickenSequenceId = -1;
-}
-
-int Scene05::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 3);
- return _vm->isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
-}
-
-void Scene05::updateHotspots() {
- _vm->setHotspot(kHS05Platypus, 0, 0, 0, 0, SF_DISABLED | SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS05Haystack, 236, 366, 372, 442, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHS05Padlock, 386, 230, 626, 481, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHS05Ladder, 108, 222, 207, 444, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHS05ExitHouse, 0, 395, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHS05Chicken, 612, 462, 722, 564, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHS05WalkArea1, 104, 0, 421, 480);
- _vm->setHotspot(kHS05WalkArea2, 422, 0, 800, 487);
- _vm->setHotspot(kHS05WalkArea3, 0, 0, 104, 499);
- _vm->setDeviceHotspot(kHS05Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS05Platypus]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_hotspots[kHS05Padlock]._flags = SF_EXIT_U_CURSOR;
- _vm->_hotspotsCount = 10;
-}
-
-void Scene05::run() {
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(7);
-
- _currChickenSequenceId = 0x142;
- _vm->_gameSys->setAnimation(0x142, 100, 3);
- _vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _nextChickenSequenceId = -1;
-
- _vm->_timers[5] = _vm->getRandom(10) + 30;
- _vm->_timers[6] = _vm->getRandom(150) + 300;
-
- if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(-1, 9, kDirNone);
- _vm->endSceneInit();
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 9, -1, 0x107B9, 1);
- } else {
- _vm->initGnapPos(6, 8, kDirBottomRight);
- if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(7, 9, kDirNone);
- _vm->endSceneInit();
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 12, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS05Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS05Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS05Haystack:
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
- } else if (_vm->isFlag(kGFNeedleTaken)) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapUseDeviceOnPlatypuss();
- if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
- _vm->_platypusActionStatus = kAS05PlatSearchHaystack;
- _vm->_platypusFacing = kDirUnk4;
- }
- if (_vm->_gnapX == 4 && (_vm->_gnapY == 8 || _vm->_gnapY == 7))
- _vm->gnapWalkStep();
- _vm->playGnapIdle(_vm->_platX, _vm->_platY);
- }
- break;
- }
- }
- }
- break;
-
- case kHS05Chicken:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05UseTwigWithChicken;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(9, 7);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05GrabChicken;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05TalkChicken;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS05Ladder:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 4);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05GrabLadder;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS05Padlock:
- if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
- _vm->_gnapActionStatus = kAS05EnterBarn;
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 6;
- else
- _vm->_newSceneNum = 36;
- } else if (_vm->_gnapActionStatus < 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->_gnapActionStatus = kAS05PickPadlock;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 4);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05TryPickPadlock;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS05ExitHouse:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS05LeaveScene;
- if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 4;
- else
- _vm->_newSceneNum = 37;
- }
- break;
-
- case kHS05WalkArea1:
- case kHS05WalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHS05WalkArea3:
- // Nothing
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
- if (_vm->getRandom(4) != 0)
- _nextChickenSequenceId = 0x142;
- else
- _nextChickenSequenceId = 0x143;
- }
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(150) + 300;
- if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene05::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS05LeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS05TryPickPadlock:
- _vm->_gameSys->insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x148;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS05PickPadlock:
- _vm->_gameSys->setAnimation(0x147, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x147;
- _vm->_gnapSequenceDatNum = 0;
- _vm->setFlag(kGFBarnPadlockOpen);
- _vm->setFlag(kGFSceneFlag1);
- _vm->setGrabCursorSprite(-1);
- _vm->_newSceneNum = 6;
- _vm->_timers[2] = 100;
- _vm->invRemove(kItemNeedle);
- _vm->_gnapActionStatus = kAS05LeaveScene;
- break;
- case kAS05TalkChicken:
- _nextChickenSequenceId = 0x144;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS05GrabChicken:
- _nextChickenSequenceId = 0x14B;
- break;
- case kAS05GrabLadder:
- while (_vm->_gameSys->isSequenceActive(0x149, 39))
- _vm->gameUpdateTick();
- _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x14D;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_timers[2] = 200;
- _vm->_timers[6] = 300;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS05EnterBarn:
- _vm->_gameSys->insertSequence(0x107B1, 1,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gameSys->setAnimation(0x107B1, 1, 0);
- _vm->_gnapActionStatus = kAS05LeaveScene;
- break;
- case kAS05UseTwigWithChicken:
- _vm->playGnapShowItem(5, 0, 0);
- _nextChickenSequenceId = 0x14F;
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- if (_vm->_platypusSequenceId == 0x146) {
- _vm->_platX = 4;
- _vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
- _vm->_platypusId = 20 * _vm->_platY;
- _vm->invAdd(kItemNeedle);
- _vm->setFlag(kGFNeedleTaken);
- _vm->setGrabCursorSprite(kItemNeedle);
- _vm->showCursor();
- _vm->_timers[1] = 30;
- _vm->_platypusActionStatus = -1;
- }
- if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _vm->_platypusSequenceId = 0x146;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x146, 256, 1);
- _vm->_timers[1] = 300;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_nextChickenSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x14C;
- _currChickenSequenceId = _nextChickenSequenceId;
- _nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- } else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _currChickenSequenceId = _nextChickenSequenceId;
- _nextChickenSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene05.h b/engines/gnap/scenes/scene05.h
deleted file mode 100644
index a3be46b..0000000
--- a/engines/gnap/scenes/scene05.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE05_H
-#define GNAP_SCENE05_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene05: public Scene {
-public:
- Scene05(GnapEngine *vm);
- ~Scene05() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- int _nextChickenSequenceId;
- int _currChickenSequenceId;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE05_H
diff --git a/engines/gnap/scenes/scene06.cpp b/engines/gnap/scenes/scene06.cpp
deleted file mode 100644
index aae5125..0000000
--- a/engines/gnap/scenes/scene06.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene06.h"
-
-namespace Gnap {
-
-enum {
- kHS06Platypus = 0,
- kHS06Gas = 1,
- kHS06Ladder = 2,
- kHS06Horse = 3,
- kHS06ExitOutsideBarn = 4,
- kHS06Device = 5,
- kHS06WalkArea1 = 6,
- kHS06WalkArea2 = 7,
- kHS06WalkArea3 = 8,
- kHS06WalkArea4 = 9,
- kHS06WalkArea5 = 10
-};
-
-enum {
- kAS06TryToGetGas = 0,
- kAS06TryToClimbLadder = 1,
- kAS06TryToClimbLadderDone = 2,
- kAS06TalkToHorse = 3,
- kAS06UseTwigOnHorse = 4,
- kAS06LeaveScene = 5
-};
-
-Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
- _horseTurnedBack = false;;
- _nextPlatSequenceId = -1;
- _nextHorseSequenceId = -1;
- _currHorseSequenceId = -1;
-}
-
-int Scene06::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- if (_vm->isFlag(kGFSceneFlag1)) {
- _vm->playSound(0x11B, false);
- _vm->clearFlag(kGFSceneFlag1);
- }
- return 0x101;
-}
-
-void Scene06::updateHotspots() {
- _vm->setHotspot(kHS06Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS06Gas, 300, 120, 440, 232, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHS06Ladder, 497, 222, 614, 492, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHS06Horse, 90, 226, 259, 376, SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHS06ExitOutsideBarn, 226, 580, 688, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- _vm->setHotspot(kHS06WalkArea1, 0, 0, 200, 515);
- _vm->setHotspot(kHS06WalkArea2, 200, 0, 285, 499);
- _vm->setHotspot(kHS06WalkArea3, 688, 0, 800, 499);
- _vm->setHotspot(kHS06WalkArea4, 475, 469, 800, 505);
- _vm->setHotspot(kHS06WalkArea5, 0, 0, 800, 504);
- _vm->setDeviceHotspot(kHS06Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFGasTaken))
- _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
- if (_vm->_cursorValue == 4) {
- _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
- _vm->_hotspots[kHS06Gas]._flags = SF_DISABLED;
- }
- _vm->_hotspotsCount = 11;
-}
-
-void Scene06::run() {
- bool triedDeviceOnGas = false;
-
- _vm->startSoundTimerC(7);
-
- _horseTurnedBack = false;
- _vm->_gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
-
- _currHorseSequenceId = 0xF1;
- _nextHorseSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0xF1, 120, 2);
- _vm->_timers[4] = _vm->getRandom(40) + 25;
-
- if (_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFGasTaken) && _vm->_cursorValue != 4)
- _vm->_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- _vm->initGnapPos(5, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
- _vm->endSceneInit();
-
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 5, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS06Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHS06Platypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS06Gas:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 0);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFUnk04)) {
- _vm->playGnapImpossible(0, 0);
- } else if (triedDeviceOnGas) {
- _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
- _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS06TryToGetGas;
- } else {
- triedDeviceOnGas = true;
- _vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFUnk04))
- _vm->playGnapImpossible(0, 0);
- else
- _vm->playGnapScratchingHead(5, 0);
- break;
- }
- }
- }
- break;
-
- case kHS06Ladder:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFGasTaken))
- _vm->playGnapImpossible(0, 0);
- else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS06TryToClimbLadder;
- _vm->setFlag(kGFGasTaken);
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS06Horse:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
- _vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
- _vm->_platypusFacing = kDirNone;
- _vm->_gnapActionStatus = kAS06UseTwigOnHorse;
- _vm->setGrabCursorSprite(-1);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 2);
- break;
- case TALK_CURSOR:
- if (_horseTurnedBack) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
- } else {
- _vm->_gnapIdleFacing = 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->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS06TalkToHorse;
- }
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHS06ExitOutsideBarn:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS06LeaveScene;
- if (_vm->_cursorValue == 1)
- _vm->_newSceneNum = 5;
- else
- _vm->_newSceneNum = 35;
- }
- break;
-
- case kHS06WalkArea1:
- case kHS06WalkArea2:
- case kHS06WalkArea3:
- case kHS06WalkArea4:
- case kHS06WalkArea5:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(40) + 25;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHorseSequenceId == -1) {
- if (_horseTurnedBack) {
- _nextHorseSequenceId = 0xF5;
- } else {
- switch (_vm->getRandom(5)) {
- case 0:
- case 1:
- case 2:
- _nextHorseSequenceId = 0xF1;
- break;
- case 3:
- _nextHorseSequenceId = 0xF3;
- break;
- case 4:
- _nextHorseSequenceId = 0xF4;
- break;
- }
- }
- }
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene06::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS06LeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS06TryToGetGas:
- _vm->_gameSys->insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xFC;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS06TryToClimbLadder:
- _vm->_gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xFD, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xFD;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
- break;
- case kAS06TryToClimbLadderDone:
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS06TalkToHorse:
- _nextHorseSequenceId = 0xF6;
- break;
- case kAS06UseTwigOnHorse:
- _nextPlatSequenceId = 0xFB;
- break;
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- if (_vm->_platypusSequenceId == 0xFA) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->invAdd(kItemGas);
- _vm->setFlag(kGFGasTaken);
- _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
- _vm->setGrabCursorSprite(kItemGas);
- _vm->_platypusActionStatus = -1;
- _vm->_platX = 6;
- _vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
- _vm->setFlag(kGFUnk04);
- _vm->_gnapActionStatus = -1;
- _vm->showCursor();
- }
- if (_nextPlatSequenceId == 0xFB) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _nextHorseSequenceId = 0xF2;
- _vm->_platypusActionStatus = 6;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
- switch (_nextHorseSequenceId) {
- case 0xF2:
- _vm->setGrabCursorSprite(-1);
- _vm->hideCursor();
- _vm->_gameSys->setAnimation(0xFA, 256, 1);
- _vm->_gameSys->insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFA, 256, 0xFB, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xFA;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B7;
- _vm->_gnapSequenceDatNum = 1;
- _currHorseSequenceId = _nextHorseSequenceId;
- _nextHorseSequenceId = -1;
- _nextPlatSequenceId = -1;
- _vm->invRemove(kItemTwig);
- break;
- case 0xF6:
- _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(0xF6, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _horseTurnedBack = true;
- _currHorseSequenceId = _nextHorseSequenceId;
- _nextHorseSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- break;
- default:
- _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(_nextHorseSequenceId, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _currHorseSequenceId = _nextHorseSequenceId;
- _nextHorseSequenceId = -1;
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene06.h b/engines/gnap/scenes/scene06.h
deleted file mode 100644
index ff6ff9f..0000000
--- a/engines/gnap/scenes/scene06.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE06_H
-#define GNAP_SCENE06_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene06: public Scene {
-public:
- Scene06(GnapEngine *vm);
- ~Scene06() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-
-private:
- bool _horseTurnedBack;
- int _nextPlatSequenceId;
- int _nextHorseSequenceId;
- int _currHorseSequenceId;
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE06_H
diff --git a/engines/gnap/scenes/scene07.cpp b/engines/gnap/scenes/scene07.cpp
deleted file mode 100644
index 41ddf4c..0000000
--- a/engines/gnap/scenes/scene07.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-
-#include "gnap/scenes/scene07.h"
-
-namespace Gnap {
-
-enum {
- kHS07Platypus = 0,
- kHS07ExitHouse = 1,
- kHS07Dice = 2,
- kHS07Device = 3,
- kHS07WalkArea1 = 4,
- kHS07WalkArea2 = 5,
- kHS07WalkArea3 = 6
-};
-
-enum {
- kAS07Wait = 0,
- kAS07LeaveScene = 1
-};
-
-Scene07::Scene07(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene07::init() {
- return 0x92;
-}
-
-void Scene07::updateHotspots() {
- _vm->setHotspot(kHS07Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS07ExitHouse, 700, 125, 799, 290, SF_EXIT_NE_CURSOR);
- _vm->setHotspot(kHS07Dice, 200, 290, 270, 360, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS07WalkArea1, 0, 0, 325, 445);
- _vm->setHotspot(kHS07WalkArea2, 325, 0, 799, 445, _vm->_isLeavingScene ? SF_WALKABLE : SF_NONE);
- _vm->setHotspot(kHS07WalkArea3, 160, 0, 325, 495);
- _vm->setDeviceHotspot(kHS07Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFPlatypus))
- _vm->_hotspots[kHS07Dice]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 7;
-}
-
-void Scene07::run() {
- _vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
-
- _vm->invRemove(kItemGas);
- _vm->invRemove(kItemNeedle);
-
- if (!_vm->isFlag(kGFPlatypus))
- _vm->_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 8) {
- _vm->initGnapPos(7, 7, kDirBottomLeft);
- _vm->initPlatypusPos(9, 7, kDirUnk4);
- _vm->endSceneInit();
- } else {
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
- _vm->_gnapId = 140;
- _vm->_gnapSequenceId = 0x8F;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS07Wait;
- _vm->_platX = 3;
- _vm->_platY = 8;
- _vm->_platypusId = 160;
- _vm->_platypusSequenceId = 0x91;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusFacing = kDirNone;
- _vm->_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- }
-
- _vm->_timers[3] = 600;
- _vm->_timers[4] = _vm->getRandom(40) + 50;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x10919))
- _vm->playSound(0x10919, true);
-
- if (_vm->testWalk(0, 1, 8, 7, 6, 7))
- updateHotspots();
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS07Platypus:
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- break;
-
- case kHS07ExitHouse:
- _vm->_isLeavingScene = true;
- if (_vm->_gnapX > 8)
- _vm->gnapWalkTo(_vm->_gnapX, 7, 0, 0x107AD, 1);
- else
- _vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS07LeaveScene;
- break;
-
- case kHS07Dice:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 8, 3, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- break;
- case GRAB_CURSOR:
- _vm->setFlag(kGFPlatypus);
- _vm->invAdd(kItemDice);
- updateHotspots();
- _vm->playGnapPullOutDevice(3, 3);
- _vm->_gameSys->setAnimation(0x8E, 1, 2);
- _vm->_gameSys->insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_vm->getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = _vm->getGnapSequenceId(gskUseDevice, 0, 0);
- _vm->_gnapSequenceDatNum = 1;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHS07Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(40) + 50;
- }
- break;
-
- case kHS07WalkArea1:
- case kHS07WalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHS07WalkArea3:
- // Nothing
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updateGnapIdleSequence();
- if (_vm->_platypusActionStatus < 0 && _vm->_gnapActionStatus < 0) {
- if (_vm->_timers[0]) {
- if (!_vm->_timers[1]) {
- _vm->_timers[1] = _vm->getRandom(20) + 30;
- int gnapRandomValue = _vm->getRandom(20);
- // TODO Cleanup
- if (_vm->_platypusFacing != kDirNone) {
- if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7CA) {
- if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7CA) {
- if (_vm->_platY == 9)
- _vm->playPlatypusSequence(0x107CA);
- } else {
- _vm->playPlatypusSequence(0x10845);
- }
- } else {
- _vm->playPlatypusSequence(0x107CC);
- }
- } else if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7C9) {
- if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7C9) {
- if (_vm->_platY == 9)
- _vm->playPlatypusSequence(0x107C9);
- } else {
- _vm->playPlatypusSequence(0x10844);
- }
- } else {
- _vm->playPlatypusSequence(0x107CB);
- }
- _vm->_gameSys->setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
- }
- } else {
- _vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->platypusMakeRoom();
- }
- } else {
- _vm->_timers[0] = 100;
- _vm->_timers[1] = 35;
- }
- playRandomSound(4);
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(40) + 50;
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene07::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS07LeaveScene:
- _vm->_newSceneNum = 8;
- _vm->_sceneDone = true;
- break;
- }
- _vm->_gnapActionStatus = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->setGrabCursorSprite(kItemDice);
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene07.h b/engines/gnap/scenes/scene07.h
deleted file mode 100644
index 1afc1f8..0000000
--- a/engines/gnap/scenes/scene07.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE07_H
-#define GNAP_SCENE07_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene07: public Scene {
-public:
- Scene07(GnapEngine *vm);
- ~Scene07() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-};
-
-} // End of namespace Gnap
-
-#endif // GNAP_SCENE07_H
diff --git a/engines/gnap/scenes/scene08.cpp b/engines/gnap/scenes/scene08.cpp
deleted file mode 100644
index 2b977a4..0000000
--- a/engines/gnap/scenes/scene08.cpp
+++ /dev/null
@@ -1,527 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene08.h"
-
-namespace Gnap {
-
-enum {
- kH08SPlatypus = 0,
- kHS08ExitBackdoor = 1,
- kHS08ExitCrash = 2,
- kHS08Man = 3,
- kHS08Door = 4,
- kHS08Meat = 5,
- kHS08Bone = 6,
- kHS08Toy = 7,
- kHS08WalkArea1 = 8,
- kHS08Device = 9,
- kHS08WalkArea2 = 10
-};
-
-enum {
- kAS08LeaveScene = 0,
- kAS08TalkMan = 1,
- kAS08LookMan = 2,
- kAS08LookDog = 3,
- kAS08GrabDog = 4,
- kAS08TalkDog = 5,
- kAS08PlatWithMan = 6,
- kAS08PlatWithDog = 7
-};
-
-Scene08::Scene08(GnapEngine *vm) : Scene(vm) {
- _nextDogSequenceId = -1;
- _currDogSequenceId = -1;
- _nextManSequenceId = -1;
- _currManSequenceId = -1;
-}
-
-int Scene08::init() {
- return 0x150;
-}
-
-void Scene08::updateHotspots() {
- _vm->setHotspot(kH08SPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08ExitBackdoor, 0, 280, 10, 400, SF_EXIT_L_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHS08ExitCrash, 200, 590, 400, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHS08Man, 510, 150, 610, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08Door, 350, 170, 500, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08Meat, 405, 450, 480, 485, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08Bone, 200, 405, 270, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08Toy, 540, 430, 615, 465, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS08WalkArea1, 290, 340, -1, -1);
- _vm->setHotspot(kHS08WalkArea2, 0, 0, 799, 420);
- _vm->setDeviceHotspot(kHS08Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_hotspots[kHS08Meat]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_hotspots[kHS08Bone]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_hotspots[kHS08Toy]._flags = SF_WALKABLE | SF_DISABLED;
- _vm->_hotspotsCount = 11;
-}
-
-void Scene08::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _currDogSequenceId = _nextDogSequenceId;
- if ( _nextDogSequenceId != 0x135 )
- _nextDogSequenceId = 0x134;
- }
-}
-
-void Scene08::run() {
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
-
- _currDogSequenceId = 0x135;
- _nextDogSequenceId = 0x135;
-
- _vm->_gameSys->setAnimation(0x135, 100, 3);
- _vm->_gameSys->insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _currManSequenceId = 0x140;
- _nextManSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x140, 100, 2);
- _vm->_gameSys->insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[4] = _vm->getRandom(50) + 75;
-
- if (!_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-1, 7, kDirNone);
-
- _vm->endSceneInit();
-
- _vm->gnapWalkTo(1, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
-
- _vm->_timers[5] = _vm->getRandom(40) + 50;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x10919))
- _vm->playSound(0x10919, true);
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS08Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(50) + 75;
- _vm->_timers[5] = _vm->getRandom(40) + 50;
- }
- break;
-
- case kH08SPlatypus:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapActionIdle(0x14D);
- _vm->gnapKissPlatypus(8);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- }
- break;
-
- case kHS08ExitBackdoor:
- _vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
- _vm->_newSceneNum = 9;
- break;
-
- case kHS08ExitCrash:
- _vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
- _vm->_newSceneNum = 7;
- break;
-
- case kHS08Man:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 6, 7, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS08LookMan;
- _vm->_gnapIdleFacing = kDirUpRight;
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS08TalkMan;
- break;
- case PLAT_CURSOR:
- _vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS08PlatWithMan;
- _vm->_platypusFacing = kDirNone;
- _vm->playGnapIdle(6, 6);
- break;
- }
- }
- break;
-
- case kHS08Door:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 7, 5, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS08GrabDog;
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS08LookDog;
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS08GrabDog;
- _vm->_gnapIdleFacing = kDirUpRight;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS08TalkDog;
- break;
- case PLAT_CURSOR:
- _vm->setFlag(kGFSceneFlag1);
- _vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS08PlatWithDog;
- _vm->_platypusFacing = kDirNone;
- _vm->playGnapIdle(3, 7);
- break;
- }
- }
- break;
-
- case kHS08Meat:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 8, 5, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 7);
- break;
- case GRAB_CURSOR:
- if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(6, 7);
- } else {
- _vm->gnapActionIdle(0x14D);
- _vm->playGnapPullOutDevice(6, 7);
- _vm->playGnapUseDevice(0, 0);
- _nextDogSequenceId = 0x149;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHS08Bone:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(2, 7, 3, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 6);
- break;
- case GRAB_CURSOR:
- if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(3, 6);
- } else {
- _vm->gnapActionIdle(0x14D);
- _vm->playGnapPullOutDevice(3, 6);
- _vm->playGnapUseDevice(0, 0);
- _nextDogSequenceId = 0x14A;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHS08Toy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(8, 7, 7, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 6);
- break;
- case GRAB_CURSOR:
- if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(7, 6);
- } else {
- _vm->gnapActionIdle(0x14D);
- _vm->playGnapPullOutDevice(7, 6);
- _vm->playGnapUseDevice(0, 0);
- _nextDogSequenceId = 0x14B;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHS08WalkArea1:
- case kHS08WalkArea2:
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(-1, 6, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(50) + 125;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextManSequenceId == -1 &&
- (_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
- int _gnapRandomValue = _vm->getRandom(4);
- switch (_gnapRandomValue) {
- case 0:
- _nextManSequenceId = 0x138;
- break;
- case 1:
- _nextManSequenceId = 0x136;
- break;
- case 2:
- _nextManSequenceId = 0x13B;
- break;
- case 3:
- _nextManSequenceId = 0x13A;
- break;
- }
- }
- }
- playRandomSound(5);
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(50) + 75;
- _vm->_timers[5] = _vm->getRandom(40) + 50;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene08::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS08LeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS08TalkMan:
- _nextManSequenceId = 0x13F;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS08LookMan:
- _nextManSequenceId = 0x140;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS08LookDog:
- _nextManSequenceId = 0x137;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS08GrabDog:
- if (_currDogSequenceId == 0x135)
- _nextDogSequenceId = 0x133;
- else
- _nextDogSequenceId = 0x13C;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS08TalkDog:
- if (_currDogSequenceId == 0x135)
- _nextDogSequenceId = 0x133;
- else
- _nextDogSequenceId = 0x13C;
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
- case kAS08PlatWithDog:
- _nextDogSequenceId = 0x147;
- break;
- case kAS08PlatWithMan:
- _nextManSequenceId = 0x140;
- _vm->_platypusActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextManSequenceId, 100, 2);
- _vm->_gameSys->insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _currManSequenceId = _nextManSequenceId;
- _nextManSequenceId = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_currDogSequenceId == 0x147)
- _vm->_platypusActionStatus = -1;
- if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
- if (_vm->getRandom(2) != 0)
- _nextManSequenceId = 0x13D;
- else
- _nextManSequenceId = 0x13E;
- } else if (_currDogSequenceId == 0x133)
- _nextManSequenceId = 0x139;
- if (_nextDogSequenceId == 0x149 || _nextDogSequenceId == 0x14A || _nextDogSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- switch (_nextDogSequenceId) {
- case 0x149:
- _vm->setFlag(kGFBarnPadlockOpen);
- _vm->_hotspots[kHS08Meat]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x144, 1, true);
- break;
- case 0x14A:
- _vm->setFlag(kGFTruckFilledWithGas);
- _vm->_hotspots[kHS08Bone]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x145, 1, true);
- break;
- case 0x14B:
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->_hotspots[kHS08Toy]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x146, 1, true);
- break;
- }
- _currDogSequenceId = _nextDogSequenceId;
- _nextDogSequenceId = 0x134;
- } else if (_nextDogSequenceId == 0x147) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _currDogSequenceId = _nextDogSequenceId;
- _nextDogSequenceId = 0x134;
- _vm->_platX = 1;
- _vm->_platY = 8;
- _vm->_platypusId = 160;
- _vm->_platypusSequenceId = 0x148;
- _vm->_platypusFacing = kDirUnk4;
- _vm->_platypusSequenceDatNum = 0;
- if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
- _vm->gnapWalkStep();
- } else if (_nextDogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _currDogSequenceId = _nextDogSequenceId;
- if (_nextDogSequenceId != 0x135)
- _nextDogSequenceId = 0x134;
- if (_currDogSequenceId == 0x133) {
- _vm->_timers[2] = _vm->getRandom(30) + 20;
- _vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x14D;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- }
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene08.h b/engines/gnap/scenes/scene08.h
deleted file mode 100644
index b73bc49..0000000
--- a/engines/gnap/scenes/scene08.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE08_H
-#define GNAP_SCENE08_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene08: public Scene {
-public:
- Scene08(GnapEngine *vm);
- ~Scene08() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb();
-
-private:
- int _nextDogSequenceId;
- int _currDogSequenceId;
- int _nextManSequenceId;
- int _currManSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE08_H
diff --git a/engines/gnap/scenes/scene09.cpp b/engines/gnap/scenes/scene09.cpp
deleted file mode 100644
index 7e92ca1..0000000
--- a/engines/gnap/scenes/scene09.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene09.h"
-
-namespace Gnap {
-
-enum {
- kHS09Platypus = 0,
- kHS09ExitKitchen = 1,
- kHS09ExitHouse = 2,
- kHS09Trash = 3,
- kHS09Device = 4,
- kHS09WalkArea1 = 5,
- kHS09WalkArea2 = 6,
- kHS09WalkArea3 = 7
-};
-
-enum {
- kAS09LeaveScene = 0,
- kAS09SearchTrash = 1,
- kAS09SearchTrashDone = 2
-};
-
-Scene09::Scene09(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene09::init() {
- return 0x4E;
-}
-
-void Scene09::updateHotspots() {
- _vm->setHotspot(kHS09Platypus, 0, 200, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS09ExitKitchen, 280, 200, 380, 400, SF_EXIT_U_CURSOR);
- _vm->setHotspot(kHS09ExitHouse, 790, 200, 799, 450, SF_EXIT_R_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHS09Trash, 440, 310, 680, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHS09WalkArea1, 0, 0, 799, 400);
- _vm->setHotspot(kHS09WalkArea2, 0, 0, 630, 450);
- _vm->setHotspot(kHS09WalkArea2, 0, 0, 175, 495);
- _vm->setDeviceHotspot(kHS09Device, -1, -1, -1, -1);
- _vm->_hotspotsCount = 8;
-}
-
-void Scene09::run() {
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 8) {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(4, 7, kDirBottomRight);
- _vm->initPlatypusPos(5, 7, kDirNone);
- _vm->endSceneInit();
- }
-
- _vm->_timers[4] = _vm->getRandom(150) + 50;
- _vm->_timers[5] = _vm->getRandom(40) + 50;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x10919))
- _vm->playSound(0x10919, true);
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHS09Device:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(150) + 50;
- _vm->_timers[5] = _vm->getRandom(40) + 50;
- }
- break;
-
- case kHS09Platypus:
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- break;
-
- case kHS09ExitKitchen:
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 10;
- _vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _vm->_platypusFacing = kDirUnk4;
- break;
-
- case kHS09ExitHouse:
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 8;
- _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
- _vm->_platypusFacing = kDirUnk4;
- break;
-
- case kHS09Trash:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(9, 6, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 3);
- break;
- case GRAB_CURSOR:
- _vm->_gnapActionStatus = kAS09SearchTrash;
- _vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHS09WalkArea1:
- case kHS09WalkArea2:
- case kHS09WalkArea3:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(150) + 100;
- if (_vm->_timers[4] & 1)
- _vm->_gameSys->insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
- }
- playRandomSound(5);
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(150) + 50;
- _vm->_timers[5] = _vm->getRandom(40) + 50;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene09::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kAS09LeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kAS09SearchTrash:
- _vm->_gameSys->setAnimation(0x4C, 120, 0);
- _vm->_gameSys->insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x4B, 2, true);
- _vm->_gnapSequenceId = 0x4C;
- _vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 9;
- _vm->_gnapY = 6;
- _vm->_gnapActionStatus = kAS09SearchTrashDone;
- break;
- case kAS09SearchTrashDone:
- _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_timers[2] = 360;
- _vm->_timers[4] = _vm->getRandom(150) + 100;
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene09.h b/engines/gnap/scenes/scene09.h
deleted file mode 100644
index 2a1576e..0000000
--- a/engines/gnap/scenes/scene09.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE09_H
-#define GNAP_SCENE09_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene09: public Scene {
-public:
- Scene09(GnapEngine *vm);
- ~Scene09() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {}
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE09_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 309c872..567270a 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -23,20 +23,12 @@
#include "gnap/gnap.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
-#include "gnap/scenes/scenecore.h"
+#include "gnap/scenes/scenecore.h"
#include "gnap/scenes/groupcs.h"
+#include "gnap/scenes/group0.h"
+#include "gnap/scenes/intro.h"
-#include "gnap/scenes/scene00.h"
-#include "gnap/scenes/scene01.h"
-#include "gnap/scenes/scene02.h"
-#include "gnap/scenes/scene03.h"
-#include "gnap/scenes/scene04.h"
-#include "gnap/scenes/scene05.h"
-#include "gnap/scenes/scene06.h"
-#include "gnap/scenes/scene07.h"
-#include "gnap/scenes/scene08.h"
-#include "gnap/scenes/scene09.h"
#include "gnap/scenes/scene10.h"
#include "gnap/scenes/scene11.h"
#include "gnap/scenes/scene12.h"
@@ -82,7 +74,7 @@ int GnapEngine::initSceneLogic() {
switch (_currentSceneNum) {
case 0:
- _scene = new Scene00(this);
+ _scene = new SceneIntro(this);
backgroundId = _scene->init();
_gameSys->setScaleValues(0, 500, 1, 1000);
break;
Commit: 12fa081a192c254e4a1d32a0edef2dffee61c154
https://github.com/scummvm/scummvm/commit/12fa081a192c254e4a1d32a0edef2dffee61c154
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:46+02:00
Commit Message:
GNAP: Remove debug code
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index bcf2db1..e4cc379 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -152,70 +152,8 @@ Common::Error GnapEngine::run() {
_menuBackgroundSurface = nullptr;
initGlobalSceneVars();
-
-#if 1
-
mainLoop();
-#else
-
- Graphics::Surface *testBack = new Graphics::Surface();
- testBack->create(800, 600, _system->getScreenFormat());
- //testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFFFFFFFF);
- testBack->fillRect(Common::Rect(0, 0, 800, 600), 0xFF000000);
-
- _currentSceneNum = 41;
-
- Common::String datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
- _dat->open(0, datFilename.c_str());
-
- _gameSys->setBackgroundSurface(testBack, 0, 500, 1, 1000);
-
- _gameSys->insertSequence(0x11b, 100, -1, -1, kSeqNone, 0, 0, 0);
-
- CursorMan.showMouse(true);
-
- while (!shouldQuit()) {
- Common::Event event;
-
- while (_eventMan->pollEvent(event)) {
- switch (event.type) {
- case Common::EVENT_KEYDOWN:
- break;
- case Common::EVENT_LBUTTONUP:
- case Common::EVENT_LBUTTONDOWN:
- case Common::EVENT_RBUTTONUP:
- case Common::EVENT_RBUTTONDOWN:
- case Common::EVENT_MOUSEMOVE:
- break;
- case Common::EVENT_QUIT:
- quitGame();
- break;
- default:
- break;
- }
- }
-
- _gameSys->fatUpdate();
- _gameSys->drawSprites();
- _gameSys->updateScreen();
- _gameSys->_gameSysClock++;
- updateTimers();
-
- _system->updateScreen();
- _system->delayMillis(100);
-
- }
-
- _dat->close(0);
-
- testBack->free();
- delete testBack;
-
- return Common::kNoError;
-
-#endif
-
delete _soundMan;
delete _gameSys;
delete _sequenceCache;
@@ -223,7 +161,6 @@ Common::Error GnapEngine::run() {
delete _spriteCache;
delete _dat;
delete _debugger;
-
delete _exe;
return Common::kNoError;
@@ -730,14 +667,6 @@ void GnapEngine::mainLoop() {
_grabCursorSpriteIndex = -1;
_grabCursorSprite = nullptr;
-#if 0
- // > DEBUG BEGIN
- _currentSceneNum = 0;
- _newSceneNum = 1;
- _newCursorValue = 1;
- // < DEBUG END
-#endif
-
loadStockDat();
if (_loadGameSlot != -1) {
Commit: 02c8aeae2074c326b618adcc7224a9c5f7e6d86a
https://github.com/scummvm/scummvm/commit/02c8aeae2074c326b618adcc7224a9c5f7e6d86a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:46+02:00
Commit Message:
GNAP: renaming and grouping of scenes in group 1
Changed paths:
A engines/gnap/scenes/group1.cpp
A engines/gnap/scenes/group1.h
R engines/gnap/scenes/scene10.cpp
R engines/gnap/scenes/scene10.h
R engines/gnap/scenes/scene11.cpp
R engines/gnap/scenes/scene11.h
R engines/gnap/scenes/scene12.cpp
R engines/gnap/scenes/scene12.h
R engines/gnap/scenes/scene13.cpp
R engines/gnap/scenes/scene13.h
R engines/gnap/scenes/scene14.cpp
R engines/gnap/scenes/scene14.h
R engines/gnap/scenes/scene15.cpp
R engines/gnap/scenes/scene15.h
R engines/gnap/scenes/scene17.cpp
R engines/gnap/scenes/scene17.h
R engines/gnap/scenes/scene18.cpp
R engines/gnap/scenes/scene18.h
R engines/gnap/scenes/scene19.cpp
R engines/gnap/scenes/scene19.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/module.mk
engines/gnap/scenes/group0.h
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e4cc379..c17790f 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1922,7 +1922,7 @@ void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
void GnapEngine::initGlobalSceneVars() {
// Shared by scenes 17 && 18
- _s18_garbageCanPos = 8;
+ _s18GarbageCanPos = 8;
// Toy UFO
_toyUfoId = 0;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 1169c3b..6c8995a 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -579,7 +579,7 @@ public:
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
// Shared by scenes 17 & 18
- int _s18_garbageCanPos;
+ int _s18GarbageCanPos;
// Scene 4x
void toyUfoSetStatus(int flagNum);
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 0e1271a..17dfad4 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -12,16 +12,8 @@ MODULE_OBJS := \
sound.o \
scenes/groupcs.o \
scenes/group0.o \
+ scenes/group1.o \
scenes/intro.o \
- scenes/scene10.o \
- scenes/scene11.o \
- scenes/scene12.o \
- scenes/scene13.o \
- scenes/scene14.o \
- scenes/scene15.o \
- scenes/scene17.o \
- scenes/scene18.o \
- scenes/scene19.o \
scenes/scene20.o \
scenes/scene21.o \
scenes/scene22.o \
diff --git a/engines/gnap/scenes/group0.h b/engines/gnap/scenes/group0.h
index a705ba1..b8df3af 100644
--- a/engines/gnap/scenes/group0.h
+++ b/engines/gnap/scenes/group0.h
@@ -20,8 +20,8 @@
*
*/
-#ifndef GNAP_GROUP01_H
-#define GNAP_GROUP01_H
+#ifndef GNAP_GROUP0_H
+#define GNAP_GROUP0_H
#include "gnap/debugger.h"
@@ -180,4 +180,4 @@ public:
} // End of namespace Gnap
-#endif // GNAP_GROUP01_H
+#endif // GNAP_GROUP0_H
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
new file mode 100644
index 0000000..fa5b5d0
--- /dev/null
+++ b/engines/gnap/scenes/group1.cpp
@@ -0,0 +1,4672 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group1.h"
+
+namespace Gnap {
+
+enum {
+ kHS10Platypus = 0,
+ kHS10ExitBar = 1,
+ kHS10ExitBackdoor = 2,
+ kHS10Cook = 3,
+ kHS10Tongs = 4,
+ kHS10Box = 5,
+ kHS10Oven = 6,
+ kHS10WalkArea1 = 7,
+ kHS10Device = 8,
+ kHS10WalkArea2 = 9,
+ kHS10WalkArea3 = 10,
+ kHS10WalkArea4 = 11
+};
+
+enum {
+ kAS10LeaveScene = 0,
+ kAS10AnnoyCook = 1,
+ kAS10PlatWithBox = 4
+};
+
+Scene10::Scene10(GnapEngine *vm) : Scene(vm) {
+ _nextCookSequenceId = -1;
+ _currCookSequenceId = -1;
+}
+
+int Scene10::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ return 0x10F;
+}
+
+void Scene10::updateHotspots() {
+ _vm->setHotspot(kHS10Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS10ExitBar, 0, 75, 85, 455, SF_EXIT_NW_CURSOR);
+ _vm->setHotspot(kHS10ExitBackdoor, 75, 590, 500, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS10Cook, 370, 205, 495, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS10Tongs, 250, 290, 350, 337, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS10Box, 510, 275, 565, 330, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS10Oven, 690, 280, 799, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS10WalkArea1, 59, 0, 495, 460);
+ _vm->setHotspot(kHS10WalkArea2, 495, 0, 650, 420);
+ _vm->setHotspot(kHS10WalkArea3, 651, 0, 725, 400);
+ _vm->setHotspot(kHS10WalkArea4, 725, 0, 799, 441);
+ _vm->setDeviceHotspot(kHS10Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 12;
+}
+
+void Scene10::run() {
+ _currCookSequenceId = 0x103;
+
+ _vm->_gameSys->setAnimation(0x103, 100, 2);
+ _vm->_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextCookSequenceId = 0x106;
+ if (!_vm->isFlag(kGFMudTaken))
+ _vm->_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum == 9) {
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(1, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ }
+
+ _vm->_timers[4] = _vm->getRandom(80) + 150;
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1091E))
+ _vm->playSound(0x1091E, true);
+
+ if (!_vm->isSoundPlaying(0x1091A))
+ _vm->playSound(0x1091A, true);
+
+ _vm->updateMouseCursor();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS10Platypus:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ else
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(10);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ }
+ break;
+
+ case kHS10ExitBar:
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(0, 7, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS10LeaveScene;
+ _vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 11;
+ break;
+
+ case kHS10ExitBackdoor:
+ _vm->_isLeavingScene = true;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(2, 9, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS10LeaveScene;
+ _vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 9;
+ break;
+
+ case kHS10Cook:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 8, 6, 0);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 0);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(4, 6, -1, -1, 1);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ break;
+ }
+ }
+ break;
+
+ case kHS10Tongs:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 4, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
+ else
+ _vm->playGnapScratchingHead(4, 3);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
+ else {
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ }
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
+ else {
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, -1, -1, 1);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ }
+ break;
+ }
+ }
+ break;
+
+ case kHS10Box:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 6, 6, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(7, 3);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS10AnnoyCook;
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFMudTaken))
+ _vm->playGnapMoan2(-1, -1);
+ else {
+ _vm->invAdd(kItemTongs);
+ _vm->setFlag(kGFMudTaken);
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
+ _vm->_platypusActionStatus = kAS10PlatWithBox;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0xC3);
+ _vm->playGnapIdle(7, 6);
+ }
+ break;
+ }
+ }
+ break;
+
+ case kHS10Oven:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(9, 6, 10, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 10, 5) | 0x10000);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
+ _vm->_gameSys->insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x10E;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 9;
+ _vm->_gnapY = 6;
+ _vm->_timers[2] = 360;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS10WalkArea1:
+ case kHS10WalkArea2:
+ case kHS10WalkArea3:
+ case kHS10WalkArea4:
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS10Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapActionIdle(0x10C);
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(80) + 150;
+ _vm->playSound(0x12B, false);
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(4);
+ if (_gnapRandomValue) {
+ int sequenceId;
+ if (_gnapRandomValue == 1) {
+ sequenceId = 0x8A5;
+ } else if (_gnapRandomValue == 2) {
+ sequenceId = 0x8A6;
+ } else {
+ sequenceId = 0x8A7;
+ }
+ _vm->_gameSys->insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene10::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS10LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS10AnnoyCook:
+ _nextCookSequenceId = 0x105;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
+ case kAS10PlatWithBox:
+ _nextCookSequenceId = 0x109;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextCookSequenceId != -1) {
+
+ switch (_nextCookSequenceId) {
+ case 0x109:
+ _vm->_platX = 4;
+ _vm->_platY = 8;
+ _vm->_gameSys->insertSequence(0x109, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107C9, 160,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
+ 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->removeSequence(0x107, 100, true);
+ _currCookSequenceId = 0x109;
+ _nextCookSequenceId = 0x843;
+ _vm->_platypusSequenceId = 0x7C9;
+ _vm->_platypusId = 160;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_platypusSequenceDatNum = 1;
+ break;
+ case 0x843:
+ _vm->hideCursor();
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->insertSequence(0x10843, 301, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currCookSequenceId = 0x843;
+ _nextCookSequenceId = 0x10A;
+ break;
+ case 0x10A:
+ _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
+ _currCookSequenceId = _nextCookSequenceId;
+ _nextCookSequenceId = 0x104;
+ _vm->showCursor();
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->delayTicksCursor(5);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->setGrabCursorSprite(kItemTongs);
+ if (_vm->_platypusActionStatus == kAS10PlatWithBox)
+ _vm->_platypusActionStatus = -1;
+ if (_vm->_gnapX == 4 && _vm->_gnapY == 8)
+ _vm->gnapWalkStep();
+ break;
+ default:
+ _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currCookSequenceId = _nextCookSequenceId;
+ break;
+ }
+
+ switch (_currCookSequenceId) {
+ case 0x106: {
+ // TODO: Refactor into a if + a switch
+ int rnd = _vm->getRandom(7);
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ _nextCookSequenceId = 0x106;
+ else if (rnd == 0)
+ _nextCookSequenceId = 0x104;
+ else if (rnd == 1)
+ _nextCookSequenceId = 0x103;
+ else if (rnd == 2) {
+ _nextCookSequenceId = 0x106;
+ _vm->_gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ } else
+ _nextCookSequenceId = 0x106;
+ }
+ break;
+ case 0x103:
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ _nextCookSequenceId = 0x106;
+ else if (_vm->getRandom(7) == 0)
+ _nextCookSequenceId = 0x104;
+ else
+ _nextCookSequenceId = 0x106;
+ break;
+ case 0x104:
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ _nextCookSequenceId = 0x106;
+ else if (_vm->getRandom(7) == 0)
+ _nextCookSequenceId = 0x103;
+ else
+ _nextCookSequenceId = 0x106;
+ break;
+ case 0x105: {
+ // TODO: Refactor into a if + a switch
+ int rnd = _vm->getRandom(7);
+ if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ _nextCookSequenceId = 0x106;
+ else if (rnd == 0)
+ _nextCookSequenceId = 0x104;
+ else if (rnd == 1)
+ _nextCookSequenceId = 0x103;
+ else
+ _nextCookSequenceId = 0x106;
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 300;
+ _vm->_gameSys->insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x10C;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ _vm->_platypusActionStatus = -1;
+ }
+ break;
+ }
+ if (_currCookSequenceId == 0x843)
+ _vm->_gameSys->setAnimation(_currCookSequenceId | 0x10000, 301, 2);
+ else
+ _vm->_gameSys->setAnimation(_currCookSequenceId, 100, 2);
+ }
+}
+
+void Scene10::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ _vm->_gameSys->setAnimation(_nextCookSequenceId, 100, 2);
+ _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ _currCookSequenceId = _nextCookSequenceId;
+ _nextCookSequenceId = 0x106;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS11Platypus = 0,
+ kHS11ExitKitchen = 1,
+ kHS11ExitToilet = 2,
+ kHS11ExitLeft = 3,
+ kHS11GoggleGuy = 4,
+ kHS11HookGuy = 5,
+ kHS11Billard = 6,
+ kHS11WalkArea1 = 7,
+ kHS11Device = 8,
+ kHS11WalkArea2 = 9,
+ kHS11WalkArea3 = 10,
+ kHS11WalkArea4 = 11,
+ kHS11WalkArea5 = 12
+};
+
+enum {
+ kAS11LeaveScene = 0,
+ kAS11ShowMagazineToGoggleGuy = 3,
+ kAS11TalkGoggleGuy = 4,
+ kAS11GrabHookGuy = 6,
+ kAS11ShowItemToHookGuy = 8,
+ kAS11TalkHookGuy = 9,
+ kAS11GrabBillardBall = 11
+};
+
+Scene11::Scene11(GnapEngine *vm) : Scene(vm) {
+ _billardBallCtr = 0;
+ _nextHookGuySequenceId = -1;
+ _currHookGuySequenceId = -1;
+ _nextGoggleGuySequenceId = -1;
+ _currGoggleGuySequenceId = -1;
+}
+
+int Scene11::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_vm->_prevSceneNum == 10 || _vm->_prevSceneNum == 13) {
+ _vm->playSound(0x108EC, false);
+ _vm->playSound(0x10928, false);
+ }
+ return 0x209;
+}
+
+void Scene11::updateHotspots() {
+ _vm->setHotspot(kHS11Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS11ExitKitchen, 420, 140, 520, 345, SF_EXIT_U_CURSOR);
+ _vm->setHotspot(kHS11ExitToilet, 666, 130, 740, 364, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHS11ExitLeft, 0, 350, 10, 599, SF_EXIT_L_CURSOR | SF_WALKABLE);
+ _vm->setHotspot(kHS11GoggleGuy, 90, 185, 185, 340, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS11HookGuy, 210, 240, 340, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS11Billard, 640, 475, 700, 530, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS11WalkArea1, 0, 0, 365, 453);
+ _vm->setHotspot(kHS11WalkArea2, 0, 0, 629, 353);
+ _vm->setHotspot(kHS11WalkArea3, 629, 0, 799, 364);
+ _vm->setHotspot(kHS11WalkArea4, 735, 0, 799, 397);
+ _vm->setHotspot(kHS11WalkArea5, 510, 540, 799, 599);
+ _vm->setDeviceHotspot(kHS11Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 13;
+}
+
+void Scene11::run() {
+ bool flag = true;
+
+ _vm->_timers[7] = 50;
+ _vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
+
+ _currGoggleGuySequenceId = 0x1F9;
+ _currHookGuySequenceId = 0x201;
+
+ switch (_vm->_prevSceneNum) {
+ case 13:
+ _vm->initGnapPos(8, 5, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 6, kDirUnk4);
+ break;
+ case 47:
+ _vm->initGnapPos(8, 5, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 5, kDirUnk4);
+ _currGoggleGuySequenceId = 0x1FA;
+ _currHookGuySequenceId = 0x1FF;
+ _vm->_timers[7] = 180;
+ break;
+ case 12:
+ _vm->initGnapPos(-1, 9, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
+ break;
+ default:
+ _vm->initGnapPos(6, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(6, 5, kDirUnk4);
+ break;
+ }
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextHookGuySequenceId = -1;
+
+ _vm->_gameSys->setAnimation(_currHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextGoggleGuySequenceId = -1;
+
+ _vm->_gameSys->setAnimation(_currGoggleGuySequenceId, 121, 2);
+
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_timers[6] = _vm->getRandom(100) + 100;
+ _vm->endSceneInit();
+
+ if (_vm->_prevSceneNum == 12) {
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ }
+
+ _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
+
+ while (!_vm->_sceneDone) {
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS11Platypus:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ }
+ break;
+
+ case kHS11ExitKitchen:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(6, 5, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->platypusWalkTo(6, 6, -1, -1, 1);
+ _vm->_newSceneNum = 10;
+ break;
+
+ case kHS11ExitToilet:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(8, 5, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->platypusWalkTo(8, 6, -1, -1, 1);
+ _vm->_newSceneNum = 13;
+ break;
+
+ case kHS11ExitLeft:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 12;
+ break;
+
+ case kHS11GoggleGuy:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS11ShowMagazineToGoggleGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 2, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 6);
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS11TalkGoggleGuy;
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS11HookGuy:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
+ _vm->_gnapActionStatus = kAS11ShowItemToHookGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 3, 6) | 0x10000);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS11GrabHookGuy;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS11TalkHookGuy;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS11Billard:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(9, 8);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(9, 8);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(9, 8, 0, 0x107BA, 1);
+ _vm->_gnapActionStatus = kAS11GrabBillardBall;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(9, 8);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS11WalkArea1:
+ case kHS11WalkArea2:
+ case kHS11WalkArea3:
+ case kHS11WalkArea4:
+ case kHS11WalkArea5:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS11Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ if (flag && !_vm->_timers[7]) {
+ flag = false;
+ _vm->_gameSys->setAnimation(0x207, 257, 4);
+ _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->platypusSub426234();
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextGoggleGuySequenceId == -1) {
+ if (_vm->getRandom(2))
+ _nextGoggleGuySequenceId = 0x1F6;
+ else
+ _nextGoggleGuySequenceId = 0x1F9;
+ }
+ }
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHookGuySequenceId == -1) {
+ if (_currHookGuySequenceId == 0x201) {
+ switch (_vm->getRandom(7)) {
+ case 0:
+ _nextHookGuySequenceId = 0x200;
+ break;
+ case 1:
+ _nextHookGuySequenceId = 0x205;
+ break;
+ case 2:
+ _nextHookGuySequenceId = 0x202;
+ break;
+ default:
+ _nextHookGuySequenceId = 0x201;
+ break;
+ }
+ } else {
+ _nextHookGuySequenceId = 0x201;
+ }
+ }
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(3);
+ switch (_gnapRandomValue) {
+ case 0:
+ _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(50) + 75;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene11::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (_vm->_gnapActionStatus != kAS11GrabBillardBall)
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS11LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS11ShowMagazineToGoggleGuy:
+ _nextGoggleGuySequenceId = 0x1F7;
+ break;
+ case kAS11TalkGoggleGuy:
+ _nextGoggleGuySequenceId = 0x1FB;
+ break;
+ case kAS11GrabHookGuy:
+ _nextHookGuySequenceId = 0x204;
+ break;
+ case kAS11ShowItemToHookGuy:
+ _nextHookGuySequenceId = 0x203;
+ break;
+ case kAS11TalkHookGuy:
+ _nextHookGuySequenceId = 0x206;
+ break;
+ case kAS11GrabBillardBall:
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ _vm->_gameSys->insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x1F4;
+ _vm->_gnapId = 255;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->removeSequence(0x207, 257, true);
+ _vm->_gameSys->removeSequence(0x208, 256, true);
+ _nextGoggleGuySequenceId = 0x1F8;
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_gameSys->insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextGoggleGuySequenceId, 121, 2);
+ _currGoggleGuySequenceId = _nextGoggleGuySequenceId;
+ _nextGoggleGuySequenceId = -1;
+ switch (_billardBallCtr) {
+ case 0:
+ _nextHookGuySequenceId = 0x1FC;
+ break;
+ case 1:
+ _nextHookGuySequenceId = 0x1FD;
+ break;
+ default:
+ _nextHookGuySequenceId = 0x1FE;
+ break;
+ }
+ ++_billardBallCtr;
+ _vm->_gameSys->insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
+ _currHookGuySequenceId = _nextHookGuySequenceId;
+ _nextHookGuySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1F4) - 5, 0, 0);
+ _vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
+ _vm->_gameSys->setAnimation(0x207, 257, 4);
+ _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
+ _vm->_gnapActionStatus = -1;
+ }
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextGoggleGuySequenceId != -1) {
+ _vm->_timers[5] = _vm->getRandom(100) + 75;
+ _vm->_gameSys->insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextGoggleGuySequenceId, 121, 2);
+ _currGoggleGuySequenceId = _nextGoggleGuySequenceId;
+ _nextGoggleGuySequenceId = -1;
+ if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_nextHookGuySequenceId == 0x204) {
+ _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
+ _vm->_gameSys->insertSequence(0x204, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x1F5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _currHookGuySequenceId = 0x204;
+ _nextHookGuySequenceId = -1;
+ _vm->_gnapSequenceId = 0x1F5;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ _vm->_timers[2] = _vm->getRandom(20) + 70;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ if (_vm->_gnapActionStatus == kAS11GrabHookGuy)
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextHookGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
+ _currHookGuySequenceId = _nextHookGuySequenceId;
+ _nextHookGuySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(40) + 20;
+ if (_vm->_gnapActionStatus >= 6 && _vm->_gnapActionStatus <= 9)
+ _vm->_gnapActionStatus = -1;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->_hotspots[kHS11Billard]._flags &= ~SF_DISABLED;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS12Platypus = 0,
+ kHS12ExitRight = 1,
+ kHS12ToothGuy = 2,
+ kHS12Barkeeper = 3,
+ kHS12BeardGuy = 4,
+ kHS12Jukebox = 5,
+ kHS12WalkArea1 = 6,
+ kHS12Device = 7,
+ kHS12WalkArea2 = 8,
+ kHS12WalkArea3 = 9,
+ kHS12WalkArea4 = 10
+};
+
+enum {
+ kAS12LeaveScene = 0,
+ kAS12QuarterToToothGuyDone = 1,
+ kAS12TalkToothGuy = 2,
+ kAS12GrabToothGuy = 4,
+ kAS12ShowItemToToothGuy = 5,
+ kAS12QuarterWithHoleToToothGuy = 6,
+ kAS12QuarterToToothGuy = 7,
+ kAS12TalkBeardGuy = 8,
+ kAS12LookBeardGuy = 9,
+ kAS12GrabBeardGuy = 10,
+ kAS12ShowItemToBeardGuy = 11,
+ kAS12TalkBarkeeper = 12,
+ kAS12LookBarkeeper = 13,
+ kAS12ShowItemToBarkeeper = 15,
+ kAS12QuarterWithBarkeeper = 16,
+ kAS12PlatWithBarkeeper = 17,
+ kAS12PlatWithToothGuy = 18,
+ kAS12PlatWithBeardGuy = 19
+};
+
+Scene12::Scene12(GnapEngine *vm) : Scene(vm) {
+ _nextBeardGuySequenceId = -1;
+ _currBeardGuySequenceId = -1;
+ _nextToothGuySequenceId = -1;
+ _currToothGuySequenceId = -1;
+ _nextBarkeeperSequenceId = -1;
+ _currBarkeeperSequenceId = -1;
+}
+
+int Scene12::init() {
+ return 0x209;
+}
+
+void Scene12::updateHotspots() {
+ _vm->setHotspot(kHS12Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS12ExitRight, 790, 360, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHS12ToothGuy, 80, 180, 160, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS12Barkeeper, 490, 175, 580, 238, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS12BeardGuy, 620, 215, 720, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS12Jukebox, 300, 170, 410, 355, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS12WalkArea1, 0, 0, 260, 460);
+ _vm->setHotspot(kHS12WalkArea2, 0, 0, 380, 410);
+ _vm->setHotspot(kHS12WalkArea3, 0, 0, 799, 395);
+ _vm->setHotspot(kHS12WalkArea4, 585, 0, 799, 455);
+ _vm->setDeviceHotspot(kHS12Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene12::run() {
+ int v18 = 1;
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currToothGuySequenceId = 0x200;
+ _nextToothGuySequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x200, 50, 2);
+ _vm->_gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currBeardGuySequenceId = 0x202;
+ _nextBeardGuySequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x202, 50, 4);
+ _vm->_gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currBarkeeperSequenceId = 0x203;
+ _nextBarkeeperSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x203, 50, 3);
+
+ _vm->_timers[4] = 30;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+
+ if (_vm->_prevSceneNum == 15) {
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ _vm->initPlatypusPos(3, 7, kDirNone);
+ _vm->endSceneInit();
+ } else {
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS12Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS12Platypus:
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ break;
+
+ case kHS12ExitRight:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS12LeaveScene;
+ _vm->platypusWalkTo(10, -1, -1, -1, 1);
+ _vm->_newSceneNum = 11;
+ break;
+
+ case kHS12ToothGuy:
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x141);
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kAS12QuarterToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kAS12QuarterWithHoleToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnapActionStatus = kAS12ShowItemToToothGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 2);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS12GrabToothGuy;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS12TalkToothGuy;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
+ _vm->_platypusActionStatus = kAS12PlatWithToothGuy;
+ _vm->_platypusFacing = kDirUnk4;
+ _vm->playGnapIdle(2, 7);
+ break;
+ }
+ }
+ break;
+
+ case kHS12Barkeeper:
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12QuarterWithBarkeeper;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12ShowItemToBarkeeper;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12LookBarkeeper;
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS12TalkBarkeeper;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapPullOutDevice(_vm->_platX, _vm->_platY);
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS12PlatWithBarkeeper;
+ break;
+ }
+ }
+ break;
+
+ case kHS12BeardGuy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12ShowItemToBeardGuy;
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12LookBeardGuy;
+ break;
+ case GRAB_CURSOR:
+ // NOTE Bug in the original. It has 9 as flags which seems wrong here.
+ _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS12GrabBeardGuy;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS12TalkBeardGuy;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kAS12PlatWithBeardGuy;
+ _vm->_platypusFacing = kDirNone;
+ _vm->playGnapIdle(7, 6);
+ break;
+ }
+ }
+ break;
+
+ case kHS12Jukebox:
+ _vm->_newSceneNum = 15;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS12LeaveScene;
+ break;
+
+ case kHS12WalkArea1:
+ case kHS12WalkArea2:
+ case kHS12WalkArea3:
+ case kHS12WalkArea4:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = 15;
+ if (_nextToothGuySequenceId == -1) {
+ if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
+ _nextToothGuySequenceId = 0x1EC;
+ else
+ _nextToothGuySequenceId = 0x204;
+ } else if (_currToothGuySequenceId != 0x200)
+ _nextToothGuySequenceId = 0x200;
+ v18 = (v18 + 1) % 15;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_nextBarkeeperSequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
+ _nextBarkeeperSequenceId = 0x208;
+ else
+ _nextBarkeeperSequenceId = 0x1FB;
+ } else
+ _nextBarkeeperSequenceId = 0x203;
+ v18 = (v18 + 1) % 15;
+ }
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(30) + 15;
+ if (_nextBeardGuySequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ _nextBeardGuySequenceId = 0x1F2;
+ else
+ _nextBeardGuySequenceId = 0x202;
+ v18 = (v18 + 1) % 15;
+ }
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ int _gnapRandomValue = _vm->getRandom(3);
+ switch (_gnapRandomValue) {
+ case 0:
+ _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = 30;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene12::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS12LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS12TalkToothGuy:
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ // Easter egg
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
+ _nextToothGuySequenceId = 0x206;
+ } else {
+ _nextToothGuySequenceId = 0x1EE;
+ }
+ break;
+ case 3:
+ break;
+ case kAS12GrabToothGuy:
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
+ _nextToothGuySequenceId = 0x206;
+ } else {
+ _nextToothGuySequenceId = 0x1EF;
+ }
+ break;
+ case kAS12ShowItemToToothGuy:
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
+ _nextToothGuySequenceId = 0x206;
+ } else {
+ _nextToothGuySequenceId = 0x1ED;
+ }
+ break;
+ case kAS12QuarterWithHoleToToothGuy:
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
+ _nextToothGuySequenceId = 0x206;
+ } else {
+ _nextToothGuySequenceId = 0x1EA;
+ }
+ break;
+ case kAS12QuarterToToothGuy:
+ if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_j);
+ _nextToothGuySequenceId = 0x206;
+ } else {
+ _nextToothGuySequenceId = 0x1E9;
+ }
+ break;
+ case kAS12QuarterToToothGuyDone:
+ _vm->_gnapActionStatus = -1;
+ _vm->showCursor();
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->setGrabCursorSprite(kItemQuarterWithHole);
+ break;
+ case kAS12TalkBeardGuy:
+ _nextBeardGuySequenceId = 0x1F4;
+ break;
+ case kAS12LookBeardGuy:
+ _nextBeardGuySequenceId = 0x1F3;
+ break;
+ case kAS12GrabBeardGuy:
+ _nextBeardGuySequenceId = 0x1F1;
+ break;
+ case kAS12ShowItemToBeardGuy:
+ _nextBeardGuySequenceId = 0x1F0;
+ break;
+ case kAS12TalkBarkeeper:
+ if (_vm->getRandom(2) != 0)
+ _nextBarkeeperSequenceId = 0x1FD;
+ else
+ _nextBarkeeperSequenceId = 0x1FF;
+ break;
+ case kAS12LookBarkeeper:
+ _nextBarkeeperSequenceId = 0x1F8;
+ break;
+ case 14:
+ _nextBarkeeperSequenceId = 0x1F6;
+ break;
+ case kAS12ShowItemToBarkeeper:
+ _nextBarkeeperSequenceId = 0x1F5;
+ break;
+ case kAS12QuarterWithBarkeeper:
+ _nextBarkeeperSequenceId = 0x1FA;
+ break;
+ case kAS12PlatWithBarkeeper:
+ _nextBarkeeperSequenceId = 0x1F9;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
+ case kAS12PlatWithToothGuy:
+ _nextToothGuySequenceId = 0x1EB;
+ break;
+ case kAS12PlatWithBeardGuy:
+ _nextBeardGuySequenceId = 0x1F3;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (_currToothGuySequenceId == 0x1E9) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0x10843, 301, 0);
+ _vm->_gnapActionStatus = kAS12QuarterToToothGuyDone;
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B7;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->setFlag(kGFTwigTaken);
+ _vm->invAdd(kItemQuarterWithHole);
+ _vm->invRemove(kItemQuarter);
+ }
+ if (_nextToothGuySequenceId == 0x1EF) {
+ _vm->_gameSys->setAnimation(_nextToothGuySequenceId, 50, 2);
+ _vm->_gameSys->insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _currToothGuySequenceId = _nextToothGuySequenceId;
+ _nextToothGuySequenceId = -1;
+ _vm->_gnapSequenceId = 0x205;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_timers[4] = 40;
+ _vm->_timers[2] = _vm->getRandom(20) + 70;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ if (_vm->_gnapActionStatus == kAS12GrabToothGuy)
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextToothGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextToothGuySequenceId, 50, 2);
+ _currToothGuySequenceId = _nextToothGuySequenceId;
+ _nextToothGuySequenceId = -1;
+ _vm->_timers[4] = 50;
+ if (_vm->_gnapActionStatus >= kAS12TalkToothGuy && _vm->_gnapActionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
+ _currToothGuySequenceId != 0x1EC && _currToothGuySequenceId != 0x200)
+ _vm->_gnapActionStatus = -1;
+ if (_vm->_platypusActionStatus == kAS12PlatWithToothGuy)
+ _vm->_platypusActionStatus = -1;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_vm->_gnapActionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
+ _vm->_gnapActionStatus = -1;
+ _vm->playGnapIdle(7, 6);
+ _vm->_timers[5] = 0;
+ }
+ if (_nextBarkeeperSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextBarkeeperSequenceId, 50, _currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextBarkeeperSequenceId, 50, 3);
+ _currBarkeeperSequenceId = _nextBarkeeperSequenceId;
+ _nextBarkeeperSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus >= kAS12TalkBarkeeper && _vm->_gnapActionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 &&
+ _currBarkeeperSequenceId != 0x1FB && _currBarkeeperSequenceId != 0x208)
+ _vm->_gnapActionStatus = -1;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextBeardGuySequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextBeardGuySequenceId, 50, _currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextBeardGuySequenceId, 50, 4);
+ _currBeardGuySequenceId = _nextBeardGuySequenceId;
+ _nextBeardGuySequenceId = -1;
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus >= kAS12TalkBeardGuy && _vm->_gnapActionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
+ _vm->_gnapActionStatus = -1;
+ if (_vm->_platypusActionStatus == kAS12PlatWithBeardGuy)
+ _vm->_platypusActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS13Platypus = 0,
+ kHS13ExitBar = 1,
+ kHS13WalkArea1 = 2,
+ kHS13BackToilet = 3,
+ kHS13FrontToilet = 4,
+ kHS13Urinal = 5,
+ kHS13Scribble = 6,
+ kHS13Sink = 7,
+ kHS13WalkArea2 = 8,
+ kHS13Device = 9,
+ kHS13WalkArea3 = 10,
+ kHS13WalkArea4 = 11,
+ kHS13WalkArea5 = 12,
+ kHS13WalkArea6 = 13,
+ kHS13WalkArea7 = 14,
+ kHS13WalkArea8 = 15,
+ kHS13WalkArea9 = 16
+};
+
+enum {
+ kAS13LeaveScene = 0,
+ kAS13BackToilet = 1,
+ kAS13FrontToilet = 2,
+ kAS13LookScribble = 6,
+ kAS13GrabSink = 7,
+ kAS13GrabSinkDone = 8,
+ kAS13Wait = 12,
+ kAS13GrabUrinal = 13
+};
+
+Scene13::Scene13(GnapEngine *vm) : Scene(vm) {
+ _backToiletCtr = -1;
+}
+
+int Scene13::init() {
+ _vm->playSound(0x108EC, false);
+ return 0xAC;
+}
+
+void Scene13::updateHotspots() {
+ _vm->setHotspot(kHS13Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13ExitBar, 113, 160, 170, 455, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS13BackToilet, 385, 195, 478, 367, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13FrontToilet, 497, 182, 545, 432, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13Urinal, 680, 265, 760, 445, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13Scribble, 560, 270, 660, 370, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13Sink, 310, 520, 560, 599, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS13WalkArea1, 268, 270, 325, 385);
+ _vm->setHotspot(kHS13WalkArea2, 0, 0, 52, 599);
+ _vm->setHotspot(kHS13WalkArea3, 0, 0, 113, 550);
+ _vm->setHotspot(kHS13WalkArea4, 0, 0, 226, 438);
+ _vm->setHotspot(kHS13WalkArea5, 0, 0, 268, 400);
+ _vm->setHotspot(kHS13WalkArea6, 0, 0, 799, 367);
+ _vm->setHotspot(kHS13WalkArea7, 478, 0, 799, 401);
+ _vm->setHotspot(kHS13WalkArea8, 545, 0, 799, 473);
+ _vm->setHotspot(kHS13WalkArea9, 0, 549, 799, 599);
+ _vm->setDeviceHotspot(kHS13Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 17;
+}
+
+void Scene13::showScribble() {
+ _vm->hideCursor();
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x6F);
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
+ !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29))
+ _vm->gameUpdateTick();
+ _vm->_mouseClickState._left = false;
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->showCursor();
+}
+
+void Scene13::run() {
+ int currSoundId = 0;
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 14) {
+ _vm->initGnapPos(6, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirNone);
+ } else {
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(2, 7, kDirNone);
+ }
+
+ _vm->endSceneInit();
+
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1091A))
+ _vm->playSound(0x1091A, true);
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS13Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
+ }
+ break;
+
+ case kHS13Platypus:
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ break;
+ }
+ break;
+
+ case kHS13ExitBar:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(2, 7, 0, 0x107C0, 1);
+ _vm->_gnapActionStatus = kAS13LeaveScene;
+ _vm->platypusWalkTo(2, 8, -1, -1, 1);
+ if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
+ _vm->_newSceneNum = 11;
+ } else {
+ _vm->setFlag(kGFSpringTaken);
+ _vm->_newSceneNum = 47;
+ }
+ break;
+
+ case kHS13BackToilet:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(5, 5, 6, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ if (_vm->_gnapX == 5 && _vm->_gnapY == 5) {
+ _backToiletCtr = MIN(5, _backToiletCtr + 1);
+ _vm->_gameSys->setAnimation(_backToiletCtr + 0xA3, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqScale | kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS13Wait;
+ _vm->_gnapSequenceId = _backToiletCtr + 0xA3;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapSequenceDatNum = 0;
+ } else {
+ _vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS13BackToilet;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ }
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS13FrontToilet:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 7, 7, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
+ _vm->_gnapActionStatus = kAS13FrontToilet;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ break;
+ }
+ }
+ break;
+
+ case kHS13Scribble:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 7, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS13LookScribble;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapScratchingHead(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 7, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS13Urinal:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(8, 7, 9, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->_gnapActionStatus = kAS13Wait;
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(8, 7, 0, -1, 1);
+ _vm->_gnapActionStatus = kAS13GrabUrinal;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS13Sink:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->_gnapActionStatus = kAS13Wait;
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(4, 8, 0, 0x107B9, 1);
+ _vm->_gnapActionStatus = kAS13GrabSink;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS13WalkArea2:
+ case kHS13WalkArea3:
+ case kHS13WalkArea4:
+ case kHS13WalkArea5:
+ case kHS13WalkArea6:
+ case kHS13WalkArea7:
+ case kHS13WalkArea8:
+ case kHS13WalkArea9:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ case kHS13WalkArea1:
+ // Nothing
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_platY == 5 || _vm->_platY == 6)
+ _vm->platypusWalkTo(-1, 7, -1, -1, 1);
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ switch (_vm->getRandom(5)) {
+ case 0:
+ _vm->playSound(0xD2, false);
+ break;
+ case 1:
+ _vm->playSound(0xD3, false);
+ break;
+ case 2:
+ _vm->playSound(0xD4, false);
+ break;
+ case 3:
+ _vm->playSound(0xD5, false);
+ break;
+ case 4:
+ _vm->playSound(0xD6, false);
+ break;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ int newSoundId;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
+ switch (_vm->getRandom(7)) {
+ case 0:
+ newSoundId = 0xD7;
+ _vm->_timers[5] = 2 * _vm->getRandom(50) + 100;
+ break;
+ case 1:
+ case 2:
+ newSoundId = 0xCF;
+ break;
+ case 3:
+ case 4:
+ newSoundId = 0xD0;
+ break;
+ default:
+ newSoundId = 0xD1;
+ break;
+ }
+ if (newSoundId != currSoundId) {
+ _vm->playSound(newSoundId, false);
+ currSoundId = newSoundId;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ _vm->_timers[5] = _vm->getRandom(50) + 50;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene13::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS13LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS13BackToilet:
+ _backToiletCtr = MIN(5, _backToiletCtr + 1);
+ _vm->_gameSys->insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
+ _vm->_gnapSequenceId = _backToiletCtr + 0xA3;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS13FrontToilet:
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 14;
+ break;
+ case kAS13LookScribble:
+ _vm->_gnapActionStatus = -1;
+ showScribble();
+ break;
+ case kAS13GrabSink:
+ _vm->_gameSys->setAnimation(0xAB, 160, 0);
+ _vm->_gameSys->insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0xAA, 256, true);
+ _vm->_gnapSequenceId = 0xAB;
+ _vm->_gnapId = 160;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 8;
+ _vm->_timers[2] = 360;
+ _vm->_gnapActionStatus = kAS13GrabSinkDone;
+ break;
+ case kAS13GrabSinkDone:
+ _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS13Wait:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS13GrabUrinal:
+ _vm->_gameSys->setAnimation(0xA2, 120, 0);
+ _vm->_gameSys->insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA2;
+ _vm->_gnapId = 120;
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 4;
+ _vm->_gnapY = 6;
+ _vm->_timers[2] = 360;
+ _vm->_gnapActionStatus = kAS13Wait;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_platypusActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS14Platypus = 0,
+ kHS14Exit = 1,
+ kHS14Coin = 2,
+ kHS14Toilet = 3,
+ kHS14Device = 4
+};
+
+Scene14::Scene14(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene14::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0x27;
+}
+
+void Scene14::updateHotspots() {
+ _vm->setHotspot(kHS14Platypus, 0, 0, 0, 0);
+ _vm->setHotspot(kHS14Exit, 0, 590, 799, 599, SF_EXIT_D_CURSOR);
+ _vm->setHotspot(kHS14Coin, 330, 390, 375, 440, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS14Toilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setDeviceHotspot(kHS14Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFNeedleTaken))
+ _vm->_hotspots[kHS14Coin]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 5;
+}
+
+void Scene14::run() {
+ _vm->_largeSprite = nullptr;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (!_vm->isFlag(kGFNeedleTaken))
+ _vm->_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->endSceneInit();
+
+ if (!_vm->isFlag(kGFNeedleTaken) && _vm->invHas(kItemTongs))
+ _vm->_largeSprite = _vm->_gameSys->createSurface(1);
+
+ if (!_vm->isFlag(kGFNeedleTaken)) {
+ _vm->_gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x24;
+ _vm->_timers[2] = _vm->getRandom(40) + 50;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS14Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS14Exit:
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 13;
+ break;
+
+ case kHS14Coin:
+ if (_vm->_grabCursorSpriteIndex == kItemTongs) {
+ _vm->invAdd(kItemQuarter);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _vm->_gameSys->setAnimation(0x26, 10, 0);
+ _vm->_gameSys->insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playSound(0x108E9, false);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playSound(0x108E9, false);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gameSys->insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x23;
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ case kHS14Toilet:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ _vm->playSound(0x108B1, false);
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ default:
+ _vm->_mouseClickState._left = false;
+ break;
+ }
+
+ updateAnimations();
+ _vm->checkGameKeys();
+
+ if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
+ _vm->_gameSys->insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x24;
+ _vm->_timers[2] = _vm->getRandom(40) + 50;
+ }
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+
+ if (_vm->_largeSprite)
+ _vm->deleteSurface(&_vm->_largeSprite);
+}
+
+void Scene14::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_gameSys->setAnimation(0x10843, 301, 1);
+ _vm->_gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 13;
+ _vm->_grabCursorSpriteIndex = kItemQuarter;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS15Platypus = 0,
+ kHS15Exit = 1,
+ kHS15Button1 = 2,
+ kHS15Button2 = 3,
+ kHS15Button3 = 4,
+ kHS15Button4 = 5,
+ kHS15Button5 = 6,
+ kHS15Button6 = 7,
+ kHS15ButtonA = 8,
+ kHS15ButtonB = 9,
+ kHS15ButtonC = 10,
+ kHS15ButtonD = 11,
+ kHS15ButtonE = 12,
+ kHS15ButtonF = 13,
+ kHS15CoinSlot = 14,
+ kHS15PlayButton = 15,
+ kHS15Device = 16
+};
+
+Scene15::Scene15(GnapEngine *vm) : Scene(vm) {
+ _nextRecordSequenceId = -1;
+ _currRecordSequenceId = -1;
+ _nextSlotSequenceId = -1;
+ _currSlotSequenceId = -1;
+ _nextUpperButtonSequenceId = -1;
+ _currUpperButtonSequenceId = -1;
+ _nextLowerButtonSequenceId = -1;
+ _currLowerButtonSequenceId = -1;
+}
+
+int Scene15::init() {
+ return 0xDD;
+}
+
+void Scene15::updateHotspots() {
+ _vm->setHotspot(kHS15Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS15Exit, 50, 590, 750, 599, SF_EXIT_D_CURSOR);
+ _vm->setHotspot(kHS15Button1, 210, 425, 260, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15Button2, 280, 425, 325, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15Button3, 340, 425, 385, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15Button4, 400, 425, 445, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15Button5, 460, 425, 510, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15Button6, 520, 425, 560, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonA, 205, 480, 250, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonB, 270, 480, 320, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonC, 335, 480, 380, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonD, 395, 480, 445, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonE, 460, 480, 505, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15ButtonF, 515, 480, 560, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15CoinSlot, 585, 475, 620, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS15PlayButton, 622, 431, 650, 482, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setDeviceHotspot(kHS15Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 17;
+}
+
+void Scene15::run() {
+ _currSlotSequenceId = -1;
+ _currUpperButtonSequenceId = -1;
+ _currLowerButtonSequenceId = -1;
+ _nextSlotSequenceId = -1;
+ _nextUpperButtonSequenceId = -1;
+ _nextLowerButtonSequenceId = -1;
+ _currRecordSequenceId = 0xD5;
+ _nextRecordSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0xD5, 1, 0);
+ _vm->_gameSys->insertSequence(_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->endSceneInit();
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_hotspots[kHS15Platypus]._x1 = 0;
+ _vm->_hotspots[kHS15Platypus]._y1 = 0;
+ _vm->_hotspots[kHS15Platypus]._x2 = 0;
+ _vm->_hotspots[kHS15Platypus]._y2 = 0;
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS15Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS15Exit:
+ _vm->_newSceneNum = 12;
+ _vm->_isLeavingScene = true;
+ break;
+
+ case kHS15CoinSlot:
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
+ _nextSlotSequenceId = 0xDC; // Insert coin
+ } else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _nextSlotSequenceId = 0xDB;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ _vm->playSound(0x108E9, false);
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ case kHS15PlayButton:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
+ _vm->playSound(0x108E9, false);
+ else
+ _nextSlotSequenceId = 0xDA;
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
+ _nextSlotSequenceId = 0xD9;
+ else
+ _nextSlotSequenceId = 0xDA;
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ case kHS15Button1:
+ case kHS15Button2:
+ case kHS15Button3:
+ case kHS15Button4:
+ case kHS15Button5:
+ case kHS15Button6:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playSound(0x108E9, false);
+ break;
+ case GRAB_CURSOR:
+ _nextUpperButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ case kHS15ButtonA:
+ case kHS15ButtonB:
+ case kHS15ButtonC:
+ case kHS15ButtonD:
+ case kHS15ButtonE:
+ case kHS15ButtonF:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playSound(0x108E9, false);
+ break;
+ case GRAB_CURSOR:
+ _nextLowerButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
+ break;
+ case TALK_CURSOR:
+ _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
+ break;
+ case PLAT_CURSOR:
+ _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ break;
+ }
+ }
+ break;
+
+ default:
+ _vm->_mouseClickState._left = false;
+ break;
+
+ }
+
+ updateAnimations();
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene15::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (_vm->_isLeavingScene) {
+ _vm->_sceneDone = true;
+ } else if (_nextSlotSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextSlotSequenceId, 1, 0);
+ _vm->_gameSys->insertSequence(_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _currSlotSequenceId = _nextSlotSequenceId;
+ _nextSlotSequenceId = -1;
+ switch (_currSlotSequenceId) {
+ case 0xDC:
+ if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
+ _vm->invRemove(kItemQuarter);
+ } else {
+ _vm->invRemove(kItemQuarterWithHole);
+ _vm->setFlag(kGFUnk13);
+ }
+ _vm->setGrabCursorSprite(-1);
+ break;
+ case 0xDB:
+ _vm->setFlag(kGFUnk14);
+ _vm->setGrabCursorSprite(-1);
+ _nextSlotSequenceId = 0xD8;
+ break;
+ case 0xD9:
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ _vm->invAdd(kItemQuarter);
+ _vm->_newGrabCursorSpriteIndex = kItemQuarter;
+ } else if (_vm->isFlag(kGFUnk13)) {
+ _vm->clearFlag(kGFUnk13);
+ _vm->invAdd(kItemQuarterWithHole);
+ _vm->_newGrabCursorSpriteIndex = kItemQuarterWithHole;
+ }
+ _vm->_newSceneNum = 12;
+ _vm->_isLeavingScene = true;
+ break;
+ case 0xD8:
+ case 0xDA:
+ if (_currUpperButtonSequenceId != -1) {
+ _vm->_gameSys->removeSequence(_currUpperButtonSequenceId, 1, true);
+ _currUpperButtonSequenceId = -1;
+ }
+ if (_currLowerButtonSequenceId != -1) {
+ _vm->_gameSys->removeSequence(_currLowerButtonSequenceId, 1, true);
+ _currLowerButtonSequenceId = -1;
+ }
+ break;
+ }
+ } else if (_nextRecordSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextRecordSequenceId, 1, 0);
+ _vm->_gameSys->insertSequence(_nextRecordSequenceId, 1, _currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _currRecordSequenceId = _nextRecordSequenceId;
+ _nextRecordSequenceId = -1;
+ if (_currRecordSequenceId == 0xD3) {
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->_newSceneNum = 16;
+ _vm->_isLeavingScene = true;
+ }
+ _vm->_gameSys->removeSequence(_currUpperButtonSequenceId, 1, true);
+ _currUpperButtonSequenceId = -1;
+ _vm->_gameSys->removeSequence(_currLowerButtonSequenceId, 1, true);
+ _currLowerButtonSequenceId = -1;
+ } else if (_nextUpperButtonSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextUpperButtonSequenceId, 1, 0);
+ if (_currUpperButtonSequenceId == -1)
+ _vm->_gameSys->insertSequence(_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(_nextUpperButtonSequenceId, 1, _currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _currUpperButtonSequenceId = _nextUpperButtonSequenceId;
+ _nextUpperButtonSequenceId = -1;
+ if (_currLowerButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
+ if (_currUpperButtonSequenceId == 0xCC && _currLowerButtonSequenceId == 0xCE)
+ _nextRecordSequenceId = 0xD3;
+ else
+ _nextRecordSequenceId = 0xD4;
+ }
+ } else if (_nextLowerButtonSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextLowerButtonSequenceId, 1, 0);
+ if (_currLowerButtonSequenceId == -1)
+ _vm->_gameSys->insertSequence(_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(_nextLowerButtonSequenceId, 1, _currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _currLowerButtonSequenceId = _nextLowerButtonSequenceId;
+ _nextLowerButtonSequenceId = -1;
+ if (_currUpperButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
+ if (_currUpperButtonSequenceId == 0xCC && _currLowerButtonSequenceId == 0xCE)
+ _nextRecordSequenceId = 0xD3;
+ else
+ _nextRecordSequenceId = 0xD4;
+ }
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS17Platypus = 0,
+ kHS17Phone1 = 1,
+ kHS17Phone2 = 2,
+ kHS17ExitGrubCity = 3,
+ kHS17Device = 4,
+ kHS17ExitToyStore = 5,
+ kHS17Wrench = 6,
+ kHS17WalkArea1 = 7,
+ kHS17WalkArea2 = 8,
+ kHS17WalkArea3 = 9
+};
+
+enum {
+ kAS17TryGetWrench = 0,
+ kAS17GetWrench2 = 1,
+ kAS17GetWrenchDone = 2,
+ kAS17GetWrench1 = 3,
+ kAS17PlatUsePhone = 4,
+ kAS17PutCoinIntoPhone = 5,
+ kAS17GetCoinFromPhone = 6,
+ kAS17GetCoinFromPhoneDone = 7,
+ kAS17PutCoinIntoPhoneDone = 8,
+ kAS17GnapUsePhone = 9,
+ kAS17GetWrenchGnapReady = 10,
+ kAS17GnapHangUpPhone = 11,
+ kAS17PlatPhoningAssistant = 12,
+ kAS17PlatHangUpPhone = 14,
+ kAS17LeaveScene = 15
+};
+
+Scene17::Scene17(GnapEngine *vm) : Scene(vm) {
+ _platTryGetWrenchCtr = 0;
+ _wrenchCtr = 2;
+ _nextCarWindowSequenceId = -1;
+ _nextWrenchSequenceId = -1;
+ _canTryGetWrench = true;
+ _platPhoneCtr = 0;
+ _nextPhoneSequenceId = -1;
+ _currPhoneSequenceId = -1;
+}
+
+int Scene17::init() {
+ return 0x263;
+}
+
+void Scene17::updateHotspots() {
+ _vm->setHotspot(kHS17Platypus, 1, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS17Phone1, 61, 280, 97, 322, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHS17Phone2, 80, 204, 178, 468, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHS17ExitGrubCity, 196, 207, 280, 304, SF_EXIT_U_CURSOR, 3, 5);
+ _vm->setHotspot(kHS17ExitToyStore, 567, 211, 716, 322, SF_EXIT_U_CURSOR, 5, 6);
+ _vm->setHotspot(kHS17Wrench, 586, 455, 681, 547, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS17WalkArea1, 0, 0, 800, 434);
+ _vm->setHotspot(kHS17WalkArea2, 541, 0, 800, 600);
+ _vm->setHotspot(kHS17WalkArea3, 0, 204, 173, 468);
+ _vm->setDeviceHotspot(kHS17Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFGrassTaken))
+ _vm->_hotspots[kHS17Wrench]._flags = SF_NONE;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHS17Device]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS17Platypus]._flags = SF_DISABLED;
+ }
+ _vm->_hotspotsCount = 10;
+}
+
+void Scene17::update() {
+ _vm->gameUpdateTick();
+ _vm->updateMouseCursor();
+ _vm->updateGrabCursorSprite(0, 0);
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+}
+
+void Scene17::platHangUpPhone() {
+ int savedGnapActionStatus = _vm->_gnapActionStatus;
+
+ if (_vm->_platypusActionStatus == kAS17PlatPhoningAssistant) {
+ _vm->_gnapActionStatus = kAS17PlatHangUpPhone;
+ _vm->updateMouseCursor();
+ _platPhoneCtr = 0;
+ _vm->_platypusActionStatus = -1;
+ _vm->_gameSys->setAnimation(0x257, 254, 4);
+ _vm->_gameSys->insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x25B, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25B;
+ _vm->_platypusSequenceDatNum = 0;
+ _currPhoneSequenceId = -1;
+ _nextPhoneSequenceId = -1;
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gnapActionStatus = savedGnapActionStatus;
+ _vm->updateMouseCursor();
+ }
+ updateHotspots();
+}
+
+void Scene17::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(8);
+ _vm->_sceneWaiting = false;
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ _vm->_timers[3] = 200;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ _vm->_timers[6] = _vm->getRandom(30) + 200;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ } else {
+ if (_vm->_s18GarbageCanPos >= 8) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
+ } else if (_vm->_s18GarbageCanPos >= 6) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
+ } else if (_vm->_s18GarbageCanPos >= 5) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
+ } else if (_vm->_s18GarbageCanPos >= 4) {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
+ } else {
+ _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
+ }
+ }
+
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFGrassTaken))
+ _currWrenchSequenceId = 0x22D;
+ else
+ _currWrenchSequenceId = 0x22F;
+
+ _currCarWindowSequenceId = 0x244;
+
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_gameSys->setAnimation(_currWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ } else {
+ _vm->_gameSys->setAnimation(_currCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ }
+
+ _canTryGetWrench = true;
+
+ if (_vm->isFlag(kGFUnk18))
+ _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(4, 6, kDirBottomRight);
+ _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ } else if (_vm->isFlag(kGFUnk27)) {
+ _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_platX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25A;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->endSceneInit();
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
+ platHangUpPhone();
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ _vm->clearFlag(kGFUnk27);
+ updateHotspots();
+ } else if (_vm->isFlag(kGFUnk25)) {
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->_gnapX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_gnapY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _vm->_gameSys->insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 601;
+ _vm->_gnapActionStatus = kAS17GnapHangUpPhone;
+ _vm->clearFlag(kGFUnk25);
+ _vm->_gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(0x257, 254, 0);
+ _vm->_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
+ } else if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->_sceneWaiting = true;
+ _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_platX = _vm->_hotspotsWalkPos[2].x;
+ _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
+ _currPhoneSequenceId = 0x251;
+ _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platypusSequenceId = 0x25A;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(_currPhoneSequenceId, 254, 1);
+ _vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
+ updateHotspots();
+ } else if (_vm->_prevSceneNum == 18) {
+ _vm->initGnapPos(6, 6, kDirBottomRight);
+ _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ } else {
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->initGnapPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
+ _vm->initPlatypusPos(1, 9, kDirNone);
+ _vm->endSceneInit();
+ } else {
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
+ }
+ _vm->clearFlag(kGFSpringTaken);
+ _vm->clearFlag(kGFUnk16);
+ _vm->endSceneInit();
+ }
+ } else {
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapId = 120;
+ _vm->_gnapSequenceId = 0x23D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_platX = -1;
+ _vm->_platY = 8;
+ _vm->_platypusId = 160;
+ _vm->_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ _vm->_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
+ // TODO delayTicksA(2, 9);
+ _vm->endSceneInit();
+ _vm->_platypusSequenceId = 0x7C1;
+ _vm->_platypusSequenceDatNum = 1;
+ _vm->_platypusFacing = kDirBottomRight;
+ _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS17Device:
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS17Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->gnapUseJointOnPlatypus();
+ } else {
+ _vm->gnapUseDeviceOnPlatypuss();
+ _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->_platypusActionStatus = kAS17GetWrench1;
+ _vm->_gnapActionStatus = kAS17GetWrench1;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemJoint);
+ }
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS17Wrench:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFGrassTaken)) {
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ case GRAB_CURSOR:
+ _vm->playGnapScratchingHead(8, 7);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_canTryGetWrench) {
+ platHangUpPhone();
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
+ _vm->_platypusActionStatus = kAS17TryGetWrench;
+ _vm->_gnapActionStatus = kAS17TryGetWrench;
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS17Phone1:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS17PutCoinIntoPhone;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 3);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS17GetCoinFromPhone;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->_platypusFacing = kDirUpLeft;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->setFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kAS17PlatUsePhone;
+ _vm->_gnapActionStatus = kAS17PlatUsePhone;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS17Phone2:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS17PutCoinIntoPhone;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 3);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS17GnapUsePhone;
+ _vm->setFlag(kGFSpringTaken);
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (_vm->isFlag(kGFUnk18)) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->_platypusFacing = kDirUpLeft;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->setFlag(kGFUnk16);
+ _vm->_platypusActionStatus = kAS17PlatUsePhone;
+ _vm->_gnapActionStatus = kAS17PlatUsePhone;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS17ExitToyStore:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS17LeaveScene;
+ if (_vm->_platypusActionStatus != kAS17PlatPhoningAssistant)
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS17ExitGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ platHangUpPhone();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS17LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS17WalkArea1:
+ case kHS17WalkArea2:
+ case kHS17WalkArea3:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->platypusSub426234();
+ _vm->updateGnapIdleSequence2();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ _vm->_gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _vm->_gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ _vm->_gameSys->insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ }
+ if (_vm->_platypusActionStatus < 0 && !_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ if (_vm->isFlag(kGFGrassTaken) && _nextWrenchSequenceId == -1) {
+ _nextWrenchSequenceId = 0x236;
+ } else if (_canTryGetWrench) {
+ switch (_vm->getRandom(6)) {
+ case 0:
+ _nextWrenchSequenceId = 0x231;
+ break;
+ case 1:
+ _nextWrenchSequenceId = 0x232;
+ break;
+ case 2:
+ case 3:
+ _nextWrenchSequenceId = 0x23C;
+ break;
+ case 4:
+ case 5:
+ _nextWrenchSequenceId = 0x22E;
+ break;
+ }
+ } else {
+ --_wrenchCtr;
+ if (_wrenchCtr) {
+ switch (_vm->getRandom(6)) {
+ case 0:
+ _nextWrenchSequenceId = 0x237;
+ break;
+ case 1:
+ _nextWrenchSequenceId = 0x238;
+ break;
+ case 2:
+ _nextWrenchSequenceId = 0x239;
+ break;
+ case 3:
+ _nextWrenchSequenceId = 0x23A;
+ break;
+ case 4:
+ _nextWrenchSequenceId = 0x23B;
+ break;
+ case 5:
+ _nextWrenchSequenceId = 0x235;
+ break;
+ }
+ } else {
+ _wrenchCtr = 2;
+ _nextWrenchSequenceId = 0x235;
+ }
+ }
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(30) + 200;
+ if (_nextCarWindowSequenceId == -1 && !_vm->isFlag(kGFGrassTaken))
+ _nextCarWindowSequenceId = 0x246;
+ }
+ _vm->playSoundA();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene17::updateAnimations() {
+ static const int kPlatPhoneSequenceIds[] = {
+ 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257
+ };
+
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS17GetWrench1:
+ _vm->_gnapActionStatus = kAS17GetWrenchGnapReady;
+ break;
+ case kAS17GetCoinFromPhone:
+ _vm->playGnapPullOutDevice(1, 3);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x250, 100, 0);
+ _vm->_gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->invAdd(kItemDiceQuarterHole);
+ _vm->clearFlag(kGFUnk18);
+ _vm->_gnapActionStatus = kAS17GetCoinFromPhoneDone;
+ break;
+ case kAS17GetCoinFromPhoneDone:
+ _vm->setGrabCursorSprite(kItemDiceQuarterHole);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS17PutCoinIntoPhone:
+ _vm->_gameSys->setAnimation(0x24C, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x24C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x24C;
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->setGrabCursorSprite(-1);
+ _vm->setFlag(kGFUnk18);
+ _vm->_gnapActionStatus = kAS17PutCoinIntoPhoneDone;
+ break;
+ case kAS17PutCoinIntoPhoneDone:
+ _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS17GnapUsePhone:
+ _vm->_gameSys->setAnimation(0x24D, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS17LeaveScene;
+ _vm->_newSceneNum = 53;
+ break;
+ case kAS17GnapHangUpPhone:
+ _vm->_gameSys->insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x258;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS17LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
+ case kAS17TryGetWrench:
+ _vm->_platypusActionStatus = -1;
+ ++_platTryGetWrenchCtr;
+ if (_platTryGetWrenchCtr % 2 != 0)
+ _nextWrenchSequenceId = 0x233;
+ else
+ _nextWrenchSequenceId = 0x234;
+ _canTryGetWrench = false;
+ break;
+ case kAS17GetWrench1:
+ _nextWrenchSequenceId = 0x230;
+ break;
+ case kAS17GetWrench2:
+ _nextCarWindowSequenceId = 0x249;
+ break;
+ case kAS17GetWrenchDone:
+ _vm->_platypusActionStatus = -1;
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ break;
+ case kAS17PlatUsePhone:
+ _vm->_gameSys->setAnimation(0x24E, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x24E;
+ _vm->_platypusActionStatus = kAS17LeaveScene;
+ _vm->_newSceneNum = 53;
+ break;
+ case kAS17PlatPhoningAssistant:
+ ++_platPhoneCtr;
+ if (_platPhoneCtr >= 7) {
+ _platPhoneCtr = 0;
+ _nextPhoneSequenceId = -1;
+ _currPhoneSequenceId = -1;
+ _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x25B;
+ _vm->_platypusActionStatus = -1;
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ _vm->_sceneWaiting = false;
+ updateHotspots();
+ } else {
+ _nextPhoneSequenceId = kPlatPhoneSequenceIds[_platPhoneCtr];
+ _vm->_gameSys->setAnimation(_nextPhoneSequenceId, 254, 1);
+ _vm->_gameSys->insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x25A, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusSequenceId = 0x25A;
+ _currPhoneSequenceId = _nextPhoneSequenceId;
+ }
+ break;
+ case kAS17LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ switch (_nextWrenchSequenceId) {
+ case 0x233:
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x243, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currWrenchSequenceId = _nextWrenchSequenceId;
+ _nextWrenchSequenceId = -1;
+ _vm->_platypusSequenceId = 0x243;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x243, _vm->_platypusId, 1);
+ break;
+ case 0x234:
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(0x242, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currWrenchSequenceId = _nextWrenchSequenceId;
+ _nextWrenchSequenceId = -1;
+ _vm->_platypusSequenceId = 0x242;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x242, _vm->_platypusId, 1);
+ break;
+ case 0x231:
+ if (_vm->getRandom(2) != 0)
+ _nextCarWindowSequenceId = 0x245;
+ else
+ _nextCarWindowSequenceId = 0x248;
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ break;
+ case 0x232:
+ _nextCarWindowSequenceId = 0x247;
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ break;
+ case 0x22E:
+ case 0x235:
+ if (_nextWrenchSequenceId == 0x235)
+ _vm->_hotspots[kHS17Wrench]._flags &= ~SF_DISABLED;
+ else
+ _vm->_hotspots[kHS17Wrench]._flags |= SF_DISABLED;
+ _canTryGetWrench = !_canTryGetWrench;
+ _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currWrenchSequenceId = _nextWrenchSequenceId;
+ _nextWrenchSequenceId = -1;
+ break;
+ case 0x230:
+ if (_vm->_gnapActionStatus == kAS17GetWrenchGnapReady) {
+ _vm->_gameSys->setAnimation(0, 0, 2);
+ if (_canTryGetWrench) {
+ _vm->_gameSys->insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currWrenchSequenceId = 0x22E;
+ _canTryGetWrench = false;
+ }
+ _vm->_gameSys->setAnimation(0x23F, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x10875, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x23F, _vm->_platypusId,
+ _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x875;
+ _vm->_platypusSequenceId = 0x23F;
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->_platypusActionStatus = kAS17GetWrench2;
+ }
+ break;
+ default:
+ if (_nextWrenchSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currWrenchSequenceId = _nextWrenchSequenceId;
+ _nextWrenchSequenceId = -1;
+ }
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_nextCarWindowSequenceId) {
+ case 0x246:
+ _vm->_gameSys->setAnimation(_nextCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currCarWindowSequenceId = _nextCarWindowSequenceId;
+ _nextCarWindowSequenceId = -1;
+ break;
+ case 0x245:
+ case 0x247:
+ case 0x248:
+ _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
+ _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(2) != 2)
+ update();
+ _vm->_gameSys->setAnimation(_nextCarWindowSequenceId, 40, 3);
+ _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currCarWindowSequenceId = _nextCarWindowSequenceId;
+ _nextCarWindowSequenceId = -1;
+ _currWrenchSequenceId = _nextWrenchSequenceId;
+ _nextWrenchSequenceId = -1;
+ break;
+ case 0x249:
+ _vm->_gameSys->setAnimation(0x230, 40, 2);
+ _vm->_gameSys->setAnimation(0x240, _vm->_platypusId, 1);
+ _vm->_gameSys->insertSequence(0x230, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x240, _vm->_platypusId, _vm->_platypusSequenceId, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_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;
+ _vm->_gameSys->setAnimation(0x24A, 40, 3);
+ _vm->_gameSys->insertSequence(0x24A, 40, _nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(2) != 2) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0x24A, 40, 3);
+ _vm->_gameSys->insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ }
+ }
+ _vm->_gameSys->insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x24B, 40, 3);
+ _vm->_gameSys->insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ _currCarWindowSequenceId = 0x24B;
+ _nextCarWindowSequenceId = -1;
+ _currWrenchSequenceId = 0x22D;
+ _nextWrenchSequenceId = -1;
+ _vm->setFlag(kGFGrassTaken);
+ _vm->_gnapActionStatus = -1;
+ _vm->_platypusActionStatus = 2;
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(30) + 80;
+ break;
+ }
+ }
+
+}
+
+/*****************************************************************************/
+
+static const int kScene18SequenceIds[] = {
+ 0x219, 0x21A, 0x21B, 0x21C, 0x21D
+};
+
+enum {
+ kHS18Platypus = 0,
+ kHS18GarbageCan = 1,
+ kHS18Device = 2,
+ kHS18ExitToyStore = 3,
+ kHS18ExitPhoneBooth = 4,
+ kHS18ExitGrubCity = 5,
+ kHS18HydrantTopValve = 6,
+ kHS18HydrantRightValve = 7,
+ kHS18CowboyHat = 8,
+ kHS18WalkArea1 = 9,
+ kHS18WalkArea2 = 10
+};
+
+enum {
+ kAS18OpenRightValveNoGarbageCanDone = 0,
+ kAS18OpenRightValveNoGarbageCan = 1,
+ kAS18CloseRightValveNoGarbageCan = 2,
+ kAS18OpenTopValveDone = 3,
+ kAS18OpenTopValve = 4,
+ kAS18CloseTopValve = 5,
+ kAS18GrabGarbageCanFromStreet = 6,
+ kAS18GrabCowboyHat = 7,
+ kAS18GrabGarbageCanFromHydrant = 8,
+ kAS18PutGarbageCanOnRunningHydrant = 9,
+ kAS18PutGarbageCanOnRunningHydrant2 = 10,
+ kAS18GrabCowboyHatDone = 11,
+ kAS18StandingOnHydrant = 12,
+ kAS18OpenRightValveWithGarbageCan = 13,
+ kAS18OpenRightValveWithGarbageCanDone = 14,
+ kAS18CloseRightValveWithGarbageCan = 15,
+ kAS18PutGarbageCanOnHydrant = 16,
+ kAS18PutGarbageCanOnHydrantDone = 17,
+ kAS18PlatComesHere = 18,
+ kAS18CloseRightValveWithGarbageCanDone = 19,
+ kAS18LeaveScene = 20
+};
+
+Scene18::Scene18(GnapEngine *vm) : Scene(vm) {
+ _cowboyHatSurface = nullptr;
+
+ _platPhoneCtr = 0;
+ _platPhoneIter = 0;
+ _nextPhoneSequenceId = -1;
+ _currPhoneSequenceId = -1;
+}
+
+Scene18::~Scene18() {
+ delete _cowboyHatSurface;
+}
+
+int Scene18::init() {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return 0x222;
+}
+
+void Scene18::updateHotspots() {
+ _vm->setHotspot(kHS18Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS18GarbageCan, _vm->_gridMinX + 75 * _vm->_s18GarbageCanPos - 35, _vm->_gridMinY + 230, _vm->_gridMinX + 75 * _vm->_s18GarbageCanPos + 35, _vm->_gridMinY + 318,
+ SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, _vm->_s18GarbageCanPos, 7);
+ _vm->setHotspot(kHS18ExitToyStore, 460, 238, 592, 442, SF_EXIT_U_CURSOR, 7, 7);
+ _vm->setHotspot(kHS18ExitPhoneBooth, 275, 585, 525, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHS18ExitGrubCity, 0, 350, 15, 600, SF_EXIT_L_CURSOR, 0, 9);
+ _vm->setHotspot(kHS18HydrantTopValve, 100, 345, 182, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 8);
+ _vm->setHotspot(kHS18HydrantRightValve, 168, 423, 224, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS18CowboyHat, 184, 63, 289, 171, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS18WalkArea1, 0, 0, 800, 448);
+ _vm->setHotspot(kHS18WalkArea2, 0, 0, 214, 515);
+ _vm->setDeviceHotspot(kHS18Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_hotspots[kHS18HydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18HydrantRightValve]._x1 = 148;
+ _vm->_hotspots[kHS18HydrantRightValve]._y1 = 403;
+ _vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
+ } else {
+ _vm->_hotspots[kHS18HydrantTopValve]._y1 = 246;
+ }
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_hotspots[kHS18HydrantRightValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18HydrantTopValve]._x1 = 105;
+ _vm->_hotspots[kHS18HydrantTopValve]._x2 = 192;
+ } else if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_hotspots[kHS18GarbageCan]._x1 = 115;
+ _vm->_hotspots[kHS18GarbageCan]._y1 = 365;
+ _vm->_hotspots[kHS18GarbageCan]._x2 = 168;
+ _vm->_hotspots[kHS18GarbageCan]._y2 = 470;
+ _vm->_hotspots[kHS18GarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
+ }
+ if (_vm->isFlag(kGFPlatyPussDisguised))
+ _vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHS18Device]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18HydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18HydrantRightValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18Platypus]._flags = SF_DISABLED;
+ }
+ if (_vm->isFlag(kGFUnk14)) {
+ _vm->_hotspots[kHS18HydrantTopValve]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS18CowboyHat]._flags = SF_DISABLED;
+ }
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
+ // CHECKME: (x, y) is always set to (-1, -1)
+
+ // TODO Cleanup
+ static const int kSequenceIds[] = {
+ 0x203, 0x204
+ };
+
+ int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
+ int clippedX, v12, v5, v10, v11, direction;
+
+ if (x >= 0)
+ clippedX = x;
+ else
+ clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
+ if (clippedX >= _vm->_gnapX)
+ v10 = clippedX - 1;
+ else
+ v10 = clippedX + 1;
+
+ if (a5 < 0)
+ a5 = 4;
+ v5 = v10;
+ if (v10 <= a5)
+ v5 = a5;
+ v11 = v5;
+ v12 = _vm->_gridMaxX - 1;
+ if (_vm->_gridMaxX - 1 >= v11)
+ v12 = v11;
+
+ if (v12 == _vm->_gnapX) {
+ gnapSeqId = _vm->_gnapSequenceId;
+ gnapId = _vm->_gnapId;
+ gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapGridX = _vm->_gnapX;
+ if (_vm->_gnapX <= clippedX)
+ direction = 1;
+ else
+ direction = -1;
+ } else {
+ if (_vm->_gnapY == _vm->_platY) {
+ if (v12 >= _vm->_gnapX) {
+ if (v12 >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
+ _vm->platypusMakeRoom();
+ } else if (v12 <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
+ _vm->platypusMakeRoom();
+ }
+ }
+ gnapSeqId = _vm->_gnapSequenceId;
+ gnapId = _vm->_gnapId;
+ gnapDatNum = _vm->_gnapSequenceDatNum;
+ gnapGridX = _vm->_gnapX;
+ int seqId = 0;
+ if (v12 < _vm->_gnapX) {
+ direction = -1;
+ seqId = 1;
+ } else
+ direction = 1;
+ int a2 = 20 * _vm->_gnapY + 1;
+ do {
+ if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
+ break;
+ a2 += direction;
+ _vm->_gameSys->insertSequence(kSequenceIds[seqId], a2,
+ gnapSeqId | (gnapDatNum << 16), gnapId,
+ kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gnapSeqId = kSequenceIds[seqId];
+ gnapId = a2;
+ gnapDatNum = 0;
+ gnapGridX += direction;
+ } while (v12 != gnapGridX);
+ }
+
+ if (argC >= 0) {
+ _vm->_gnapSequenceId = ridToEntryIndex(argC);
+ _vm->_gnapSequenceDatNum = ridToDatIndex(argC);
+ } else {
+ if (direction == 1)
+ _vm->_gnapSequenceId = 0x20A;
+ else
+ _vm->_gnapSequenceId = 0x209;
+ _vm->_gnapSequenceDatNum = 0;
+ }
+
+ if (direction == 1)
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ else
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+
+ _vm->_gnapId = 20 * _vm->_gnapY + 1;
+
+ if (animationIndex >= 0)
+ _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
+
+ _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gnapSeqId | (gnapDatNum << 16), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+
+ _vm->_gnapX = gnapGridX;
+
+}
+
+void Scene18::putDownGarbageCan(int animationIndex) {
+ if (animationIndex >= 0) {
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2)
+ _vm->gameUpdateTick();
+ }
+ if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight)
+ _vm->_s18GarbageCanPos = _vm->_gnapX - 1;
+ else
+ _vm->_s18GarbageCanPos = _vm->_gnapX + 1;
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
+ _vm->_gameSys->insertSequence(0x107BA, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7BA;
+ } else {
+ _vm->_gameSys->insertSequence(0x107B9, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B9;
+ }
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
+ _vm->_gameSys->setAnimation(0x1FA, 19, 4);
+ _vm->_gameSys->insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ _vm->gameUpdateTick();
+}
+
+void Scene18::platEndPhoning(bool platFl) {
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _platPhoneIter = 0;
+ _platPhoneCtr = 0;
+ _vm->_platypusActionStatus = -1;
+ if (_currPhoneSequenceId != -1) {
+ _vm->_gameSys->setAnimation(0x21E, 254, 3);
+ _vm->_gameSys->insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(3) != 2)
+ _vm->gameUpdateTick();
+ }
+ _vm->_gameSys->removeSequence(0x21F, 254, true);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ if (platFl) {
+ _vm->_platypusActionStatus = kAS18PlatComesHere;
+ _vm->_timers[6] = 50;
+ _vm->_sceneWaiting = true;
+ }
+ _currPhoneSequenceId = -1;
+ _nextPhoneSequenceId = -1;
+ updateHotspots();
+ }
+}
+
+void Scene18::closeHydrantValve() {
+ _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->updateMouseCursor();
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan;
+ waitForGnapAction();
+ } else {
+ _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan;
+ waitForGnapAction();
+ }
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->_gnapActionStatus = kAS18CloseTopValve;
+ waitForGnapAction();
+ }
+}
+
+void Scene18::waitForGnapAction() {
+ while (_vm->_gnapActionStatus >= 0) {
+ updateAnimations();
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene18::run() {
+ _cowboyHatSurface = nullptr;
+
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(4);
+
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->clearFlag(kGFPlatyPussDisguised);
+
+ if (!_vm->isFlag(kGFUnk14))
+ _vm->_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFTruckKeysUsed)) {
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->_gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
+ } else {
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ } else {
+ _vm->_gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
+ } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->playSound(0x22B, true);
+ }
+ }
+
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ if (_vm->_prevSceneNum == 17)
+ _vm->initGnapPos(4, 11, kDirBottomRight);
+ else
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _platPhoneCtr = _vm->getRandom(5);
+ if (_vm->isFlag(kGFUnk27)) {
+ _vm->_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _currPhoneSequenceId = -1;
+ platEndPhoning(true);
+ _vm->clearFlag(kGFUnk27);
+ } else {
+ _currPhoneSequenceId = kScene18SequenceIds[_platPhoneCtr];
+ _platPhoneIter = 0;
+ _vm->_gameSys->insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ }
+ if (_vm->isFlag(kGFUnk27)) {
+ platEndPhoning(true);
+ _vm->clearFlag(kGFUnk27);
+ } else {
+ _vm->_gameSys->setAnimation(_currPhoneSequenceId, 254, 3);
+ }
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ } else {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ _vm->setGrabCursorSprite(kItemCowboyHat);
+ _vm->_prevSceneNum = 19;
+ }
+ if (_vm->_prevSceneNum == 17) {
+ _vm->initGnapPos(4, 11, kDirBottomRight);
+ _vm->initPlatypusPos(5, 11, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ } else if (_vm->_prevSceneNum == 19) {
+ _vm->initGnapPos(7, 7, kDirBottomRight);
+ _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ } else {
+ _vm->initGnapPos(-1, 10, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ }
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 20, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS18Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS18Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS18CowboyHat:
+ if (_vm->_gnapActionStatus == kAS18StandingOnHydrant) {
+ _vm->_gnapActionStatus = kAS18GrabCowboyHat;
+ _vm->_sceneWaiting = false;
+ } else if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _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);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS18GarbageCan:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk14)) {
+ if (_vm->_grabCursorSpriteIndex >= 0)
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
+ else
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ platEndPhoning(true);
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1),
+ _vm->_hotspotsWalkPos[kHS18GarbageCan].y, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ else
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (!_vm->isFlag(kGFTruckKeysUsed))
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ else if (!_vm->isFlag(kGFTruckFilledWithGas))
+ _vm->playGnapScratchingHead(2, 4);
+ break;
+ case GRAB_CURSOR:
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y,
+ -1, -1, 1);
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnapY) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS18GrabGarbageCanFromStreet;
+ } else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 0, -1, 1))
+ _vm->_gnapActionStatus = kAS18GrabGarbageCanFromHydrant;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+ case kHS18HydrantTopValve:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ // While carrying garbage can
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapScratchingHead(0, 0);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant;
+ } else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrant;
+ } else {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapImpossible(0, 0);
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ } else {
+ if (_vm->_grabCursorSpriteIndex == kItemWrench) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS18OpenTopValve;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 5);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFBarnPadlockOpen)) {
+ _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS18CloseTopValve;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+ case kHS18HydrantRightValve:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk14)) {
+ if (_vm->_grabCursorSpriteIndex == -1) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ }
+ } else {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ if (_vm->_grabCursorSpriteIndex == kItemWrench) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCan;
+ else
+ _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCan;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 5);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFTruckFilledWithGas)) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ if (_vm->isFlag(kGFTruckKeysUsed))
+ _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan;
+ else
+ _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+ case kHS18ExitToyStore:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ if (_vm->isFlag(kGFPictureTaken)) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 19;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, 0, 0x107C0, 1);
+ _vm->_gnapActionStatus = kAS18LeaveScene;
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, -1, 0x107C2, 1);
+ }
+ }
+ break;
+
+ case kHS18ExitPhoneBooth:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ closeHydrantValve();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 17;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS18LeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->setFlag(kGFUnk27);
+ else
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x + 1, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS18ExitGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ }
+ closeHydrantValve();
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kAS18LeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ platEndPhoning(false);
+ else
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y - 1, -1, 0x107CF, 1);
+ _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
+ }
+ break;
+
+ case kHS18WalkArea1:
+ case kHS18WalkArea2:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ default:
+ if (_vm->_gnapActionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
+ if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ putDownGarbageCan(0);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
+
+ if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
+ _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCan &&
+ _vm->_gnapActionStatus != kAS18OpenTopValve && _vm->_gnapActionStatus != kAS18OpenTopValveDone &&
+ _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCanDone)
+ _vm->playSound(0x22B, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ if (_vm->_platypusActionStatus == kAS18PlatComesHere) {
+ if (!_vm->_timers[6]) {
+ _vm->_platypusActionStatus = -1;
+ _vm->_sceneWaiting = false;
+ _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->clearFlag(kGFPlatypusTalkingToAssistant);
+ }
+ } else {
+ _vm->_hotspots[kHS18WalkArea1]._y2 += 48;
+ _vm->_hotspots[kHS18WalkArea2]._x1 += 75;
+ _vm->updatePlatypusIdleSequence();
+ _vm->_hotspots[kHS18WalkArea2]._x1 -= 75;
+ _vm->_hotspots[kHS18WalkArea1]._y2 -= 48;
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(2) == 1)
+ _vm->_gameSys->insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ _vm->playSoundA();
+ }
+ if (!_vm->isFlag(kGFPlatyPussDisguised))
+ _vm->updateGnapIdleSequence();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->deleteSurface(&_cowboyHatSurface);
+}
+
+void Scene18::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS18GrabGarbageCanFromStreet:
+ if (_vm->_gnapIdleFacing != kDirUpRight && _vm->_gnapIdleFacing != kDirBottomRight) {
+ _vm->_gameSys->insertSequence(0x1FC, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - 675, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FC;
+ } else {
+ _vm->_gameSys->insertSequence(0x1FD, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - 525, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FD;
+ }
+ _vm->_gameSys->removeSequence(0x1FA, 19, true);
+ _vm->setFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18GrabGarbageCanFromHydrant:
+ _vm->_gameSys->insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x1F9, 19, true);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FE;
+ _vm->clearFlag(kGFTruckKeysUsed);
+ _vm->setFlag(kGFPlatyPussDisguised);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18CloseRightValveNoGarbageCan:
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20D, 39, true);
+ _vm->_gameSys->removeSequence(0x212, 39, true);
+ _vm->_gameSys->removeSequence(0x211, 39, true);
+ _vm->stopSound(0x22B);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x205;
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18OpenTopValve:
+ _vm->setFlag(kGFBarnPadlockOpen);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(2, 7);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BB, 1);
+ _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS18OpenTopValveDone;
+ break;
+ case kAS18OpenTopValveDone:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->removeSequence(0x20C, 19, true);
+ _vm->_gameSys->setAnimation(0x217, 39, 5);
+ _vm->_gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x208;
+ _vm->invRemove(kItemWrench);
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18CloseTopValve:
+ _vm->_gameSys->insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20E, 39, true);
+ _vm->_gameSys->removeSequence(0x216, 39, true);
+ _vm->_gameSys->removeSequence(0x217, 39, true);
+ _vm->stopSound(0x22B);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x206;
+ _vm->clearFlag(kGFBarnPadlockOpen);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18GrabCowboyHat:
+ _vm->_gameSys->setAnimation(0x200, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x200;
+ _vm->_gnapActionStatus = kAS18GrabCowboyHatDone;
+ break;
+ case kAS18GrabCowboyHatDone:
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _cowboyHatSurface = _vm->addFullScreenSprite(0x1D2, 255);
+ _vm->_gameSys->setAnimation(0x218, 256, 0);
+ _vm->_gameSys->insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_newSceneNum = 18;
+ _vm->invAdd(kItemCowboyHat);
+ _vm->invAdd(kItemWrench);
+ _vm->setFlag(kGFGnapControlsToyUFO);
+ _vm->setFlag(kGFUnk14);
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->setFlag(kGFUnk14); // CHECKME - Set 2 times?
+ updateHotspots();
+ _vm->_gnapActionStatus = kAS18LeaveScene;
+ break;
+ case kAS18LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18PutGarbageCanOnRunningHydrant:
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_gameSys->requestRemoveSequence(0x211, 39);
+ _vm->_gameSys->requestRemoveSequence(0x212, 39);
+ _vm->_gameSys->insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x22B);
+ _vm->_gameSys->setAnimation(0x210, _vm->_gnapId, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x210;
+ _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant2;
+ break;
+ case kAS18PutGarbageCanOnRunningHydrant2:
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x1FF;
+ _vm->_sceneWaiting = true;
+ _vm->_gnapActionStatus = kAS18StandingOnHydrant;
+ break;
+ case kAS18StandingOnHydrant:
+ _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ break;
+ case kAS18OpenRightValveNoGarbageCan:
+ case kAS18OpenRightValveWithGarbageCan:
+ _vm->setFlag(kGFTruckFilledWithGas);
+ updateHotspots();
+ _vm->playGnapPullOutDevice(2, 7);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ _vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
+ if (_vm->_gnapActionStatus == kAS18OpenRightValveNoGarbageCan)
+ _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCanDone;
+ else
+ _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCanDone;
+ break;
+ case kAS18OpenRightValveWithGarbageCanDone:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0x1F9, 19);
+ _vm->_gameSys->removeSequence(0x20B, 19, true);
+ _vm->_gameSys->setAnimation(0x213, 39, 5);
+ _vm->_gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(555, true);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x207;
+ _vm->invRemove(kItemWrench);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18OpenRightValveNoGarbageCanDone:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
+ _vm->_gameSys->removeSequence(0x20B, 19, true);
+ _vm->_gameSys->setAnimation(0x211, 39, 5);
+ _vm->_gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSound(0x22B, true);
+ _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x207;
+ _vm->invRemove(kItemWrench);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18CloseRightValveWithGarbageCan:
+ _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(0x20D, 39, true);
+ _vm->_gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x22B);
+ _vm->_gameSys->setAnimation(0x1F9, 19, 0);
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->clearFlag(kGFTruckFilledWithGas);
+ _vm->invAdd(kItemWrench);
+ _vm->setGrabCursorSprite(kItemWrench);
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ updateHotspots();
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCanDone;
+ break;
+ case kAS18CloseRightValveWithGarbageCanDone:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS18PutGarbageCanOnHydrant:
+ _vm->setFlag(kGFTruckKeysUsed);
+ _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->_gameSys->insertSequence(0x20F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x20F, _vm->_gnapId, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x20F;
+ _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrantDone;
+ break;
+ case kAS18PutGarbageCanOnHydrantDone:
+ _vm->_gameSys->insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ ++_platPhoneIter;
+ if (_platPhoneIter <= 4) {
+ ++_platPhoneCtr;
+ _nextPhoneSequenceId = kScene18SequenceIds[_platPhoneCtr % 5];
+ _vm->_gameSys->setAnimation(_nextPhoneSequenceId, 254, 3);
+ _vm->_gameSys->insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
+ _currPhoneSequenceId = _nextPhoneSequenceId;
+ } else {
+ platEndPhoning(true);
+ }
+ }
+}
+
+/*****************************************************************************/
+
+static const int kS19ShopAssistantSequenceIds[] = {
+ 0x6F, 0x70, 0x71, 0x72, 0x73
+};
+
+enum {
+ kHS19Platypus = 0,
+ kHS19ExitOutsideToyStore = 1,
+ kHS19Device = 2,
+ kHS19Picture = 3,
+ kHS19ShopAssistant = 4,
+ kHS19Toy1 = 5,
+ kHS19Toy2 = 6,
+ kHS19Toy3 = 7,
+ kHS19Phone = 8,
+ kHS19Toy4 = 9,
+ kHS19Toy5 = 10,
+ kHS19Toy6 = 11,
+ kHS19Toy7 = 12,
+ kHS19WalkArea1 = 13,
+ kHS19WalkArea2 = 14,
+ kHS19WalkArea3 = 15
+};
+
+enum {
+ kAS19UsePhone = 0,
+ kAS19GrabToy = 1,
+ kAS19GrabPicture = 2,
+ kAS19GrabPictureDone = 3,
+ kAS19TalkShopAssistant = 4,
+ kAS19LeaveScene = 5
+};
+
+Scene19::Scene19(GnapEngine *vm) : Scene(vm) {
+ _toyGrabCtr = 0;
+ _pictureSurface = 0;
+ _shopAssistantCtr = 0;
+ _pictureSurface = nullptr;
+}
+
+Scene19::~Scene19() {
+ delete _pictureSurface;
+}
+
+int Scene19::init() {
+ _vm->playSound(0x79, false);
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
+}
+
+void Scene19::updateHotspots() {
+ _vm->setHotspot(kHS19Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS19ExitOutsideToyStore, 36, 154, 142, 338, SF_EXIT_NW_CURSOR, 4, 6);
+ _vm->setHotspot(kHS19Picture, 471, 237, 525, 283, SF_DISABLED, 7, 2);
+ _vm->setHotspot(kHS19ShopAssistant, 411, 151, 575, 279, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS19Phone, 647, 166, 693, 234, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
+ _vm->setHotspot(kHS19Toy1, 181, 11, 319, 149, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 0);
+ _vm->setHotspot(kHS19Toy2, 284, 85, 611, 216, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 0);
+ _vm->setHotspot(kHS19Toy3, 666, 38, 755, 154, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 0);
+ _vm->setHotspot(kHS19Toy4, 154, 206, 285, 327, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 3);
+ _vm->setHotspot(kHS19Toy5, 494, 301, 570, 448, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 5);
+ _vm->setHotspot(kHS19Toy6, 0, 320, 188, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 6);
+ _vm->setHotspot(kHS19Toy7, 597, 434, 800, 600, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 8);
+ _vm->setHotspot(kHS19WalkArea1, 0, 0, 170, 600);
+ _vm->setHotspot(kHS19WalkArea2, 622, 0, 800, 600);
+ _vm->setHotspot(kHS19WalkArea3, 0, 0, 800, 437);
+ _vm->setDeviceHotspot(kHS19Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->_hotspots[kHS19Toy1]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy2]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy3]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy4]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy5]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy6]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Toy7]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19ShopAssistant]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Phone]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Platypus]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS19Picture]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ }
+ _vm->_hotspotsCount = 16;
+}
+
+void Scene19::run() {
+ _vm->queueInsertDeviceIcon();
+
+ _toyGrabCtr = 0;
+ _pictureSurface = 0;
+
+ _vm->_gameSys->insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFPictureTaken))
+ _vm->_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->initGnapPos(3, 6, kDirBottomRight);
+ _currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_vm->getRandom(5)];
+ _nextShopAssistantSequenceId = _currShopAssistantSequenceId;
+ _vm->_gameSys->setAnimation(_currShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(0x6E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _shopAssistantCtr = 0;
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ updateHotspots();
+ } else {
+ _currShopAssistantSequenceId = 0x6D;
+ _nextShopAssistantSequenceId = -1;
+ _vm->_gameSys->setAnimation(0x6D, 20, 4);
+ _vm->_gameSys->insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[6] = _vm->getRandom(40) + 50;
+ _vm->initGnapPos(3, 6, kDirBottomRight);
+ _vm->initPlatypusPos(4, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 5, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS19Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS19Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS19ExitOutsideToyStore:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kAS19LeaveScene;
+ if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
+ _vm->setFlag(kGFUnk27);
+ else
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x + 1, _vm->_hotspotsWalkPos[1].y, -1, 0x107C5, 1);
+ _vm->_hotspots[kHS19WalkArea1]._flags &= ~SF_WALKABLE;
+ }
+ break;
+
+ case kHS19Picture:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 2);
+ break;
+ case GRAB_CURSOR:
+ if (!_vm->isFlag(kGFPictureTaken)) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS19GrabPicture;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS19ShopAssistant:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 2);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS19TalkShopAssistant;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS19Toy1:
+ case kHS19Toy2:
+ case kHS19Toy3:
+ case kHS19Toy4:
+ case kHS19Toy5:
+ case kHS19Toy6:
+ case kHS19Toy7:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ _vm->_gnapActionStatus = kAS19GrabToy;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS19Phone:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(9, 1);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->playGnapIdle(8, 2);
+ _vm->_gnapActionStatus = kAS19UsePhone;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS19WalkArea1:
+ case kHS19WalkArea2:
+ case kHS19WalkArea3:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
+ }
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updateGnapIdleSequence();
+ if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
+ _vm->updatePlatypusIdleSequence();
+ if (!_vm->_timers[6] && _nextShopAssistantSequenceId == -1) {
+ _vm->_timers[6] = _vm->getRandom(40) + 50;
+ if (_vm->getRandom(4) != 0) {
+ _nextShopAssistantSequenceId = 0x64;
+ } else if (_vm->isFlag(kGFPictureTaken)) {
+ _nextShopAssistantSequenceId = 0x64;
+ } else {
+ _nextShopAssistantSequenceId = 0x6C;
+ }
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+
+ if (_pictureSurface)
+ _vm->deleteSurface(&_pictureSurface);
+}
+
+void Scene19::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS19UsePhone:
+ _nextShopAssistantSequenceId = 0x67;
+ break;
+ case kAS19GrabToy:
+ ++_toyGrabCtr;
+ switch (_toyGrabCtr) {
+ case 1:
+ _nextShopAssistantSequenceId = 0x62;
+ break;
+ case 2:
+ _nextShopAssistantSequenceId = 0x6B;
+ break;
+ case 3:
+ _nextShopAssistantSequenceId = 0x66;
+ break;
+ default:
+ _nextShopAssistantSequenceId = 0x65;
+ break;
+ }
+ break;
+ case kAS19GrabPicture:
+ _vm->playGnapPullOutDevice(6, 2);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x68, 19, 0);
+ _vm->_gameSys->insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
+ _vm->invAdd(kItemPicture);
+ _vm->setFlag(kGFPictureTaken);
+ updateHotspots();
+ _vm->_gnapActionStatus = kAS19GrabPictureDone;
+ break;
+ case kAS19GrabPictureDone:
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+ _pictureSurface = _vm->addFullScreenSprite(0xF, 255);
+ _vm->_gameSys->setAnimation(0x61, 256, 0);
+ _vm->_gameSys->insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->setFlag(kGFUnk27);
+ _vm->showCursor();
+ _vm->_newSceneNum = 17;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _nextShopAssistantSequenceId = -1;
+ break;
+ case kAS19TalkShopAssistant:
+ _nextShopAssistantSequenceId = 0x6D;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS19LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ switch (_nextShopAssistantSequenceId) {
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ _shopAssistantCtr = (_shopAssistantCtr + 1) % 5;
+ _nextShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_shopAssistantCtr];
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x6E, 254, 0x6E, 254, kSeqSyncWait, 0, 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ break;
+ case 0x62:
+ case 0x66:
+ case 0x6B:
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ _nextShopAssistantSequenceId = -1;
+ _vm->_timers[5] = 10;
+ while (_vm->_timers[5]) {
+ _vm->gameUpdateTick();
+ }
+ _vm->playGnapIdle(6, 2);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case 0x67:
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ _nextShopAssistantSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case 0x65:
+ _vm->playGnapIdle(6, 2);
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 0);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ _nextShopAssistantSequenceId = -1;
+ _vm->_newSceneNum = 18;
+ _vm->_gnapActionStatus = kAS19LeaveScene;
+ break;
+ case 0x6D:
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x69, 19, 0x69, 19, kSeqSyncWait, _vm->getSequenceTotalDuration(_nextShopAssistantSequenceId), 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ _nextShopAssistantSequenceId = -1;
+ break;
+ case 0x64:
+ case 0x6C:
+ _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currShopAssistantSequenceId = _nextShopAssistantSequenceId;
+ _nextShopAssistantSequenceId = -1;
+ break;
+ }
+ }
+}
+
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group1.h b/engines/gnap/scenes/group1.h
new file mode 100644
index 0000000..451a652
--- /dev/null
+++ b/engines/gnap/scenes/group1.h
@@ -0,0 +1,214 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP1_H
+#define GNAP_GROUP1_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene10: public Scene {
+public:
+ Scene10(GnapEngine *vm);
+ ~Scene10() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _nextCookSequenceId;
+ int _currCookSequenceId;
+};
+
+class Scene11: public Scene {
+public:
+ Scene11(GnapEngine *vm);
+ ~Scene11() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _billardBallCtr;
+ int _nextHookGuySequenceId;
+ int _currHookGuySequenceId;
+ int _nextGoggleGuySequenceId;
+ int _currGoggleGuySequenceId;
+};
+
+class Scene12: public Scene {
+public:
+ Scene12(GnapEngine *vm);
+ ~Scene12() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _nextBeardGuySequenceId;
+ int _currBeardGuySequenceId;
+ int _nextToothGuySequenceId;
+ int _currToothGuySequenceId;
+ int _nextBarkeeperSequenceId;
+ int _currBarkeeperSequenceId;
+};
+
+class Scene13: public Scene {
+public:
+ Scene13(GnapEngine *vm);
+ ~Scene13() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _backToiletCtr;
+
+ void showScribble();
+};
+
+class Scene14: public Scene {
+public:
+ Scene14(GnapEngine *vm);
+ ~Scene14() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+class Scene15: public Scene {
+public:
+ Scene15(GnapEngine *vm);
+ ~Scene15() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _nextRecordSequenceId;
+ int _currRecordSequenceId;
+ int _nextSlotSequenceId;
+ int _currSlotSequenceId;
+ int _nextUpperButtonSequenceId;
+ int _currUpperButtonSequenceId;
+ int _nextLowerButtonSequenceId;
+ int _currLowerButtonSequenceId;
+};
+
+class Scene17: public Scene {
+public:
+ Scene17(GnapEngine *vm);
+ ~Scene17() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _canTryGetWrench;
+ int _wrenchCtr;
+ int _platPhoneCtr;
+ int _platTryGetWrenchCtr;
+ int _nextPhoneSequenceId;
+ int _currPhoneSequenceId;
+ int _nextWrenchSequenceId;
+ int _currWrenchSequenceId;
+ int _nextCarWindowSequenceId;
+ int _currCarWindowSequenceId;
+
+ void update();
+ void platHangUpPhone();
+};
+
+class Scene18: public Scene {
+public:
+ Scene18(GnapEngine *vm);
+ ~Scene18();
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ Graphics::Surface *_cowboyHatSurface;
+
+ int _platPhoneCtr;
+ int _platPhoneIter;
+ int _nextPhoneSequenceId;
+ int _currPhoneSequenceId;
+
+ void gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
+ void putDownGarbageCan(int animationIndex);
+ void platEndPhoning(bool platFl);
+ void closeHydrantValve();
+ void waitForGnapAction();
+};
+
+class Scene19: public Scene {
+public:
+ Scene19(GnapEngine *vm);
+ ~Scene19();
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currShopAssistantSequenceId;
+ int _nextShopAssistantSequenceId;
+ int _toyGrabCtr;
+ int _shopAssistantCtr;
+
+ Graphics::Surface *_pictureSurface;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_GROUP1_H
diff --git a/engines/gnap/scenes/scene10.cpp b/engines/gnap/scenes/scene10.cpp
deleted file mode 100644
index 9f987ba..0000000
--- a/engines/gnap/scenes/scene10.cpp
+++ /dev/null
@@ -1,500 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene10.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitBar = 1,
- kHSExitBackdoor = 2,
- kHSCook = 3,
- kHSTongs = 4,
- kHSBox = 5,
- kHSOven = 6,
- kHSWalkArea1 = 7,
- kHSDevice = 8,
- kHSWalkArea2 = 9,
- kHSWalkArea3 = 10,
- kHSWalkArea4 = 11
-};
-
-enum {
- kASLeaveScene = 0,
- kASAnnoyCook = 1,
- kASPlatWithBox = 4
-};
-
-Scene10::Scene10(GnapEngine *vm) : Scene(vm) {
- _s10_nextCookSequenceId = -1;
- _s10_currCookSequenceId = -1;
-}
-
-int Scene10::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
- return 0x10F;
-}
-
-void Scene10::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitBar, 0, 75, 85, 455, SF_EXIT_NW_CURSOR);
- _vm->setHotspot(kHSExitBackdoor, 75, 590, 500, 599, SF_EXIT_D_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHSCook, 370, 205, 495, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSTongs, 250, 290, 350, 337, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBox, 510, 275, 565, 330, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSOven, 690, 280, 799, 420, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 59, 0, 495, 460);
- _vm->setHotspot(kHSWalkArea2, 495, 0, 650, 420);
- _vm->setHotspot(kHSWalkArea3, 651, 0, 725, 400);
- _vm->setHotspot(kHSWalkArea4, 725, 0, 799, 441);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 12;
-}
-
-void Scene10::run() {
- _s10_currCookSequenceId = 0x103;
-
- _vm->_gameSys->setAnimation(0x103, 100, 2);
- _vm->_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _s10_nextCookSequenceId = 0x106;
- if (!_vm->isFlag(kGFMudTaken))
- _vm->_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum == 9) {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(1, 7, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- }
-
- _vm->_timers[4] = _vm->getRandom(80) + 150;
- _vm->_timers[5] = _vm->getRandom(100) + 100;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1091E))
- _vm->playSound(0x1091E, true);
-
- if (!_vm->isSoundPlaying(0x1091A))
- _vm->playSound(0x1091A, true);
-
- _vm->updateMouseCursor();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSPlatypus:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(10);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- }
- break;
-
- case kHSExitBar:
- _vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(0, 7, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
- _vm->_newSceneNum = 11;
- break;
-
- case kHSExitBackdoor:
- _vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(2, 9, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
- _vm->_newSceneNum = 9;
- break;
-
- case kHSCook:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 8, 6, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASAnnoyCook;
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 0);
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- _vm->_gnapIdleFacing = kDirBottomRight;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASAnnoyCook;
- break;
- case PLAT_CURSOR:
- _vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(4, 6, -1, -1, 1);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASAnnoyCook;
- break;
- }
- }
- break;
-
- case kHSTongs:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 4, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
- else
- _vm->playGnapScratchingHead(4, 3);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
- else {
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASAnnoyCook;
- }
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
- else {
- _vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(3, 7, -1, -1, 1);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASAnnoyCook;
- }
- break;
- }
- }
- break;
-
- case kHSBox:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 6, 6, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 3);
- break;
- case GRAB_CURSOR:
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASAnnoyCook;
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
- else {
- _vm->invAdd(kItemTongs);
- _vm->setFlag(kGFMudTaken);
- _vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
- _vm->_platypusActionStatus = kASPlatWithBox;
- _vm->_platypusFacing = kDirUnk4;
- _vm->_largeSprite = _vm->_gameSys->createSurface(0xC3);
- _vm->playGnapIdle(7, 6);
- }
- break;
- }
- }
- break;
-
- case kHSOven:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(9, 6, 10, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 10, 5) | 0x10000);
- break;
- case GRAB_CURSOR:
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
- _vm->_gameSys->insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x10E;
- _vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 9;
- _vm->_gnapY = 6;
- _vm->_timers[2] = 360;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(80) + 150;
- _vm->playSound(0x12B, false);
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 100;
- int _gnapRandomValue = _vm->getRandom(4);
- if (_gnapRandomValue) {
- int sequenceId;
- if (_gnapRandomValue == 1) {
- sequenceId = 0x8A5;
- } else if (_gnapRandomValue == 2) {
- sequenceId = 0x8A6;
- } else {
- sequenceId = 0x8A7;
- }
- _vm->_gameSys->insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene10::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASAnnoyCook:
- _s10_nextCookSequenceId = 0x105;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
- case kASPlatWithBox:
- _s10_nextCookSequenceId = 0x109;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s10_nextCookSequenceId != -1) {
-
- switch (_s10_nextCookSequenceId) {
- case 0x109:
- _vm->_platX = 4;
- _vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x109, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107C9, 160,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
- kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
- 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->removeSequence(0x107, 100, true);
- _s10_currCookSequenceId = 0x109;
- _s10_nextCookSequenceId = 0x843;
- _vm->_platypusSequenceId = 0x7C9;
- _vm->_platypusId = 160;
- _vm->_platypusFacing = kDirNone;
- _vm->_platypusSequenceDatNum = 1;
- break;
- case 0x843:
- _vm->hideCursor();
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->insertSequence(0x10843, 301, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s10_currCookSequenceId = 0x843;
- _s10_nextCookSequenceId = 0x10A;
- break;
- case 0x10A:
- _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
- _s10_currCookSequenceId = _s10_nextCookSequenceId;
- _s10_nextCookSequenceId = 0x104;
- _vm->showCursor();
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
- _vm->delayTicksCursor(5);
- _vm->deleteSurface(&_vm->_largeSprite);
- _vm->setGrabCursorSprite(kItemTongs);
- if (_vm->_platypusActionStatus == kASPlatWithBox)
- _vm->_platypusActionStatus = -1;
- if (_vm->_gnapX == 4 && _vm->_gnapY == 8)
- _vm->gnapWalkStep();
- break;
- default:
- _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s10_currCookSequenceId = _s10_nextCookSequenceId;
- break;
- }
-
- switch (_s10_currCookSequenceId) {
- case 0x106: {
- // TODO: Refactor into a if + a switch
- int rnd = _vm->getRandom(7);
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
- _s10_nextCookSequenceId = 0x106;
- else if (rnd == 0)
- _s10_nextCookSequenceId = 0x104;
- else if (rnd == 1)
- _s10_nextCookSequenceId = 0x103;
- else if (rnd == 2) {
- _s10_nextCookSequenceId = 0x106;
- _vm->_gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
- } else
- _s10_nextCookSequenceId = 0x106;
- }
- break;
- case 0x103:
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
- _s10_nextCookSequenceId = 0x106;
- else if (_vm->getRandom(7) == 0)
- _s10_nextCookSequenceId = 0x104;
- else
- _s10_nextCookSequenceId = 0x106;
- break;
- case 0x104:
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
- _s10_nextCookSequenceId = 0x106;
- else if (_vm->getRandom(7) == 0)
- _s10_nextCookSequenceId = 0x103;
- else
- _s10_nextCookSequenceId = 0x106;
- break;
- case 0x105: {
- // TODO: Refactor into a if + a switch
- int rnd = _vm->getRandom(7);
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
- _s10_nextCookSequenceId = 0x106;
- else if (rnd == 0)
- _s10_nextCookSequenceId = 0x104;
- else if (rnd == 1)
- _s10_nextCookSequenceId = 0x103;
- else
- _s10_nextCookSequenceId = 0x106;
- _vm->_timers[2] = _vm->getRandom(30) + 20;
- _vm->_timers[3] = 300;
- _vm->_gameSys->insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x10C;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- _vm->_platypusActionStatus = -1;
- }
- break;
- }
- if (_s10_currCookSequenceId == 0x843)
- _vm->_gameSys->setAnimation(_s10_currCookSequenceId | 0x10000, 301, 2);
- else
- _vm->_gameSys->setAnimation(_s10_currCookSequenceId, 100, 2);
- }
-}
-
-void Scene10::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(_s10_nextCookSequenceId, 100, 2);
- _vm->_gameSys->insertSequence(_s10_nextCookSequenceId, 100, _s10_currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _s10_currCookSequenceId = _s10_nextCookSequenceId;
- _s10_nextCookSequenceId = 0x106;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene10.h b/engines/gnap/scenes/scene10.h
deleted file mode 100644
index 987c059..0000000
--- a/engines/gnap/scenes/scene10.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE10_H
-#define GNAP_SCENE10_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene10: public Scene {
-public:
- Scene10(GnapEngine *vm);
- ~Scene10() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb();
-
-private:
- int _s10_nextCookSequenceId;
- int _s10_currCookSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE10_H
diff --git a/engines/gnap/scenes/scene11.cpp b/engines/gnap/scenes/scene11.cpp
deleted file mode 100644
index ae264dc..0000000
--- a/engines/gnap/scenes/scene11.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene11.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitKitchen = 1,
- kHSExitToilet = 2,
- kHSExitLeft = 3,
- kHSGoggleGuy = 4,
- kHSHookGuy = 5,
- kHSBillard = 6,
- kHSWalkArea1 = 7,
- kHSDevice = 8,
- kHSWalkArea2 = 9,
- kHSWalkArea3 = 10,
- kHSWalkArea4 = 11,
- kHSWalkArea5 = 12
-};
-
-enum {
- kASLeaveScene = 0,
- kASShowMagazineToGoggleGuy = 3,
- kASTalkGoggleGuy = 4,
- kASGrabHookGuy = 6,
- kASShowItemToHookGuy = 8,
- kASTalkHookGuy = 9,
- kASGrabBillardBall = 11
-};
-
-Scene11::Scene11(GnapEngine *vm) : Scene(vm) {
- _s11_billardBallCtr = 0;
- _s11_nextHookGuySequenceId = -1;
- _s11_currHookGuySequenceId = -1;
- _s11_nextGoggleGuySequenceId = -1;
- _s11_currGoggleGuySequenceId = -1;
-}
-
-int Scene11::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->_gameSys->setAnimation(0, 0, 2);
- if (_vm->_prevSceneNum == 10 || _vm->_prevSceneNum == 13) {
- _vm->playSound(0x108EC, false);
- _vm->playSound(0x10928, false);
- }
- return 0x209;
-}
-
-void Scene11::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitKitchen, 420, 140, 520, 345, SF_EXIT_U_CURSOR);
- _vm->setHotspot(kHSExitToilet, 666, 130, 740, 364, SF_EXIT_R_CURSOR);
- _vm->setHotspot(kHSExitLeft, 0, 350, 10, 599, SF_EXIT_L_CURSOR | SF_WALKABLE);
- _vm->setHotspot(kHSGoggleGuy, 90, 185, 185, 340, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSHookGuy, 210, 240, 340, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBillard, 640, 475, 700, 530, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 365, 453);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 629, 353);
- _vm->setHotspot(kHSWalkArea3, 629, 0, 799, 364);
- _vm->setHotspot(kHSWalkArea4, 735, 0, 799, 397);
- _vm->setHotspot(kHSWalkArea5, 510, 540, 799, 599);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 13;
-}
-
-void Scene11::run() {
- bool flag = true;
-
- _vm->_timers[7] = 50;
- _vm->_hotspots[kHSBillard]._flags |= SF_DISABLED;
-
- _s11_currGoggleGuySequenceId = 0x1F9;
- _s11_currHookGuySequenceId = 0x201;
-
- switch (_vm->_prevSceneNum) {
- case 13:
- _vm->initGnapPos(8, 5, kDirBottomLeft);
- _vm->initPlatypusPos(9, 6, kDirUnk4);
- break;
- case 47:
- _vm->initGnapPos(8, 5, kDirBottomLeft);
- _vm->initPlatypusPos(9, 5, kDirUnk4);
- _s11_currGoggleGuySequenceId = 0x1FA;
- _s11_currHookGuySequenceId = 0x1FF;
- _vm->_timers[7] = 180;
- break;
- case 12:
- _vm->initGnapPos(-1, 9, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
- break;
- default:
- _vm->initGnapPos(6, 6, kDirBottomLeft);
- _vm->initPlatypusPos(6, 5, kDirUnk4);
- break;
- }
-
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(_s11_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
-
- _s11_nextHookGuySequenceId = -1;
-
- _vm->_gameSys->setAnimation(_s11_currHookGuySequenceId, 120, 3);
- _vm->_gameSys->insertSequence(_s11_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
-
- _s11_nextGoggleGuySequenceId = -1;
-
- _vm->_gameSys->setAnimation(_s11_currGoggleGuySequenceId, 121, 2);
-
- _vm->_timers[5] = _vm->getRandom(100) + 75;
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- _vm->_timers[6] = _vm->getRandom(100) + 100;
- _vm->endSceneInit();
-
- if (_vm->_prevSceneNum == 12) {
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- }
-
- _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
-
- while (!_vm->_sceneDone) {
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSPlatypus:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- }
- break;
-
- case kHSExitKitchen:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(6, 5, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(6, 6, -1, -1, 1);
- _vm->_newSceneNum = 10;
- break;
-
- case kHSExitToilet:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(8, 5, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(8, 6, -1, -1, 1);
- _vm->_newSceneNum = 13;
- break;
-
- case kHSExitLeft:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
- _vm->_newSceneNum = 12;
- break;
-
- case kHSGoggleGuy:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASShowMagazineToGoggleGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 2, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 6);
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkGoggleGuy;
- break;
- }
- }
- }
- break;
-
- case kHSHookGuy:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_gnapIdleFacing = kDirUpRight;
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
- _vm->_gnapActionStatus = kASShowItemToHookGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 3, 6) | 0x10000);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASGrabHookGuy;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkHookGuy;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSBillard:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(9, 8);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 8);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(9, 8, 0, 0x107BA, 1);
- _vm->_gnapActionStatus = kASGrabBillardBall;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(9, 8);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- if (flag && !_vm->_timers[7]) {
- flag = false;
- _vm->_gameSys->setAnimation(0x207, 257, 4);
- _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->platypusSub426234();
- _vm->updateGnapIdleSequence2();
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 75;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s11_nextGoggleGuySequenceId == -1) {
- if (_vm->getRandom(2))
- _s11_nextGoggleGuySequenceId = 0x1F6;
- else
- _s11_nextGoggleGuySequenceId = 0x1F9;
- }
- }
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _s11_nextHookGuySequenceId == -1) {
- if (_s11_currHookGuySequenceId == 0x201) {
- switch (_vm->getRandom(7)) {
- case 0:
- _s11_nextHookGuySequenceId = 0x200;
- break;
- case 1:
- _s11_nextHookGuySequenceId = 0x205;
- break;
- case 2:
- _s11_nextHookGuySequenceId = 0x202;
- break;
- default:
- _s11_nextHookGuySequenceId = 0x201;
- break;
- }
- } else {
- _s11_nextHookGuySequenceId = 0x201;
- }
- }
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(100) + 100;
- int _gnapRandomValue = _vm->getRandom(3);
- switch (_gnapRandomValue) {
- case 0:
- _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(50) + 75;
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene11::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- if (_vm->_gnapActionStatus != kASGrabBillardBall)
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASShowMagazineToGoggleGuy:
- _s11_nextGoggleGuySequenceId = 0x1F7;
- break;
- case kASTalkGoggleGuy:
- _s11_nextGoggleGuySequenceId = 0x1FB;
- break;
- case kASGrabHookGuy:
- _s11_nextHookGuySequenceId = 0x204;
- break;
- case kASShowItemToHookGuy:
- _s11_nextHookGuySequenceId = 0x203;
- break;
- case kASTalkHookGuy:
- _s11_nextHookGuySequenceId = 0x206;
- break;
- case kASGrabBillardBall:
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_timers[2] = _vm->getRandom(30) + 20;
- _vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x1F4;
- _vm->_gnapId = 255;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->removeSequence(0x207, 257, true);
- _vm->_gameSys->removeSequence(0x208, 256, true);
- _s11_nextGoggleGuySequenceId = 0x1F8;
- _vm->_timers[5] = _vm->getRandom(100) + 75;
- _vm->_gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
- _s11_currGoggleGuySequenceId = _s11_nextGoggleGuySequenceId;
- _s11_nextGoggleGuySequenceId = -1;
- switch (_s11_billardBallCtr) {
- case 0:
- _s11_nextHookGuySequenceId = 0x1FC;
- break;
- case 1:
- _s11_nextHookGuySequenceId = 0x1FD;
- break;
- default:
- _s11_nextHookGuySequenceId = 0x1FE;
- break;
- }
- ++_s11_billardBallCtr;
- _vm->_gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
- _s11_currHookGuySequenceId = _s11_nextHookGuySequenceId;
- _s11_nextHookGuySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1F4) - 5, 0, 0);
- _vm->_hotspots[kHSBillard]._flags |= SF_DISABLED;
- _vm->_gameSys->setAnimation(0x207, 257, 4);
- _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
- _vm->_gnapActionStatus = -1;
- }
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _s11_nextGoggleGuySequenceId != -1) {
- _vm->_timers[5] = _vm->getRandom(100) + 75;
- _vm->_gameSys->insertSequence(_s11_nextGoggleGuySequenceId, 121, _s11_currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s11_nextGoggleGuySequenceId, 121, 2);
- _s11_currGoggleGuySequenceId = _s11_nextGoggleGuySequenceId;
- _s11_nextGoggleGuySequenceId = -1;
- if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
- _vm->_gnapActionStatus = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_s11_nextHookGuySequenceId == 0x204) {
- _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
- _vm->_gameSys->insertSequence(0x204, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1F5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _s11_currHookGuySequenceId = 0x204;
- _s11_nextHookGuySequenceId = -1;
- _vm->_gnapSequenceId = 0x1F5;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- _vm->_timers[2] = _vm->getRandom(20) + 70;
- _vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnapActionStatus == kASGrabHookGuy)
- _vm->_gnapActionStatus = -1;
- } else if (_s11_nextHookGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s11_nextHookGuySequenceId, 120, _s11_currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s11_nextHookGuySequenceId, 120, 3);
- _s11_currHookGuySequenceId = _s11_nextHookGuySequenceId;
- _s11_nextHookGuySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus >= 6 && _vm->_gnapActionStatus <= 9)
- _vm->_gnapActionStatus = -1;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->_hotspots[kHSBillard]._flags &= ~SF_DISABLED;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene11.h b/engines/gnap/scenes/scene11.h
deleted file mode 100644
index e37f0bd..0000000
--- a/engines/gnap/scenes/scene11.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE11_H
-#define GNAP_SCENE11_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene11: public Scene {
-public:
- Scene11(GnapEngine *vm);
- ~Scene11() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s11_billardBallCtr;
- int _s11_nextHookGuySequenceId;
- int _s11_currHookGuySequenceId;
- int _s11_nextGoggleGuySequenceId;
- int _s11_currGoggleGuySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE11_H
diff --git a/engines/gnap/scenes/scene12.cpp b/engines/gnap/scenes/scene12.cpp
deleted file mode 100644
index 6b63c9f..0000000
--- a/engines/gnap/scenes/scene12.cpp
+++ /dev/null
@@ -1,568 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-
-#include "gnap/scenes/scene12.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitRight = 1,
- kHSToothGuy = 2,
- kHSBarkeeper = 3,
- kHSBeardGuy = 4,
- kHSJukebox = 5,
- kHSWalkArea1 = 6,
- kHSDevice = 7,
- kHSWalkArea2 = 8,
- kHSWalkArea3 = 9,
- kHSWalkArea4 = 10
-};
-
-enum {
- kASLeaveScene = 0,
- kASQuarterToToothGuyDone = 1,
- kASTalkToothGuy = 2,
- kASGrabToothGuy = 4,
- kASShowItemToToothGuy = 5,
- kASQuarterWithHoleToToothGuy = 6,
- kASQuarterToToothGuy = 7,
- kASTalkBeardGuy = 8,
- kASLookBeardGuy = 9,
- kASGrabBeardGuy = 10,
- kASShowItemToBeardGuy = 11,
- kASTalkBarkeeper = 12,
- kASLookBarkeeper = 13,
- kASShowItemToBarkeeper = 15,
- kASQuarterWithBarkeeper = 16,
- kASPlatWithBarkeeper = 17,
- kASPlatWithToothGuy = 18,
- kASPlatWithBeardGuy = 19
-};
-
-Scene12::Scene12(GnapEngine *vm) : Scene(vm) {
- _s12_nextBeardGuySequenceId = -1;
- _s12_currBeardGuySequenceId = -1;
- _s12_nextToothGuySequenceId = -1;
- _s12_currToothGuySequenceId = -1;
- _s12_nextBarkeeperSequenceId = -1;
- _s12_currBarkeeperSequenceId = -1;
-}
-
-int Scene12::init() {
- return 0x209;
-}
-
-void Scene12::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitRight, 790, 360, 799, 599, SF_EXIT_R_CURSOR);
- _vm->setHotspot(kHSToothGuy, 80, 180, 160, 380, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBarkeeper, 490, 175, 580, 238, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBeardGuy, 620, 215, 720, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSJukebox, 300, 170, 410, 355, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 260, 460);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 380, 410);
- _vm->setHotspot(kHSWalkArea3, 0, 0, 799, 395);
- _vm->setHotspot(kHSWalkArea4, 585, 0, 799, 455);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 11;
-}
-
-void Scene12::run() {
- int v18 = 1;
-
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
-
- _s12_currToothGuySequenceId = 0x200;
- _s12_nextToothGuySequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x200, 50, 2);
- _vm->_gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
-
- _s12_currBeardGuySequenceId = 0x202;
- _s12_nextBeardGuySequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x202, 50, 4);
- _vm->_gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
-
- _s12_currBarkeeperSequenceId = 0x203;
- _s12_nextBarkeeperSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x203, 50, 3);
-
- _vm->_timers[4] = 30;
- _vm->_timers[6] = _vm->getRandom(30) + 20;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_timers[7] = _vm->getRandom(100) + 100;
-
- if (_vm->_prevSceneNum == 15) {
- _vm->initGnapPos(5, 6, kDirBottomRight);
- _vm->initPlatypusPos(3, 7, kDirNone);
- _vm->endSceneInit();
- } else {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 8, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
- _vm->updateGrabCursorSprite(0, 0);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- break;
-
- case kHSExitRight:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(10, -1, -1, -1, 1);
- _vm->_newSceneNum = 11;
- break;
-
- case kHSToothGuy:
- if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x141);
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kASQuarterToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
- _vm->setGrabCursorSprite(-1);
- } else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kASQuarterWithHoleToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kASShowItemToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 2);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASGrabToothGuy;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkToothGuy;
- break;
- case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
- _vm->_platypusActionStatus = kASPlatWithToothGuy;
- _vm->_platypusFacing = kDirUnk4;
- _vm->playGnapIdle(2, 7);
- break;
- }
- }
- break;
-
- case kHSBarkeeper:
- if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASQuarterWithBarkeeper;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASShowItemToBarkeeper;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASLookBarkeeper;
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkBarkeeper;
- break;
- case PLAT_CURSOR:
- _vm->playGnapPullOutDevice(_vm->_platX, _vm->_platY);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASPlatWithBarkeeper;
- break;
- }
- }
- break;
-
- case kHSBeardGuy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASShowItemToBeardGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASLookBeardGuy;
- break;
- case GRAB_CURSOR:
- // NOTE Bug in the original. It has 9 as flags which seems wrong here.
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASGrabBeardGuy;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkBeardGuy;
- break;
- case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kASPlatWithBeardGuy;
- _vm->_platypusFacing = kDirNone;
- _vm->playGnapIdle(7, 6);
- break;
- }
- }
- break;
-
- case kHSJukebox:
- _vm->_newSceneNum = 15;
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = 15;
- if (_s12_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _s12_currBeardGuySequenceId == 0x202 && _s12_currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (_vm->getRandom(2) != 0)
- _s12_nextToothGuySequenceId = 0x1EC;
- else
- _s12_nextToothGuySequenceId = 0x204;
- } else if (_s12_currToothGuySequenceId != 0x200)
- _s12_nextToothGuySequenceId = 0x200;
- v18 = (v18 + 1) % 15;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_s12_nextBarkeeperSequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBeardGuySequenceId == 0x202 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (_vm->getRandom(2) != 0)
- _s12_nextBarkeeperSequenceId = 0x208;
- else
- _s12_nextBarkeeperSequenceId = 0x1FB;
- } else
- _s12_nextBarkeeperSequenceId = 0x203;
- v18 = (v18 + 1) % 15;
- }
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(30) + 15;
- if (_s12_nextBeardGuySequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (v18 == 0 && _s12_currToothGuySequenceId == 0x200 && _s12_currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
- _s12_nextBeardGuySequenceId = 0x1F2;
- else
- _s12_nextBeardGuySequenceId = 0x202;
- v18 = (v18 + 1) % 15;
- }
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(100) + 100;
- int _gnapRandomValue = _vm->getRandom(3);
- switch (_gnapRandomValue) {
- case 0:
- _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = 30;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_timers[6] = _vm->getRandom(30) + 20;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene12::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASTalkToothGuy:
- if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
- // Easter egg
- _vm->clearKeyStatus1(Common::KEYCODE_j);
- _s12_nextToothGuySequenceId = 0x206;
- } else {
- _s12_nextToothGuySequenceId = 0x1EE;
- }
- break;
- case 3:
- break;
- case kASGrabToothGuy:
- if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
- _vm->clearKeyStatus1(Common::KEYCODE_j);
- _s12_nextToothGuySequenceId = 0x206;
- } else {
- _s12_nextToothGuySequenceId = 0x1EF;
- }
- break;
- case kASShowItemToToothGuy:
- if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
- _vm->clearKeyStatus1(Common::KEYCODE_j);
- _s12_nextToothGuySequenceId = 0x206;
- } else {
- _s12_nextToothGuySequenceId = 0x1ED;
- }
- break;
- case kASQuarterWithHoleToToothGuy:
- if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
- _vm->clearKeyStatus1(Common::KEYCODE_j);
- _s12_nextToothGuySequenceId = 0x206;
- } else {
- _s12_nextToothGuySequenceId = 0x1EA;
- }
- break;
- case kASQuarterToToothGuy:
- if (_vm->isKeyStatus1(Common::KEYCODE_j)) {
- _vm->clearKeyStatus1(Common::KEYCODE_j);
- _s12_nextToothGuySequenceId = 0x206;
- } else {
- _s12_nextToothGuySequenceId = 0x1E9;
- }
- break;
- case kASQuarterToToothGuyDone:
- _vm->_gnapActionStatus = -1;
- _vm->showCursor();
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
- _vm->deleteSurface(&_vm->_largeSprite);
- _vm->setGrabCursorSprite(kItemQuarterWithHole);
- break;
- case kASTalkBeardGuy:
- _s12_nextBeardGuySequenceId = 0x1F4;
- break;
- case kASLookBeardGuy:
- _s12_nextBeardGuySequenceId = 0x1F3;
- break;
- case kASGrabBeardGuy:
- _s12_nextBeardGuySequenceId = 0x1F1;
- break;
- case kASShowItemToBeardGuy:
- _s12_nextBeardGuySequenceId = 0x1F0;
- break;
- case kASTalkBarkeeper:
- if (_vm->getRandom(2) != 0)
- _s12_nextBarkeeperSequenceId = 0x1FD;
- else
- _s12_nextBarkeeperSequenceId = 0x1FF;
- break;
- case kASLookBarkeeper:
- _s12_nextBarkeeperSequenceId = 0x1F8;
- break;
- case 14:
- _s12_nextBarkeeperSequenceId = 0x1F6;
- break;
- case kASShowItemToBarkeeper:
- _s12_nextBarkeeperSequenceId = 0x1F5;
- break;
- case kASQuarterWithBarkeeper:
- _s12_nextBarkeeperSequenceId = 0x1FA;
- break;
- case kASPlatWithBarkeeper:
- _s12_nextBarkeeperSequenceId = 0x1F9;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
- case kASPlatWithToothGuy:
- _s12_nextToothGuySequenceId = 0x1EB;
- break;
- case kASPlatWithBeardGuy:
- _s12_nextBeardGuySequenceId = 0x1F3;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_s12_currToothGuySequenceId == 0x1E9) {
- _vm->_gameSys->setAnimation(0, 0, 2);
- _vm->hideCursor();
- _vm->_gameSys->setAnimation(0x10843, 301, 0);
- _vm->_gnapActionStatus = kASQuarterToToothGuyDone;
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B7;
- _vm->_gnapSequenceDatNum = 1;
- _vm->setFlag(kGFTwigTaken);
- _vm->invAdd(kItemQuarterWithHole);
- _vm->invRemove(kItemQuarter);
- }
- if (_s12_nextToothGuySequenceId == 0x1EF) {
- _vm->_gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
- _vm->_gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _s12_currToothGuySequenceId = _s12_nextToothGuySequenceId;
- _s12_nextToothGuySequenceId = -1;
- _vm->_gnapSequenceId = 0x205;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_timers[4] = 40;
- _vm->_timers[2] = _vm->getRandom(20) + 70;
- _vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnapActionStatus == kASGrabToothGuy)
- _vm->_gnapActionStatus = -1;
- } else if (_s12_nextToothGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s12_nextToothGuySequenceId, 50, _s12_currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s12_nextToothGuySequenceId, 50, 2);
- _s12_currToothGuySequenceId = _s12_nextToothGuySequenceId;
- _s12_nextToothGuySequenceId = -1;
- _vm->_timers[4] = 50;
- if (_vm->_gnapActionStatus >= kASTalkToothGuy && _vm->_gnapActionStatus <= kASQuarterToToothGuy && _s12_currToothGuySequenceId != 0x1E9 &&
- _s12_currToothGuySequenceId != 0x1EC && _s12_currToothGuySequenceId != 0x200)
- _vm->_gnapActionStatus = -1;
- if (_vm->_platypusActionStatus == kASPlatWithToothGuy)
- _vm->_platypusActionStatus = -1;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_vm->_gnapActionStatus == kASPlatWithBarkeeper && _s12_currBarkeeperSequenceId == 0x1F9) {
- _vm->_gnapActionStatus = -1;
- _vm->playGnapIdle(7, 6);
- _vm->_timers[5] = 0;
- }
- if (_s12_nextBarkeeperSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s12_nextBarkeeperSequenceId, 50, _s12_currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s12_nextBarkeeperSequenceId, 50, 3);
- _s12_currBarkeeperSequenceId = _s12_nextBarkeeperSequenceId;
- _s12_nextBarkeeperSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus >= kASTalkBarkeeper && _vm->_gnapActionStatus <= kASQuarterWithBarkeeper && _s12_currBarkeeperSequenceId != 0x203 &&
- _s12_currBarkeeperSequenceId != 0x1FB && _s12_currBarkeeperSequenceId != 0x208)
- _vm->_gnapActionStatus = -1;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s12_nextBeardGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_s12_nextBeardGuySequenceId, 50, _s12_currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s12_nextBeardGuySequenceId, 50, 4);
- _s12_currBeardGuySequenceId = _s12_nextBeardGuySequenceId;
- _s12_nextBeardGuySequenceId = -1;
- _vm->_timers[6] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus >= kASTalkBeardGuy && _vm->_gnapActionStatus <= kASShowItemToBeardGuy && _s12_currBeardGuySequenceId != 0x202 && _s12_currBeardGuySequenceId != 0x1F2)
- _vm->_gnapActionStatus = -1;
- if (_vm->_platypusActionStatus == kASPlatWithBeardGuy)
- _vm->_platypusActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene12.h b/engines/gnap/scenes/scene12.h
deleted file mode 100644
index 5050471..0000000
--- a/engines/gnap/scenes/scene12.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE12_H
-#define GNAP_SCENE12_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene12: public Scene {
-public:
- Scene12(GnapEngine *vm);
- ~Scene12() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s12_nextBeardGuySequenceId;
- int _s12_currBeardGuySequenceId;
- int _s12_nextToothGuySequenceId;
- int _s12_currToothGuySequenceId;
- int _s12_nextBarkeeperSequenceId;
- int _s12_currBarkeeperSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE12_H
diff --git a/engines/gnap/scenes/scene13.cpp b/engines/gnap/scenes/scene13.cpp
deleted file mode 100644
index a8f89ec..0000000
--- a/engines/gnap/scenes/scene13.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene13.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitBar = 1,
- kHSWalkArea1 = 2,
- kHSBackToilet = 3,
- kHSFrontToilet = 4,
- kHSUrinal = 5,
- kHSScribble = 6,
- kHSSink = 7,
- kHSWalkArea2 = 8,
- kHSDevice = 9,
- kHSWalkArea3 = 10,
- kHSWalkArea4 = 11,
- kHSWalkArea5 = 12,
- kHSWalkArea6 = 13,
- kHSWalkArea7 = 14,
- kHSWalkArea8 = 15,
- kHSWalkArea9 = 16
-};
-
-enum {
- kASLeaveScene = 0,
- kASBackToilet = 1,
- kASFrontToilet = 2,
- kASLookScribble = 6,
- kASGrabSink = 7,
- kASGrabSinkDone = 8,
- kASWait = 12,
- kASGrabUrinal = 13
-};
-
-Scene13::Scene13(GnapEngine *vm) : Scene(vm) {
- _s13_backToiletCtr = -1;
-}
-
-int Scene13::init() {
- _vm->playSound(0x108EC, false);
- return 0xAC;
-}
-
-void Scene13::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitBar, 113, 160, 170, 455, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSBackToilet, 385, 195, 478, 367, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSFrontToilet, 497, 182, 545, 432, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSUrinal, 680, 265, 760, 445, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSScribble, 560, 270, 660, 370, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSSink, 310, 520, 560, 599, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 268, 270, 325, 385);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 52, 599);
- _vm->setHotspot(kHSWalkArea3, 0, 0, 113, 550);
- _vm->setHotspot(kHSWalkArea4, 0, 0, 226, 438);
- _vm->setHotspot(kHSWalkArea5, 0, 0, 268, 400);
- _vm->setHotspot(kHSWalkArea6, 0, 0, 799, 367);
- _vm->setHotspot(kHSWalkArea7, 478, 0, 799, 401);
- _vm->setHotspot(kHSWalkArea8, 545, 0, 799, 473);
- _vm->setHotspot(kHSWalkArea9, 0, 549, 799, 599);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 17;
-}
-
-void Scene13::showScribble() {
- _vm->hideCursor();
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x6F);
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29))
- _vm->gameUpdateTick();
- _vm->_mouseClickState._left = false;
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(29);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
- _vm->deleteSurface(&_vm->_largeSprite);
- _vm->showCursor();
-}
-
-void Scene13::run() {
- int currSoundId = 0;
-
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 14) {
- _vm->initGnapPos(6, 6, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirNone);
- } else {
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(2, 7, kDirNone);
- }
-
- _vm->endSceneInit();
-
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- _vm->_timers[5] = _vm->getRandom(50) + 50;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1091A))
- _vm->playSound(0x1091A, true);
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- _vm->_timers[5] = _vm->getRandom(50) + 50;
- }
- break;
-
- case kHSPlatypus:
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- break;
- }
- break;
-
- case kHSExitBar:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(2, 7, 0, 0x107C0, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(2, 8, -1, -1, 1);
- if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
- _vm->_newSceneNum = 11;
- } else {
- _vm->setFlag(kGFSpringTaken);
- _vm->_newSceneNum = 47;
- }
- break;
-
- case kHSBackToilet:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(5, 5, 6, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- case TALK_CURSOR:
- if (_vm->_gnapX == 5 && _vm->_gnapY == 5) {
- _s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
- _vm->_gameSys->setAnimation(_s13_backToiletCtr + 0xA3, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqScale | kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASWait;
- _vm->_gnapSequenceId = _s13_backToiletCtr + 0xA3;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapSequenceDatNum = 0;
- } else {
- _vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASBackToilet;
- _vm->_gnapIdleFacing = kDirUpRight;
- }
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSFrontToilet:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 7, 7, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
- _vm->_gnapActionStatus = kASFrontToilet;
- _vm->_gnapIdleFacing = kDirBottomRight;
- break;
- }
- }
- break;
-
- case kHSScribble:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 7, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLookScribble;
- _vm->_gnapIdleFacing = kDirUpRight;
- break;
- case GRAB_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSUrinal:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(8, 7, 9, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
- _vm->_gnapActionStatus = kASWait;
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(8, 7, 0, -1, 1);
- _vm->_gnapActionStatus = kASGrabUrinal;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSSink:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
- _vm->_gnapActionStatus = kASWait;
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(4, 8, 0, 0x107B9, 1);
- _vm->_gnapActionStatus = kASGrabSink;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
- case kHSWalkArea6:
- case kHSWalkArea7:
- case kHSWalkArea8:
- case kHSWalkArea9:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- case kHSWalkArea1:
- // Nothing
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- if (_vm->_platY == 5 || _vm->_platY == 6)
- _vm->platypusWalkTo(-1, 7, -1, -1, 1);
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- switch (_vm->getRandom(5)) {
- case 0:
- _vm->playSound(0xD2, false);
- break;
- case 1:
- _vm->playSound(0xD3, false);
- break;
- case 2:
- _vm->playSound(0xD4, false);
- break;
- case 3:
- _vm->playSound(0xD5, false);
- break;
- case 4:
- _vm->playSound(0xD6, false);
- break;
- }
- }
- if (!_vm->_timers[5]) {
- int newSoundId;
- _vm->_timers[5] = _vm->getRandom(50) + 50;
- switch (_vm->getRandom(7)) {
- case 0:
- newSoundId = 0xD7;
- _vm->_timers[5] = 2 * _vm->getRandom(50) + 100;
- break;
- case 1:
- case 2:
- newSoundId = 0xCF;
- break;
- case 3:
- case 4:
- newSoundId = 0xD0;
- break;
- default:
- newSoundId = 0xD1;
- break;
- }
- if (newSoundId != currSoundId) {
- _vm->playSound(newSoundId, false);
- currSoundId = newSoundId;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- _vm->_timers[5] = _vm->getRandom(50) + 50;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene13::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kASBackToilet:
- _s13_backToiletCtr = MIN(5, _s13_backToiletCtr + 1);
- _vm->_gameSys->insertSequence(_s13_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
- _vm->_gnapSequenceId = _s13_backToiletCtr + 0xA3;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- break;
- case kASFrontToilet:
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 14;
- break;
- case kASLookScribble:
- _vm->_gnapActionStatus = -1;
- showScribble();
- break;
- case kASGrabSink:
- _vm->_gameSys->setAnimation(0xAB, 160, 0);
- _vm->_gameSys->insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0xAA, 256, true);
- _vm->_gnapSequenceId = 0xAB;
- _vm->_gnapId = 160;
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 4;
- _vm->_gnapY = 8;
- _vm->_timers[2] = 360;
- _vm->_gnapActionStatus = kASGrabSinkDone;
- break;
- case kASGrabSinkDone:
- _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- break;
- case kASWait:
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabUrinal:
- _vm->_gameSys->setAnimation(0xA2, 120, 0);
- _vm->_gameSys->insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA2;
- _vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirBottomLeft;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 4;
- _vm->_gnapY = 6;
- _vm->_timers[2] = 360;
- _vm->_gnapActionStatus = kASWait;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_platypusActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene13.h b/engines/gnap/scenes/scene13.h
deleted file mode 100644
index 53085dd..0000000
--- a/engines/gnap/scenes/scene13.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE13_H
-#define GNAP_SCENE13_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene13: public Scene {
-public:
- Scene13(GnapEngine *vm);
- ~Scene13() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s13_backToiletCtr;
-
- void showScribble();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE13_H
diff --git a/engines/gnap/scenes/scene14.cpp b/engines/gnap/scenes/scene14.cpp
deleted file mode 100644
index 6fafc2d..0000000
--- a/engines/gnap/scenes/scene14.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-
-#include "gnap/scenes/scene14.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExit = 1,
- kHSCoin = 2,
- kHSToilet = 3,
- kHSDevice = 4
-};
-
-Scene14::Scene14(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene14::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- return 0x27;
-}
-
-void Scene14::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0);
- _vm->setHotspot(kHSExit, 0, 590, 799, 599, SF_EXIT_D_CURSOR);
- _vm->setHotspot(kHSCoin, 330, 390, 375, 440, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSToilet, 225, 250, 510, 500, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFNeedleTaken))
- _vm->_hotspots[kHSCoin]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 5;
-}
-
-void Scene14::run() {
- _vm->_largeSprite = nullptr;
-
- _vm->queueInsertDeviceIcon();
-
- if (!_vm->isFlag(kGFNeedleTaken))
- _vm->_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->endSceneInit();
-
- if (!_vm->isFlag(kGFNeedleTaken) && _vm->invHas(kItemTongs))
- _vm->_largeSprite = _vm->_gameSys->createSurface(1);
-
- if (!_vm->isFlag(kGFNeedleTaken)) {
- _vm->_gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x24;
- _vm->_timers[2] = _vm->getRandom(40) + 50;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSExit:
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 13;
- break;
-
- case kHSCoin:
- if (_vm->_grabCursorSpriteIndex == kItemTongs) {
- _vm->invAdd(kItemQuarter);
- _vm->setFlag(kGFNeedleTaken);
- _vm->setGrabCursorSprite(-1);
- _vm->hideCursor();
- _vm->_gameSys->setAnimation(0x26, 10, 0);
- _vm->_gameSys->insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playSound(0x108E9, false);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playSound(0x108E9, false);
- break;
- case GRAB_CURSOR:
- _vm->_gameSys->insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x23;
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- case kHSToilet:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- _vm->playSound(0x108B1, false);
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- default:
- _vm->_mouseClickState._left = false;
- break;
- }
-
- updateAnimations();
- _vm->checkGameKeys();
-
- if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
- _vm->_gameSys->insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x24;
- _vm->_timers[2] = _vm->getRandom(40) + 50;
- }
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-
- if (_vm->_largeSprite)
- _vm->deleteSurface(&_vm->_largeSprite);
-}
-
-void Scene14::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->setAnimation(0x10843, 301, 1);
- _vm->_gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 13;
- _vm->_grabCursorSpriteIndex = kItemQuarter;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene14.h b/engines/gnap/scenes/scene14.h
deleted file mode 100644
index 32f0907..0000000
--- a/engines/gnap/scenes/scene14.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE14_H
-#define GNAP_SCENE14_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene14: public Scene {
-public:
- Scene14(GnapEngine *vm);
- ~Scene14() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE14_H
diff --git a/engines/gnap/scenes/scene15.cpp b/engines/gnap/scenes/scene15.cpp
deleted file mode 100644
index 1052d57..0000000
--- a/engines/gnap/scenes/scene15.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene15.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExit = 1,
- kHSButton1 = 2,
- kHSButton2 = 3,
- kHSButton3 = 4,
- kHSButton4 = 5,
- kHSButton5 = 6,
- kHSButton6 = 7,
- kHSButtonA = 8,
- kHSButtonB = 9,
- kHSButtonC = 10,
- kHSButtonD = 11,
- kHSButtonE = 12,
- kHSButtonF = 13,
- kHSCoinSlot = 14,
- kHSPlayButton = 15,
- kHSDevice = 16
-};
-
-Scene15::Scene15(GnapEngine *vm) : Scene(vm) {
- _s15_nextRecordSequenceId = -1;
- _s15_currRecordSequenceId = -1;
- _s15_nextSlotSequenceId = -1;
- _s15_currSlotSequenceId = -1;
- _s15_nextUpperButtonSequenceId = -1;
- _s15_currUpperButtonSequenceId = -1;
- _s15_nextLowerButtonSequenceId = -1;
- _s15_currLowerButtonSequenceId = -1;
-}
-
-int Scene15::init() {
- return 0xDD;
-}
-
-void Scene15::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSExit, 50, 590, 750, 599, SF_EXIT_D_CURSOR);
- _vm->setHotspot(kHSButton1, 210, 425, 260, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButton2, 280, 425, 325, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButton3, 340, 425, 385, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButton4, 400, 425, 445, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButton5, 460, 425, 510, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButton6, 520, 425, 560, 475, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonA, 205, 480, 250, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonB, 270, 480, 320, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonC, 335, 480, 380, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonD, 395, 480, 445, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonE, 460, 480, 505, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSButtonF, 515, 480, 560, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSCoinSlot, 585, 475, 620, 535, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSPlayButton, 622, 431, 650, 482, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 17;
-}
-
-void Scene15::run() {
- _s15_currSlotSequenceId = -1;
- _s15_currUpperButtonSequenceId = -1;
- _s15_currLowerButtonSequenceId = -1;
- _s15_nextSlotSequenceId = -1;
- _s15_nextUpperButtonSequenceId = -1;
- _s15_nextLowerButtonSequenceId = -1;
- _s15_currRecordSequenceId = 0xD5;
- _s15_nextRecordSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0xD5, 1, 0);
- _vm->_gameSys->insertSequence(_s15_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- _vm->endSceneInit();
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_hotspots[kHSPlatypus]._x1 = 0;
- _vm->_hotspots[kHSPlatypus]._y1 = 0;
- _vm->_hotspots[kHSPlatypus]._x2 = 0;
- _vm->_hotspots[kHSPlatypus]._y2 = 0;
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSExit:
- _vm->_newSceneNum = 12;
- _vm->_isLeavingScene = true;
- break;
-
- case kHSCoinSlot:
- if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _s15_nextSlotSequenceId = 0xDC; // Insert coin
- } else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _s15_nextSlotSequenceId = 0xDB;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- _vm->playSound(0x108E9, false);
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- case kHSPlayButton:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
- _vm->playSound(0x108E9, false);
- else
- _s15_nextSlotSequenceId = 0xDA;
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFGnapControlsToyUFO) || _vm->isFlag(kGFUnk13))
- _s15_nextSlotSequenceId = 0xD9;
- else
- _s15_nextSlotSequenceId = 0xDA;
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- case kHSButton1:
- case kHSButton2:
- case kHSButton3:
- case kHSButton4:
- case kHSButton5:
- case kHSButton6:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playSound(0x108E9, false);
- break;
- case GRAB_CURSOR:
- _s15_nextUpperButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- case kHSButtonA:
- case kHSButtonB:
- case kHSButtonC:
- case kHSButtonD:
- case kHSButtonE:
- case kHSButtonF:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playSound(0x108E9, false);
- break;
- case GRAB_CURSOR:
- _s15_nextLowerButtonSequenceId = _vm->_sceneClickedHotspot + 0xC5;
- break;
- case TALK_CURSOR:
- _vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
- break;
- case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
- break;
- }
- }
- break;
-
- default:
- _vm->_mouseClickState._left = false;
- break;
-
- }
-
- updateAnimations();
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene15::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- if (_vm->_isLeavingScene) {
- _vm->_sceneDone = true;
- } else if (_s15_nextSlotSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s15_nextSlotSequenceId, 1, 0);
- _vm->_gameSys->insertSequence(_s15_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- _s15_currSlotSequenceId = _s15_nextSlotSequenceId;
- _s15_nextSlotSequenceId = -1;
- switch (_s15_currSlotSequenceId) {
- case 0xDC:
- if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
- _vm->invRemove(kItemQuarter);
- } else {
- _vm->invRemove(kItemQuarterWithHole);
- _vm->setFlag(kGFUnk13);
- }
- _vm->setGrabCursorSprite(-1);
- break;
- case 0xDB:
- _vm->setFlag(kGFUnk14);
- _vm->setGrabCursorSprite(-1);
- _s15_nextSlotSequenceId = 0xD8;
- break;
- case 0xD9:
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->clearFlag(kGFGnapControlsToyUFO);
- _vm->invAdd(kItemQuarter);
- _vm->_newGrabCursorSpriteIndex = kItemQuarter;
- } else if (_vm->isFlag(kGFUnk13)) {
- _vm->clearFlag(kGFUnk13);
- _vm->invAdd(kItemQuarterWithHole);
- _vm->_newGrabCursorSpriteIndex = kItemQuarterWithHole;
- }
- _vm->_newSceneNum = 12;
- _vm->_isLeavingScene = true;
- break;
- case 0xD8:
- case 0xDA:
- if (_s15_currUpperButtonSequenceId != -1) {
- _vm->_gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
- _s15_currUpperButtonSequenceId = -1;
- }
- if (_s15_currLowerButtonSequenceId != -1) {
- _vm->_gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
- _s15_currLowerButtonSequenceId = -1;
- }
- break;
- }
- } else if (_s15_nextRecordSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s15_nextRecordSequenceId, 1, 0);
- _vm->_gameSys->insertSequence(_s15_nextRecordSequenceId, 1, _s15_currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _s15_currRecordSequenceId = _s15_nextRecordSequenceId;
- _s15_nextRecordSequenceId = -1;
- if (_s15_currRecordSequenceId == 0xD3) {
- _vm->invRemove(kItemDiceQuarterHole);
- _vm->_newSceneNum = 16;
- _vm->_isLeavingScene = true;
- }
- _vm->_gameSys->removeSequence(_s15_currUpperButtonSequenceId, 1, true);
- _s15_currUpperButtonSequenceId = -1;
- _vm->_gameSys->removeSequence(_s15_currLowerButtonSequenceId, 1, true);
- _s15_currLowerButtonSequenceId = -1;
- } else if (_s15_nextUpperButtonSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s15_nextUpperButtonSequenceId, 1, 0);
- if (_s15_currUpperButtonSequenceId == -1)
- _vm->_gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(_s15_nextUpperButtonSequenceId, 1, _s15_currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _s15_currUpperButtonSequenceId = _s15_nextUpperButtonSequenceId;
- _s15_nextUpperButtonSequenceId = -1;
- if (_s15_currLowerButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
- if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
- _s15_nextRecordSequenceId = 0xD3;
- else
- _s15_nextRecordSequenceId = 0xD4;
- }
- } else if (_s15_nextLowerButtonSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s15_nextLowerButtonSequenceId, 1, 0);
- if (_s15_currLowerButtonSequenceId == -1)
- _vm->_gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(_s15_nextLowerButtonSequenceId, 1, _s15_currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _s15_currLowerButtonSequenceId = _s15_nextLowerButtonSequenceId;
- _s15_nextLowerButtonSequenceId = -1;
- if (_s15_currUpperButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
- if (_s15_currUpperButtonSequenceId == 0xCC && _s15_currLowerButtonSequenceId == 0xCE)
- _s15_nextRecordSequenceId = 0xD3;
- else
- _s15_nextRecordSequenceId = 0xD4;
- }
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene15.h b/engines/gnap/scenes/scene15.h
deleted file mode 100644
index 584efbb..0000000
--- a/engines/gnap/scenes/scene15.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE15_H
-#define GNAP_SCENE15_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene15: public Scene {
-public:
- Scene15(GnapEngine *vm);
- ~Scene15() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s15_nextRecordSequenceId;
- int _s15_currRecordSequenceId;
- int _s15_nextSlotSequenceId;
- int _s15_currSlotSequenceId;
- int _s15_nextUpperButtonSequenceId;
- int _s15_currUpperButtonSequenceId;
- int _s15_nextLowerButtonSequenceId;
- int _s15_currLowerButtonSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE15_H
diff --git a/engines/gnap/scenes/scene17.cpp b/engines/gnap/scenes/scene17.cpp
deleted file mode 100644
index 00b3f19..0000000
--- a/engines/gnap/scenes/scene17.cpp
+++ /dev/null
@@ -1,852 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene17.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSPhone1 = 1,
- kHSPhone2 = 2,
- kHSExitGrubCity = 3,
- kHSDevice = 4,
- kHSExitToyStore = 5,
- kHSWrench = 6,
- kHSWalkArea1 = 7,
- kHSWalkArea2 = 8,
- kHSWalkArea3 = 9
-};
-
-enum {
- kASTryGetWrench = 0,
- kASGetWrench2 = 1,
- kASGetWrenchDone = 2,
- kASGetWrench1 = 3,
- kASPlatUsePhone = 4,
- kASPutCoinIntoPhone = 5,
- kASGetCoinFromPhone = 6,
- kASGetCoinFromPhoneDone = 7,
- kASPutCoinIntoPhoneDone = 8,
- kASGnapUsePhone = 9,
- kASGetWrenchGnapReady = 10,
- kASGnapHangUpPhone = 11,
- kASPlatPhoningAssistant = 12,
- kASPlatHangUpPhone = 14,
- kASLeaveScene = 15
-};
-
-Scene17::Scene17(GnapEngine *vm) : Scene(vm) {
- _s17_platTryGetWrenchCtr = 0;
- _s17_wrenchCtr = 2;
- _s17_nextCarWindowSequenceId = -1;
- _s17_nextWrenchSequenceId = -1;
- _s17_canTryGetWrench = true;
- _s17_platPhoneCtr = 0;
- _s17_nextPhoneSequenceId = -1;
- _s17_currPhoneSequenceId = -1;
-}
-
-int Scene17::init() {
- return 0x263;
-}
-
-void Scene17::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 1, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSPhone1, 61, 280, 97, 322, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- _vm->setHotspot(kHSPhone2, 80, 204, 178, 468, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- _vm->setHotspot(kHSExitGrubCity, 196, 207, 280, 304, SF_EXIT_U_CURSOR, 3, 5);
- _vm->setHotspot(kHSExitToyStore, 567, 211, 716, 322, SF_EXIT_U_CURSOR, 5, 6);
- _vm->setHotspot(kHSWrench, 586, 455, 681, 547, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 434);
- _vm->setHotspot(kHSWalkArea2, 541, 0, 800, 600);
- _vm->setHotspot(kHSWalkArea3, 0, 204, 173, 468);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFGrassTaken))
- _vm->_hotspots[kHSWrench]._flags = SF_NONE;
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
- _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
- }
- _vm->_hotspotsCount = 10;
-}
-
-void Scene17::update() {
- _vm->gameUpdateTick();
- _vm->updateMouseCursor();
- _vm->updateGrabCursorSprite(0, 0);
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
-}
-
-void Scene17::platHangUpPhone() {
- int savedGnapActionStatus = _vm->_gnapActionStatus;
-
- if (_vm->_platypusActionStatus == kASPlatPhoningAssistant) {
- _vm->_gnapActionStatus = kASPlatHangUpPhone;
- _vm->updateMouseCursor();
- _s17_platPhoneCtr = 0;
- _vm->_platypusActionStatus = -1;
- _vm->_gameSys->setAnimation(0x257, 254, 4);
- _vm->_gameSys->insertSequence(0x257, 254, _s17_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2)
- _vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x25B, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25B;
- _vm->_platypusSequenceDatNum = 0;
- _s17_currPhoneSequenceId = -1;
- _s17_nextPhoneSequenceId = -1;
- _vm->clearFlag(kGFPlatypusTalkingToAssistant);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
- _vm->gameUpdateTick();
- _vm->_gnapActionStatus = savedGnapActionStatus;
- _vm->updateMouseCursor();
- }
- updateHotspots();
-}
-
-void Scene17::run() {
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(8);
- _vm->_sceneWaiting = false;
- _vm->_timers[4] = _vm->getRandom(100) + 200;
- _vm->_timers[3] = 200;
- _vm->_timers[5] = _vm->getRandom(30) + 80;
- _vm->_timers[6] = _vm->getRandom(30) + 200;
- _vm->_timers[7] = _vm->getRandom(100) + 100;
-
- if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
- } else {
- if (_vm->_s18_garbageCanPos >= 8) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
- } else if (_vm->_s18_garbageCanPos >= 6) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
- } else if (_vm->_s18_garbageCanPos >= 5) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
- } else if (_vm->_s18_garbageCanPos >= 4) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
- } else {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
- }
- }
-
- if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFGrassTaken))
- _s17_currWrenchSequenceId = 0x22D;
- else
- _s17_currWrenchSequenceId = 0x22F;
-
- _s17_currCarWindowSequenceId = 0x244;
-
- if (_vm->isFlag(kGFUnk14))
- _vm->_gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_gameSys->setAnimation(_s17_currWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_s17_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gameSys->setAnimation(0, 0, 3);
- } else {
- _vm->_gameSys->setAnimation(_s17_currCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_s17_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
- }
-
- _s17_canTryGetWrench = true;
-
- if (_vm->isFlag(kGFUnk18))
- _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
- if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(4, 6, kDirBottomRight);
- _vm->initPlatypusPos(5, 6, kDirNone);
- _vm->endSceneInit();
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
- } else if (_vm->isFlag(kGFUnk27)) {
- _vm->initGnapPos(3, 9, kDirUpLeft);
- _vm->_platX = _vm->_hotspotsWalkPos[2].x;
- _vm->_platY = _vm->_hotspotsWalkPos[2].y;
- _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
- _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25A;
- _vm->_platypusSequenceDatNum = 0;
- _vm->endSceneInit();
- _vm->clearFlag(kGFSpringTaken);
- _vm->clearFlag(kGFUnk16);
- _vm->_platypusActionStatus = kASPlatPhoningAssistant;
- platHangUpPhone();
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->clearFlag(kGFPlatypusTalkingToAssistant);
- _vm->clearFlag(kGFUnk27);
- updateHotspots();
- } else if (_vm->isFlag(kGFUnk25)) {
- _vm->clearFlag(kGFSpringTaken);
- _vm->clearFlag(kGFUnk16);
- _vm->initPlatypusPos(7, 9, kDirNone);
- _vm->_gnapX = _vm->_hotspotsWalkPos[2].x;
- _vm->_gnapY = _vm->_hotspotsWalkPos[2].y;
- _vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
- _vm->_gameSys->insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 601;
- _vm->_gnapActionStatus = kASGnapHangUpPhone;
- _vm->clearFlag(kGFUnk25);
- _vm->_gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- _vm->_gameSys->setAnimation(0x257, 254, 0);
- _vm->_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
- } else if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->clearFlag(kGFSpringTaken);
- _vm->clearFlag(kGFUnk16);
- _vm->_sceneWaiting = true;
- _vm->initGnapPos(3, 9, kDirUpLeft);
- _vm->_platX = _vm->_hotspotsWalkPos[2].x;
- _vm->_platY = _vm->_hotspotsWalkPos[2].y;
- _vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
- _s17_currPhoneSequenceId = 0x251;
- _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s17_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platypusSequenceId = 0x25A;
- _vm->_platypusSequenceDatNum = 0;
- _vm->endSceneInit();
- _vm->_gameSys->setAnimation(_s17_currPhoneSequenceId, 254, 1);
- _vm->_platypusActionStatus = kASPlatPhoningAssistant;
- updateHotspots();
- } else if (_vm->_prevSceneNum == 18) {
- _vm->initGnapPos(6, 6, kDirBottomRight);
- _vm->initPlatypusPos(5, 6, kDirNone);
- _vm->endSceneInit();
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
- } else {
- if (_vm->isFlag(kGFSpringTaken)) {
- _vm->initGnapPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
- _vm->initPlatypusPos(1, 9, kDirNone);
- _vm->endSceneInit();
- } else {
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(1, 7, kDirNone);
- _vm->endSceneInit();
- }
- _vm->clearFlag(kGFSpringTaken);
- _vm->clearFlag(kGFUnk16);
- _vm->endSceneInit();
- }
- } else {
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gnapId = 120;
- _vm->_gnapSequenceId = 0x23D;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platX = -1;
- _vm->_platY = 8;
- _vm->_platypusId = 160;
- _vm->_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
- kSeqScale | kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
- // TODO delayTicksA(2, 9);
- _vm->endSceneInit();
- _vm->_platypusSequenceId = 0x7C1;
- _vm->_platypusSequenceDatNum = 1;
- _vm->_platypusFacing = kDirBottomRight;
- _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- if (_vm->isFlag(kGFGrassTaken)) {
- _vm->gnapUseJointOnPlatypus();
- } else {
- _vm->gnapUseDeviceOnPlatypuss();
- _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->_platypusActionStatus = kASGetWrench1;
- _vm->_gnapActionStatus = kASGetWrench1;
- _vm->_timers[5] = _vm->getRandom(30) + 80;
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemJoint);
- }
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWrench:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFGrassTaken)) {
- _vm->playGnapImpossible(0, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- case GRAB_CURSOR:
- _vm->playGnapScratchingHead(8, 7);
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_s17_canTryGetWrench) {
- platHangUpPhone();
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kASTryGetWrench;
- _vm->_gnapActionStatus = kASTryGetWrench;
- _vm->_timers[5] = _vm->getRandom(30) + 80;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSPhone1:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASPutCoinIntoPhone;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 3);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFUnk18)) {
- platHangUpPhone();
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGetCoinFromPhone;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFUnk18)) {
- platHangUpPhone();
- _vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->_platypusFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- _vm->setFlag(kGFUnk16);
- _vm->_platypusActionStatus = kASPlatUsePhone;
- _vm->_gnapActionStatus = kASPlatUsePhone;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSPhone2:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASPutCoinIntoPhone;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 3);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFUnk18)) {
- platHangUpPhone();
- _vm->_isLeavingScene = true;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGnapUsePhone;
- _vm->setFlag(kGFSpringTaken);
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (_vm->isFlag(kGFUnk18)) {
- platHangUpPhone();
- _vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->_platypusFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
- _vm->setFlag(kGFUnk16);
- _vm->_platypusActionStatus = kASPlatUsePhone;
- _vm->_gnapActionStatus = kASPlatUsePhone;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitToyStore:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 18;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- if (_vm->_platypusActionStatus != kASPlatPhoningAssistant)
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- platHangUpPhone();
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 20;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = 0;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10940))
- _vm->playSound(0x10940, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->platypusSub426234();
- _vm->updateGnapIdleSequence2();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(100) + 200;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
- _vm->_gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- switch (_vm->getRandom(3)) {
- case 0:
- _vm->_gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- _vm->_gameSys->insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- }
- if (_vm->_platypusActionStatus < 0 && !_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(30) + 80;
- if (_vm->isFlag(kGFGrassTaken) && _s17_nextWrenchSequenceId == -1) {
- _s17_nextWrenchSequenceId = 0x236;
- } else if (_s17_canTryGetWrench) {
- switch (_vm->getRandom(6)) {
- case 0:
- _s17_nextWrenchSequenceId = 0x231;
- break;
- case 1:
- _s17_nextWrenchSequenceId = 0x232;
- break;
- case 2:
- case 3:
- _s17_nextWrenchSequenceId = 0x23C;
- break;
- case 4:
- case 5:
- _s17_nextWrenchSequenceId = 0x22E;
- break;
- }
- } else {
- --_s17_wrenchCtr;
- if (_s17_wrenchCtr) {
- switch (_vm->getRandom(6)) {
- case 0:
- _s17_nextWrenchSequenceId = 0x237;
- break;
- case 1:
- _s17_nextWrenchSequenceId = 0x238;
- break;
- case 2:
- _s17_nextWrenchSequenceId = 0x239;
- break;
- case 3:
- _s17_nextWrenchSequenceId = 0x23A;
- break;
- case 4:
- _s17_nextWrenchSequenceId = 0x23B;
- break;
- case 5:
- _s17_nextWrenchSequenceId = 0x235;
- break;
- }
- } else {
- _s17_wrenchCtr = 2;
- _s17_nextWrenchSequenceId = 0x235;
- }
- }
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(30) + 200;
- if (_s17_nextCarWindowSequenceId == -1 && !_vm->isFlag(kGFGrassTaken))
- _s17_nextCarWindowSequenceId = 0x246;
- }
- _vm->playSoundA();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene17::updateAnimations() {
- static const int kPlatPhoneSequenceIds[] = {
- 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257
- };
-
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASGetWrench1:
- _vm->_gnapActionStatus = kASGetWrenchGnapReady;
- break;
- case kASGetCoinFromPhone:
- _vm->playGnapPullOutDevice(1, 3);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x250, 100, 0);
- _vm->_gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
- _vm->invAdd(kItemDiceQuarterHole);
- _vm->clearFlag(kGFUnk18);
- _vm->_gnapActionStatus = kASGetCoinFromPhoneDone;
- break;
- case kASGetCoinFromPhoneDone:
- _vm->setGrabCursorSprite(kItemDiceQuarterHole);
- _vm->_gnapActionStatus = -1;
- break;
- case kASPutCoinIntoPhone:
- _vm->_gameSys->setAnimation(0x24C, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x24C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x24C;
- _vm->invRemove(kItemDiceQuarterHole);
- _vm->setGrabCursorSprite(-1);
- _vm->setFlag(kGFUnk18);
- _vm->_gnapActionStatus = kASPutCoinIntoPhoneDone;
- break;
- case kASPutCoinIntoPhoneDone:
- _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- break;
- case kASGnapUsePhone:
- _vm->_gameSys->setAnimation(0x24D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 53;
- break;
- case kASGnapHangUpPhone:
- _vm->_gameSys->insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x258;
- _vm->_gnapActionStatus = -1;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
- case kASTryGetWrench:
- _vm->_platypusActionStatus = -1;
- ++_s17_platTryGetWrenchCtr;
- if (_s17_platTryGetWrenchCtr % 2 != 0)
- _s17_nextWrenchSequenceId = 0x233;
- else
- _s17_nextWrenchSequenceId = 0x234;
- _s17_canTryGetWrench = false;
- break;
- case kASGetWrench1:
- _s17_nextWrenchSequenceId = 0x230;
- break;
- case kASGetWrench2:
- _s17_nextCarWindowSequenceId = 0x249;
- break;
- case kASGetWrenchDone:
- _vm->_platypusActionStatus = -1;
- _vm->invAdd(kItemWrench);
- _vm->setGrabCursorSprite(kItemWrench);
- break;
- case kASPlatUsePhone:
- _vm->_gameSys->setAnimation(0x24E, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x24E;
- _vm->_platypusActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 53;
- break;
- case kASPlatPhoningAssistant:
- ++_s17_platPhoneCtr;
- if (_s17_platPhoneCtr >= 7) {
- _s17_platPhoneCtr = 0;
- _s17_nextPhoneSequenceId = -1;
- _s17_currPhoneSequenceId = -1;
- _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x25B;
- _vm->_platypusActionStatus = -1;
- _vm->clearFlag(kGFPlatypusTalkingToAssistant);
- _vm->_sceneWaiting = false;
- updateHotspots();
- } else {
- _s17_nextPhoneSequenceId = kPlatPhoneSequenceIds[_s17_platPhoneCtr];
- _vm->_gameSys->setAnimation(_s17_nextPhoneSequenceId, 254, 1);
- _vm->_gameSys->insertSequence(_s17_nextPhoneSequenceId, 254, _s17_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x25A, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusSequenceId = 0x25A;
- _s17_currPhoneSequenceId = _s17_nextPhoneSequenceId;
- }
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- switch (_s17_nextWrenchSequenceId) {
- case 0x233:
- _vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(0x243, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
- _s17_nextWrenchSequenceId = -1;
- _vm->_platypusSequenceId = 0x243;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x243, _vm->_platypusId, 1);
- break;
- case 0x234:
- _vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(0x242, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
- _s17_nextWrenchSequenceId = -1;
- _vm->_platypusSequenceId = 0x242;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x242, _vm->_platypusId, 1);
- break;
- case 0x231:
- if (_vm->getRandom(2) != 0)
- _s17_nextCarWindowSequenceId = 0x245;
- else
- _s17_nextCarWindowSequenceId = 0x248;
- _vm->_gameSys->setAnimation(0, 0, 2);
- break;
- case 0x232:
- _s17_nextCarWindowSequenceId = 0x247;
- _vm->_gameSys->setAnimation(0, 0, 2);
- break;
- case 0x22E:
- case 0x235:
- if (_s17_nextWrenchSequenceId == 0x235)
- _vm->_hotspots[kHSWrench]._flags &= ~SF_DISABLED;
- else
- _vm->_hotspots[kHSWrench]._flags |= SF_DISABLED;
- _s17_canTryGetWrench = !_s17_canTryGetWrench;
- _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
- _s17_nextWrenchSequenceId = -1;
- break;
- case 0x230:
- if (_vm->_gnapActionStatus == kASGetWrenchGnapReady) {
- _vm->_gameSys->setAnimation(0, 0, 2);
- if (_s17_canTryGetWrench) {
- _vm->_gameSys->insertSequence(0x22E, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currWrenchSequenceId = 0x22E;
- _s17_canTryGetWrench = false;
- }
- _vm->_gameSys->setAnimation(0x23F, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x10875, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x23F, _vm->_platypusId,
- _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 1;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x875;
- _vm->_platypusSequenceId = 0x23F;
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _vm->_platypusActionStatus = kASGetWrench2;
- }
- break;
- default:
- if (_s17_nextWrenchSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
- _s17_nextWrenchSequenceId = -1;
- }
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- switch (_s17_nextCarWindowSequenceId) {
- case 0x246:
- _vm->_gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currCarWindowSequenceId = _s17_nextCarWindowSequenceId;
- _s17_nextCarWindowSequenceId = -1;
- break;
- case 0x245:
- case 0x247:
- case 0x248:
- _vm->_gameSys->setAnimation(_s17_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_s17_nextWrenchSequenceId, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(2) != 2)
- update();
- _vm->_gameSys->setAnimation(_s17_nextCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currCarWindowSequenceId = _s17_nextCarWindowSequenceId;
- _s17_nextCarWindowSequenceId = -1;
- _s17_currWrenchSequenceId = _s17_nextWrenchSequenceId;
- _s17_nextWrenchSequenceId = -1;
- break;
- case 0x249:
- _vm->_gameSys->setAnimation(0x230, 40, 2);
- _vm->_gameSys->setAnimation(0x240, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x230, 40, _s17_currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s17_nextCarWindowSequenceId, 40, _s17_currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x240, _vm->_platypusId, _vm->_platypusSequenceId, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_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;
- _vm->_gameSys->setAnimation(0x24A, 40, 3);
- _vm->_gameSys->insertSequence(0x24A, 40, _s17_nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(2) != 2) {
- update();
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0x24A, 40, 3);
- _vm->_gameSys->insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
- }
- }
- _vm->_gameSys->insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x24B, 40, 3);
- _vm->_gameSys->insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
- _s17_currCarWindowSequenceId = 0x24B;
- _s17_nextCarWindowSequenceId = -1;
- _s17_currWrenchSequenceId = 0x22D;
- _s17_nextWrenchSequenceId = -1;
- _vm->setFlag(kGFGrassTaken);
- _vm->_gnapActionStatus = -1;
- _vm->_platypusActionStatus = 2;
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(30) + 80;
- break;
- }
- }
-
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene17.h b/engines/gnap/scenes/scene17.h
deleted file mode 100644
index a653cca..0000000
--- a/engines/gnap/scenes/scene17.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE17_H
-#define GNAP_SCENE17_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene17: public Scene {
-public:
- Scene17(GnapEngine *vm);
- ~Scene17() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- bool _s17_canTryGetWrench;
- int _s17_wrenchCtr;
- int _s17_platPhoneCtr;
- int _s17_platTryGetWrenchCtr;
- int _s17_nextPhoneSequenceId;
- int _s17_currPhoneSequenceId;
- int _s17_nextWrenchSequenceId;
- int _s17_currWrenchSequenceId;
- int _s17_nextCarWindowSequenceId;
- int _s17_currCarWindowSequenceId;
-
- void update();
- void platHangUpPhone();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE17_H
diff --git a/engines/gnap/scenes/scene18.cpp b/engines/gnap/scenes/scene18.cpp
deleted file mode 100644
index 6f4ef67..0000000
--- a/engines/gnap/scenes/scene18.cpp
+++ /dev/null
@@ -1,1030 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene18.h"
-
-namespace Gnap {
-
-static const int kScene18SequenceIds[] = {
- 0x219, 0x21A, 0x21B, 0x21C, 0x21D
-};
-
-enum {
- kHSPlatypus = 0,
- kHSGarbageCan = 1,
- kHSDevice = 2,
- kHSExitToyStore = 3,
- kHSExitPhoneBooth = 4,
- kHSExitGrubCity = 5,
- kHSHydrantTopValve = 6,
- kHSHydrantRightValve = 7,
- kHSCowboyHat = 8,
- kHSWalkArea1 = 9,
- kHSWalkArea2 = 10
-};
-
-enum {
- kASOpenRightValveNoGarbageCanDone = 0,
- kASOpenRightValveNoGarbageCan = 1,
- kASCloseRightValveNoGarbageCan = 2,
- kASOpenTopValveDone = 3,
- kASOpenTopValve = 4,
- kASCloseTopValve = 5,
- kASGrabGarbageCanFromStreet = 6,
- kASGrabCowboyHat = 7,
- kASGrabGarbageCanFromHydrant = 8,
- kASPutGarbageCanOnRunningHydrant = 9,
- kASPutGarbageCanOnRunningHydrant2 = 10,
- kASGrabCowboyHatDone = 11,
- kASStandingOnHydrant = 12,
- kASOpenRightValveWithGarbageCan = 13,
- kASOpenRightValveWithGarbageCanDone = 14,
- kASCloseRightValveWithGarbageCan = 15,
- kASPutGarbageCanOnHydrant = 16,
- kASPutGarbageCanOnHydrantDone = 17,
- kASPlatComesHere = 18,
- kASCloseRightValveWithGarbageCanDone = 19,
- kASLeaveScene = 20
-};
-
-Scene18::Scene18(GnapEngine *vm) : Scene(vm) {
- _s18_cowboyHatSurface = nullptr;
-
- _s18_platPhoneCtr = 0;
- _s18_platPhoneIter = 0;
- _s18_nextPhoneSequenceId = -1;
- _s18_currPhoneSequenceId = -1;
-}
-
-Scene18::~Scene18() {
- delete _s18_cowboyHatSurface;
-}
-
-int Scene18::init() {
- _vm->_gameSys->setAnimation(0, 0, 3);
- return 0x222;
-}
-
-void Scene18::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSGarbageCan, _vm->_gridMinX + 75 * _vm->_s18_garbageCanPos - 35, _vm->_gridMinY + 230, _vm->_gridMinX + 75 * _vm->_s18_garbageCanPos + 35, _vm->_gridMinY + 318,
- SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, _vm->_s18_garbageCanPos, 7);
- _vm->setHotspot(kHSExitToyStore, 460, 238, 592, 442, SF_EXIT_U_CURSOR, 7, 7);
- _vm->setHotspot(kHSExitPhoneBooth, 275, 585, 525, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- _vm->setHotspot(kHSExitGrubCity, 0, 350, 15, 600, SF_EXIT_L_CURSOR, 0, 9);
- _vm->setHotspot(kHSHydrantTopValve, 100, 345, 182, 410, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 8);
- _vm->setHotspot(kHSHydrantRightValve, 168, 423, 224, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHSCowboyHat, 184, 63, 289, 171, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 448);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 214, 515);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHSHydrantRightValve]._x1 = 148;
- _vm->_hotspots[kHSHydrantRightValve]._y1 = 403;
- _vm->_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
- _vm->_hotspotsWalkPos[kHSGarbageCan].x = 3;
- _vm->_hotspotsWalkPos[kHSGarbageCan].y = 7;
- } else {
- _vm->_hotspots[kHSHydrantTopValve]._y1 = 246;
- }
- } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHSHydrantTopValve]._x1 = 105;
- _vm->_hotspots[kHSHydrantTopValve]._x2 = 192;
- } else if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_hotspots[kHSGarbageCan]._x1 = 115;
- _vm->_hotspots[kHSGarbageCan]._y1 = 365;
- _vm->_hotspots[kHSGarbageCan]._x2 = 168;
- _vm->_hotspots[kHSGarbageCan]._y2 = 470;
- _vm->_hotspots[kHSGarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _vm->_hotspotsWalkPos[kHSGarbageCan].x = 3;
- _vm->_hotspotsWalkPos[kHSGarbageCan].y = 7;
- }
- if (_vm->isFlag(kGFPlatyPussDisguised))
- _vm->_hotspots[kHSGarbageCan]._flags = SF_DISABLED;
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
- _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHSHydrantRightValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
- }
- if (_vm->isFlag(kGFUnk14)) {
- _vm->_hotspots[kHSHydrantTopValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHSCowboyHat]._flags = SF_DISABLED;
- }
- _vm->_hotspotsCount = 11;
-}
-
-void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
- // CHECKME: (x, y) is always set to (-1, -1)
-
- // TODO Cleanup
- static const int kSequenceIds[] = {
- 0x203, 0x204
- };
-
- int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
- int clippedX, v12, v5, v10, v11, direction;
-
- if (x >= 0)
- clippedX = x;
- else
- clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
- if (clippedX >= _vm->_gnapX)
- v10 = clippedX - 1;
- else
- v10 = clippedX + 1;
-
- if (a5 < 0)
- a5 = 4;
- v5 = v10;
- if (v10 <= a5)
- v5 = a5;
- v11 = v5;
- v12 = _vm->_gridMaxX - 1;
- if (_vm->_gridMaxX - 1 >= v11)
- v12 = v11;
-
- if (v12 == _vm->_gnapX) {
- gnapSeqId = _vm->_gnapSequenceId;
- gnapId = _vm->_gnapId;
- gnapDatNum = _vm->_gnapSequenceDatNum;
- gnapGridX = _vm->_gnapX;
- if (_vm->_gnapX <= clippedX)
- direction = 1;
- else
- direction = -1;
- } else {
- if (_vm->_gnapY == _vm->_platY) {
- if (v12 >= _vm->_gnapX) {
- if (v12 >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
- _vm->platypusMakeRoom();
- } else if (v12 <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
- _vm->platypusMakeRoom();
- }
- }
- gnapSeqId = _vm->_gnapSequenceId;
- gnapId = _vm->_gnapId;
- gnapDatNum = _vm->_gnapSequenceDatNum;
- gnapGridX = _vm->_gnapX;
- int seqId = 0;
- if (v12 < _vm->_gnapX) {
- direction = -1;
- seqId = 1;
- } else
- direction = 1;
- int a2 = 20 * _vm->_gnapY + 1;
- do {
- if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
- break;
- a2 += direction;
- _vm->_gameSys->insertSequence(kSequenceIds[seqId], a2,
- gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- gnapSeqId = kSequenceIds[seqId];
- gnapId = a2;
- gnapDatNum = 0;
- gnapGridX += direction;
- } while (v12 != gnapGridX);
- }
-
- if (argC >= 0) {
- _vm->_gnapSequenceId = ridToEntryIndex(argC);
- _vm->_gnapSequenceDatNum = ridToDatIndex(argC);
- } else {
- if (direction == 1)
- _vm->_gnapSequenceId = 0x20A;
- else
- _vm->_gnapSequenceId = 0x209;
- _vm->_gnapSequenceDatNum = 0;
- }
-
- if (direction == 1)
- _vm->_gnapIdleFacing = kDirBottomRight;
- else
- _vm->_gnapIdleFacing = kDirBottomLeft;
-
- _vm->_gnapId = 20 * _vm->_gnapY + 1;
-
- if (animationIndex >= 0)
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
-
- _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
-
- _vm->_gnapX = gnapGridX;
-
-}
-
-void Scene18::putDownGarbageCan(int animationIndex) {
- if (animationIndex >= 0) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2)
- _vm->gameUpdateTick();
- }
- if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight)
- _vm->_s18_garbageCanPos = _vm->_gnapX - 1;
- else
- _vm->_s18_garbageCanPos = _vm->_gnapX + 1;
- _vm->clearFlag(kGFPlatyPussDisguised);
- updateHotspots();
- if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
- _vm->_gameSys->insertSequence(0x107BA, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7BA;
- } else {
- _vm->_gameSys->insertSequence(0x107B9, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B9;
- }
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
- _vm->_gameSys->setAnimation(0x1FA, 19, 4);
- _vm->_gameSys->insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2)
- _vm->gameUpdateTick();
-}
-
-void Scene18::platEndPhoning(bool platFl) {
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _s18_platPhoneIter = 0;
- _s18_platPhoneCtr = 0;
- _vm->_platypusActionStatus = -1;
- if (_s18_currPhoneSequenceId != -1) {
- _vm->_gameSys->setAnimation(0x21E, 254, 3);
- _vm->_gameSys->insertSequence(0x21E, 254, _s18_currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(3) != 2)
- _vm->gameUpdateTick();
- }
- _vm->_gameSys->removeSequence(0x21F, 254, true);
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->clearFlag(kGFPlatypusTalkingToAssistant);
- if (platFl) {
- _vm->_platypusActionStatus = kASPlatComesHere;
- _vm->_timers[6] = 50;
- _vm->_sceneWaiting = true;
- }
- _s18_currPhoneSequenceId = -1;
- _s18_nextPhoneSequenceId = -1;
- updateHotspots();
- }
-}
-
-void Scene18::closeHydrantValve() {
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->updateMouseCursor();
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCan;
- waitForGnapAction();
- } else {
- _vm->_gnapActionStatus = kASCloseRightValveNoGarbageCan;
- waitForGnapAction();
- }
- } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
- _vm->_gnapActionStatus = kASCloseTopValve;
- waitForGnapAction();
- }
-}
-
-void Scene18::waitForGnapAction() {
- while (_vm->_gnapActionStatus >= 0) {
- updateAnimations();
- _vm->gameUpdateTick();
- }
-}
-
-void Scene18::run() {
- _s18_cowboyHatSurface = nullptr;
-
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(4);
-
- _vm->_timers[5] = _vm->getRandom(100) + 100;
-
- _vm->queueInsertDeviceIcon();
-
- _vm->clearFlag(kGFPlatyPussDisguised);
-
- if (!_vm->isFlag(kGFUnk14))
- _vm->_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFTruckKeysUsed)) {
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->playSound(0x22B, true);
- } else {
- _vm->_gameSys->insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
- }
- } else {
- _vm->_gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18_garbageCanPos - 40), 0);
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->playSound(0x22B, true);
- } else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->playSound(0x22B, true);
- }
- }
-
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_vm->_prevSceneNum == 17)
- _vm->initGnapPos(4, 11, kDirBottomRight);
- else
- _vm->initGnapPos(4, 7, kDirBottomRight);
- _s18_platPhoneCtr = _vm->getRandom(5);
- if (_vm->isFlag(kGFUnk27)) {
- _vm->_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- _s18_currPhoneSequenceId = -1;
- platEndPhoning(true);
- _vm->clearFlag(kGFUnk27);
- } else {
- _s18_currPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr];
- _s18_platPhoneIter = 0;
- _vm->_gameSys->insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s18_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- }
- if (_vm->isFlag(kGFUnk27)) {
- platEndPhoning(true);
- _vm->clearFlag(kGFUnk27);
- } else {
- _vm->_gameSys->setAnimation(_s18_currPhoneSequenceId, 254, 3);
- }
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
- } else {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->clearFlag(kGFGnapControlsToyUFO);
- _vm->setGrabCursorSprite(kItemCowboyHat);
- _vm->_prevSceneNum = 19;
- }
- if (_vm->_prevSceneNum == 17) {
- _vm->initGnapPos(4, 11, kDirBottomRight);
- _vm->initPlatypusPos(5, 11, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
- } else if (_vm->_prevSceneNum == 19) {
- _vm->initGnapPos(7, 7, kDirBottomRight);
- _vm->initPlatypusPos(8, 7, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
- } else {
- _vm->initGnapPos(-1, 10, kDirBottomRight);
- _vm->initPlatypusPos(-1, 10, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(3, 7, -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
- }
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 20, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSCowboyHat:
- if (_vm->_gnapActionStatus == kASStandingOnHydrant) {
- _vm->_gnapActionStatus = kASGrabCowboyHat;
- _vm->_sceneWaiting = false;
- } else if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCowboyHat].x, _vm->_hotspotsWalkPos[kHSCowboyHat].y, 3, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 2);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCowboyHat].x, _vm->_hotspotsWalkPos[kHSCowboyHat].y, 0, _vm->getGnapSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSGarbageCan:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFUnk14)) {
- if (_vm->_grabCursorSpriteIndex >= 0)
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 1, 5);
- else
- _vm->playGnapImpossible(0, 0);
- } else {
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
- platEndPhoning(true);
- if (_vm->_grabCursorSpriteIndex >= 0) {
- if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1),
- _vm->_hotspotsWalkPos[kHSGarbageCan].y, _vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y);
- else
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 2, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHSGarbageCan].y);
- else if (!_vm->isFlag(kGFTruckFilledWithGas))
- _vm->playGnapScratchingHead(2, 4);
- break;
- case GRAB_CURSOR:
- if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGarbageCan].x - (_vm->_gnapX < _vm->_s18_garbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHSGarbageCan].y,
- -1, -1, 1);
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18_garbageCanPos, _vm->_gnapY) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabGarbageCanFromStreet;
- } else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGarbageCan].x, _vm->_hotspotsWalkPos[kHSGarbageCan].y, 0, -1, 1))
- _vm->_gnapActionStatus = kASGrabGarbageCanFromHydrant;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- }
- break;
-
- case kHSHydrantTopValve:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- // While carrying garbage can
- if (_vm->_grabCursorSpriteIndex >= 0) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- _vm->playGnapScratchingHead(0, 0);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
- _vm->_gnapActionStatus = kASPutGarbageCanOnRunningHydrant;
- } else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
- _vm->_gnapActionStatus = kASPutGarbageCanOnHydrant;
- } else {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- _vm->playGnapImpossible(0, 0);
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- } else {
- if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- _vm->_gnapActionStatus = kASOpenTopValve;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 1, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 5);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BA, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASCloseTopValve;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- }
- break;
-
- case kHSHydrantRightValve:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFUnk14)) {
- if (_vm->_grabCursorSpriteIndex == -1) {
- _vm->playGnapImpossible(0, 0);
- } else {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
- }
- } else {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnapActionStatus = kASOpenRightValveWithGarbageCan;
- else
- _vm->_gnapActionStatus = kASOpenRightValveNoGarbageCan;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 1, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 5);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCan;
- else
- _vm->_gnapActionStatus = kASCloseRightValveNoGarbageCan;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- }
- break;
-
- case kHSExitToyStore:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- if (_vm->isFlag(kGFPictureTaken)) {
- _vm->playGnapImpossible(0, 0);
- } else {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 19;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStore].x, _vm->_hotspotsWalkPos[kHSExitToyStore].y, 0, 0x107C0, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHSExitToyStore].y, -1, 0x107C2, 1);
- }
- }
- break;
-
- case kHSExitPhoneBooth:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- closeHydrantValve();
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHSExitPhoneBooth].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _vm->setFlag(kGFUnk27);
- else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPhoneBooth].x + 1, _vm->_hotspotsWalkPos[kHSExitPhoneBooth].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- }
- closeHydrantValve();
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 20;
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitGrubCity].x, _vm->_hotspotsWalkPos[kHSExitGrubCity].y, 0, 0x107B2, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
- platEndPhoning(false);
- else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitGrubCity].x, _vm->_hotspotsWalkPos[kHSExitGrubCity].y - 1, -1, 0x107CF, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- _vm->_mouseClickState._left = false;
- }
- break;
-
- default:
- if (_vm->_gnapActionStatus != kASStandingOnHydrant && _vm->_mouseClickState._left) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
- putDownGarbageCan(0);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10940))
- _vm->playSound(0x10940, true);
-
- if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
- _vm->_gnapActionStatus != kASOpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kASOpenRightValveNoGarbageCan &&
- _vm->_gnapActionStatus != kASOpenTopValve && _vm->_gnapActionStatus != kASOpenTopValveDone &&
- _vm->_gnapActionStatus != kASOpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kASOpenRightValveWithGarbageCanDone)
- _vm->playSound(0x22B, true);
-
- if (!_vm->_isLeavingScene) {
- if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_vm->_platypusActionStatus == kASPlatComesHere) {
- if (!_vm->_timers[6]) {
- _vm->_platypusActionStatus = -1;
- _vm->_sceneWaiting = false;
- _vm->initPlatypusPos(-1, 10, kDirNone);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
- _vm->clearFlag(kGFPlatypusTalkingToAssistant);
- }
- } else {
- _vm->_hotspots[kHSWalkArea1]._y2 += 48;
- _vm->_hotspots[kHSWalkArea2]._x1 += 75;
- _vm->updatePlatypusIdleSequence();
- _vm->_hotspots[kHSWalkArea2]._x1 -= 75;
- _vm->_hotspots[kHSWalkArea1]._y2 -= 48;
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->getRandom(2) == 1)
- _vm->_gameSys->insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- _vm->playSoundA();
- }
- if (!_vm->isFlag(kGFPlatyPussDisguised))
- _vm->updateGnapIdleSequence();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-
- if (_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->deleteSurface(&_s18_cowboyHatSurface);
-}
-
-void Scene18::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASGrabGarbageCanFromStreet:
- if (_vm->_gnapIdleFacing != kDirUpRight && _vm->_gnapIdleFacing != kDirBottomRight) {
- _vm->_gameSys->insertSequence(0x1FC, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - 675, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FC;
- } else {
- _vm->_gameSys->insertSequence(0x1FD, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - 525, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FD;
- }
- _vm->_gameSys->removeSequence(0x1FA, 19, true);
- _vm->setFlag(kGFPlatyPussDisguised);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabGarbageCanFromHydrant:
- _vm->_gameSys->insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x1F9, 19, true);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FE;
- _vm->clearFlag(kGFTruckKeysUsed);
- _vm->setFlag(kGFPlatyPussDisguised);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- case kASCloseRightValveNoGarbageCan:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20D, 39, true);
- _vm->_gameSys->removeSequence(0x212, 39, true);
- _vm->_gameSys->removeSequence(0x211, 39, true);
- _vm->stopSound(0x22B);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x205;
- _vm->clearFlag(kGFTruckFilledWithGas);
- _vm->invAdd(kItemWrench);
- _vm->setGrabCursorSprite(kItemWrench);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- case kASOpenTopValve:
- _vm->setFlag(kGFBarnPadlockOpen);
- updateHotspots();
- _vm->playGnapPullOutDevice(2, 7);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantTopValve].x, _vm->_hotspotsWalkPos[kHSHydrantTopValve].y, 0, 0x107BB, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASOpenTopValveDone;
- break;
- case kASOpenTopValveDone:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->removeSequence(0x20C, 19, true);
- _vm->_gameSys->setAnimation(0x217, 39, 5);
- _vm->_gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
- _vm->gameUpdateTick();
- _vm->playSound(0x22B, true);
- _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x208;
- _vm->invRemove(kItemWrench);
- _vm->setGrabCursorSprite(-1);
- _vm->_gnapActionStatus = -1;
- break;
- case kASCloseTopValve:
- _vm->_gameSys->insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20E, 39, true);
- _vm->_gameSys->removeSequence(0x216, 39, true);
- _vm->_gameSys->removeSequence(0x217, 39, true);
- _vm->stopSound(0x22B);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x206;
- _vm->clearFlag(kGFBarnPadlockOpen);
- _vm->invAdd(kItemWrench);
- _vm->setGrabCursorSprite(kItemWrench);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabCowboyHat:
- _vm->_gameSys->setAnimation(0x200, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x200;
- _vm->_gnapActionStatus = kASGrabCowboyHatDone;
- break;
- case kASGrabCowboyHatDone:
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _s18_cowboyHatSurface = _vm->addFullScreenSprite(0x1D2, 255);
- _vm->_gameSys->setAnimation(0x218, 256, 0);
- _vm->_gameSys->insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->_newSceneNum = 18;
- _vm->invAdd(kItemCowboyHat);
- _vm->invAdd(kItemWrench);
- _vm->setFlag(kGFGnapControlsToyUFO);
- _vm->setFlag(kGFUnk14);
- _vm->clearFlag(kGFTruckFilledWithGas);
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->setFlag(kGFUnk14); // CHECKME - Set 2 times?
- updateHotspots();
- _vm->_gnapActionStatus = kASLeaveScene;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kASPutGarbageCanOnRunningHydrant:
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->clearFlag(kGFPlatyPussDisguised);
- _vm->_gameSys->requestRemoveSequence(0x211, 39);
- _vm->_gameSys->requestRemoveSequence(0x212, 39);
- _vm->_gameSys->insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->stopSound(0x22B);
- _vm->_gameSys->setAnimation(0x210, _vm->_gnapId, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x210;
- _vm->_gnapActionStatus = kASPutGarbageCanOnRunningHydrant2;
- break;
- case kASPutGarbageCanOnRunningHydrant2:
- _vm->playSound(0x22B, true);
- _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x1FF;
- _vm->_sceneWaiting = true;
- _vm->_gnapActionStatus = kASStandingOnHydrant;
- break;
- case kASStandingOnHydrant:
- _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- break;
- case kASOpenRightValveNoGarbageCan:
- case kASOpenRightValveWithGarbageCan:
- _vm->setFlag(kGFTruckFilledWithGas);
- updateHotspots();
- _vm->playGnapPullOutDevice(2, 7);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHydrantRightValve].x, _vm->_hotspotsWalkPos[kHSHydrantRightValve].y, 0, 0x107BA, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- if (_vm->_gnapActionStatus == kASOpenRightValveNoGarbageCan)
- _vm->_gnapActionStatus = kASOpenRightValveNoGarbageCanDone;
- else
- _vm->_gnapActionStatus = kASOpenRightValveWithGarbageCanDone;
- break;
- case kASOpenRightValveWithGarbageCanDone:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0x1F9, 19);
- _vm->_gameSys->removeSequence(0x20B, 19, true);
- _vm->_gameSys->setAnimation(0x213, 39, 5);
- _vm->_gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
- _vm->gameUpdateTick();
- _vm->playSound(555, true);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x207;
- _vm->invRemove(kItemWrench);
- _vm->_gnapActionStatus = -1;
- break;
- case kASOpenRightValveNoGarbageCanDone:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->removeSequence(0x20B, 19, true);
- _vm->_gameSys->setAnimation(0x211, 39, 5);
- _vm->_gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
- _vm->gameUpdateTick();
- _vm->playSound(0x22B, true);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x207;
- _vm->invRemove(kItemWrench);
- _vm->_gnapActionStatus = -1;
- break;
- case kASCloseRightValveWithGarbageCan:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20D, 39, true);
- _vm->_gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
- _vm->stopSound(0x22B);
- _vm->_gameSys->setAnimation(0x1F9, 19, 0);
- _vm->_gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
- _vm->clearFlag(kGFTruckFilledWithGas);
- _vm->invAdd(kItemWrench);
- _vm->setGrabCursorSprite(kItemWrench);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- updateHotspots();
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapActionStatus = kASCloseRightValveWithGarbageCanDone;
- break;
- case kASCloseRightValveWithGarbageCanDone:
- _vm->_gnapActionStatus = -1;
- break;
- case kASPutGarbageCanOnHydrant:
- _vm->setFlag(kGFTruckKeysUsed);
- _vm->clearFlag(kGFPlatyPussDisguised);
- _vm->_gameSys->insertSequence(0x20F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20F, _vm->_gnapId, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x20F;
- _vm->_gnapActionStatus = kASPutGarbageCanOnHydrantDone;
- break;
- case kASPutGarbageCanOnHydrantDone:
- _vm->_gameSys->insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 3);
- ++_s18_platPhoneIter;
- if (_s18_platPhoneIter <= 4) {
- ++_s18_platPhoneCtr;
- _s18_nextPhoneSequenceId = kScene18SequenceIds[_s18_platPhoneCtr % 5];
- _vm->_gameSys->setAnimation(_s18_nextPhoneSequenceId, 254, 3);
- _vm->_gameSys->insertSequence(_s18_nextPhoneSequenceId, 254, _s18_currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
- _s18_currPhoneSequenceId = _s18_nextPhoneSequenceId;
- } else {
- platEndPhoning(true);
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene18.h b/engines/gnap/scenes/scene18.h
deleted file mode 100644
index 163a8cd..0000000
--- a/engines/gnap/scenes/scene18.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE18_H
-#define GNAP_SCENE18_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene18: public Scene {
-public:
- Scene18(GnapEngine *vm);
- ~Scene18();
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- Graphics::Surface *_s18_cowboyHatSurface;
-
- int _s18_platPhoneCtr;
- int _s18_platPhoneIter;
- int _s18_nextPhoneSequenceId;
- int _s18_currPhoneSequenceId;
-
- void gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
- void putDownGarbageCan(int animationIndex);
- void platEndPhoning(bool platFl);
- void closeHydrantValve();
- void waitForGnapAction();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE18_H
diff --git a/engines/gnap/scenes/scene19.cpp b/engines/gnap/scenes/scene19.cpp
deleted file mode 100644
index cb5cd6d..0000000
--- a/engines/gnap/scenes/scene19.cpp
+++ /dev/null
@@ -1,475 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene19.h"
-
-namespace Gnap {
-
-static const int kS19ShopAssistantSequenceIds[] = {
- 0x6F, 0x70, 0x71, 0x72, 0x73
-};
-
-enum {
- kHSPlatypus = 0,
- kHSExitOutsideToyStore = 1,
- kHSDevice = 2,
- kHSPicture = 3,
- kHSShopAssistant = 4,
- kHSToy1 = 5,
- kHSToy2 = 6,
- kHSToy3 = 7,
- kHSPhone = 8,
- kHSToy4 = 9,
- kHSToy5 = 10,
- kHSToy6 = 11,
- kHSToy7 = 12,
- kHSWalkArea1 = 13,
- kHSWalkArea2 = 14,
- kHSWalkArea3 = 15
-};
-
-enum {
- kASUsePhone = 0,
- kASGrabToy = 1,
- kASGrabPicture = 2,
- kASGrabPictureDone = 3,
- kASTalkShopAssistant = 4,
- kASLeaveScene = 5
-};
-
-Scene19::Scene19(GnapEngine *vm) : Scene(vm) {
- _s19_toyGrabCtr = 0;
- _s19_pictureSurface = 0;
- _s19_shopAssistantCtr = 0;
- _s19_pictureSurface = nullptr;
-}
-
-Scene19::~Scene19() {
- delete _s19_pictureSurface;
-}
-
-int Scene19::init() {
- _vm->playSound(0x79, false);
- return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x77 : 0x76;
Commit: 4edfe094ea91c4a05a71613fc398d1b32851713f
https://github.com/scummvm/scummvm/commit/4edfe094ea91c4a05a71613fc398d1b32851713f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:46+02:00
Commit Message:
GNAP: renaming and grouping of scenes in group 2
Changed paths:
A engines/gnap/scenes/group2.cpp
A engines/gnap/scenes/group2.h
R engines/gnap/scenes/scene20.cpp
R engines/gnap/scenes/scene20.h
R engines/gnap/scenes/scene21.cpp
R engines/gnap/scenes/scene21.h
R engines/gnap/scenes/scene22.cpp
R engines/gnap/scenes/scene22.h
R engines/gnap/scenes/scene23.cpp
R engines/gnap/scenes/scene23.h
R engines/gnap/scenes/scene24.cpp
R engines/gnap/scenes/scene24.h
R engines/gnap/scenes/scene25.cpp
R engines/gnap/scenes/scene25.h
R engines/gnap/scenes/scene26.cpp
R engines/gnap/scenes/scene26.h
R engines/gnap/scenes/scene27.cpp
R engines/gnap/scenes/scene27.h
R engines/gnap/scenes/scene28.cpp
R engines/gnap/scenes/scene28.h
R engines/gnap/scenes/scene29.cpp
R engines/gnap/scenes/scene29.h
engines/gnap/module.mk
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 17dfad4..52d6a5a 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -13,17 +13,8 @@ MODULE_OBJS := \
scenes/groupcs.o \
scenes/group0.o \
scenes/group1.o \
+ scenes/group2.o \
scenes/intro.o \
- scenes/scene20.o \
- scenes/scene21.o \
- scenes/scene22.o \
- scenes/scene23.o \
- scenes/scene24.o \
- scenes/scene25.o \
- scenes/scene26.o \
- scenes/scene27.o \
- scenes/scene28.o \
- scenes/scene29.o \
scenes/scene30.o \
scenes/scene31.o \
scenes/scene32.o \
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
new file mode 100644
index 0000000..0a89b83
--- /dev/null
+++ b/engines/gnap/scenes/group2.cpp
@@ -0,0 +1,3549 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group2.h"
+
+namespace Gnap {
+
+enum {
+ kHS20Platypus = 0,
+ kHS20GroceryStoreHat = 1,
+ kHS20ExitParkingLot = 2,
+ kHS20StonerGuy = 3,
+ kHS20GroceryStoreGuy = 4,
+ kHS20Device = 5,
+ kHS20ExitInsideGrubCity = 6,
+ kHS20ExitOutsideCircusWorld = 7,
+ kHS20ExitOutsideToyStore = 8,
+ kHS20ExitPhone = 9,
+ kHS20WalkArea1 = 10,
+ kHS20WalkArea2 = 11
+};
+
+enum {
+ kAS20LeaveScene = 0,
+ kAS20TalkStonerGuyNoJoint = 2,
+ kAS20TalkStonerGuyHasJoint = 3,
+ kAS20GrabJoint = 4,
+ kAS20ActionDone = 5,
+ kAS20TalkGroceryStoreGuy = 6,
+ kAS20GrabGroceryStoreGuy = 9,
+ kAS20GrabGroceryStoreHat = 10,
+ kAS20SwitchGroceryStoreHat = 11,
+ kAS20SwitchGroceryStoreHatDone = 12,
+ kAS20GrabJointDone = 13
+};
+
+Scene20::Scene20(GnapEngine *vm) : Scene(vm) {
+ _stonerGuyCtr = 3;
+ _stonerGuyShowingJoint = false;
+ _groceryStoreGuyCtr = 0;
+}
+
+int Scene20::init() {
+ return 0x186;
+}
+
+void Scene20::updateHotspots() {
+ _vm->setHotspot(kHS20Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS20GroceryStoreHat, 114, 441, 174, 486, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 7);
+ _vm->setHotspot(kHS20ExitParkingLot, 0, 300, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
+ _vm->setHotspot(kHS20StonerGuy, 276, 290, 386, 450, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHS20GroceryStoreGuy, 123, 282, 258, 462, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS20ExitInsideGrubCity, 519, 250, 581, 413, SF_EXIT_L_CURSOR, 8, 7);
+ _vm->setHotspot(kHS20ExitOutsideCircusWorld, 660, 222, 798, 442, SF_EXIT_NE_CURSOR, 9, 6);
+ _vm->setHotspot(kHS20ExitOutsideToyStore, 785, 350, 800, 600, SF_EXIT_R_CURSOR, 11, 8);
+ _vm->setHotspot(kHS20ExitPhone, 250, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHS20WalkArea1, 0, 0, 800, 468);
+ _vm->setHotspot(kHS20WalkArea2, 605, 0, 800, 600);
+ _vm->setDeviceHotspot(kHS20Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 12;
+}
+
+void Scene20::updateAnimationsCb() {
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ switch (_nextStonerGuySequenceId) {
+ case 0x16B:
+ if (!_vm->_timers[4]) {
+ _stonerGuyShowingJoint = false;
+ _vm->_gameSys->insertSequence(0x16B, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = 0x16B;
+ _nextStonerGuySequenceId = -1;
+ }
+ break;
+ case 0x16A:
+ // Grab joint
+ _vm->playGnapPullOutDevice(4, 4);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x16A, 21, 0);
+ _vm->_gameSys->insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = 0x16A;
+ _nextStonerGuySequenceId = -1;
+ _vm->invAdd(kItemJoint);
+ _vm->setFlag(kGFJointTaken);
+ _stonerGuyShowingJoint = false;
+ _vm->_gnapActionStatus = kAS20GrabJointDone;
+ break;
+ case 0x16E:
+ _vm->_gameSys->setAnimation(0x16E, 21, 2);
+ _vm->_gameSys->insertSequence(0x16E, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = 0x16E;
+ _nextStonerGuySequenceId = -1;
+ _nextGroceryStoreGuySequenceId = 0x175;
+ break;
+ case 0x16D:
+ _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 0);
+ _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = _nextStonerGuySequenceId;
+ _nextStonerGuySequenceId = -1;
+ _vm->_gnapActionStatus = kAS20ActionDone;
+ break;
+ case 0x16F:
+ _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->setAnimation(0x17A, 20, 3);
+ _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17A, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currGroceryStoreGuySequenceId = 0x17A;
+ _nextGroceryStoreGuySequenceId = -1;
+ _currStonerGuySequenceId = _nextStonerGuySequenceId;
+ _nextStonerGuySequenceId = -1;
+ break;
+ case 0x171:
+ _stonerGuyCtr = (_stonerGuyCtr + 1) % 3;
+ switch (_stonerGuyCtr) {
+ case 1:
+ _nextStonerGuySequenceId = 0x171;
+ break;
+ case 2:
+ _nextStonerGuySequenceId = 0x172;
+ break;
+ case 3:
+ _nextStonerGuySequenceId = 0x173;
+ break;
+ default:
+ _nextStonerGuySequenceId = 0x171;
+ break;
+ }
+ _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17C, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0x17C, 20, 3);
+ _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
+ _currGroceryStoreGuySequenceId = 0x17C;
+ _nextGroceryStoreGuySequenceId = -1;
+ _currStonerGuySequenceId = _nextStonerGuySequenceId;
+ _nextStonerGuySequenceId = -1;
+ break;
+ default:
+ _nextStonerGuySequenceId = 0x16C;
+ _vm->_gameSys->setAnimation(0x16C, 21, 2);
+ _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = _nextStonerGuySequenceId;
+ _nextStonerGuySequenceId = -1;
+ break;
+ }
+ }
+}
+
+void Scene20::stopSounds() {
+ _vm->stopSound(0x18E);
+ _vm->stopSound(0x18F);
+ _vm->stopSound(0x190);
+ _vm->stopSound(0x191);
+ _vm->stopSound(0x194);
+ _vm->stopSound(0x195);
+ _vm->stopSound(0x192);
+ _vm->stopSound(0x193);
+ _vm->stopSound(0x196);
+ _vm->stopSound(0x197);
+ _vm->stopSound(0x198);
+ _vm->stopSound(0x199);
+ _vm->stopSound(0x19A);
+}
+
+void Scene20::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(8);
+
+ _stonerGuyShowingJoint = false;
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+
+ _stonerGuyCtr = (_stonerGuyCtr + 1) % 3;
+ switch (_stonerGuyCtr) {
+ case 1:
+ _currStonerGuySequenceId = 0x171;
+ break;
+ case 2:
+ _currStonerGuySequenceId = 0x172;
+ break;
+ case 3:
+ _currStonerGuySequenceId = 0x173;
+ break;
+ }
+
+ _nextStonerGuySequenceId = -1;
+ _vm->_gameSys->setAnimation(_currStonerGuySequenceId, 21, 2);
+ _vm->_gameSys->insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[6] = _vm->getRandom(20) + 30;
+
+ _currGroceryStoreGuySequenceId = 0x17C;
+ _nextGroceryStoreGuySequenceId = -1;
+ _vm->_gameSys->setAnimation(0x17C, 20, 3);
+ _vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[5] = _vm->getRandom(50) + 130;
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFSceneFlag1)) {
+ _vm->clearFlag(kGFSceneFlag1);
+ _vm->endSceneInit();
+ _vm->_gameSys->setAnimation(0x182, 140, 0);
+ _vm->_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ } else {
+ switch (_vm->_prevSceneNum) {
+ case 17:
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ break;
+ case 18:
+ _vm->initGnapPos(11, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ break;
+ case 21:
+ _vm->initGnapPos(-1, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ break;
+ case 22:
+ _vm->initGnapPos(7, 6, kDirBottomRight);
+ _vm->initPlatypusPos(8, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ break;
+ default:
+ _vm->initGnapPos(8, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 6, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ _vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
+ break;
+ }
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+ _vm->testWalk(0, 1, 7, 9, 8, 9);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS20Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS20Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(20);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS20ExitParkingLot:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_stonerGuyShowingJoint)
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 21;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1);
+ _vm->_platypusFacing = kDirUnk4;
+ }
+ break;
+
+ case kHS20ExitPhone:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_stonerGuyShowingJoint)
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 17;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS20ExitOutsideToyStore:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_stonerGuyShowingJoint)
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 18;
+ _vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
+ _vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
+ }
+ break;
+
+ case kHS20ExitInsideGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_stonerGuyShowingJoint)
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 22;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1);
+ _vm->_platypusFacing = kDirUnk4;
+ }
+ break;
+
+ case kHS20ExitOutsideCircusWorld:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_stonerGuyShowingJoint)
+ _vm->_timers[4] = 0;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 24;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS20StonerGuy:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(5, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ if (_stonerGuyShowingJoint)
+ _vm->_gnapActionStatus = kAS20GrabJoint;
+ else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ if (_vm->isFlag(kGFJointTaken))
+ _vm->_gnapActionStatus = kAS20TalkStonerGuyNoJoint;
+ else
+ _vm->_gnapActionStatus = kAS20TalkStonerGuyHasJoint;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS20GroceryStoreGuy:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(2, 3);
+ break;
+ case GRAB_CURSOR:
+ _stonerGuyShowingJoint = false;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS20GrabGroceryStoreGuy;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS20TalkGroceryStoreGuy;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS20GroceryStoreHat:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS20SwitchGroceryStoreHat;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(1, 6);
+ break;
+ case GRAB_CURSOR:
+ _stonerGuyShowingJoint = false;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS20GrabGroceryStoreHat;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS20WalkArea1:
+ case kHS20WalkArea2:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0) {
+ _vm->_hotspots[kHS20WalkArea1]._y2 += 48;
+ _vm->updatePlatypusIdleSequence();
+ _vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
+ }
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
+ _vm->_timers[5] = _vm->getRandom(50) + 130;
+ if (_vm->getRandom(4) != 0)
+ _nextGroceryStoreGuySequenceId = 0x17C;
+ else
+ _nextGroceryStoreGuySequenceId = 0x17A;
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _vm->_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ _vm->_gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ }
+ _vm->playSoundA();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene20::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS20LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS20TalkStonerGuyNoJoint:
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
+ _currGroceryStoreGuySequenceId = 0x17B;
+ _currStonerGuySequenceId = 0x170;
+ _nextGroceryStoreGuySequenceId = -1;
+ _nextStonerGuySequenceId = 0x16E;
+ _vm->_timers[5] = 100;
+ _vm->_timers[6] = 100;
+ break;
+ case kAS20TalkStonerGuyHasJoint:
+ _vm->_gameSys->setAnimation(0x168, 21, 2);
+ _vm->_gameSys->setAnimation(379, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
+ _currGroceryStoreGuySequenceId = 0x17B;
+ _currStonerGuySequenceId = 0x168;
+ _nextGroceryStoreGuySequenceId = -1;
+ _nextStonerGuySequenceId = 0x16B;
+ _vm->_timers[5] = 200;
+ _vm->_timers[6] = 200;
+ _vm->_timers[4] = 100;
+ _stonerGuyShowingJoint = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS20GrabJoint:
+ _nextStonerGuySequenceId = 0x16A;
+ break;
+ case kAS20ActionDone:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS20TalkGroceryStoreGuy:
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
+ _currGroceryStoreGuySequenceId = 0x17B;
+ _currStonerGuySequenceId = 0x170;
+ _groceryStoreGuyCtr = (_groceryStoreGuyCtr + 1) % 2;
+ if (_groceryStoreGuyCtr != 0)
+ _nextGroceryStoreGuySequenceId = 0x176;
+ else
+ _nextGroceryStoreGuySequenceId = 0x177;
+ _vm->_timers[5] = 100;
+ _vm->_timers[6] = 100;
+ break;
+ case kAS20GrabGroceryStoreGuy:
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
+ _currGroceryStoreGuySequenceId = 0x17B;
+ _currStonerGuySequenceId = 0x170;
+ _vm->_timers[5] = 120;
+ _vm->_timers[6] = 120;
+ _nextGroceryStoreGuySequenceId = 0x178;
+ break;
+ case kAS20GrabGroceryStoreHat:
+ _vm->_gameSys->setAnimation(0x170, 21, 2);
+ _vm->_gameSys->setAnimation(0x17B, 20, 3);
+ _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ _vm->stopSound(0x1A1);
+ stopSounds();
+ _currGroceryStoreGuySequenceId = 0x17B;
+ _currStonerGuySequenceId = 0x170;
+ _nextGroceryStoreGuySequenceId = 0x179;
+ break;
+ case kAS20SwitchGroceryStoreHat:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x180, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x180;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->invRemove(kItemCowboyHat);
+ _vm->invAdd(kItemGroceryStoreHat);
+ _vm->_gnapActionStatus = kAS20SwitchGroceryStoreHatDone;
+ break;
+ case kAS20SwitchGroceryStoreHatDone:
+ _vm->_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFGroceryStoreHatTaken);
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0x12C, 255);
+ _vm->_gameSys->setAnimation(0x181, 256, 0);
+ _vm->_gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->setGrabCursorSprite(kItemGroceryStoreHat);
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS20GrabJointDone:
+ _vm->setGrabCursorSprite(kItemJoint);
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_nextGroceryStoreGuySequenceId) {
+ case 0x176:
+ case 0x177:
+ _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
+ _nextGroceryStoreGuySequenceId = -1;
+ _nextStonerGuySequenceId = 0x16D;
+ break;
+ case 0x178:
+ _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->setAnimation(0x17D, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x17D;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gameSys->setAnimation(0x16D, 21, 2);
+ _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = 0x16D;
+ _currGroceryStoreGuySequenceId = 0x178;
+ _nextGroceryStoreGuySequenceId = -1;
+ _nextStonerGuySequenceId = -1;
+ break;
+ case 0x179:
+ _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->setAnimation(0x16D, 21, 0);
+ _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x17E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gameSys->setAnimation(0x16D, 21, 2);
+ _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currStonerGuySequenceId = 0x16D;
+ _currGroceryStoreGuySequenceId = 377;
+ _nextGroceryStoreGuySequenceId = -1;
+ _nextStonerGuySequenceId = -1;
+ _vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
+ break;
+ case 0x17C:
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _nextStonerGuySequenceId = 0x171;
+ break;
+ case 0x17A:
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ _nextStonerGuySequenceId = 0x16F;
+ break;
+ case 0x175:
+ _vm->_gameSys->setAnimation(0x175, 20, 0);
+ _vm->_gameSys->setAnimation(0x175, 20, 3);
+ _vm->_gameSys->insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currGroceryStoreGuySequenceId = 0x175;
+ _nextGroceryStoreGuySequenceId = -1;
+ _vm->_gnapActionStatus = kAS20ActionDone;
+ break;
+ default:
+ if (_nextGroceryStoreGuySequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
+ _nextGroceryStoreGuySequenceId = -1;
+ }
+ break;
+ }
+ }
+
+ updateAnimationsCb();
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS21Platypus = 0,
+ kHS21Banana = 1,
+ kHS21OldLady = 2,
+ kHS21Device = 3,
+ kHS21ExitOutsideGrubCity = 4,
+ kHS21WalkArea1 = 5,
+ kHS21WalkArea2 = 6
+};
+
+enum {
+ kAS21TalkOldLady = 0,
+ kAS21GrabBanana = 1,
+ kAS21GrabBananaDone = 2,
+ kAS21GrabOldLady = 3,
+ kAS21UseHatWithOldLady = 4,
+ kAS21UseHatWithOldLadyDone = 5,
+ kAS21LeaveScene = 6
+};
+
+Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
+ _currOldLadySequenceId = -1;
+ _nextOldLadySequenceId = -1;
+}
+
+int Scene21::init() {
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ return _vm->isFlag(kGFTwigTaken) ? 0x94 : 0x93;
+}
+
+void Scene21::updateHotspots() {
+ _vm->setHotspot(kHS21Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS21Banana, 94, 394, 146, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 6);
+ _vm->setHotspot(kHS21OldLady, 402, 220, 528, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS21ExitOutsideGrubCity, 522, 498, 800, 600, SF_EXIT_SE_CURSOR | SF_WALKABLE, 5, 10);
+ _vm->setHotspot(kHS21WalkArea1, 0, 0, 800, 440);
+ _vm->setHotspot(kHS21WalkArea2, 698, 0, 800, 600);
+ _vm->setDeviceHotspot(kHS21Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk04) || !_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHS21Banana]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->isFlag(kGFTwigTaken))
+ _vm->_hotspots[kHS21OldLady]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene21::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(6);
+
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFTwigTaken)) {
+ if (_vm->isFlag(kGFKeysTaken)) {
+ _vm->initGnapPos(5, 8, kDirBottomRight);
+ _vm->initPlatypusPos(6, 8, kDirNone);
+ _vm->_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->clearFlag(kGFKeysTaken);
+ } else {
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
+ if (!_vm->isFlag(kGFUnk04))
+ _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ }
+ } else {
+ _vm->initGnapPos(5, 11, kDirBottomRight);
+ _vm->initPlatypusPos(6, 11, kDirNone);
+ _currOldLadySequenceId = 0x89;
+ _vm->_gameSys->setAnimation(0x89, 79, 3);
+ _vm->_gameSys->insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
+ _nextOldLadySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS21Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS21Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS21Banana:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(2, 5);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
+ _vm->playGnapPullOutDevice(2, 5);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kAS21GrabBanana;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS21OldLady:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
+ _vm->_newSceneNum = 47;
+ _vm->gnapWalkTo(4, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS21UseHatWithOldLady;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 6, 7, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(7, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS21GrabOldLady;
+ _vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady].x, _vm->_hotspotsWalkPos[kHS21OldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS21TalkOldLady;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS21ExitOutsideGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, 0, 0x107B3, 1);
+ _vm->_gnapActionStatus = kAS21LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS21WalkArea1:
+ case kHS21WalkArea2:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
+ switch (_vm->getRandom(5)) {
+ case 0:
+ _nextOldLadySequenceId = 0x88;
+ break;
+ case 1:
+ _nextOldLadySequenceId = 0x8A;
+ break;
+ default:
+ _nextOldLadySequenceId = 0x89;
+ break;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 100;
+ _vm->_gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundA();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene21::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS21TalkOldLady:
+ _nextOldLadySequenceId = 0x8B;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS21GrabBanana:
+ _vm->_gameSys->setAnimation(0x8C, 59, 0);
+ _vm->_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFUnk04);
+ _vm->invAdd(kItemBanana);
+ updateHotspots();
+ _vm->_gnapActionStatus = kAS21GrabBananaDone;
+ break;
+ case kAS21GrabBananaDone:
+ _vm->setGrabCursorSprite(kItemBanana);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS21GrabOldLady:
+ _vm->_timers[4] = _vm->getRandom(30) + 50;
+ _nextOldLadySequenceId = 0x87;
+ break;
+ case kAS21UseHatWithOldLady:
+ _vm->_gameSys->setAnimation(0x8F, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x8F;
+ _vm->_gnapActionStatus = kAS21UseHatWithOldLadyDone;
+ _vm->invAdd(kItemTickets);
+ _vm->invRemove(kItemGroceryStoreHat);
+ _vm->setGrabCursorSprite(-1);
+ break;
+ case kAS21UseHatWithOldLadyDone:
+ _nextOldLadySequenceId = 0x91;
+ break;
+ case kAS21LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
+ if (_nextOldLadySequenceId == 0x87) {
+ _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
+ _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x86;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = -1;
+ _currOldLadySequenceId = _nextOldLadySequenceId;
+ _nextOldLadySequenceId = -1;
+ } else if (_nextOldLadySequenceId == 0x91) {
+ _vm->_gameSys->setAnimation(0x91, 79, 0);
+ _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS21LeaveScene;
+ _currOldLadySequenceId = _nextOldLadySequenceId;
+ _nextOldLadySequenceId = -1;
+ } else {
+ _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
+ _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ _currOldLadySequenceId = _nextOldLadySequenceId;
+ _nextOldLadySequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS22Platypus = 0,
+ kHS22ExitOutsideGrubCity = 1,
+ kHS22ExitBackGrubCity = 2,
+ kHS22Cashier = 3,
+ kHS22Device = 4,
+ kHS22WalkArea1 = 5,
+ kHS22WalkArea2 = 6
+};
+
+enum {
+ kAS22LeaveScene = 0,
+ kAS22TalkCashier = 1
+};
+
+Scene22::Scene22(GnapEngine *vm) : Scene(vm) {
+ _caughtBefore = false;
+ _cashierCtr = 3;
+}
+
+int Scene22::init() {
+ return 0x5E;
+}
+
+void Scene22::updateHotspots() {
+ _vm->setHotspot(kHS22Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS22ExitOutsideGrubCity, 0, 180, 184, 472, SF_EXIT_L_CURSOR, 3, 6);
+ _vm->setHotspot(kHS22ExitBackGrubCity, 785, 405, 800, 585, SF_EXIT_R_CURSOR, 11, 9);
+ _vm->setHotspot(kHS22Cashier, 578, 230, 660, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS22WalkArea1, 553, 0, 800, 542);
+ _vm->setHotspot(kHS22WalkArea2, 0, 0, 552, 488);
+ _vm->setDeviceHotspot(kHS22Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene22::run() {
+ _vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currCashierSequenceId = 0x59;
+ _nextCashierSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x59, 1, 3);
+ _vm->_gameSys->insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(2, 8, kDirBottomRight);
+ _vm->initPlatypusPos(1, 8, kDirNone);
+ _vm->endSceneInit();
+ } else {
+ _vm->initGnapPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
+ _vm->initPlatypusPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ }
+
+ if (_vm->isFlag(kGFSceneFlag1)) {
+ int storeDetectiveSeqId;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemCereals);
+ if (_caughtBefore) {
+ switch (_vm->getRandom(3)) {
+ case 0:
+ storeDetectiveSeqId = 0x55;
+ break;
+ case 1:
+ storeDetectiveSeqId = 0x56;
+ break;
+ default:
+ storeDetectiveSeqId = 0x57;
+ break;
+ }
+ } else {
+ _caughtBefore = true;
+ storeDetectiveSeqId = 0x54;
+ }
+ _vm->_gameSys->waitForUpdate();
+ _vm->_gameSys->requestClear1();
+ _vm->_gameSys->drawSpriteToBackground(0, 0, 0x44);
+ _vm->_gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
+ _vm->_gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(4) != 2) {
+ _vm->gameUpdateTick();
+ }
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 20;
+ _caughtBefore = true;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS22Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS22Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS22ExitOutsideGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS22LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS22ExitBackGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 23;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS22LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS22Cashier:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 4);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y,
+ 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS22TalkCashier;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapUseDeviceOnPlatypuss();
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS22WalkArea1:
+ case kHS22WalkArea2:
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[6] && _nextCashierSequenceId == -1) {
+ _vm->_timers[6] = _vm->getRandom(30) + 20;
+ if (_vm->getRandom(8) != 0) {
+ _nextCashierSequenceId = 0x59;
+ } else {
+ _cashierCtr = (_cashierCtr + 1) % 3;
+ switch (_cashierCtr) {
+ case 1:
+ _nextCashierSequenceId = 0x58;
+ break;
+ case 2:
+ _nextCashierSequenceId = 0x5A;
+ break;
+ case 3:
+ _nextCashierSequenceId = 0x5B;
+ break;
+ default:
+ _nextCashierSequenceId = 0x58;
+ break;
+ }
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 400;
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene22::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS22LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS22TalkCashier:
+ _nextCashierSequenceId = 0x5C;
+ break;
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextCashierSequenceId, 1, 3);
+ _vm->_gameSys->insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _currCashierSequenceId = _nextCashierSequenceId;
+ _nextCashierSequenceId = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS23Platypus = 0,
+ kHS23ExitFrontGrubCity = 1,
+ kHS23Device = 2,
+ kHS23Cereals = 3,
+ kHS23WalkArea1 = 4,
+ kHS23WalkArea2 = 5
+};
+
+enum {
+ kAS23LookCereals = 0,
+ kAS23GrabCereals = 1,
+ kAS23GrabCerealsDone = 2,
+ kAS23LeaveScene = 3
+};
+
+Scene23::Scene23(GnapEngine *vm) : Scene(vm) {
+ _currStoreClerkSequenceId = -1;
+ _nextStoreClerkSequenceId = -1;
+}
+
+int Scene23::init() {
+ return 0xC0;
+}
+
+void Scene23::updateHotspots() {
+ _vm->setHotspot(kHS23Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS23ExitFrontGrubCity, 0, 250, 15, 550, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
+ _vm->setHotspot(kHS23Cereals, 366, 332, 414, 408, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
+ _vm->setHotspot(kHS23WalkArea1, 0, 0, 340, 460);
+ _vm->setHotspot(kHS23WalkArea2, 340, 0, 800, 501);
+ _vm->setDeviceHotspot(kHS23Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 6;
+}
+
+void Scene23::run() {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+
+ _currStoreClerkSequenceId = 0xB4;
+ _nextStoreClerkSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0xB4, 1, 4);
+ _vm->_gameSys->insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+
+ if (_vm->isFlag(kGFUnk24)) {
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ } else {
+ _vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
+ _vm->setFlag(kGFUnk24);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 3, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS23Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS23Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS23Cereals:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapMoan2(0, 0);
+ else {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS23LookCereals;
+ }
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFSceneFlag1))
+ _vm->playGnapImpossible(0, 0);
+ else {
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->setFlag(kGFSceneFlag1);
+ _vm->_gnapActionStatus = kAS23GrabCereals;
+ _vm->invAdd(kItemCereals);
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS23ExitFrontGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 22;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS23LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS23WalkArea1:
+ case kHS23WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(100) + 200;
+ switch (_vm->getRandom(4)) {
+ case 0:
+ _vm->_gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ case 3:
+ _vm->_gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(100) + 200;
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _vm->playSound(0xCE, false);
+ break;
+ case 1:
+ _vm->playSound(0xD0, false);
+ break;
+ case 2:
+ _vm->playSound(0xCF, false);
+ break;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene23::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS23LookCereals:
+ _vm->showFullScreenSprite(0x48);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS23GrabCereals:
+ _vm->_gameSys->setAnimation(0xBE, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->requestRemoveSequence(0xBF, 2);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0xBE;
+ _vm->_gnapActionStatus = kAS23GrabCerealsDone;
+ break;
+ case kAS23GrabCerealsDone:
+ _vm->setGrabCursorSprite(kItemCereals);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS23LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
+ switch (_vm->getRandom(8)) {
+ case 0:
+ case 1:
+ case 2:
+ _nextStoreClerkSequenceId = 0xB4;
+ break;
+ case 3:
+ case 4:
+ case 5:
+ _nextStoreClerkSequenceId = 0xB5;
+ break;
+ default:
+ _nextStoreClerkSequenceId = 0xB6;
+ break;
+ }
+ _vm->_gameSys->setAnimation(_nextStoreClerkSequenceId, 1, 4);
+ _vm->_gameSys->insertSequence(_nextStoreClerkSequenceId, 1, _currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _currStoreClerkSequenceId = _nextStoreClerkSequenceId;
+ _nextStoreClerkSequenceId = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS24Platypus = 0,
+ kHS24ExitCircusWorld = 1,
+ kHS24ExitOutsideGrubCity = 2,
+ kHS24Device = 3,
+ kHS24WalkArea1 = 4,
+ kHS24WalkArea2 = 5,
+ kHS24WalkArea3 = 6
+};
+
+enum {
+ kAS24LeaveScene = 0
+};
+
+Scene24::Scene24(GnapEngine *vm) : Scene(vm) {
+ _currWomanSequenceId = -1;
+ _nextWomanSequenceId = -1;
+ _boySequenceId = -1;
+ _girlSequenceId = -1;
+}
+
+int Scene24::init() {
+ return 0x3B;
+}
+
+void Scene24::updateHotspots() {
+ _vm->setHotspot(kHS24Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS24ExitCircusWorld, 785, 128, 800, 600, SF_EXIT_R_CURSOR, 8, 7);
+ _vm->setHotspot(kHS24ExitOutsideGrubCity, 0, 213, 91, 600, SF_EXIT_NW_CURSOR, 1, 8);
+ _vm->setHotspot(kHS24WalkArea1, 0, 0, 0, 0);
+ _vm->setHotspot(kHS24WalkArea2, 530, 0, 800, 600);
+ _vm->setHotspot(kHS24WalkArea3, 0, 0, 800, 517);
+ _vm->setDeviceHotspot(kHS24Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene24::run() {
+ int counter = 0;
+
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(9);
+
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+
+ _vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_timers[5] = _vm->getRandom(20) + 40;
+ _vm->_timers[6] = _vm->getRandom(50) + 30;
+
+ _vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currWomanSequenceId = 0x35;
+ _girlSequenceId = 0x36;
+ _boySequenceId = 0x30;
+
+ if (_vm->_debugLevel == 4)
+ _vm->startIdleTimer(8);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum == 20) {
+ _vm->initGnapPos(1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(1, 9, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ } else {
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(8, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+
+ case kHS24Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS24Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS24ExitCircusWorld:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 25;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS24LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS24ExitOutsideGrubCity:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 20;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS24LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS24WalkArea1:
+ case kHS24WalkArea2:
+ case kHS24WalkArea3:
+ if (_vm->_gnapActionStatus == -1)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x10940))
+ _vm->playSound(0x10940, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_gameSys->insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _girlSequenceId = 0x37;
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 40;
+ _vm->_gameSys->insertSequence(0x31, 20, _boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _boySequenceId = 0x31;
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(50) + 30;
+ counter = (counter + 1) % 3;
+ switch (counter) {
+ case 0:
+ _nextWomanSequenceId = 0x32;
+ break;
+ case 1:
+ _nextWomanSequenceId = 0x33;
+ break;
+ case 2:
+ _nextWomanSequenceId = 0x34;
+ break;
+ }
+ _vm->_gameSys->insertSequence(_nextWomanSequenceId, 20, _currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ _currWomanSequenceId = _nextWomanSequenceId;
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 100;
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _vm->_gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 1:
+ _vm->_gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ case 2:
+ _vm->_gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ }
+ }
+ if (_vm->_debugLevel == 4)
+ _vm->updateIdleTimer();
+ _vm->playSoundA();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene24::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kAS24LeaveScene)
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS25Platypus = 0,
+ kHS25TicketVendor = 1,
+ kHS25ExitOutsideCircusWorld = 2,
+ kHS25ExitInsideCircusWorld = 3,
+ kHS25Device = 4,
+ kHS25Posters1 = 5,
+ kHS25Posters2 = 6,
+ kHS25Posters3 = 7,
+ kHS25Posters4 = 8,
+ kHS25WalkArea1 = 9,
+ kHS25WalkArea2 = 10
+};
+
+enum {
+ kAS25TalkTicketVendor = 0,
+ kAS25EnterCircusWihoutTicket = 1,
+ kAS25ShowTicketToVendor = 2,
+ kAS25ShowTicketToVendorDone = 3,
+ kAS25EnterCircusWihoutTicketDone = 4,
+ kAS25LeaveScene = 5
+};
+
+Scene25::Scene25(GnapEngine *vm) : Scene(vm) {
+ _currTicketVendorSequenceId = -1;
+ _nextTicketVendorSequenceId = -1;
+}
+
+int Scene25::init() {
+ return 0x62;
+}
+
+void Scene25::updateHotspots() {
+ _vm->setHotspot(kHS25Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS25TicketVendor, 416, 94, 574, 324, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 5);
+ _vm->setHotspot(kHS25ExitOutsideCircusWorld, 0, 519, 205, 600, SF_EXIT_SW_CURSOR, 5, 10);
+ _vm->setHotspot(kHS25ExitInsideCircusWorld, 321, 70, 388, 350, SF_EXIT_NE_CURSOR, 3, 6);
+ _vm->setHotspot(kHS25Posters1, 0, 170, 106, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHS25Posters2, 146, 192, 254, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
+ _vm->setHotspot(kHS25Posters3, 606, 162, 654, 368, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 7);
+ _vm->setHotspot(kHS25Posters4, 708, 114, 754, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS25WalkArea1, 0, 0, 800, 439);
+ _vm->setHotspot(kHS25WalkArea2, 585, 0, 800, 600);
+ _vm->setDeviceHotspot(kHS25Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene25::playAnims(int index) {
+ if (index > 4)
+ return;
+
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ switch (index) {
+ case 1:
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x25);
+ break;
+ case 2:
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x26);
+ break;
+ case 3:
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x27);
+ break;
+ case 4:
+ _vm->_largeSprite = _vm->_gameSys->createSurface(0x28);
+ break;
+ }
+ _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->delayTicksCursor(5);
+ while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
+ !_vm->isKeyStatus1(29)) {
+ _vm->gameUpdateTick();
+ }
+ _vm->_mouseClickState._left = false;
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ _vm->delayTicksCursor(5);
+ _vm->deleteSurface(&_vm->_largeSprite);
+ _vm->showCursor();
+}
+
+void Scene25::run() {
+ _vm->playSound(0x10940, true);
+ _vm->startSoundTimerA(5);
+
+ _currTicketVendorSequenceId = 0x52;
+ _vm->_gameSys->setAnimation(0x52, 39, 3);
+ _vm->_gameSys->insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+
+ _nextTicketVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->_prevSceneNum == 24) {
+ _vm->initGnapPos(5, 11, kDirUpLeft);
+ _vm->initPlatypusPos(6, 11, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 7, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
+ } else {
+ _vm->initGnapPos(5, 6, kDirBottomRight);
+ _vm->initPlatypusPos(6, 6, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS25Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS25Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS25TicketVendor:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemTickets) {
+ _vm->_gnapActionStatus = kAS25ShowTicketToVendor;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y,
+ 0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
+ _nextTicketVendorSequenceId = 0x5B;
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 1);
+ _nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS25TalkTicketVendor;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS25ExitOutsideCircusWorld:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 24;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, 0, 0x107B4, 1);
+ _vm->_gnapActionStatus = kAS25LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS25ExitInsideCircusWorld:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFNeedleTaken)) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, 0, 0x107B1, 1);
+ _vm->_gnapActionStatus = kAS25LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
+ } else {
+ _vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(4, 5, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicket;
+ _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
+ }
+ }
+ break;
+
+ case kHS25Posters1:
+ case kHS25Posters2:
+ case kHS25Posters3:
+ case kHS25Posters4:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, -1, -1, 1);
+ if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ else if (_vm->_sceneClickedHotspot == 8)
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ else
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->playGnapIdle(0, 0);
+ playAnims(8 - _vm->_sceneClickedHotspot + 1);
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapMoan2(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS25WalkArea1:
+ case kHS25WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ switch (_vm->getRandom(13)) {
+ case 0:
+ _nextTicketVendorSequenceId = 0x54;
+ break;
+ case 1:
+ _nextTicketVendorSequenceId = 0x58;
+ break;
+ case 2:
+ _nextTicketVendorSequenceId = 0x55;
+ break;
+ case 3:
+ _nextTicketVendorSequenceId = 0x5A;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ _nextTicketVendorSequenceId = 0x5B;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ _nextTicketVendorSequenceId = 0x5C;
+ break;
+ case 12:
+ _nextTicketVendorSequenceId = 0x5D;
+ break;
+ default:
+ _nextTicketVendorSequenceId = 0x52;
+ break;
+ }
+ }
+ _vm->playSoundA();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene25::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS25TalkTicketVendor:
+ _nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS25EnterCircusWihoutTicket:
+ _nextTicketVendorSequenceId = 0x5E;
+ _vm->_gameSys->setAnimation(0x5E, 39, 0);
+ _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
+ _currTicketVendorSequenceId = _nextTicketVendorSequenceId;
+ _nextTicketVendorSequenceId = -1;
+ _vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
+ _vm->playGnapIdle(0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1);
+ _vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicketDone;
+ break;
+ case kAS25EnterCircusWihoutTicketDone:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS25ShowTicketToVendor:
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemTickets);
+ _vm->setFlag(kGFNeedleTaken);
+ _vm->_gameSys->setAnimation(0x61, 40, 0);
+ _vm->_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS25ShowTicketToVendorDone;
+ break;
+ case kAS25ShowTicketToVendorDone:
+ _nextTicketVendorSequenceId = 0x53;
+ break;
+ case kAS25LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (_nextTicketVendorSequenceId == 0x53) {
+ _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _currTicketVendorSequenceId = _nextTicketVendorSequenceId;
+ _nextTicketVendorSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextTicketVendorSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _currTicketVendorSequenceId = _nextTicketVendorSequenceId;
+ _nextTicketVendorSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS26Platypus = 0,
+ kHS26ExitOutsideCircusWorld = 1,
+ kHS26ExitOutsideClown = 2,
+ kHS26ExitArcade = 3,
+ kHS26ExitElephant = 4,
+ kHS26ExitBeerStand = 5,
+ kHS26Device = 6,
+ kHS26WalkArea1 = 7,
+ kHS26WalkArea2 = 8
+};
+
+enum {
+ kAS26LeaveScene = 0
+};
+
+Scene26::Scene26(GnapEngine *vm) : Scene(vm) {
+ _currKidSequenceId = -1;
+ _nextKidSequenceId = -1;
+}
+
+int Scene26::init() {
+ return _vm->isFlag(kGFUnk23) ? 0x61 : 0x60;
+}
+
+void Scene26::updateHotspots() {
+ _vm->setHotspot(kHS26Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS26ExitOutsideCircusWorld, 0, 590, 300, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 1, 10);
+ _vm->setHotspot(kHS26ExitOutsideClown, 200, 265, 265, 350, SF_EXIT_U_CURSOR, 3, 8);
+ _vm->setHotspot(kHS26ExitArcade, 0, 295, 150, 400, SF_EXIT_NW_CURSOR, 2, 8);
+ _vm->setHotspot(kHS26ExitElephant, 270, 290, 485, 375, SF_EXIT_U_CURSOR, 5, 8);
+ _vm->setHotspot(kHS26ExitBeerStand, 530, 290, 620, 350, SF_EXIT_NE_CURSOR, 5, 8);
+ _vm->setHotspot(kHS26WalkArea1, 0, 0, 800, 500);
+ _vm->setHotspot(kHS26WalkArea2, 281, 0, 800, 600);
+ _vm->setDeviceHotspot(kHS26Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+}
+
+void Scene26::run() {
+ _vm->startSoundTimerB(7);
+ _vm->playSound(0x1093B, true);
+
+ _currKidSequenceId = 0x5B;
+ _nextKidSequenceId = -1;
+ _vm->_gameSys->setAnimation(0x5B, 160, 3);
+ _vm->_gameSys->insertSequence(_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
+
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ _vm->_timers[4] = _vm->getRandom(20) + 50;
+ _vm->_timers[6] = _vm->getRandom(50) + 100;
+
+ _vm->queueInsertDeviceIcon();
+
+ _vm->_gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 25) {
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ } else {
+ _vm->initGnapPos(2, 8, kDirBottomRight);
+ _vm->initPlatypusPos(3, 8, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS26Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS26Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS26ExitOutsideCircusWorld:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 25;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS26LeaveScene;
+ }
+ break;
+
+ case kHS26ExitOutsideClown:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS26LeaveScene;
+ }
+ break;
+
+ case kHS26ExitArcade:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 29;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS26LeaveScene;
+ }
+ break;
+
+ case kHS26ExitElephant:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 30;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS26LeaveScene;
+ }
+ break;
+
+ case kHS26ExitBeerStand:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 31;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS26LeaveScene;
+ }
+ break;
+
+ case kHS26WalkArea1:
+ case kHS26WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5] && _nextKidSequenceId == -1) {
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ if (_vm->getRandom(5) != 0)
+ _nextKidSequenceId = 0x5B;
+ else
+ _nextKidSequenceId = 0x5A;
+ }
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 130;
+ _vm->_gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[6]) {
+ _vm->_timers[6] = _vm->getRandom(50) + 100;
+ _vm->_gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundB();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene26::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kAS26LeaveScene)
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextKidSequenceId, 160, _currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextKidSequenceId, 160, 3);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS27Platypus = 0,
+ kHS27Janitor = 1,
+ kHS27Device = 2,
+ kHS27Bucket = 3,
+ kHS27ExitCircus = 4,
+ kHS27ExitArcade = 5,
+ kHS27ExitBeerStand = 6,
+ kHS27ExitClown = 7,
+ kHS27WalkArea1 = 8
+};
+
+enum {
+ kAS27TalkJanitor = 0,
+ kAS27GrabBucket = 1,
+ kAS27GrabBucketDone = 2,
+ kAS27ShowPictureToJanitor = 3,
+ kAS27TryEnterClownTent = 4,
+ kAS27TryEnterClownTentDone = 5,
+ kAS27EnterClownTent = 6,
+ kAS27LeaveScene = 7
+};
+
+Scene27::Scene27(GnapEngine *vm) : Scene(vm) {
+ _nextJanitorSequenceId = -1;
+ _currJanitorSequenceId = -1;
+}
+
+int Scene27::init() {
+ return 0xD5;
+}
+
+void Scene27::updateHotspots() {
+ _vm->setHotspot(kHS27Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS27Janitor, 488, 204, 664, 450, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 8);
+ _vm->setHotspot(kHS27Bucket, 129, 406, 186, 453, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 6);
+ _vm->setHotspot(kHS27ExitCircus, 200, 585, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS27ExitArcade, 0, 0, 15, 600, SF_EXIT_L_CURSOR, 0, 6);
+ _vm->setHotspot(kHS27ExitBeerStand, 785, 0, 800, 600, SF_EXIT_R_CURSOR, 11, 7);
+ _vm->setHotspot(kHS27ExitClown, 340, 240, 460, 420, SF_EXIT_U_CURSOR, 6, 8);
+ _vm->setHotspot(kHS27WalkArea1, 0, 0, 800, 507);
+ _vm->setDeviceHotspot(kHS27Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk13))
+ _vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 9;
+}
+
+void Scene27::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(4);
+ _vm->_timers[7] = _vm->getRandom(100) + 300;
+ _vm->queueInsertDeviceIcon();
+
+ if (!_vm->isFlag(kGFUnk13))
+ _vm->_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_debugLevel == 4)
+ _vm->startIdleTimer(6);
+
+ _vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currJanitorSequenceId = 0xCB;
+ _nextJanitorSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0xCB, 39, 3);
+ _vm->_timers[5] = _vm->getRandom(20) + 60;
+
+ switch (_vm->_prevSceneNum) {
+ case 26:
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ break;
+ case 29:
+ _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ break;
+ case 31:
+ _vm->initGnapPos(12, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
+ break;
+ default:
+ _vm->initGnapPos(6, 8, kDirBottomRight);
+ _vm->initPlatypusPos(5, 9, kDirNone);
+ _vm->endSceneInit();
+ break;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->_sceneClickedHotspot = -1;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS27Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS27Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS27Janitor:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemPicture) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, 0x107BC, 1))
+ _vm->_gnapActionStatus = kAS27ShowPictureToJanitor;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 3);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS27TalkJanitor;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS27Bucket:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(3, 3);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS27GrabBucket;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS27ExitCircus:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, -1, 0x107C7, 1);
+ }
+ break;
+
+ case kHS27ExitArcade:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 29;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade].x, _vm->_hotspotsWalkPos[kHS27ExitArcade].y + 1, -1, 0x107CF, 1);
+ }
+ break;
+
+ case kHS27ExitBeerStand:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 31;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand].x, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y + 1, -1, 0x107CD, 1);
+ }
+ break;
+
+ case kHS27ExitClown:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFPlatypus)) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 28;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, _vm->_hotspotsWalkPos[kHS27ExitClown].y, 0, 0x107AD, 1);
+ _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x + 1, _vm->_hotspotsWalkPos[kHS27ExitClown].y, -1, 0x107C4, 1);
+ } else {
+ _vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7, 0, 0x107BC, 1);
+ _vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS27TryEnterClownTent;
+ }
+ }
+ break;
+
+ case kHS27WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (_vm->_debugLevel == 4)
+ _vm->updateIdleTimer();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(3) != 0)
+ _nextJanitorSequenceId = 0xCB;
+ else
+ _nextJanitorSequenceId = 0xCF;
+ }
+ }
+ if (!_vm->_timers[7]) {
+ _vm->_timers[7] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0)
+ _vm->_gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundB();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene27::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS27TalkJanitor:
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _nextJanitorSequenceId = 0xCC;
+ break;
+ case 1:
+ _nextJanitorSequenceId = 0xCD;
+ break;
+ case 2:
+ _nextJanitorSequenceId = 0xCE;
+ break;
+ }
+ break;
+ case kAS27GrabBucket:
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
+ _vm->invAdd(kItemEmptyBucket);
+ _vm->setFlag(kGFUnk13);
+ _vm->_gameSys->setAnimation(0xD2, 39, 0);
+ _vm->_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS27GrabBucketDone;
+ break;
+ case kAS27GrabBucketDone:
+ _vm->setGrabCursorSprite(kItemEmptyBucket);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS27ShowPictureToJanitor:
+ _nextJanitorSequenceId = 0xD0;
+ break;
+ case kAS27TryEnterClownTent:
+ _nextJanitorSequenceId = 0xD1;
+ _vm->_gameSys->insertSequence(0xD1, 39, _currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ _currJanitorSequenceId = _nextJanitorSequenceId;
+ _nextJanitorSequenceId = -1;
+ _vm->_gnapActionStatus = kAS27TryEnterClownTentDone;
+ break;
+ case kAS27TryEnterClownTentDone:
+ _vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
+ _vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS27EnterClownTent:
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107B2, 1);
+ _vm->_gnapActionStatus = kAS27LeaveScene;
+ break;
+ case kAS27LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_nextJanitorSequenceId) {
+ case -1:
+ _nextJanitorSequenceId = 0xCB;
+ _vm->_gameSys->insertSequence(0xCB, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ _currJanitorSequenceId = _nextJanitorSequenceId;
+ _nextJanitorSequenceId = -1;
+ break;
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ _currJanitorSequenceId = _nextJanitorSequenceId;
+ _nextJanitorSequenceId = -1;
+ break;
+ case 0xD0:
+ // Show picture to janitor
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ _vm->_gnapActionStatus = kAS27EnterClownTent;
+ _currJanitorSequenceId = _nextJanitorSequenceId;
+ _nextJanitorSequenceId = -1;
+ _vm->setFlag(kGFPlatypus);
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemPicture);
+ _vm->_newSceneNum = 28;
+ break;
+ default:
+ _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ _currJanitorSequenceId = _nextJanitorSequenceId;
+ _nextJanitorSequenceId = -1;
+ break;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS28Platypus = 0,
+ kHS28Horn = 1,
+ kHS28Clown = 2,
+ kHS28ExitOutsideClown = 3,
+ kHS28EmptyBucket = 4,
+ kHS28Device = 5,
+ kHS28WalkArea1 = 6,
+ kHS28WalkArea2 = 7
+};
+
+enum {
+ kAS28UseBeerBucketWithClown = 0,
+ kAS28UsePillBucketWithClown = 1,
+ kAS28GrabHornFails = 2,
+ kAS28GrabEmptyBucket = 3,
+ kAS28GrabHornSuccess = 4,
+ kAS28GrabHornSuccessDone = 5,
+ kAS28GrabEmptyBucketDone = 6,
+ kAS28GrabHornFailsDone = 7,
+ kAS28TalkClown = 8,
+ kAS28GnapWaiting = 9,
+ kAS28LeaveScene = 10
+};
+
+Scene28::Scene28(GnapEngine *vm) : Scene(vm) {
+ _currClownSequenceId = -1;
+ _nextClownSequenceId = -1;
+ _clownTalkCtr = 0;
+}
+
+int Scene28::init() {
+ return 0x125;
+}
+
+void Scene28::updateHotspots() {
+ _vm->setHotspot(kHS28Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS28Horn, 148, 352, 215, 383, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
+ _vm->setHotspot(kHS28Clown, 130, 250, 285, 413, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
+ _vm->setHotspot(kHS28ExitOutsideClown, 660, 190, 799, 400, SF_EXIT_R_CURSOR, 9, 6);
+ _vm->setHotspot(kHS28EmptyBucket, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
+ _vm->setHotspot(kHS28WalkArea1, 0, 0, 799, 523);
+ _vm->setHotspot(kHS28WalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
+ _vm->setDeviceHotspot(kHS28Device, -1, -1, -1, -1);
+ if (_vm->invHas(kItemHorn))
+ _vm->_hotspots[kHS28Horn]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFUnk22))
+ _vm->_hotspots[kHS28EmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 8;
+}
+
+void Scene28::run() {
+ _vm->playSound(0x1093C, true);
+ _nextClownSequenceId = -1;
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFUnk22))
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFMudTaken)) {
+ if (_vm->isFlag(kGFUnk21)) {
+ _vm->_gameSys->setAnimation(0x11C, 39, 3);
+ _vm->_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
+ if (!_vm->invHas(kItemHorn))
+ _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _currClownSequenceId = 0x11C;
+ } else {
+ _currClownSequenceId = 0x11B;
+ _vm->_gameSys->setAnimation(0x11B, 39, 3);
+ _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
+ }
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->endSceneInit();
+ } else {
+ _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->initGnapPos(8, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->playSequences(0xF7, 0x121, 0x122, 0x123);
+ _currClownSequenceId = 0x115;
+ _vm->setFlag(kGFMudTaken);
+ _vm->_gameSys->setAnimation(0x115, 39, 3);
+ _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
+ _nextClownSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
+ _vm->_gnapActionStatus = kAS28GnapWaiting;
+ while (_vm->_gameSys->getAnimationStatus(3) != 2) {
+ _vm->gameUpdateTick();
+ _vm->updateMouseCursor();
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS28Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS28Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS28Horn:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(2, 8, 3, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(2, 4);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->isFlag(kGFUnk21)) {
+ if (!_vm->invHas(kItemHorn)) {
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS28GrabHornSuccess;
+ }
+ } else {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(2, 8, 0, 0x107BB, 1);
+ _vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y, 0, 0x107BB, 1);
+ _vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS28GrabHornFails;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS28Clown:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->isFlag(kGFUnk21)) {
+ if (_vm->_verbCursor == LOOK_CURSOR)
+ _vm->playGnapScratchingHead(5, 2);
+ else
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kAS28UseBeerBucketWithClown;
+ } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gnapActionStatus = kAS28UsePillBucketWithClown;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(5, 2);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS28TalkClown;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS28ExitOutsideClown:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, 0, 0x107BF, 1);
+ _vm->_gnapActionStatus = kAS28LeaveScene;
+ _vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS28EmptyBucket:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
+ } else if (_vm->isFlag(kGFUnk21)) {
+ _vm->playGnapImpossible(8, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 6);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS28GrabEmptyBucket;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS28WalkArea1:
+ case kHS28WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093C))
+ _vm->playSound(0x1093C, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 80;
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFUnk21))
+ _nextClownSequenceId = 0x114;
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene28::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS28UseBeerBucketWithClown:
+ _vm->setFlag(kGFUnk22);
+ _nextClownSequenceId = 0x113;
+ _vm->invRemove(kItemBucketWithBeer);
+ updateHotspots();
+ break;
+ case kAS28UsePillBucketWithClown:
+ _nextClownSequenceId = 0x116;
+ _vm->invRemove(kItemBucketWithPill);
+ _vm->setFlag(kGFUnk22);
+ _vm->setFlag(kGFUnk21);
+ updateHotspots();
+ break;
+ case kAS28GrabHornFails:
+ _nextClownSequenceId = 0x119;
+ break;
+ case kAS28GrabHornSuccess:
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x117, 59, 0);
+ _vm->_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS28GrabHornSuccessDone;
+ break;
+ case kAS28GrabHornSuccessDone:
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0xF6, 255);
+ _vm->_gameSys->setAnimation(0x120, 256, 0);
+ _vm->_gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->setGrabCursorSprite(kItemHorn);
+ _vm->invAdd(kItemHorn);
+ updateHotspots();
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS28GrabEmptyBucket:
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->setAnimation(0x111, 99, 0);
+ _vm->_gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS28GrabEmptyBucketDone;
+ break;
+ case kAS28GrabEmptyBucketDone:
+ _vm->setGrabCursorSprite(kItemEmptyBucket);
+ _vm->clearFlag(kGFUnk22);;
+ updateHotspots();
+ _vm->invAdd(kItemEmptyBucket);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS28GrabHornFailsDone:
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _currClownSequenceId = 0x11B;
+ _nextClownSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ _vm->gnapWalkTo(2, 8, -1, 0x107BB, 1);
+ break;
+ case kAS28TalkClown:
+ _clownTalkCtr = (_clownTalkCtr + 1) % 2;
+ if (_clownTalkCtr == 0)
+ _nextClownSequenceId = 0x11D;
+ else if (_clownTalkCtr == 1)
+ _nextClownSequenceId = 0x11E;
+ else if (_clownTalkCtr == 2)
+ _nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
+ break;
+ case kAS28GnapWaiting:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS28LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_nextClownSequenceId) {
+ case 0x113:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _currClownSequenceId = 0x11B;
+ _nextClownSequenceId = -1;
+ _vm->_gnapActionStatus = kAS28GnapWaiting;
+ break;
+ case 0x116:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x11C, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ _currClownSequenceId = _nextClownSequenceId;
+ _nextClownSequenceId = -1;
+ _vm->_gnapActionStatus = kAS28GnapWaiting;
+ break;
+ case 0x11D:
+ case 0x11E:
+ case 0x11F:
+ _vm->_gnapActionStatus = -1;
+ break;
+ case 0x119:
+ _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
+ _vm->_gameSys->removeSequence(_currClownSequenceId, 39, true);
+ _vm->_gnapActionStatus = kAS28GrabHornFailsDone;
+ _vm->_gnapSequenceId = _nextClownSequenceId;
+ _vm->_gnapSequenceDatNum = 0;
+ _nextClownSequenceId = -1;
+ break;
+ }
+ if (_nextClownSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 3);
+ _currClownSequenceId = _nextClownSequenceId;
+ _nextClownSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS29Platypus = 0,
+ kHS29Monkey = 1,
+ kHS29Device = 2,
+ kHS29ExitCircus = 3,
+ kHS29ExitOutsideClown = 4,
+ kHS29Aracde = 5,
+ kHS29WalkArea1 = 6
+};
+
+enum {
+ kAS29UseBananaWithMonkey = 0,
+ kAS29LeaveScene = 2
+};
+
+Scene29::Scene29(GnapEngine *vm) : Scene(vm) {
+ _currMonkeySequenceId = -1;
+ _nextMonkeySequenceId = -1;
+ _currManSequenceId = -1;
+ _nextManSequenceId = -1;
+}
+
+int Scene29::init() {
+ return 0xF6;
+}
+
+void Scene29::updateHotspots() {
+ _vm->setHotspot(kHS29Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS29Monkey, 410, 374, 518, 516, SF_WALKABLE | SF_DISABLED, 3, 7);
+ _vm->setHotspot(kHS29ExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS29ExitOutsideClown, 785, 0, 800, 600, SF_EXIT_R_CURSOR | SF_WALKABLE, 11, 9);
+ _vm->setHotspot(kHS29Aracde, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHS29WalkArea1, 0, 0, 800, 478);
+ _vm->setDeviceHotspot(kHS29Device, -1, -1, -1, -1);
+ if (_vm->invHas(kItemHorn))
+ _vm->_hotspots[kHS29Monkey]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene29::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->invHas(kItemHorn)) {
+ _currMonkeySequenceId = 0xE8;
+ _nextMonkeySequenceId = -1;
+ _vm->_gameSys->setAnimation(0xE8, 159, 4);
+ _vm->_gameSys->insertSequence(_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _currManSequenceId = 0xED;
+ _nextManSequenceId = -1;
+ _vm->_gameSys->setAnimation(0xED, 39, 3);
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ } else {
+ _vm->_gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 4);
+ _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+ }
+
+ _vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 27) {
+ _vm->initGnapPos(12, 7, kDirBottomRight);
+ _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ } else {
+ _vm->initGnapPos(-1, 7, kDirBottomRight);
+ _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS29Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS29Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS29Monkey:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemBanana) {
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS29UseBananaWithMonkey;
+ _vm->_newSceneNum = 51;
+ _vm->_isLeavingScene = true;
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(5, 6);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS29ExitCircus:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, -1, -1, 1);
+ }
+ break;
+
+ case kHS29ExitOutsideClown:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y - 1, -1, 0x107CD, 1);
+ }
+ break;
+
+ case kHS29Aracde:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 52;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
+ _vm->_gnapActionStatus = kAS29LeaveScene;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan2(0, 0);
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS29WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->updateGnapIdleSequence();
+ _vm->updatePlatypusIdleSequence();
+ }
+ if (!_vm->_timers[4]) {
+ if (_vm->invHas(kItemHorn)) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0) {
+ switch (_vm->getRandom(5)) {
+ case 0:
+ _nextManSequenceId = 0xED;
+ break;
+ case 1:
+ _nextManSequenceId = 0xEE;
+ break;
+ case 2:
+ _nextManSequenceId = 0xEF;
+ break;
+ case 3:
+ _nextManSequenceId = 0xF0;
+ break;
+ case 4:
+ _nextManSequenceId = 0xF1;
+ break;
+ }
+ }
+ }
+ }
+ _vm->playSoundB();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene29::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS29UseBananaWithMonkey:
+ _nextMonkeySequenceId = 0xE5;
+ break;
+ case kAS29LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextManSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextManSequenceId, 39, _currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextManSequenceId, 39, 3);
+ _currManSequenceId = _nextManSequenceId;
+ _nextManSequenceId = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (_nextMonkeySequenceId == 0xE5) {
+ _vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0xF2;
+ _vm->_gameSys->setAnimation(0xE6, 159, 0);
+ _vm->_gameSys->setAnimation(0, 159, 4);
+ _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = kAS29LeaveScene;
+ _currMonkeySequenceId = 0xE6;
+ _nextMonkeySequenceId = -1;
+ _vm->_timers[5] = 30;
+ while (_vm->_timers[5])
+ _vm->gameUpdateTick();
+ _vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ _vm->gameUpdateTick();
+ } else if (_nextMonkeySequenceId == -1) {
+ switch (_vm->getRandom(6)) {
+ case 0:
+ _nextMonkeySequenceId = 0xE8;
+ break;
+ case 1:
+ _nextMonkeySequenceId = 0xE9;
+ break;
+ case 2:
+ _nextMonkeySequenceId = 0xEA;
+ break;
+ case 3:
+ _nextMonkeySequenceId = 0xEB;
+ break;
+ case 4:
+ _nextMonkeySequenceId = 0xEC;
+ break;
+ case 5:
+ _nextMonkeySequenceId = 0xE7;
+ break;
+ }
+ _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ _currMonkeySequenceId = _nextMonkeySequenceId;
+ _nextMonkeySequenceId = -1;
+ } else {
+ _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ _currMonkeySequenceId = _nextMonkeySequenceId;
+ _nextMonkeySequenceId = -1;
+ }
+ }
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group2.h b/engines/gnap/scenes/group2.h
new file mode 100644
index 0000000..3e84d4d
--- /dev/null
+++ b/engines/gnap/scenes/group2.h
@@ -0,0 +1,211 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP2_H
+#define GNAP_GROUP2_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene20: public Scene {
+public:
+ Scene20(GnapEngine *vm);
+ ~Scene20() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb();
+
+private:
+ int _currStonerGuySequenceId;
+ int _nextStonerGuySequenceId;
+ int _currGroceryStoreGuySequenceId;
+ int _nextGroceryStoreGuySequenceId;
+ int _stonerGuyCtr;
+ int _groceryStoreGuyCtr;
+ bool _stonerGuyShowingJoint;
+
+ void stopSounds();
+};
+
+class Scene21: public Scene {
+public:
+ Scene21(GnapEngine *vm);
+ ~Scene21() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currOldLadySequenceId;
+ int _nextOldLadySequenceId;
+};
+
+class Scene22: public Scene {
+public:
+ Scene22(GnapEngine *vm);
+ ~Scene22() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currCashierSequenceId;
+ int _nextCashierSequenceId;
+ bool _caughtBefore;
+ int _cashierCtr;
+};
+
+class Scene23: public Scene {
+public:
+ Scene23(GnapEngine *vm);
+ ~Scene23() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currStoreClerkSequenceId;
+ int _nextStoreClerkSequenceId;
+};
+
+class Scene24: public Scene {
+public:
+ Scene24(GnapEngine *vm);
+ ~Scene24() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currWomanSequenceId;
+ int _nextWomanSequenceId;
+ int _boySequenceId;
+ int _girlSequenceId;
+};
+
+class Scene25: public Scene {
+public:
+ Scene25(GnapEngine *vm);
+ ~Scene25() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currTicketVendorSequenceId;
+ int _nextTicketVendorSequenceId;
+
+ void playAnims(int index);
+};
+
+class Scene26: public Scene {
+public:
+ Scene26(GnapEngine *vm);
+ ~Scene26() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currKidSequenceId;
+ int _nextKidSequenceId;
+};
+
+class Scene27: public Scene {
+public:
+ Scene27(GnapEngine *vm);
+ ~Scene27() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _nextJanitorSequenceId;
+ int _currJanitorSequenceId;
+};
+
+class Scene28: public Scene {
+public:
+ Scene28(GnapEngine *vm);
+ ~Scene28() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currClownSequenceId;
+ int _nextClownSequenceId;
+ int _clownTalkCtr;
+};
+
+class Scene29: public Scene {
+public:
+ Scene29(GnapEngine *vm);
+ ~Scene29() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currMonkeySequenceId;
+ int _nextMonkeySequenceId;
+ int _currManSequenceId;
+ int _nextManSequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_GROUP1_H
diff --git a/engines/gnap/scenes/scene20.cpp b/engines/gnap/scenes/scene20.cpp
deleted file mode 100644
index c31f622..0000000
--- a/engines/gnap/scenes/scene20.cpp
+++ /dev/null
@@ -1,732 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene20.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSGroceryStoreHat = 1,
- kHSExitParkingLot = 2,
- kHSStonerGuy = 3,
- kHSGroceryStoreGuy = 4,
- kHSDevice = 5,
- kHSExitInsideGrubCity = 6,
- kHSExitOutsideCircusWorld = 7,
- kHSExitOutsideToyStore = 8,
- kHSExitPhone = 9,
- kHSWalkArea1 = 10,
- kHSWalkArea2 = 11
-};
-
-enum {
- kASLeaveScene = 0,
- kASTalkStonerGuyNoJoint = 2,
- kASTalkStonerGuyHasJoint = 3,
- kASGrabJoint = 4,
- kASActionDone = 5,
- kASTalkGroceryStoreGuy = 6,
- kASGrabGroceryStoreGuy = 9,
- kASGrabGroceryStoreHat = 10,
- kASSwitchGroceryStoreHat = 11,
- kASSwitchGroceryStoreHatDone = 12,
- kASGrabJointDone = 13
-};
-
-Scene20::Scene20(GnapEngine *vm) : Scene(vm) {
- _s20_stonerGuyCtr = 3;
- _s20_stonerGuyShowingJoint = false;
- _s20_groceryStoreGuyCtr = 0;
-}
-
-int Scene20::init() {
- return 0x186;
-}
-
-void Scene20::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSGroceryStoreHat, 114, 441, 174, 486, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 7);
- _vm->setHotspot(kHSExitParkingLot, 0, 300, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
- _vm->setHotspot(kHSStonerGuy, 276, 290, 386, 450, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- _vm->setHotspot(kHSGroceryStoreGuy, 123, 282, 258, 462, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHSExitInsideGrubCity, 519, 250, 581, 413, SF_EXIT_L_CURSOR, 8, 7);
- _vm->setHotspot(kHSExitOutsideCircusWorld, 660, 222, 798, 442, SF_EXIT_NE_CURSOR, 9, 6);
- _vm->setHotspot(kHSExitOutsideToyStore, 785, 350, 800, 600, SF_EXIT_R_CURSOR, 11, 8);
- _vm->setHotspot(kHSExitPhone, 250, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 10);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 468);
- _vm->setHotspot(kHSWalkArea2, 605, 0, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 12;
-}
-
-void Scene20::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- switch (_s20_nextStonerGuySequenceId) {
- case 0x16B:
- if (!_vm->_timers[4]) {
- _s20_stonerGuyShowingJoint = false;
- _vm->_gameSys->insertSequence(0x16B, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = 0x16B;
- _s20_nextStonerGuySequenceId = -1;
- }
- break;
- case 0x16A:
- // Grab joint
- _vm->playGnapPullOutDevice(4, 4);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x16A, 21, 0);
- _vm->_gameSys->insertSequence(0x16A, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = 0x16A;
- _s20_nextStonerGuySequenceId = -1;
- _vm->invAdd(kItemJoint);
- _vm->setFlag(kGFJointTaken);
- _s20_stonerGuyShowingJoint = false;
- _vm->_gnapActionStatus = kASGrabJointDone;
- break;
- case 0x16E:
- _vm->_gameSys->setAnimation(0x16E, 21, 2);
- _vm->_gameSys->insertSequence(0x16E, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = 0x16E;
- _s20_nextStonerGuySequenceId = -1;
- _s20_nextGroceryStoreGuySequenceId = 0x175;
- break;
- case 0x16D:
- _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 0);
- _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
- _s20_nextStonerGuySequenceId = -1;
- _vm->_gnapActionStatus = kASActionDone;
- break;
- case 0x16F:
- _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(0x17A, 20, 3);
- _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17A, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s20_currGroceryStoreGuySequenceId = 0x17A;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
- _s20_nextStonerGuySequenceId = -1;
- break;
- case 0x171:
- _s20_stonerGuyCtr = (_s20_stonerGuyCtr + 1) % 3;
- switch (_s20_stonerGuyCtr) {
- case 1:
- _s20_nextStonerGuySequenceId = 0x171;
- break;
- case 2:
- _s20_nextStonerGuySequenceId = 0x172;
- break;
- case 3:
- _s20_nextStonerGuySequenceId = 0x173;
- break;
- default:
- _s20_nextStonerGuySequenceId = 0x171;
- break;
- }
- _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17C, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->setAnimation(_s20_nextStonerGuySequenceId, 21, 2);
- _s20_currGroceryStoreGuySequenceId = 0x17C;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
- _s20_nextStonerGuySequenceId = -1;
- break;
- default:
- _s20_nextStonerGuySequenceId = 0x16C;
- _vm->_gameSys->setAnimation(0x16C, 21, 2);
- _vm->_gameSys->insertSequence(_s20_nextStonerGuySequenceId, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = _s20_nextStonerGuySequenceId;
- _s20_nextStonerGuySequenceId = -1;
- break;
- }
- }
-}
-
-void Scene20::stopSounds() {
- _vm->stopSound(0x18E);
- _vm->stopSound(0x18F);
- _vm->stopSound(0x190);
- _vm->stopSound(0x191);
- _vm->stopSound(0x194);
- _vm->stopSound(0x195);
- _vm->stopSound(0x192);
- _vm->stopSound(0x193);
- _vm->stopSound(0x196);
- _vm->stopSound(0x197);
- _vm->stopSound(0x198);
- _vm->stopSound(0x199);
- _vm->stopSound(0x19A);
-}
-
-void Scene20::run() {
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(8);
-
- _s20_stonerGuyShowingJoint = false;
- _vm->_timers[7] = _vm->getRandom(100) + 100;
-
- _s20_stonerGuyCtr = (_s20_stonerGuyCtr + 1) % 3;
- switch (_s20_stonerGuyCtr) {
- case 1:
- _s20_currStonerGuySequenceId = 0x171;
- break;
- case 2:
- _s20_currStonerGuySequenceId = 0x172;
- break;
- case 3:
- _s20_currStonerGuySequenceId = 0x173;
- break;
- }
-
- _s20_nextStonerGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_s20_currStonerGuySequenceId, 21, 2);
- _vm->_gameSys->insertSequence(_s20_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[6] = _vm->getRandom(20) + 30;
-
- _s20_currGroceryStoreGuySequenceId = 0x17C;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[5] = _vm->getRandom(50) + 130;
- if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFSceneFlag1)) {
- _vm->clearFlag(kGFSceneFlag1);
- _vm->endSceneInit();
- _vm->_gameSys->setAnimation(0x182, 140, 0);
- _vm->_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(11, 9, kDirUnk4);
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
- } else {
- switch (_vm->_prevSceneNum) {
- case 17:
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
- break;
- case 18:
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(11, 9, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
- break;
- case 21:
- _vm->initGnapPos(-1, 8, kDirBottomLeft);
- _vm->initPlatypusPos(-1, 9, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
- break;
- case 22:
- _vm->initGnapPos(7, 6, kDirBottomRight);
- _vm->initPlatypusPos(8, 6, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
- break;
- default:
- _vm->initGnapPos(8, 6, kDirBottomLeft);
- _vm->initPlatypusPos(9, 6, kDirUnk4);
- _vm->endSceneInit();
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- break;
- }
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
- _vm->testWalk(0, 1, 7, 9, 8, 9);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(20);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitParkingLot:
- if (_vm->_gnapActionStatus < 0) {
- if (_s20_stonerGuyShowingJoint)
- _vm->_timers[4] = 0;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 21;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitParkingLot].x, _vm->_hotspotsWalkPos[kHSExitParkingLot].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitParkingLot].x, _vm->_hotspotsWalkPos[kHSExitParkingLot].y + 1, -1, 0x107CF, 1);
- _vm->_platypusFacing = kDirUnk4;
- }
- break;
-
- case kHSExitPhone:
- if (_vm->_gnapActionStatus < 0) {
- if (_s20_stonerGuyShowingJoint)
- _vm->_timers[4] = 0;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPhone].x, _vm->_hotspotsWalkPos[kHSExitPhone].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPhone].x + 1, _vm->_hotspotsWalkPos[kHSExitPhone].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitOutsideToyStore:
- if (_vm->_gnapActionStatus < 0) {
- if (_s20_stonerGuyShowingJoint)
- _vm->_timers[4] = 0;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 18;
- _vm->_hotspots[kHSWalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHSExitOutsideToyStore].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHSExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
- _vm->_hotspots[kHSWalkArea2]._flags &= ~SF_WALKABLE;
- }
- break;
-
- case kHSExitInsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- if (_s20_stonerGuyShowingJoint)
- _vm->_timers[4] = 0;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitInsideGrubCity].y, -1, 0x107C2, 1);
- _vm->_platypusFacing = kDirUnk4;
- }
- break;
-
- case kHSExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
- if (_s20_stonerGuyShowingJoint)
- _vm->_timers[4] = 0;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSStonerGuy:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 5, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(5, 4);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- if (_s20_stonerGuyShowingJoint)
- _vm->_gnapActionStatus = kASGrabJoint;
- else
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSStonerGuy].x, _vm->_hotspotsWalkPos[kHSStonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- if (_vm->isFlag(kGFJointTaken))
- _vm->_gnapActionStatus = kASTalkStonerGuyNoJoint;
- else
- _vm->_gnapActionStatus = kASTalkStonerGuyHasJoint;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSGroceryStoreGuy:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 2, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 3);
- break;
- case GRAB_CURSOR:
- _s20_stonerGuyShowingJoint = false;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabGroceryStoreGuy;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkGroceryStoreGuy;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSGroceryStoreHat:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreHat].x, _vm->_hotspotsWalkPos[kHSGroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASSwitchGroceryStoreHat;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSGroceryStoreHat].x, _vm->_hotspotsWalkPos[kHSGroceryStoreHat].y, 1, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 6);
- break;
- case GRAB_CURSOR:
- _s20_stonerGuyShowingJoint = false;
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSGroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHSGroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabGroceryStoreHat;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10940))
- _vm->playSound(0x10940, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0) {
- _vm->_hotspots[kHSWalkArea1]._y2 += 48;
- _vm->updatePlatypusIdleSequence();
- _vm->_hotspots[kHSWalkArea1]._y2 -= 48;
- }
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->_timers[5] && _s20_nextGroceryStoreGuySequenceId == -1) {
- _vm->_timers[5] = _vm->getRandom(50) + 130;
- if (_vm->getRandom(4) != 0)
- _s20_nextGroceryStoreGuySequenceId = 0x17C;
- else
- _s20_nextGroceryStoreGuySequenceId = 0x17A;
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- switch (_vm->getRandom(3)) {
- case 0:
- _vm->_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- _vm->_gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- }
- _vm->playSoundA();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene20::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASTalkStonerGuyNoJoint:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->stopSound(0x1A1);
- stopSounds();
- _s20_currGroceryStoreGuySequenceId = 0x17B;
- _s20_currStonerGuySequenceId = 0x170;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_nextStonerGuySequenceId = 0x16E;
- _vm->_timers[5] = 100;
- _vm->_timers[6] = 100;
- break;
- case kASTalkStonerGuyHasJoint:
- _vm->_gameSys->setAnimation(0x168, 21, 2);
- _vm->_gameSys->setAnimation(379, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
- _vm->stopSound(0x1A1);
- stopSounds();
- _s20_currGroceryStoreGuySequenceId = 0x17B;
- _s20_currStonerGuySequenceId = 0x168;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_nextStonerGuySequenceId = 0x16B;
- _vm->_timers[5] = 200;
- _vm->_timers[6] = 200;
- _vm->_timers[4] = 100;
- _s20_stonerGuyShowingJoint = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabJoint:
- _s20_nextStonerGuySequenceId = 0x16A;
- break;
- case kASActionDone:
- _vm->_gnapActionStatus = -1;
- break;
- case kASTalkGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->stopSound(0x1A1);
- stopSounds();
- _s20_currGroceryStoreGuySequenceId = 0x17B;
- _s20_currStonerGuySequenceId = 0x170;
- _s20_groceryStoreGuyCtr = (_s20_groceryStoreGuyCtr + 1) % 2;
- if (_s20_groceryStoreGuyCtr != 0)
- _s20_nextGroceryStoreGuySequenceId = 0x176;
- else
- _s20_nextGroceryStoreGuySequenceId = 0x177;
- _vm->_timers[5] = 100;
- _vm->_timers[6] = 100;
- break;
- case kASGrabGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->stopSound(0x1A1);
- stopSounds();
- _s20_currGroceryStoreGuySequenceId = 0x17B;
- _s20_currStonerGuySequenceId = 0x170;
- _vm->_timers[5] = 120;
- _vm->_timers[6] = 120;
- _s20_nextGroceryStoreGuySequenceId = 0x178;
- break;
- case kASGrabGroceryStoreHat:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->stopSound(0x1A1);
- stopSounds();
- _s20_currGroceryStoreGuySequenceId = 0x17B;
- _s20_currStonerGuySequenceId = 0x170;
- _s20_nextGroceryStoreGuySequenceId = 0x179;
- break;
- case kASSwitchGroceryStoreHat:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x180, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x180;
- _vm->_gnapSequenceDatNum = 0;
- _vm->invRemove(kItemCowboyHat);
- _vm->invAdd(kItemGroceryStoreHat);
- _vm->_gnapActionStatus = kASSwitchGroceryStoreHatDone;
- break;
- case kASSwitchGroceryStoreHatDone:
- _vm->_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
- _vm->setFlag(kGFGroceryStoreHatTaken);
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _vm->addFullScreenSprite(0x12C, 255);
- _vm->_gameSys->setAnimation(0x181, 256, 0);
- _vm->_gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->removeFullScreenSprite();
- _vm->showCursor();
- _vm->setGrabCursorSprite(kItemGroceryStoreHat);
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabJointDone:
- _vm->setGrabCursorSprite(kItemJoint);
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- switch (_s20_nextGroceryStoreGuySequenceId) {
- case 0x176:
- case 0x177:
- _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s20_currGroceryStoreGuySequenceId = _s20_nextGroceryStoreGuySequenceId;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_nextStonerGuySequenceId = 0x16D;
- break;
- case 0x178:
- _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x17D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x17D;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = 0x16D;
- _s20_currGroceryStoreGuySequenceId = 0x178;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_nextStonerGuySequenceId = -1;
- break;
- case 0x179:
- _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x16D, 21, 0);
- _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x17E;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _s20_currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s20_currStonerGuySequenceId = 0x16D;
- _s20_currGroceryStoreGuySequenceId = 377;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _s20_nextStonerGuySequenceId = -1;
- _vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
- break;
- case 0x17C:
- _vm->_gameSys->setAnimation(0, 0, 3);
- _s20_nextStonerGuySequenceId = 0x171;
- break;
- case 0x17A:
- _vm->_gameSys->setAnimation(0, 0, 3);
- _s20_nextStonerGuySequenceId = 0x16F;
- break;
- case 0x175:
- _vm->_gameSys->setAnimation(0x175, 20, 0);
- _vm->_gameSys->setAnimation(0x175, 20, 3);
- _vm->_gameSys->insertSequence(0x175, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s20_currGroceryStoreGuySequenceId = 0x175;
- _s20_nextGroceryStoreGuySequenceId = -1;
- _vm->_gnapActionStatus = kASActionDone;
- break;
- default:
- if (_s20_nextGroceryStoreGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_s20_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_s20_nextGroceryStoreGuySequenceId, 20, _s20_currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s20_currGroceryStoreGuySequenceId = _s20_nextGroceryStoreGuySequenceId;
- _s20_nextGroceryStoreGuySequenceId = -1;
- }
- break;
- }
- }
-
- updateAnimationsCb();
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene20.h b/engines/gnap/scenes/scene20.h
deleted file mode 100644
index 7496c87..0000000
--- a/engines/gnap/scenes/scene20.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE20_H
-#define GNAP_SCENE20_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene20: public Scene {
-public:
- Scene20(GnapEngine *vm);
- ~Scene20() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb();
-
-private:
- int _s20_currStonerGuySequenceId;
- int _s20_nextStonerGuySequenceId;
- int _s20_currGroceryStoreGuySequenceId;
- int _s20_nextGroceryStoreGuySequenceId;
- int _s20_stonerGuyCtr;
- int _s20_groceryStoreGuyCtr;
- bool _s20_stonerGuyShowingJoint;
-
- void stopSounds();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE20_H
diff --git a/engines/gnap/scenes/scene21.cpp b/engines/gnap/scenes/scene21.cpp
deleted file mode 100644
index 0e88537..0000000
--- a/engines/gnap/scenes/scene21.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene21.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSBanana = 1,
- kHSOldLady = 2,
- kHSDevice = 3,
- kHSExitOutsideGrubCity = 4,
- kHSWalkArea1 = 5,
- kHSWalkArea2 = 6
-};
-
-enum {
- kASTalkOldLady = 0,
- kASGrabBanana = 1,
- kASGrabBananaDone = 2,
- kASGrabOldLady = 3,
- kASUseHatWithOldLady = 4,
- kASUseHatWithOldLadyDone = 5,
- kASLeaveScene = 6
-};
-
-Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
- _s21_currOldLadySequenceId = -1;
- _s21_nextOldLadySequenceId = -1;
-}
-
-int Scene21::init() {
- _vm->_gameSys->setAnimation(0, 0, 3);
- return _vm->isFlag(kGFTwigTaken) ? 0x94 : 0x93;
-}
-
-void Scene21::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSBanana, 94, 394, 146, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 2, 6);
- _vm->setHotspot(kHSOldLady, 402, 220, 528, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSExitOutsideGrubCity, 522, 498, 800, 600, SF_EXIT_SE_CURSOR | SF_WALKABLE, 5, 10);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 440);
- _vm->setHotspot(kHSWalkArea2, 698, 0, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk04) || !_vm->isFlag(kGFTwigTaken))
- _vm->_hotspots[kHSBanana]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->isFlag(kGFTwigTaken))
- _vm->_hotspots[kHSOldLady]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 7;
-}
-
-void Scene21::run() {
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(6);
-
- _vm->_timers[5] = _vm->getRandom(100) + 100;
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFTwigTaken)) {
- if (_vm->isFlag(kGFKeysTaken)) {
- _vm->initGnapPos(5, 8, kDirBottomRight);
- _vm->initPlatypusPos(6, 8, kDirNone);
- _vm->_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
- if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- _vm->clearFlag(kGFKeysTaken);
- } else {
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
- if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- }
- } else {
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
- _s21_currOldLadySequenceId = 0x89;
- _vm->_gameSys->setAnimation(0x89, 79, 3);
- _vm->_gameSys->insertSequence(_s21_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
- _s21_nextOldLadySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(30) + 50;
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSBanana:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 5);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBanana].x, _vm->_hotspotsWalkPos[kHSBanana].y) | 0x10000, 1);
- _vm->playGnapPullOutDevice(2, 5);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kASGrabBanana;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- break;
- }
- }
- }
- break;
-
- case kHSOldLady:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
- _vm->_newSceneNum = 47;
- _vm->gnapWalkTo(4, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASUseHatWithOldLady;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 6, 7, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 4);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabOldLady;
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSOldLady].x, _vm->_hotspotsWalkPos[kHSOldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkOldLady;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107B3, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10940))
- _vm->playSound(0x10940, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _s21_nextOldLadySequenceId == -1 && _vm->_gnapActionStatus == -1) {
- _vm->_timers[4] = _vm->getRandom(30) + 50;
- switch (_vm->getRandom(5)) {
- case 0:
- _s21_nextOldLadySequenceId = 0x88;
- break;
- case 1:
- _s21_nextOldLadySequenceId = 0x8A;
- break;
- default:
- _s21_nextOldLadySequenceId = 0x89;
- break;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 100;
- _vm->_gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundA();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene21::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASTalkOldLady:
- _s21_nextOldLadySequenceId = 0x8B;
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabBanana:
- _vm->_gameSys->setAnimation(0x8C, 59, 0);
- _vm->_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
- _vm->setFlag(kGFUnk04);
- _vm->invAdd(kItemBanana);
- updateHotspots();
- _vm->_gnapActionStatus = kASGrabBananaDone;
- break;
- case kASGrabBananaDone:
- _vm->setGrabCursorSprite(kItemBanana);
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabOldLady:
- _vm->_timers[4] = _vm->getRandom(30) + 50;
- _s21_nextOldLadySequenceId = 0x87;
- break;
- case kASUseHatWithOldLady:
- _vm->_gameSys->setAnimation(0x8F, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x8F;
- _vm->_gnapActionStatus = kASUseHatWithOldLadyDone;
- _vm->invAdd(kItemTickets);
- _vm->invRemove(kItemGroceryStoreHat);
- _vm->setGrabCursorSprite(-1);
- break;
- case kASUseHatWithOldLadyDone:
- _s21_nextOldLadySequenceId = 0x91;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s21_nextOldLadySequenceId != -1) {
- if (_s21_nextOldLadySequenceId == 0x87) {
- _vm->_gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x86;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- _s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
- _s21_nextOldLadySequenceId = -1;
- } else if (_s21_nextOldLadySequenceId == 0x91) {
- _vm->_gameSys->setAnimation(0x91, 79, 0);
- _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASLeaveScene;
- _s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
- _s21_nextOldLadySequenceId = -1;
- } else {
- _vm->_gameSys->setAnimation(_s21_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_s21_nextOldLadySequenceId, 79, _s21_currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _s21_currOldLadySequenceId = _s21_nextOldLadySequenceId;
- _s21_nextOldLadySequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene21.h b/engines/gnap/scenes/scene21.h
deleted file mode 100644
index ea83e69..0000000
--- a/engines/gnap/scenes/scene21.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE21_H
-#define GNAP_SCENE21_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene21: public Scene {
-public:
- Scene21(GnapEngine *vm);
- ~Scene21() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s21_currOldLadySequenceId;
- int _s21_nextOldLadySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE21_H
diff --git a/engines/gnap/scenes/scene22.cpp b/engines/gnap/scenes/scene22.cpp
deleted file mode 100644
index 494af92..0000000
--- a/engines/gnap/scenes/scene22.cpp
+++ /dev/null
@@ -1,292 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene22.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitOutsideGrubCity = 1,
- kHSExitBackGrubCity = 2,
- kHSCashier = 3,
- kHSDevice = 4,
- kHSWalkArea1 = 5,
- kHSWalkArea2 = 6
-};
-
-enum {
- kASLeaveScene = 0,
- kASTalkCashier = 1
-};
-
-Scene22::Scene22(GnapEngine *vm) : Scene(vm) {
- _s22_caughtBefore = false;
- _s22_cashierCtr = 3;
-}
-
-int Scene22::init() {
- return 0x5E;
-}
-
-void Scene22::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitOutsideGrubCity, 0, 180, 184, 472, SF_EXIT_L_CURSOR, 3, 6);
- _vm->setHotspot(kHSExitBackGrubCity, 785, 405, 800, 585, SF_EXIT_R_CURSOR, 11, 9);
- _vm->setHotspot(kHSCashier, 578, 230, 660, 376, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHSWalkArea1, 553, 0, 800, 542);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 552, 488);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 7;
-}
-
-void Scene22::run() {
- _vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
-
- _s22_currCashierSequenceId = 0x59;
- _s22_nextCashierSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x59, 1, 3);
- _vm->_gameSys->insertSequence(_s22_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[6] = _vm->getRandom(30) + 20;
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(2, 8, kDirBottomRight);
- _vm->initPlatypusPos(1, 8, kDirNone);
- _vm->endSceneInit();
- } else {
- _vm->initGnapPos(11, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y, kDirBottomRight);
- _vm->initPlatypusPos(11, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y + 1, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
- }
-
- if (_vm->isFlag(kGFSceneFlag1)) {
- int storeDetectiveSeqId;
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemCereals);
- if (_s22_caughtBefore) {
- switch (_vm->getRandom(3)) {
- case 0:
- storeDetectiveSeqId = 0x55;
- break;
- case 1:
- storeDetectiveSeqId = 0x56;
- break;
- default:
- storeDetectiveSeqId = 0x57;
- break;
- }
- } else {
- _s22_caughtBefore = true;
- storeDetectiveSeqId = 0x54;
- }
- _vm->_gameSys->waitForUpdate();
- _vm->_gameSys->requestClear1();
- _vm->_gameSys->drawSpriteToBackground(0, 0, 0x44);
- _vm->_gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
- _vm->_gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2) {
- _vm->gameUpdateTick();
- }
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 20;
- _s22_caughtBefore = true;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitBackGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 23;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHSExitBackGrubCity].y + 1, -1, 0x107C2, 1);
- }
- break;
-
- case kHSCashier:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCashier].x, _vm->_hotspotsWalkPos[kHSCashier].y, 8, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCashier].x, _vm->_hotspotsWalkPos[kHSCashier].y,
- 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkCashier;
- break;
- case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[6] && _s22_nextCashierSequenceId == -1) {
- _vm->_timers[6] = _vm->getRandom(30) + 20;
- if (_vm->getRandom(8) != 0) {
- _s22_nextCashierSequenceId = 0x59;
- } else {
- _s22_cashierCtr = (_s22_cashierCtr + 1) % 3;
- switch (_s22_cashierCtr) {
- case 1:
- _s22_nextCashierSequenceId = 0x58;
- break;
- case 2:
- _s22_nextCashierSequenceId = 0x5A;
- break;
- case 3:
- _s22_nextCashierSequenceId = 0x5B;
- break;
- default:
- _s22_nextCashierSequenceId = 0x58;
- break;
- }
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[2] = _vm->getRandom(30) + 20;
- _vm->_timers[3] = 400;
- _vm->_timers[1] = _vm->getRandom(20) + 30;
- _vm->_timers[0] = _vm->getRandom(75) + 75;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene22::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASTalkCashier:
- _s22_nextCashierSequenceId = 0x5C;
- break;
- }
- _vm->_gnapActionStatus = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s22_nextCashierSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s22_nextCashierSequenceId, 1, 3);
- _vm->_gameSys->insertSequence(_s22_nextCashierSequenceId, 1, _s22_currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _s22_currCashierSequenceId = _s22_nextCashierSequenceId;
- _s22_nextCashierSequenceId = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene22.h b/engines/gnap/scenes/scene22.h
deleted file mode 100644
index 44afa10..0000000
--- a/engines/gnap/scenes/scene22.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE22_H
-#define GNAP_SCENE22_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene22: public Scene {
-public:
- Scene22(GnapEngine *vm);
- ~Scene22() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s22_currCashierSequenceId;
- int _s22_nextCashierSequenceId;
- bool _s22_caughtBefore;
- int _s22_cashierCtr;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE22_H
diff --git a/engines/gnap/scenes/scene23.cpp b/engines/gnap/scenes/scene23.cpp
deleted file mode 100644
index 75838f4..0000000
--- a/engines/gnap/scenes/scene23.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene23.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitFrontGrubCity = 1,
- kHSDevice = 2,
- kHSCereals = 3,
- kHSWalkArea1 = 4,
- kHSWalkArea2 = 5
-};
-
-enum {
- kASLookCereals = 0,
- kASGrabCereals = 1,
- kASGrabCerealsDone = 2,
- kASLeaveScene = 3
-};
-
-Scene23::Scene23(GnapEngine *vm) : Scene(vm) {
- _s23_currStoreClerkSequenceId = -1;
- _s23_nextStoreClerkSequenceId = -1;
-}
-
-int Scene23::init() {
- return 0xC0;
-}
-
-void Scene23::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitFrontGrubCity, 0, 250, 15, 550, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 7);
- _vm->setHotspot(kHSCereals, 366, 332, 414, 408, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 340, 460);
- _vm->setHotspot(kHSWalkArea2, 340, 0, 800, 501);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 6;
-}
-
-void Scene23::run() {
- _vm->_timers[4] = _vm->getRandom(100) + 200;
- _vm->_timers[5] = _vm->getRandom(100) + 200;
-
- _s23_currStoreClerkSequenceId = 0xB4;
- _s23_nextStoreClerkSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0xB4, 1, 4);
- _vm->_gameSys->insertSequence(_s23_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->queueInsertDeviceIcon();
-
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 7, kDirNone);
- _vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
-
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
-
- if (_vm->isFlag(kGFUnk24)) {
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
- } else {
- _vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
- _vm->setFlag(kGFUnk24);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 3, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSCereals:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y, 5, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapMoan2(0, 0);
- else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASLookCereals;
- }
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapImpossible(0, 0);
- else {
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSCereals].x, _vm->_hotspotsWalkPos[kHSCereals].y,
- 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->setFlag(kGFSceneFlag1);
- _vm->_gnapActionStatus = kASGrabCereals;
- _vm->invAdd(kItemCereals);
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitFrontGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHSExitFrontGrubCity].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHSExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4] && _vm->_gnapActionStatus == -1) {
- _vm->_timers[4] = _vm->getRandom(100) + 200;
- switch (_vm->getRandom(4)) {
- case 0:
- _vm->_gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- case 3:
- _vm->_gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(100) + 200;
- switch (_vm->getRandom(3)) {
- case 0:
- _vm->playSound(0xCE, false);
- break;
- case 1:
- _vm->playSound(0xD0, false);
- break;
- case 2:
- _vm->playSound(0xCF, false);
- break;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene23::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLookCereals:
- _vm->showFullScreenSprite(0x48);
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabCereals:
- _vm->_gameSys->setAnimation(0xBE, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0xBF, 2);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0xBE;
- _vm->_gnapActionStatus = kASGrabCerealsDone;
- break;
- case kASGrabCerealsDone:
- _vm->setGrabCursorSprite(kItemCereals);
- _vm->_gnapActionStatus = -1;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _s23_nextStoreClerkSequenceId == -1) {
- switch (_vm->getRandom(8)) {
- case 0:
- case 1:
- case 2:
- _s23_nextStoreClerkSequenceId = 0xB4;
- break;
- case 3:
- case 4:
- case 5:
- _s23_nextStoreClerkSequenceId = 0xB5;
- break;
- default:
- _s23_nextStoreClerkSequenceId = 0xB6;
- break;
- }
- _vm->_gameSys->setAnimation(_s23_nextStoreClerkSequenceId, 1, 4);
- _vm->_gameSys->insertSequence(_s23_nextStoreClerkSequenceId, 1, _s23_currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _s23_currStoreClerkSequenceId = _s23_nextStoreClerkSequenceId;
- _s23_nextStoreClerkSequenceId = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene23.h b/engines/gnap/scenes/scene23.h
deleted file mode 100644
index 73543c9..0000000
--- a/engines/gnap/scenes/scene23.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE23_H
-#define GNAP_SCENE23_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene23: public Scene {
-public:
- Scene23(GnapEngine *vm);
- ~Scene23() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s23_currStoreClerkSequenceId;
- int _s23_nextStoreClerkSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE23_H
diff --git a/engines/gnap/scenes/scene24.cpp b/engines/gnap/scenes/scene24.cpp
deleted file mode 100644
index d7959d0..0000000
--- a/engines/gnap/scenes/scene24.cpp
+++ /dev/null
@@ -1,262 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene24.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitCircusWorld = 1,
- kHSExitOutsideGrubCity = 2,
- kHSDevice = 3,
- kHSWalkArea1 = 4,
- kHSWalkArea2 = 5,
- kHSWalkArea3 = 6
-};
-
-enum {
- kASLeaveScene = 0
-};
-
-Scene24::Scene24(GnapEngine *vm) : Scene(vm) {
- _s24_currWomanSequenceId = -1;
- _s24_nextWomanSequenceId = -1;
- _s24_boySequenceId = -1;
- _s24_girlSequenceId = -1;
-}
-
-int Scene24::init() {
- return 0x3B;
-}
-
-void Scene24::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitCircusWorld, 785, 128, 800, 600, SF_EXIT_R_CURSOR, 8, 7);
- _vm->setHotspot(kHSExitOutsideGrubCity, 0, 213, 91, 600, SF_EXIT_NW_CURSOR, 1, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 0, 0);
- _vm->setHotspot(kHSWalkArea2, 530, 0, 800, 600);
- _vm->setHotspot(kHSWalkArea3, 0, 0, 800, 517);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 7;
-}
-
-void Scene24::run() {
- int counter = 0;
-
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(9);
-
- _vm->_timers[7] = _vm->getRandom(100) + 100;
-
- _vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[4] = _vm->getRandom(20) + 50;
- _vm->_timers[5] = _vm->getRandom(20) + 40;
- _vm->_timers[6] = _vm->getRandom(50) + 30;
-
- _vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
-
- _s24_currWomanSequenceId = 0x35;
- _s24_girlSequenceId = 0x36;
- _s24_boySequenceId = 0x30;
-
- if (_vm->_debugLevel == 4)
- _vm->startIdleTimer(8);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(1, 8, kDirBottomRight);
- _vm->initPlatypusPos(2, 8, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(1, 9, -1, 0x107B9, 1);
- _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
- } else {
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(8, 8, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
-
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 25;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitCircusWorld].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitCircusWorld].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 20;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideGrubCity].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- if (_vm->_gnapActionStatus == -1)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x10940))
- _vm->playSound(0x10940, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 50;
- _vm->_gameSys->insertSequence(0x37, 20, _s24_girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s24_girlSequenceId = 0x37;
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(20) + 40;
- _vm->_gameSys->insertSequence(0x31, 20, _s24_boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s24_boySequenceId = 0x31;
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(50) + 30;
- counter = (counter + 1) % 3;
- switch (counter) {
- case 0:
- _s24_nextWomanSequenceId = 0x32;
- break;
- case 1:
- _s24_nextWomanSequenceId = 0x33;
- break;
- case 2:
- _s24_nextWomanSequenceId = 0x34;
- break;
- }
- _vm->_gameSys->insertSequence(_s24_nextWomanSequenceId, 20, _s24_currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _s24_currWomanSequenceId = _s24_nextWomanSequenceId;
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(100) + 100;
- switch (_vm->getRandom(3)) {
- case 0:
- _vm->_gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 1:
- _vm->_gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- case 2:
- _vm->_gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
- break;
- }
- }
- if (_vm->_debugLevel == 4)
- _vm->updateIdleTimer();
- _vm->playSoundA();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene24::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kASLeaveScene)
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- }
-
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene24.h b/engines/gnap/scenes/scene24.h
deleted file mode 100644
index ea6d694..0000000
--- a/engines/gnap/scenes/scene24.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE24_H
-#define GNAP_SCENE24_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene24: public Scene {
-public:
- Scene24(GnapEngine *vm);
- ~Scene24() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s24_currWomanSequenceId;
- int _s24_nextWomanSequenceId;
- int _s24_boySequenceId;
- int _s24_girlSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE24_H
diff --git a/engines/gnap/scenes/scene25.cpp b/engines/gnap/scenes/scene25.cpp
deleted file mode 100644
index 4731f72..0000000
--- a/engines/gnap/scenes/scene25.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene25.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSTicketVendor = 1,
- kHSExitOutsideCircusWorld = 2,
- kHSExitInsideCircusWorld = 3,
- kHSDevice = 4,
- kHSPosters1 = 5,
- kHSPosters2 = 6,
- kHSPosters3 = 7,
- kHSPosters4 = 8,
- kHSWalkArea1 = 9,
- kHSWalkArea2 = 10
-};
-
-enum {
- kASTalkTicketVendor = 0,
- kASEnterCircusWihoutTicket = 1,
- kASShowTicketToVendor = 2,
- kASShowTicketToVendorDone = 3,
- kASEnterCircusWihoutTicketDone = 4,
- kASLeaveScene = 5
-};
-
-Scene25::Scene25(GnapEngine *vm) : Scene(vm) {
- _s25_currTicketVendorSequenceId = -1;
- _s25_nextTicketVendorSequenceId = -1;
-}
-
-int Scene25::init() {
- return 0x62;
-}
-
-void Scene25::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSTicketVendor, 416, 94, 574, 324, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 5);
- _vm->setHotspot(kHSExitOutsideCircusWorld, 0, 519, 205, 600, SF_EXIT_SW_CURSOR, 5, 10);
- _vm->setHotspot(kHSExitInsideCircusWorld, 321, 70, 388, 350, SF_EXIT_NE_CURSOR, 3, 6);
- _vm->setHotspot(kHSPosters1, 0, 170, 106, 326, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- _vm->setHotspot(kHSPosters2, 146, 192, 254, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 7);
- _vm->setHotspot(kHSPosters3, 606, 162, 654, 368, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 7);
- _vm->setHotspot(kHSPosters4, 708, 114, 754, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 439);
- _vm->setHotspot(kHSWalkArea2, 585, 0, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 11;
-}
-
-void Scene25::playAnims(int index) {
- if (index > 4)
- return;
-
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- switch (index) {
- case 1:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x25);
- break;
- case 2:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x26);
- break;
- case 3:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x27);
- break;
- case 4:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x28);
- break;
- }
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->delayTicksCursor(5);
- while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
- !_vm->isKeyStatus1(29)) {
- _vm->gameUpdateTick();
- }
- _vm->_mouseClickState._left = false;
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(29);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
- _vm->delayTicksCursor(5);
- _vm->deleteSurface(&_vm->_largeSprite);
- _vm->showCursor();
-}
-
-void Scene25::run() {
- _vm->playSound(0x10940, true);
- _vm->startSoundTimerA(5);
-
- _s25_currTicketVendorSequenceId = 0x52;
- _vm->_gameSys->setAnimation(0x52, 39, 3);
- _vm->_gameSys->insertSequence(_s25_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
-
- _s25_nextTicketVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(20) + 20;
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->_prevSceneNum == 24) {
- _vm->initGnapPos(5, 11, kDirUpLeft);
- _vm->initPlatypusPos(6, 11, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 7, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
- } else {
- _vm->initGnapPos(5, 6, kDirBottomRight);
- _vm->initPlatypusPos(6, 6, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSTicketVendor:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemTickets) {
- _vm->_gnapActionStatus = kASShowTicketToVendor;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y,
- 0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y, 6, 1);
- _s25_nextTicketVendorSequenceId = 0x5B;
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 1);
- _s25_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSTicketVendor].x, _vm->_hotspotsWalkPos[kHSTicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkTicketVendor;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107B4, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSExitInsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFNeedleTaken)) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 26;
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].y, 0, 0x107B1, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHSExitInsideCircusWorld].y, -1, 0x107C2, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- } else {
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(4, 5, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASEnterCircusWihoutTicket;
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- }
- }
- break;
-
- case kHSPosters1:
- case kHSPosters2:
- case kHSPosters3:
- case kHSPosters4:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, -1, -1, 1);
- if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
- _vm->_gnapIdleFacing = kDirUpLeft;
- else if (_vm->_sceneClickedHotspot == 8)
- _vm->_gnapIdleFacing = kDirBottomRight;
- else
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->playGnapIdle(0, 0);
- playAnims(8 - _vm->_sceneClickedHotspot + 1);
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapMoan2(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4] && _s25_nextTicketVendorSequenceId == -1 && _vm->_gnapActionStatus == -1) {
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- switch (_vm->getRandom(13)) {
- case 0:
- _s25_nextTicketVendorSequenceId = 0x54;
- break;
- case 1:
- _s25_nextTicketVendorSequenceId = 0x58;
- break;
- case 2:
- _s25_nextTicketVendorSequenceId = 0x55;
- break;
- case 3:
- _s25_nextTicketVendorSequenceId = 0x5A;
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- _s25_nextTicketVendorSequenceId = 0x5B;
- break;
- case 8:
- case 9:
- case 10:
- case 11:
- _s25_nextTicketVendorSequenceId = 0x5C;
- break;
- case 12:
- _s25_nextTicketVendorSequenceId = 0x5D;
- break;
- default:
- _s25_nextTicketVendorSequenceId = 0x52;
- break;
- }
- }
- _vm->playSoundA();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene25::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASTalkTicketVendor:
- _s25_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
- _vm->_gnapActionStatus = -1;
- break;
- case kASEnterCircusWihoutTicket:
- _s25_nextTicketVendorSequenceId = 0x5E;
- _vm->_gameSys->setAnimation(0x5E, 39, 0);
- _vm->_gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
- _s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
- _s25_nextTicketVendorSequenceId = -1;
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->playGnapIdle(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASEnterCircusWihoutTicketDone;
- break;
- case kASEnterCircusWihoutTicketDone:
- _vm->_gnapActionStatus = -1;
- break;
- case kASShowTicketToVendor:
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemTickets);
- _vm->setFlag(kGFNeedleTaken);
- _vm->_gameSys->setAnimation(0x61, 40, 0);
- _vm->_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = kASShowTicketToVendorDone;
- break;
- case kASShowTicketToVendorDone:
- _s25_nextTicketVendorSequenceId = 0x53;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- if (_s25_nextTicketVendorSequenceId == 0x53) {
- _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
- _s25_nextTicketVendorSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- } else if (_s25_nextTicketVendorSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s25_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_s25_nextTicketVendorSequenceId, 39, _s25_currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s25_currTicketVendorSequenceId = _s25_nextTicketVendorSequenceId;
- _s25_nextTicketVendorSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene25.h b/engines/gnap/scenes/scene25.h
deleted file mode 100644
index 72df792..0000000
--- a/engines/gnap/scenes/scene25.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE25_H
-#define GNAP_SCENE25_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene25: public Scene {
-public:
- Scene25(GnapEngine *vm);
- ~Scene25() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s25_currTicketVendorSequenceId;
- int _s25_nextTicketVendorSequenceId;
-
- void playAnims(int index);
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE25_H
diff --git a/engines/gnap/scenes/scene26.cpp b/engines/gnap/scenes/scene26.cpp
deleted file mode 100644
index a807596..0000000
--- a/engines/gnap/scenes/scene26.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene26.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitOutsideCircusWorld = 1,
- kHSExitOutsideClown = 2,
- kHSExitArcade = 3,
- kHSExitElephant = 4,
- kHSExitBeerStand = 5,
- kHSDevice = 6,
- kHSWalkArea1 = 7,
- kHSWalkArea2 = 8
-};
-
-enum {
- kASLeaveScene = 0
-};
-
-Scene26::Scene26(GnapEngine *vm) : Scene(vm) {
- _s26_currKidSequenceId = -1;
- _s26_nextKidSequenceId = -1;
-}
-
-int Scene26::init() {
- return _vm->isFlag(kGFUnk23) ? 0x61 : 0x60;
-}
-
-void Scene26::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitOutsideCircusWorld, 0, 590, 300, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 1, 10);
- _vm->setHotspot(kHSExitOutsideClown, 200, 265, 265, 350, SF_EXIT_U_CURSOR, 3, 8);
- _vm->setHotspot(kHSExitArcade, 0, 295, 150, 400, SF_EXIT_NW_CURSOR, 2, 8);
- _vm->setHotspot(kHSExitElephant, 270, 290, 485, 375, SF_EXIT_U_CURSOR, 5, 8);
- _vm->setHotspot(kHSExitBeerStand, 530, 290, 620, 350, SF_EXIT_NE_CURSOR, 5, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 500);
- _vm->setHotspot(kHSWalkArea2, 281, 0, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 9;
-}
-
-void Scene26::run() {
- _vm->startSoundTimerB(7);
- _vm->playSound(0x1093B, true);
-
- _s26_currKidSequenceId = 0x5B;
- _s26_nextKidSequenceId = -1;
- _vm->_gameSys->setAnimation(0x5B, 160, 3);
- _vm->_gameSys->insertSequence(_s26_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
-
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- _vm->_timers[4] = _vm->getRandom(20) + 50;
- _vm->_timers[6] = _vm->getRandom(50) + 100;
-
- _vm->queueInsertDeviceIcon();
-
- _vm->_gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 25) {
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- } else {
- _vm->initGnapPos(2, 8, kDirBottomRight);
- _vm->initPlatypusPos(3, 8, kDirNone);
- _vm->endSceneInit();
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 25;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideCircusWorld].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- }
- break;
-
- case kHSExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 27;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- }
- break;
-
- case kHSExitArcade:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 29;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitArcade].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- }
- break;
-
- case kHSExitElephant:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 30;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- }
- break;
-
- case kHSExitBeerStand:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 31;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093B))
- _vm->playSound(0x1093B, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[5] && _s26_nextKidSequenceId == -1) {
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- if (_vm->getRandom(5) != 0)
- _s26_nextKidSequenceId = 0x5B;
- else
- _s26_nextKidSequenceId = 0x5A;
- }
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 130;
- _vm->_gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[6]) {
- _vm->_timers[6] = _vm->getRandom(50) + 100;
- _vm->_gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundB();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene26::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kASLeaveScene)
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s26_nextKidSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s26_nextKidSequenceId, 160, _s26_currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s26_nextKidSequenceId, 160, 3);
- _s26_currKidSequenceId = _s26_nextKidSequenceId;
- _s26_nextKidSequenceId = -1;
- }
-
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene26.h b/engines/gnap/scenes/scene26.h
deleted file mode 100644
index a29b0d8..0000000
--- a/engines/gnap/scenes/scene26.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE26_H
-#define GNAP_SCENE26_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene26: public Scene {
-public:
- Scene26(GnapEngine *vm);
- ~Scene26() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s26_currKidSequenceId;
- int _s26_nextKidSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE26_H
diff --git a/engines/gnap/scenes/scene27.cpp b/engines/gnap/scenes/scene27.cpp
deleted file mode 100644
index c2c3298..0000000
--- a/engines/gnap/scenes/scene27.cpp
+++ /dev/null
@@ -1,421 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene27.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSJanitor = 1,
- kHSDevice = 2,
- kHSBucket = 3,
- kHSExitCircus = 4,
- kHSExitArcade = 5,
- kHSExitBeerStand = 6,
- kHSExitClown = 7,
- kHSWalkArea1 = 8
-};
-
-enum {
- kASTalkJanitor = 0,
- kASGrabBucket = 1,
- kASGrabBucketDone = 2,
- kASShowPictureToJanitor = 3,
- kASTryEnterClownTent = 4,
- kASTryEnterClownTentDone = 5,
- kASEnterClownTent = 6,
- kASLeaveScene = 7
-};
-
-Scene27::Scene27(GnapEngine *vm) : Scene(vm) {
- _s27_nextJanitorSequenceId = -1;
- _s27_currJanitorSequenceId = -1;
-}
-
-int Scene27::init() {
- return 0xD5;
-}
-
-void Scene27::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSJanitor, 488, 204, 664, 450, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 8);
- _vm->setHotspot(kHSBucket, 129, 406, 186, 453, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 6);
- _vm->setHotspot(kHSExitCircus, 200, 585, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitArcade, 0, 0, 15, 600, SF_EXIT_L_CURSOR, 0, 6);
- _vm->setHotspot(kHSExitBeerStand, 785, 0, 800, 600, SF_EXIT_R_CURSOR, 11, 7);
- _vm->setHotspot(kHSExitClown, 340, 240, 460, 420, SF_EXIT_U_CURSOR, 6, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 507);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk13))
- _vm->_hotspots[kHSBucket]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 9;
-}
-
-void Scene27::run() {
- _vm->playSound(0x1093B, true);
- _vm->startSoundTimerB(4);
- _vm->_timers[7] = _vm->getRandom(100) + 300;
- _vm->queueInsertDeviceIcon();
-
- if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_debugLevel == 4)
- _vm->startIdleTimer(6);
-
- _vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
-
- _s27_currJanitorSequenceId = 0xCB;
- _s27_nextJanitorSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0xCB, 39, 3);
- _vm->_timers[5] = _vm->getRandom(20) + 60;
-
- switch (_vm->_prevSceneNum) {
- case 26:
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- break;
- case 29:
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-1, 9, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
- break;
- case 31:
- _vm->initGnapPos(12, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 9, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
- break;
- default:
- _vm->initGnapPos(6, 8, kDirBottomRight);
- _vm->initPlatypusPos(5, 9, kDirNone);
- _vm->endSceneInit();
- break;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
- _vm->_sceneClickedHotspot = -1;
- if (_vm->_gnapActionStatus < 0)
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSJanitor:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemPicture) {
- _vm->_gnapIdleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 0, 0x107BC, 1))
- _vm->_gnapActionStatus = kASShowPictureToJanitor;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 7, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 3);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSJanitor].x, _vm->_hotspotsWalkPos[kHSJanitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkJanitor;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSBucket:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 3);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBucket].x, _vm->_hotspotsWalkPos[kHSBucket].y) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabBucket;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitCircus:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C7, 1);
- }
- break;
-
- case kHSExitArcade:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 29;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitArcade].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitArcade].x, _vm->_hotspotsWalkPos[kHSExitArcade].y + 1, -1, 0x107CF, 1);
- }
- break;
-
- case kHSExitBeerStand:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 31;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitBeerStand].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBeerStand].x, _vm->_hotspotsWalkPos[kHSExitBeerStand].y + 1, -1, 0x107CD, 1);
- }
- break;
-
- case kHSExitClown:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatypus)) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 28;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x, _vm->_hotspotsWalkPos[kHSExitClown].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x + 1, _vm->_hotspotsWalkPos[kHSExitClown].y, -1, 0x107C4, 1);
- } else {
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitClown].x, 7, 0, 0x107BC, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= SF_WALKABLE;
- _vm->_gnapActionStatus = kASTryEnterClownTent;
- }
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
-
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093B))
- _vm->playSound(0x1093B, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (_vm->_debugLevel == 4)
- _vm->updateIdleTimer();
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->getRandom(3) != 0)
- _s27_nextJanitorSequenceId = 0xCB;
- else
- _s27_nextJanitorSequenceId = 0xCF;
- }
- }
- if (!_vm->_timers[7]) {
- _vm->_timers[7] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundB();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene27::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASTalkJanitor:
- switch (_vm->getRandom(3)) {
- case 0:
- _s27_nextJanitorSequenceId = 0xCC;
- break;
- case 1:
- _s27_nextJanitorSequenceId = 0xCD;
- break;
- case 2:
- _s27_nextJanitorSequenceId = 0xCE;
- break;
- }
- break;
- case kASGrabBucket:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_hotspots[kHSBucket]._flags = SF_DISABLED;
- _vm->invAdd(kItemEmptyBucket);
- _vm->setFlag(kGFUnk13);
- _vm->_gameSys->setAnimation(0xD2, 39, 0);
- _vm->_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASGrabBucketDone;
- break;
- case kASGrabBucketDone:
- _vm->setGrabCursorSprite(kItemEmptyBucket);
- _vm->_gnapActionStatus = -1;
- break;
- case kASShowPictureToJanitor:
- _s27_nextJanitorSequenceId = 0xD0;
- break;
- case kASTryEnterClownTent:
- _s27_nextJanitorSequenceId = 0xD1;
- _vm->_gameSys->insertSequence(0xD1, 39, _s27_currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
- _s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
- _s27_nextJanitorSequenceId = -1;
- _vm->_gnapActionStatus = kASTryEnterClownTentDone;
- break;
- case kASTryEnterClownTentDone:
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = -1;
- break;
- case kASEnterClownTent:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107B2, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- switch (_s27_nextJanitorSequenceId) {
- case -1:
- _s27_nextJanitorSequenceId = 0xCB;
- _vm->_gameSys->insertSequence(0xCB, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
- _s27_nextJanitorSequenceId = -1;
- break;
- case 0xCC:
- case 0xCD:
- case 0xCE:
- _vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
- _s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
- _s27_nextJanitorSequenceId = -1;
- break;
- case 0xD0:
- // Show picture to janitor
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 0);
- _vm->_gnapActionStatus = kASEnterClownTent;
- _s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
- _s27_nextJanitorSequenceId = -1;
- _vm->setFlag(kGFPlatypus);
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemPicture);
- _vm->_newSceneNum = 28;
- break;
- default:
- _vm->_gameSys->insertSequence(_s27_nextJanitorSequenceId, 39, _s27_currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s27_nextJanitorSequenceId, 39, 3);
- _s27_currJanitorSequenceId = _s27_nextJanitorSequenceId;
- _s27_nextJanitorSequenceId = -1;
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene27.h b/engines/gnap/scenes/scene27.h
deleted file mode 100644
index 9ee0053..0000000
--- a/engines/gnap/scenes/scene27.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE27_H
-#define GNAP_SCENE27_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene27: public Scene {
-public:
- Scene27(GnapEngine *vm);
- ~Scene27() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s27_nextJanitorSequenceId;
- int _s27_currJanitorSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE27_H
diff --git a/engines/gnap/scenes/scene28.cpp b/engines/gnap/scenes/scene28.cpp
deleted file mode 100644
index ac55d90..0000000
--- a/engines/gnap/scenes/scene28.cpp
+++ /dev/null
@@ -1,448 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene28.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSHorn = 1,
- kHSClown = 2,
- kHSExitOutsideClown = 3,
- kHSEmptyBucket = 4,
- kHSDevice = 5,
- kHSWalkArea1 = 6,
- kHSWalkArea2 = 7
-};
-
-enum {
- kASUseBeerBucketWithClown = 0,
- kASUsePillBucketWithClown = 1,
- kASGrabHornFails = 2,
- kASGrabEmptyBucket = 3,
- kASGrabHornSuccess = 4,
- kASGrabHornSuccessDone = 5,
- kASGrabEmptyBucketDone = 6,
- kASGrabHornFailsDone = 7,
- kASTalkClown = 8,
- kASGnapWaiting = 9,
- kASLeaveScene = 10
-};
-
-Scene28::Scene28(GnapEngine *vm) : Scene(vm) {
- _s28_currClownSequenceId = -1;
- _s28_nextClownSequenceId = -1;
- _s28_clownTalkCtr = 0;
-}
-
-int Scene28::init() {
- return 0x125;
-}
-
-void Scene28::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSHorn, 148, 352, 215, 383, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 1, 7);
- _vm->setHotspot(kHSClown, 130, 250, 285, 413, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 5);
- _vm->setHotspot(kHSExitOutsideClown, 660, 190, 799, 400, SF_EXIT_R_CURSOR, 9, 6);
- _vm->setHotspot(kHSEmptyBucket, 582, 421, 643, 478, SF_WALKABLE | SF_DISABLED, 9, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 799, 523);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 0, 0, 7, SF_DISABLED);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->invHas(kItemHorn))
- _vm->_hotspots[kHSHorn]._flags = SF_DISABLED;
- if (_vm->isFlag(kGFUnk22))
- _vm->_hotspots[kHSEmptyBucket]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _vm->_hotspotsCount = 8;
-}
-
-void Scene28::run() {
- _vm->playSound(0x1093C, true);
- _s28_nextClownSequenceId = -1;
- _vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFUnk22))
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFMudTaken)) {
- if (_vm->isFlag(kGFUnk21)) {
- _vm->_gameSys->setAnimation(0x11C, 39, 3);
- _vm->_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
- if (!_vm->invHas(kItemHorn))
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
- _s28_currClownSequenceId = 0x11C;
- } else {
- _s28_currClownSequenceId = 0x11B;
- _vm->_gameSys->setAnimation(0x11B, 39, 3);
- _vm->_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_timers[4] = _vm->getRandom(20) + 80;
- }
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirUnk4);
- _vm->endSceneInit();
- } else {
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirUnk4);
- _vm->endSceneInit();
- _vm->playSequences(0xF7, 0x121, 0x122, 0x123);
- _s28_currClownSequenceId = 0x115;
- _vm->setFlag(kGFMudTaken);
- _vm->_gameSys->setAnimation(0x115, 39, 3);
- _vm->_gameSys->insertSequence(_s28_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
- _s28_nextClownSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(20) + 80;
- _vm->_gnapActionStatus = kASGnapWaiting;
- while (_vm->_gameSys->getAnimationStatus(3) != 2) {
- _vm->gameUpdateTick();
- _vm->updateMouseCursor();
- }
- _vm->_gnapActionStatus = -1;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSHorn:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(2, 8, 3, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 4);
- break;
- case GRAB_CURSOR:
- if (_vm->isFlag(kGFUnk21)) {
- if (!_vm->invHas(kItemHorn)) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSHorn].x, _vm->_hotspotsWalkPos[kHSHorn].y) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabHornSuccess;
- }
- } else {
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(2, 8, 0, 0x107BB, 1);
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSHorn].x, _vm->_hotspotsWalkPos[kHSHorn].y, 0, 0x107BB, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASGrabHornFails;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSClown:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFUnk21)) {
- if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->playGnapScratchingHead(5, 2);
- else
- _vm->playGnapImpossible(0, 0);
- } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kASUseBeerBucketWithClown;
- } else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 0, 0x107BC, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kASUsePillBucketWithClown;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSClown].x, _vm->_hotspotsWalkPos[kHSClown].y, 2, 4);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 2);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkClown;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 27;
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSEmptyBucket:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
- } else if (_vm->isFlag(kGFUnk21)) {
- _vm->playGnapImpossible(8, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 6);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSEmptyBucket].x, _vm->_hotspotsWalkPos[kHSEmptyBucket].y) | 0x10000, 1);
- _vm->_gnapActionStatus = kASGrabEmptyBucket;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093C))
- _vm->playSound(0x1093C, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 80;
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFUnk21))
- _s28_nextClownSequenceId = 0x114;
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene28::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASUseBeerBucketWithClown:
- _vm->setFlag(kGFUnk22);
- _s28_nextClownSequenceId = 0x113;
- _vm->invRemove(kItemBucketWithBeer);
- updateHotspots();
- break;
- case kASUsePillBucketWithClown:
- _s28_nextClownSequenceId = 0x116;
- _vm->invRemove(kItemBucketWithPill);
- _vm->setFlag(kGFUnk22);
- _vm->setFlag(kGFUnk21);
- updateHotspots();
- break;
- case kASGrabHornFails:
- _s28_nextClownSequenceId = 0x119;
- break;
- case kASGrabHornSuccess:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x117, 59, 0);
- _vm->_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASGrabHornSuccessDone;
- break;
- case kASGrabHornSuccessDone:
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _vm->addFullScreenSprite(0xF6, 255);
- _vm->_gameSys->setAnimation(0x120, 256, 0);
- _vm->_gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->removeFullScreenSprite();
- _vm->showCursor();
- _vm->setGrabCursorSprite(kItemHorn);
- _vm->invAdd(kItemHorn);
- updateHotspots();
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabEmptyBucket:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x111, 99, 0);
- _vm->_gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASGrabEmptyBucketDone;
- break;
- case kASGrabEmptyBucketDone:
- _vm->setGrabCursorSprite(kItemEmptyBucket);
- _vm->clearFlag(kGFUnk22);;
- updateHotspots();
- _vm->invAdd(kItemEmptyBucket);
- _vm->_gnapActionStatus = -1;
- break;
- case kASGrabHornFailsDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s28_currClownSequenceId = 0x11B;
- _s28_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- _vm->gnapWalkTo(2, 8, -1, 0x107BB, 1);
- break;
- case kASTalkClown:
- _s28_clownTalkCtr = (_s28_clownTalkCtr + 1) % 2;
- if (_s28_clownTalkCtr == 0)
- _s28_nextClownSequenceId = 0x11D;
- else if (_s28_clownTalkCtr == 1)
- _s28_nextClownSequenceId = 0x11E;
- else if (_s28_clownTalkCtr == 2)
- _s28_nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
- break;
- case kASGnapWaiting:
- _vm->_gnapActionStatus = -1;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- switch (_s28_nextClownSequenceId) {
- case 0x113:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11B, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s28_currClownSequenceId = 0x11B;
- _s28_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = kASGnapWaiting;
- break;
- case 0x116:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11C, 39, _s28_nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_s28_nextClownSequenceId), 0, 0);
- _s28_currClownSequenceId = _s28_nextClownSequenceId;
- _s28_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = kASGnapWaiting;
- break;
- case 0x11D:
- case 0x11E:
- case 0x11F:
- _vm->_gnapActionStatus = -1;
- break;
- case 0x119:
- _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 0);
- _vm->_gameSys->removeSequence(_s28_currClownSequenceId, 39, true);
- _vm->_gnapActionStatus = kASGrabHornFailsDone;
- _vm->_gnapSequenceId = _s28_nextClownSequenceId;
- _vm->_gnapSequenceDatNum = 0;
- _s28_nextClownSequenceId = -1;
- break;
- }
- if (_s28_nextClownSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s28_nextClownSequenceId, 39, _s28_currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s28_nextClownSequenceId, 39, 3);
- _s28_currClownSequenceId = _s28_nextClownSequenceId;
- _s28_nextClownSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene28.h b/engines/gnap/scenes/scene28.h
deleted file mode 100644
index 40fa93b..0000000
--- a/engines/gnap/scenes/scene28.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE28_H
-#define GNAP_SCENE28_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene28: public Scene {
-public:
- Scene28(GnapEngine *vm);
- ~Scene28() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s28_currClownSequenceId;
- int _s28_nextClownSequenceId;
- int _s28_clownTalkCtr;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE28_H
diff --git a/engines/gnap/scenes/scene29.cpp b/engines/gnap/scenes/scene29.cpp
deleted file mode 100644
index 5312a0b..0000000
--- a/engines/gnap/scenes/scene29.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene29.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSMonkey = 1,
- kHSDevice = 2,
- kHSExitCircus = 3,
- kHSExitOutsideClown = 4,
- kHSAracde = 5,
- kHSWalkArea1 = 6
-};
-
-enum {
- kASUseBananaWithMonkey = 0,
- kASLeaveScene = 2
-};
-
-Scene29::Scene29(GnapEngine *vm) : Scene(vm) {
- _s29_currMonkeySequenceId = -1;
- _s29_nextMonkeySequenceId = -1;
- _s29_currManSequenceId = -1;
- _s29_nextManSequenceId = -1;
-}
-
-int Scene29::init() {
- return 0xF6;
-}
-
-void Scene29::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSMonkey, 410, 374, 518, 516, SF_WALKABLE | SF_DISABLED, 3, 7);
- _vm->setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitOutsideClown, 785, 0, 800, 600, SF_EXIT_R_CURSOR | SF_WALKABLE, 11, 9);
- _vm->setHotspot(kHSAracde, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 478);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->invHas(kItemHorn))
- _vm->_hotspots[kHSMonkey]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _vm->_hotspotsCount = 7;
-}
-
-void Scene29::run() {
- _vm->playSound(0x1093B, true);
- _vm->startSoundTimerB(6);
- _vm->queueInsertDeviceIcon();
-
- if (_vm->invHas(kItemHorn)) {
- _s29_currMonkeySequenceId = 0xE8;
- _s29_nextMonkeySequenceId = -1;
- _vm->_gameSys->setAnimation(0xE8, 159, 4);
- _vm->_gameSys->insertSequence(_s29_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _s29_currManSequenceId = 0xED;
- _s29_nextManSequenceId = -1;
- _vm->_gameSys->setAnimation(0xED, 39, 3);
- _vm->_timers[4] = _vm->getRandom(20) + 60;
- } else {
- _vm->_gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
- }
-
- _vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 27) {
- _vm->initGnapPos(12, 7, kDirBottomRight);
- _vm->initPlatypusPos(12, 8, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 7, -1, 0x107B9, 1);
- _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
- } else {
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 7, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSMonkey:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemBanana) {
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASUseBananaWithMonkey;
- _vm->_newSceneNum = 51;
- _vm->_isLeavingScene = true;
- _vm->setGrabCursorSprite(-1);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y, 5, 6);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 6);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[kHSMonkey].x, _vm->_hotspotsWalkPos[kHSMonkey].y);
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitCircus:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 26;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
- }
- break;
-
- case kHSExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 27;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y - 1, -1, 0x107CD, 1);
- }
- break;
-
- case kHSAracde:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->setGrabCursorSprite(-1);
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 52;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y, 0, -1, 1);
- _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y);
- _vm->_gnapActionStatus = kASLeaveScene;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSAracde].x, _vm->_hotspotsWalkPos[kHSAracde].y, 2, 3);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan2(0, 0);
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093B))
- _vm->playSound(0x1093B, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_gnapActionStatus < 0) {
- _vm->updateGnapIdleSequence();
- _vm->updatePlatypusIdleSequence();
- }
- if (!_vm->_timers[4]) {
- if (_vm->invHas(kItemHorn)) {
- _vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0) {
- switch (_vm->getRandom(5)) {
- case 0:
- _s29_nextManSequenceId = 0xED;
- break;
- case 1:
- _s29_nextManSequenceId = 0xEE;
- break;
- case 2:
- _s29_nextManSequenceId = 0xEF;
- break;
- case 3:
- _s29_nextManSequenceId = 0xF0;
- break;
- case 4:
- _s29_nextManSequenceId = 0xF1;
- break;
- }
- }
- }
- }
- _vm->playSoundB();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene29::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASUseBananaWithMonkey:
- _s29_nextMonkeySequenceId = 0xE5;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s29_nextManSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s29_nextManSequenceId, 39, _s29_currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s29_nextManSequenceId, 39, 3);
- _s29_currManSequenceId = _s29_nextManSequenceId;
- _s29_nextManSequenceId = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- if (_s29_nextMonkeySequenceId == 0xE5) {
- _vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0xF2;
- _vm->_gameSys->setAnimation(0xE6, 159, 0);
- _vm->_gameSys->setAnimation(0, 159, 4);
- _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xE6, 159, _s29_nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kASLeaveScene;
- _s29_currMonkeySequenceId = 0xE6;
- _s29_nextMonkeySequenceId = -1;
- _vm->_timers[5] = 30;
- while (_vm->_timers[5])
- _vm->gameUpdateTick();
- _vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
- _vm->gameUpdateTick();
- } else if (_s29_nextMonkeySequenceId == -1) {
- switch (_vm->getRandom(6)) {
- case 0:
- _s29_nextMonkeySequenceId = 0xE8;
- break;
- case 1:
- _s29_nextMonkeySequenceId = 0xE9;
- break;
- case 2:
- _s29_nextMonkeySequenceId = 0xEA;
- break;
- case 3:
- _s29_nextMonkeySequenceId = 0xEB;
- break;
- case 4:
- _s29_nextMonkeySequenceId = 0xEC;
- break;
- case 5:
- _s29_nextMonkeySequenceId = 0xE7;
- break;
- }
- _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s29_nextMonkeySequenceId, 159, 4);
- _s29_currMonkeySequenceId = _s29_nextMonkeySequenceId;
- _s29_nextMonkeySequenceId = -1;
- } else {
- _vm->_gameSys->insertSequence(_s29_nextMonkeySequenceId, 159, _s29_currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s29_nextMonkeySequenceId, 159, 4);
- _s29_currMonkeySequenceId = _s29_nextMonkeySequenceId;
- _s29_nextMonkeySequenceId = -1;
- }
- }
-
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene29.h b/engines/gnap/scenes/scene29.h
deleted file mode 100644
index 3ce5d8d..0000000
--- a/engines/gnap/scenes/scene29.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE29_H
-#define GNAP_SCENE29_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene29: public Scene {
-public:
- Scene29(GnapEngine *vm);
- ~Scene29() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s29_currMonkeySequenceId;
- int _s29_nextMonkeySequenceId;
- int _s29_currManSequenceId;
- int _s29_nextManSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE29_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 6f6a922..52925ca 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -28,18 +28,9 @@
#include "gnap/scenes/groupcs.h"
#include "gnap/scenes/group0.h"
#include "gnap/scenes/group1.h"
+#include "gnap/scenes/group2.h"
#include "gnap/scenes/intro.h"
-#include "gnap/scenes/scene20.h"
-#include "gnap/scenes/scene21.h"
-#include "gnap/scenes/scene22.h"
-#include "gnap/scenes/scene23.h"
-#include "gnap/scenes/scene24.h"
-#include "gnap/scenes/scene25.h"
-#include "gnap/scenes/scene26.h"
-#include "gnap/scenes/scene27.h"
-#include "gnap/scenes/scene28.h"
-#include "gnap/scenes/scene29.h"
#include "gnap/scenes/scene30.h"
#include "gnap/scenes/scene31.h"
#include "gnap/scenes/scene32.h"
Commit: d7bd157fef8feee89fe111bc6f1bbc670e1e9201
https://github.com/scummvm/scummvm/commit/d7bd157fef8feee89fe111bc6f1bbc670e1e9201
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:46+02:00
Commit Message:
GNAP: renaming and grouping of scenes in group 3
Changed paths:
A engines/gnap/scenes/group3.cpp
A engines/gnap/scenes/group3.h
R engines/gnap/scenes/scene30.cpp
R engines/gnap/scenes/scene30.h
R engines/gnap/scenes/scene31.cpp
R engines/gnap/scenes/scene31.h
R engines/gnap/scenes/scene32.cpp
R engines/gnap/scenes/scene32.h
R engines/gnap/scenes/scene33.cpp
R engines/gnap/scenes/scene33.h
R engines/gnap/scenes/scene38.cpp
R engines/gnap/scenes/scene38.h
R engines/gnap/scenes/scene39.cpp
R engines/gnap/scenes/scene39.h
engines/gnap/module.mk
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 52d6a5a..388b33b 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -14,13 +14,8 @@ MODULE_OBJS := \
scenes/group0.o \
scenes/group1.o \
scenes/group2.o \
+ scenes/group3.o \
scenes/intro.o \
- scenes/scene30.o \
- scenes/scene31.o \
- scenes/scene32.o \
- scenes/scene33.o \
- scenes/scene38.o \
- scenes/scene39.o \
scenes/scene40.o \
scenes/scene41.o \
scenes/scene42.o \
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
new file mode 100644
index 0000000..d61859a
--- /dev/null
+++ b/engines/gnap/scenes/group3.cpp
@@ -0,0 +1,1682 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group3.h"
+
+namespace Gnap {
+
+enum {
+ kHS30Platypus = 0,
+ kHS30PillMachine = 1,
+ kHS30Device = 2,
+ kHS30ExitCircus = 3,
+ kHS30WalkArea1 = 4
+};
+
+enum {
+ kAS30LeaveScene = 0,
+ kAS30UsePillMachine = 1,
+ kAS30UsePillMachine2 = 2,
+ kAS30LookPillMachine = 3,
+ kAS30UsePillMachine3 = 4,
+ kAS30UsePillMachine4 = 5
+};
+
+Scene30::Scene30(GnapEngine *vm) : Scene(vm) {
+ _kidSequenceId = -1;
+}
+
+int Scene30::init() {
+ return _vm->isFlag(kGFUnk23) ? 0x10B : 0x10A;
+}
+
+void Scene30::updateHotspots() {
+ _vm->setHotspot(kHS30Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS30PillMachine, 598, 342, 658, 426, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 7);
+ _vm->setHotspot(kHS30ExitCircus, 100, 590 - _vm->_deviceY1, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS30WalkArea1, 0, 0, 800, 514);
+ _vm->setDeviceHotspot(kHS30Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 5;
+}
+
+void Scene30::run() {
+ bool hasTakenPill = false;
+
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFUnk23))
+ _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (!_vm->isFlag(kGFUnk13))
+ _vm->_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+
+ _vm->_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ _kidSequenceId = 0x101;
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS30Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS30Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS30PillMachine:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
+ _vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 0, 0x107BC, 1);
+ _vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS30UsePillMachine;
+ hasTakenPill = true;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(9, 8, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS30LookPillMachine;
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapScratchingHead(8, 5);
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(8, 5);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS30ExitCircus:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ if (hasTakenPill)
+ _vm->_newSceneNum = 47;
+ else
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS30LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, -1, 0x107C2, 1);
+ }
+ break;
+
+ case kHS30WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(5) == 1) {
+ _vm->_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _kidSequenceId = 0x100;
+ } else {
+ _vm->_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+ if (_vm->_gnapActionStatus < 0) {
+ if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
+ _vm->_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ _vm->playSoundB();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene30::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS30LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS30UsePillMachine:
+ _vm->setGrabCursorSprite(-1);
+ _vm->_gameSys->setAnimation(0x105, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x105;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS30UsePillMachine2;
+ break;
+ case kAS30UsePillMachine2:
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+ _vm->addFullScreenSprite(0x3F, 255);
+ _vm->_gameSys->removeSequence(0x105, _vm->_gnapId, true);
+ _vm->_gameSys->setAnimation(0x102, 256, 0);
+ _vm->_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_gameSys->setAnimation(0x103, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->_gnapActionStatus = kAS30UsePillMachine3;
+ _vm->invAdd(kItemPill);
+ _vm->setFlag(kGFUnk23);
+ break;
+ case kAS30UsePillMachine3:
+ _vm->_gameSys->setAnimation(0x104, _vm->_gnapId, 0);
+ _vm->_gameSys->insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x104;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapActionStatus = kAS30UsePillMachine4;
+ _vm->setGrabCursorSprite(kItemDiceQuarterHole);
+ break;
+ case kAS30UsePillMachine4:
+ _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1);
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS30LookPillMachine:
+ if (_vm->isFlag(kGFUnk23))
+ _vm->showFullScreenSprite(0xE3);
+ else
+ _vm->showFullScreenSprite(0xE2);
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS31Platypus = 0,
+ kHS31MeasuringClown = 1,
+ kHS31BeerBarrel = 2,
+ kHS31Device = 3,
+ kHS31ExitCircus = 4,
+ kHS31ExitOutsideClown = 5,
+ kHS31WalkArea1 = 6
+};
+
+enum {
+ kAS31UseBeerBarrel = 1,
+ kAS31FillEmptyBucketWithBeer = 2,
+ kAS31FillEmptyBucketWithBeerDone = 3,
+ kAS31PlatMeasuringClown = 4,
+ kAS31UseMeasuringClown = 5,
+ kAS31LeaveScene = 6
+};
+
+Scene31::Scene31(GnapEngine *vm) : Scene(vm) {
+ _beerGuyDistracted = false;
+ _currClerkSequenceId = -1;
+ _nextClerkSequenceId = -1;
+ _clerkMeasureCtr = -1;
+ _clerkMeasureMaxCtr = 3;
+}
+
+int Scene31::init() {
+ return 0x105;
+}
+
+void Scene31::updateHotspots() {
+ _vm->setHotspot(kHS31Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS31MeasuringClown, 34, 150, 256, 436, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 6);
+ _vm->setHotspot(kHS31BeerBarrel, 452, 182, 560, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS31ExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS31ExitOutsideClown, 0, 0, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS31WalkArea1, 0, 0, 800, 480);
+ _vm->setDeviceHotspot(kHS31Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene31::run() {
+ _vm->playSound(0x1093B, true);
+ _vm->startSoundTimerB(6);
+
+ _vm->queueInsertDeviceIcon();
+
+ _beerGuyDistracted = false;
+ _vm->_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currClerkSequenceId = 0xFB;
+ _nextClerkSequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0xFB, 39, 3);
+
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+
+ if (_vm->_prevSceneNum == 27) {
+ _vm->initGnapPos(-1, 8, kDirBottomLeft);
+ _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(3, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(7, 12, kDirBottomRight);
+ _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(7, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS31Device:
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS31Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemJoint) {
+ _vm->gnapUseJointOnPlatypus();
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS31MeasuringClown:
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_verbCursor == LOOK_CURSOR)
+ _vm->playGnapScratchingHead(2, 2);
+ else
+ _vm->playGnapImpossible(0, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(2, 2);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, -1, -1, 1);
+ _vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 0, 0x107B9, 1);
+ _vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_gnapActionStatus = kAS31UseMeasuringClown;
+ _vm->_timers[4] = 300;
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ if (!_vm->invHas(kItemBucketWithBeer)) {
+ _vm->gnapUseDeviceOnPlatypuss();
+ _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);
+ _vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
+ _vm->_platypusActionStatus = kAS31PlatMeasuringClown;
+ _vm->_gnapActionStatus = kAS31PlatMeasuringClown;
+ _vm->_timers[4] = 300;
+ } else
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS31BeerBarrel:
+ if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) {
+ _vm->setGrabCursorSprite(-1);
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
+ _clerkMeasureMaxCtr += 5;
+ _vm->_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->playGnapPullOutDevice(6, 8);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeer;
+ _vm->_timers[4] = 300;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(6, 2);
+ break;
+ case GRAB_CURSOR:
+ if (_beerGuyDistracted) {
+ _vm->playGnapScratchingHead(6, 2);
+ } else {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS31UseBeerBarrel;
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ }
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS31ExitCircus:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 26;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS31LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, -1, -1, 1);
+ }
+ break;
+
+ case kHS31ExitOutsideClown:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 27;
+ _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS31LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y + 1, -1, 0x107CF, 1);
+ }
+ break;
+
+ case kHS31WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1093B))
+ _vm->playSound(0x1093B, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+ if (_vm->_gnapActionStatus < 0 && _nextClerkSequenceId == -1) {
+ switch (_vm->getRandom(6)){
+ case 0:
+ _nextClerkSequenceId = 0xFF;
+ break;
+ case 1:
+ _nextClerkSequenceId = 0x100;
+ break;
+ case 2:
+ _nextClerkSequenceId = 0x101;
+ break;
+ default:
+ _nextClerkSequenceId = 0xFB;
+ break;
+ }
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 180;
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ }
+ _vm->playSoundB();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene31::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS31UseBeerBarrel:
+ _nextClerkSequenceId = 0xFE;
+ break;
+ case kAS31FillEmptyBucketWithBeer:
+ _vm->_gameSys->setAnimation(0x102, 59, 0);
+ _vm->_gameSys->insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapX = 5;
+ _vm->_gnapY = 7;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapSequenceId = 0x102;
+ _vm->_gnapId = 59;
+ _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeerDone;
+ break;
+ case kAS31FillEmptyBucketWithBeerDone:
+ _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->playGnapPullOutDevice(0, 0);
+ _vm->playGnapUseDevice(0, 0);
+ _vm->_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->invAdd(kItemBucketWithBeer);
+ _vm->invRemove(kItemEmptyBucket);
+ _vm->setGrabCursorSprite(kItemBucketWithBeer);
+ break;
+ case kAS31UseMeasuringClown:
+ _nextClerkSequenceId = 0xFA;
+ _clerkMeasureMaxCtr = 1;
+ break;
+ case kAS31LeaveScene:
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusActionStatus == kAS31PlatMeasuringClown) {
+ _vm->_sceneWaiting = true;
+ _beerGuyDistracted = true;
+ _nextClerkSequenceId = 0xFA;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ switch (_nextClerkSequenceId) {
+ case 0xFA:
+ _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xFC, 39, _nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ _currClerkSequenceId = 0xFC;
+ _nextClerkSequenceId = 0xFC;
+ _clerkMeasureCtr = 0;
+ break;
+ case 0xFC:
+ ++_clerkMeasureCtr;
+ if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) {
+ if (_vm->_gnapActionStatus != 5)
+ _vm->_platypusActionStatus = -1;
+ _vm->_timers[0] = 40;
+ _vm->_gameSys->insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _currClerkSequenceId = 0xFD;
+ _nextClerkSequenceId = -1;
+ if (_vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeer)
+ _vm->_gnapActionStatus = -1;
+ _beerGuyDistracted = false;
+ _clerkMeasureMaxCtr = 3;
+ _vm->_gameSys->setAnimation(0xFD, 39, 3);
+ _vm->_sceneWaiting = false;
+ } else {
+ _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _currClerkSequenceId = _nextClerkSequenceId;
+ _nextClerkSequenceId = 0xFC;
+ _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ }
+ break;
+ case 0xFE:
+ _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ _currClerkSequenceId = _nextClerkSequenceId;
+ _nextClerkSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ break;
+ default:
+ if (_nextClerkSequenceId != -1) {
+ _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ _currClerkSequenceId = _nextClerkSequenceId;
+ _nextClerkSequenceId = -1;
+ }
+ break;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS32Platypus = 0,
+ kHS32ExitTruck = 1,
+ kHS32Device = 2,
+ kHS32WalkArea1 = 3,
+ kHS32WalkArea2 = 4,
+ kHS32WalkArea3 = 5,
+ kHS32WalkArea4 = 6,
+ kHS32WalkArea5 = 7,
+ kHS32WalkArea6 = 8,
+ kHS32WalkArea7 = 9,
+ kHS32WalkArea8 = 10
+};
+
+enum {
+ kAS32LeaveScene = 0
+};
+
+Scene32::Scene32(GnapEngine *vm) : Scene(vm) {
+
+}
+
+int Scene32::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0xF : 0x10;
+}
+
+void Scene32::updateHotspots() {
+ _vm->setHotspot(kHS32Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS32ExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
+ _vm->setHotspot(kHS32WalkArea1, 0, 0, 162, 426);
+ _vm->setHotspot(kHS32WalkArea2, 162, 0, 237, 396);
+ _vm->setHotspot(kHS32WalkArea3, 237, 0, 319, 363);
+ _vm->setHotspot(kHS32WalkArea4, 520, 0, 800, 404);
+ _vm->setHotspot(kHS32WalkArea5, 300, 447, 800, 600);
+ _vm->setHotspot(kHS32WalkArea6, 678, 0, 800, 404);
+ _vm->setHotspot(kHS32WalkArea7, 0, 0, 520, 351);
+ _vm->setHotspot(kHS32WalkArea8, 0, 546, 300, 600);
+ _vm->setDeviceHotspot(kHS32Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 11;
+}
+
+void Scene32::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(5);
+ _vm->queueInsertDeviceIcon();
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ if (_vm->_prevSceneNum == 33) {
+ _vm->initGnapPos(11, 6, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
+ _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ } else {
+ _vm->initGnapPos(1, 6, kDirBottomRight);
+ _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS32Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS32Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS32ExitTruck:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->setGrabCursorSprite(-1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS32LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y + 1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 33;
+ }
+ break;
+
+ case kHS32WalkArea1:
+ case kHS32WalkArea2:
+ case kHS32WalkArea3:
+ case kHS32WalkArea4:
+ case kHS32WalkArea5:
+ case kHS32WalkArea6:
+ case kHS32WalkArea7:
+ case kHS32WalkArea8:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = 0;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene32::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kAS32LeaveScene)
+ _vm->_sceneDone = true;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS33Platypus = 0,
+ kHS33Chicken = 1,
+ kHS33Device = 2,
+ kHS33ExitHouse = 3,
+ kHS33ExitBarn = 4,
+ kHS33ExitCreek = 5,
+ kHS33ExitPigpen = 6,
+ kHS33WalkArea1 = 7,
+ kHS33WalkArea2 = 8
+};
+
+enum {
+ kAS33LeaveScene = 0,
+ kAS33TalkChicken = 1,
+ kAS33UseChicken = 2,
+ kAS33UseChickenDone = 3
+};
+
+Scene33::Scene33(GnapEngine *vm) : Scene(vm) {
+ _currChickenSequenceId = -1;
+ _nextChickenSequenceId = -1;
+}
+
+int Scene33::init() {
+ return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x84 : 0x85;
+}
+
+void Scene33::updateHotspots() {
+ _vm->setHotspot(kHS33Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS33Chicken, 606, 455, 702, 568, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS33ExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 3);
+ _vm->setHotspot(kHS33ExitBarn, 610, 75, 800, 164, SF_EXIT_U_CURSOR, 10, 3);
+ _vm->setHotspot(kHS33ExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHS33ExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS33WalkArea1, 120, 0, 514, 458);
+ _vm->setHotspot(kHS33WalkArea2, 0, 0, 800, 452);
+ _vm->setDeviceHotspot(kHS33Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+}
+
+void Scene33::run() {
+ _vm->playSound(0x1091C, true);
+ _vm->startSoundTimerC(6);
+ _vm->queueInsertDeviceIcon();
+
+ _currChickenSequenceId = 0x7E;
+ _vm->_gameSys->setAnimation(0x7E, 179, 2);
+ _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _nextChickenSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+
+ switch (_vm->_prevSceneNum) {
+ case 34:
+ _vm->initGnapPos(11, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 7, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ break;
+ case 37:
+ _vm->initGnapPos(7, 7, kDirBottomRight);
+ _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->endSceneInit();
+ break;
+ case 32:
+ _vm->initGnapPos(-1, 6, kDirBottomRight);
+ _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ break;
+ default:
+ _vm->initGnapPos(3, 7, kDirBottomRight);
+ _vm->initPlatypusPos(2, 7, kDirNone);
+ _vm->endSceneInit();
+ break;
+ }
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+ _vm->testWalk(0, 0, 7, 6, 8, 6);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS33Device:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+
+ case kHS33Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS33Chicken:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 9, 9, 8);
+ } else {
+ switch (_vm->_verbCursor) {
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ _vm->_gnapActionStatus = kAS33UseChicken;
+ else
+ _vm->_gnapActionStatus = -1;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS33TalkChicken;
+ break;
+ case LOOK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS33ExitHouse:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_newSceneNum = 37;
+ if (_vm->_gnapX > 6)
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
+ else
+ _vm->gnapWalkTo(6, 7, 0, 0x107B1, 1);
+ }
+ break;
+
+ case kHS33ExitBarn:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_newSceneNum = 35;
+ if (_vm->_gnapX > 7)
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
+ else
+ _vm->gnapWalkTo(7, 7, 0, 0x107B1, 1);
+ }
+ break;
+
+ case kHS33ExitCreek:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 34;
+ }
+ break;
+
+ case kHS33ExitPigpen:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 32;
+ }
+ break;
+
+ case kHS33WalkArea1:
+ case kHS33WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->isSoundPlaying(0x1091C))
+ _vm->playSound(0x1091C, true);
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 300;
+ if (_vm->getRandom(2) != 0)
+ _vm->_gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kAS33TalkChicken && _vm->_gnapActionStatus != kAS33UseChicken) {
+ if (_vm->getRandom(6) != 0) {
+ _nextChickenSequenceId = 0x7E;
+ _vm->_timers[5] = _vm->getRandom(20) + 30;
+ } else {
+ _nextChickenSequenceId = 0x80;
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ }
+ }
+ _vm->playSoundC();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene33::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
+ case kAS33LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS33TalkChicken:
+ _nextChickenSequenceId = 0x7F;
+ break;
+ case kAS33UseChicken:
+ _nextChickenSequenceId = 0x81;
+ _vm->_timers[2] = 100;
+ break;
+ case kAS33UseChickenDone:
+ _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceId = 0x7B5;
+ _vm->_gnapSequenceDatNum = 1;
+ _currChickenSequenceId = 0x7E;
+ _vm->_gameSys->setAnimation(0x7E, 179, 2);
+ _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_timers[5] = 30;
+ break;
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (_nextChickenSequenceId == 0x81) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ _nextChickenSequenceId = -1;
+ _currChickenSequenceId = -1;
+ _vm->_gnapActionStatus = kAS33UseChickenDone;
+ _vm->_timers[5] = 500;
+ } else if (_nextChickenSequenceId == 0x7F) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ _vm->_gnapActionStatus = -1;
+ } else if (_nextChickenSequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
+ _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ _currChickenSequenceId = _nextChickenSequenceId;
+ _nextChickenSequenceId = -1;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS38Platypus = 0,
+ kHS38ExitHouse = 1,
+ kHS38ExitCave = 2,
+ kHS38TrapDoorLid1 = 3,
+ kHS38TrapDoorLid2 = 4,
+ kHS38HuntingTrophy = 5,
+ kHS38WalkArea1 = 6,
+ kHS38Device = 7,
+ kHS38WalkArea2 = 8,
+ kHS38WalkArea3 = 9,
+ kHS38WalkArea4 = 10,
+ kHS38WalkArea5 = 11,
+ kHS38WalkArea6 = 12
+};
+
+enum {
+ kAS38LeaveScene = 0,
+ kAS38ExitCave = 1,
+ kAS38UseHuntingTrophy = 2,
+ kAS38HoldingHuntingTrophy = 3,
+ kAS38ReleaseHuntingTrophy = 4,
+ kAS38UsePlatypusWithTrapDoor = 5,
+ kAS38PlatypusHoldingTrapDoor = 6
+};
+
+Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene38::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0xA5;
+}
+
+void Scene38::updateHotspots() {
+ _vm->setHotspot(kHS38Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS38ExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHS38ExitCave, 430, 440, 655, 470, SF_WALKABLE, 0, 8);
+ _vm->setHotspot(kHS38TrapDoorLid1, 525, 265, 640, 350, SF_DISABLED);
+ _vm->setHotspot(kHS38TrapDoorLid2, 555, 350, 670, 430, SF_DISABLED);
+ _vm->setHotspot(kHS38HuntingTrophy, 170, 85, 250, 190, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
+ _vm->setHotspot(kHS38WalkArea1, 330, 270, 640, 380, SF_DISABLED | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
+ _vm->setHotspot(kHS38WalkArea2, 0, 0, 799, 396);
+ _vm->setHotspot(kHS38WalkArea3, 0, 585, 799, 599, SF_WALKABLE | SF_DISABLED);
+ _vm->setHotspot(kHS38WalkArea4, 0, 0, 97, 445);
+ _vm->setHotspot(kHS38WalkArea5, 770, 0, 799, 445);
+ _vm->setHotspot(kHS38WalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
+ _vm->setDeviceHotspot(kHS38Device, -1, -1, -1, -1);
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHS38Platypus]._flags = SF_WALKABLE | SF_DISABLED;
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
+ else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_DISABLED;
+ else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_DISABLED;
+ else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_hotspots[kHS38WalkArea6]._flags = SF_NONE;
+ _vm->_hotspotsCount = 13;
+}
+
+void Scene38::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->_prevSceneNum == 39) {
+ _vm->initGnapPos(3, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(4, 7, kDirUnk4);
+ } else {
+ _vm->initGnapPos(3, 8, kDirBottomRight);
+ _vm->initPlatypusPos(4, 8, kDirNone);
+ }
+ _vm->endSceneInit();
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS38Device:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+
+ case kHS38Platypus:
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ break;
+
+ case kHS38ExitHouse:
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ } else {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS38LeaveScene;
+ _vm->_newSceneNum = 37;
+ }
+ break;
+
+ case kHS38ExitCave:
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->_isLeavingScene = true;
+ } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ _vm->_sceneWaiting = false;
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->_newSceneNum = 39;
+ _vm->_gnapActionStatus = kAS38ExitCave;
+ }
+ break;
+
+ case kHS38TrapDoorLid1:
+ case kHS38TrapDoorLid2:
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
+ if (_vm->_verbCursor == PLAT_CURSOR && _vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
+ _vm->_gnapActionStatus = kAS38UsePlatypusWithTrapDoor;
+ else
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ }
+ break;
+
+ case kHS38HuntingTrophy:
+ if (_vm->_gnapActionStatus != kAS38HoldingHuntingTrophy) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 6, 2, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(0, 0);
+ break;
+ case GRAB_CURSOR:
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ _vm->playGnapImpossible(0, 0);
+ else {
+ _vm->gnapWalkTo(3, 6, 0, 0x107BB, 1);
+ _vm->platypusWalkTo(4, 8, -1, -1, 1);
+ _vm->_gnapActionStatus = kAS38UseHuntingTrophy;
+ }
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(2, 0);
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS38WalkArea1:
+ // Nothing
+ break;
+
+ case kHS38WalkArea2:
+ case kHS38WalkArea3:
+ case kHS38WalkArea4:
+ case kHS38WalkArea5:
+ case kHS38WalkArea6:
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ else if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left) {
+ if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ else if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ _vm->updatePlatypusIdleSequence();
+ _vm->updateGnapIdleSequence();
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene38::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case kAS38LeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS38ExitCave:
+ _vm->_gameSys->removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
+ _vm->_gameSys->insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA3;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0xA3, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS38LeaveScene;
+ break;
+ case kAS38UseHuntingTrophy:
+ _vm->_gameSys->removeSequence(0x9B, 0, true);
+ _vm->_gameSys->insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9C;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x9C, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
+ updateHotspots();
+ break;
+ case kAS38HoldingHuntingTrophy:
+ if (_vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
+ _vm->_sceneWaiting = true;
+ if (_vm->_gnapSequenceId == 0xA4) {
+ _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9D;
+ } else {
+ _vm->_gameSys->insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA4;
+ }
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
+ break;
+ case kAS38ReleaseHuntingTrophy:
+ if (_vm->_gnapSequenceId == 0x9E) {
+ _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ _vm->_gameSys->insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0xA0;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ if (_vm->_isLeavingScene) {
+ _vm->_sceneWaiting = false;
+ _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->_newSceneNum = 39;
+ _vm->_gnapActionStatus = kAS38ExitCave;
+ } else {
+ _vm->_gnapActionStatus = -1;
+ }
+ } else {
+ _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9E;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapX = 3;
+ _vm->_gnapY = 6;
+ _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
+ _vm->_sceneWaiting = false;
+ updateHotspots();
+ }
+ break;
+ case kAS38UsePlatypusWithTrapDoor:
+ _vm->_sceneWaiting = false;
+ _vm->_gameSys->insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x9F;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gameSys->setAnimation(0x9F, _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
+ if (_vm->_platypusFacing != kDirNone)
+ _vm->playPlatypusSequence(0x107D5);
+ else
+ _vm->playPlatypusSequence(0x107D4);
+ _vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
+ _vm->_gameSys->insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xA1;
+ _vm->_platypusSequenceDatNum = 0;
+ _vm->_platypusId = _vm->_gnapId + 1;
+ _vm->_gameSys->setAnimation(0xA1, _vm->_gnapId + 1, 1);
+ _vm->_platypusActionStatus = kAS38PlatypusHoldingTrapDoor;
+ updateHotspots();
+ break;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ _vm->_gameSys->insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ _vm->_platypusSequenceId = 0xA2;
+ _vm->_platypusSequenceDatNum = 0;
+ updateHotspots();
+ _vm->_sceneWaiting = true;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS39Platypus = 0,
+ kHS39ExitInsideHouse = 1,
+ kHS39ExitUfoParty = 2,
+ kHS39Sign = 3,
+ kHS39Device = 4,
+ kHS39WalkArea1 = 5,
+ kHS39WalkArea2 = 6
+};
+
+enum {
+ kAS39LeaveScene = 0
+};
+
+Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
+ _currGuySequenceId = -1;
+ _nextGuySequenceId = -1;
+}
+
+int Scene39::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0x35;
+}
+
+void Scene39::updateHotspots() {
+ _vm->setHotspot(kHS39Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS39ExitInsideHouse, 0, 0, 140, 206, SF_EXIT_U_CURSOR, 4, 8);
+ _vm->setHotspot(kHS39ExitUfoParty, 360, 204, 480, 430, SF_EXIT_R_CURSOR, 6, 8);
+ _vm->setHotspot(kHS39Sign, 528, 232, 607, 397, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 3);
+ _vm->setHotspot(kHS39WalkArea1, 0, 0, 800, 466);
+ _vm->setHotspot(kHS39WalkArea2, 502, 466, 800, 600);
+ _vm->setDeviceHotspot(kHS39Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 7;
+}
+
+void Scene39::run() {
+ // Bug in the original? Timer was never initialized.
+ _vm->_timers[5] = 0;
+
+ _vm->queueInsertDeviceIcon();
+ _currGuySequenceId = 0x33;
+
+ _vm->_gameSys->setAnimation(0x33, 21, 3);
+ _vm->_gameSys->insertSequence(_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
+
+ _nextGuySequenceId = -1;
+ if (_vm->_prevSceneNum == 38) {
+ _vm->initGnapPos(3, 7, kDirUpRight);
+ _vm->initPlatypusPos(2, 7, kDirUpLeft);
+ _vm->endSceneInit();
+ } else {
+ _vm->initGnapPos(4, 7, kDirBottomRight);
+ _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->endSceneInit();
+ }
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B)) {
+ _vm->playSound(0x1094B, true);
+ _vm->setSoundVolume(0x1094B, 60);
+ }
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS39Device:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ break;
+
+ case kHS39Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS39ExitUfoParty:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS39LeaveScene;
+ _vm->_newSceneNum = 40;
+ }
+ break;
+
+ case kHS39Sign:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(0, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y, 0, -1, 1);
+ _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
+ _vm->showFullScreenSprite(0x1C);
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS39ExitInsideHouse:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_sceneDone = true;
+ _vm->_isLeavingScene = true;
+ _vm->_newSceneNum = 38;
+ }
+ break;
+
+ case kHS39WalkArea1:
+ case kHS39WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->_mouseClickState._left = false;
+ }
+ break;
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0)
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ switch (_vm->getRandom(4)) {
+ case 0:
+ _nextGuySequenceId = 0x30;
+ break;
+ case 1:
+ _nextGuySequenceId = 0x31;
+ break;
+ case 2:
+ _nextGuySequenceId = 0x32;
+ break;
+ case 3:
+ _nextGuySequenceId = 0x33;
+ break;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[5] = _vm->getRandom(20) + 50;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene39::updateAnimations() {
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus == kAS39LeaveScene)
+ _vm->_sceneDone = true;
+ else
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
+ _vm->_gameSys->setAnimation(_nextGuySequenceId, 21, 3);
+ _vm->_gameSys->insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ _currGuySequenceId = _nextGuySequenceId;
+ _nextGuySequenceId = -1;
+ }
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group3.h b/engines/gnap/scenes/group3.h
new file mode 100644
index 0000000..fa57f17
--- /dev/null
+++ b/engines/gnap/scenes/group3.h
@@ -0,0 +1,125 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP3_H
+#define GNAP_GROUP3_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene30: public Scene {
+public:
+ Scene30(GnapEngine *vm);
+ ~Scene30() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _kidSequenceId;
+};
+
+class Scene31: public Scene {
+public:
+ Scene31(GnapEngine *vm);
+ ~Scene31() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _beerGuyDistracted;
+ int _currClerkSequenceId;
+ int _nextClerkSequenceId;
+ int _clerkMeasureCtr;
+ int _clerkMeasureMaxCtr;
+};
+
+class Scene32: public Scene {
+public:
+ Scene32(GnapEngine *vm);
+ ~Scene32() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+class Scene33: public Scene {
+public:
+ Scene33(GnapEngine *vm);
+ ~Scene33() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currChickenSequenceId;
+ int _nextChickenSequenceId;
+};
+
+class Scene38: public Scene {
+public:
+ Scene38(GnapEngine *vm);
+ ~Scene38() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+class Scene39: public Scene {
+public:
+ Scene39(GnapEngine *vm);
+ ~Scene39() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currGuySequenceId;
+ int _nextGuySequenceId;
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_GROUP3_H
diff --git a/engines/gnap/scenes/scene30.cpp b/engines/gnap/scenes/scene30.cpp
deleted file mode 100644
index 02a389e..0000000
--- a/engines/gnap/scenes/scene30.cpp
+++ /dev/null
@@ -1,285 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene30.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSPillMachine = 1,
- kHSDevice = 2,
- kHSExitCircus = 3,
- kHSWalkArea1 = 4
-};
-
-enum {
- kASLeaveScene = 0,
- kASUsePillMachine = 1,
- kASUsePillMachine2 = 2,
- kASLookPillMachine = 3,
- kASUsePillMachine3 = 4,
- kASUsePillMachine4 = 5
-};
-
-Scene30::Scene30(GnapEngine *vm) : Scene(vm) {
- _s30_kidSequenceId = -1;
-}
-
-int Scene30::init() {
- return _vm->isFlag(kGFUnk23) ? 0x10B : 0x10A;
-}
-
-void Scene30::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSPillMachine, 598, 342, 658, 426, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 9, 7);
- _vm->setHotspot(kHSExitCircus, 100, 590 - _vm->_deviceY1, 700, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 514);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 5;
-}
-
-void Scene30::run() {
- bool hasTakenPill = false;
-
- _vm->playSound(0x1093B, true);
- _vm->startSoundTimerB(6);
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFUnk23))
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_timers[5] = _vm->getRandom(50) + 180;
-
- _vm->_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_timers[4] = _vm->getRandom(100) + 300;
-
- _s30_kidSequenceId = 0x101;
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSPillMachine:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y, 0, 0x107BC, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASUsePillMachine;
- hasTakenPill = true;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y, 8, 5);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(9, 8, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASLookPillMachine;
- break;
- case GRAB_CURSOR:
- _vm->playGnapScratchingHead(8, 5);
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(8, 5);
- break;
- }
- }
- }
- break;
-
- case kHSExitCircus:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- if (hasTakenPill)
- _vm->_newSceneNum = 47;
- else
- _vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, 0x107C2, 1);
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093B))
- _vm->playSound(0x1093B, true);
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->getRandom(5) == 1) {
- _vm->_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x100, 40, _s30_kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s30_kidSequenceId = 0x100;
- } else {
- _vm->_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnapActionStatus < 0) {
- if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
- _vm->_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- _vm->playSoundB();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene30::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASUsePillMachine:
- _vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x105, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x105;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASUsePillMachine2;
- break;
- case kASUsePillMachine2:
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
- _vm->addFullScreenSprite(0x3F, 255);
- _vm->_gameSys->removeSequence(0x105, _vm->_gnapId, true);
- _vm->_gameSys->setAnimation(0x102, 256, 0);
- _vm->_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x103, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->removeFullScreenSprite();
- _vm->showCursor();
- _vm->_gnapActionStatus = kASUsePillMachine3;
- _vm->invAdd(kItemPill);
- _vm->setFlag(kGFUnk23);
- break;
- case kASUsePillMachine3:
- _vm->_gameSys->setAnimation(0x104, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x104;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kASUsePillMachine4;
- _vm->setGrabCursorSprite(kItemDiceQuarterHole);
- break;
- case kASUsePillMachine4:
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSPillMachine].x, _vm->_hotspotsWalkPos[kHSPillMachine].y + 1, -1, 0x107BC, 1);
- _vm->_gnapActionStatus = -1;
- break;
- case kASLookPillMachine:
- if (_vm->isFlag(kGFUnk23))
- _vm->showFullScreenSprite(0xE3);
- else
- _vm->showFullScreenSprite(0xE2);
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene30.h b/engines/gnap/scenes/scene30.h
deleted file mode 100644
index e1b2476..0000000
--- a/engines/gnap/scenes/scene30.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE30_H
-#define GNAP_SCENE30_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene30: public Scene {
-public:
- Scene30(GnapEngine *vm);
- ~Scene30() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s30_kidSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE30_H
diff --git a/engines/gnap/scenes/scene31.cpp b/engines/gnap/scenes/scene31.cpp
deleted file mode 100644
index 0c3a1fa..0000000
--- a/engines/gnap/scenes/scene31.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene31.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSMeasuringClown = 1,
- kHSBeerBarrel = 2,
- kHSDevice = 3,
- kHSExitCircus = 4,
- kHSExitOutsideClown = 5,
- kHSWalkArea1 = 6
-};
-
-enum {
- kASUseBeerBarrel = 1,
- kASFillEmptyBucketWithBeer = 2,
- kASFillEmptyBucketWithBeerDone = 3,
- kASPlatMeasuringClown = 4,
- kASUseMeasuringClown = 5,
- kASLeaveScene = 6
-};
-
-Scene31::Scene31(GnapEngine *vm) : Scene(vm) {
- _s31_beerGuyDistracted = false;
- _s31_currClerkSequenceId = -1;
- _s31_nextClerkSequenceId = -1;
- _s31_clerkMeasureCtr = -1;
- _s31_clerkMeasureMaxCtr = 3;
-}
-
-int Scene31::init() {
- return 0x105;
-}
-
-void Scene31::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSMeasuringClown, 34, 150, 256, 436, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 6);
- _vm->setHotspot(kHSBeerBarrel, 452, 182, 560, 306, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHSExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitOutsideClown, 0, 0, 15, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 480);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 7;
-}
-
-void Scene31::run() {
- _vm->playSound(0x1093B, true);
- _vm->startSoundTimerB(6);
-
- _vm->queueInsertDeviceIcon();
-
- _s31_beerGuyDistracted = false;
- _vm->_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
-
- _s31_currClerkSequenceId = 0xFB;
- _s31_nextClerkSequenceId = -1;
-
- _vm->_gameSys->setAnimation(0xFB, 39, 3);
-
- _vm->_timers[4] = _vm->getRandom(20) + 60;
- _vm->_timers[5] = _vm->getRandom(50) + 180;
-
- if (_vm->_prevSceneNum == 27) {
- _vm->initGnapPos(-1, 8, kDirBottomLeft);
- _vm->initPlatypusPos(-1, 9, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
- _vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->gnapUseJointOnPlatypus();
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSMeasuringClown:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
- if (_vm->_gnapActionStatus == kASPlatMeasuringClown) {
- if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->playGnapScratchingHead(2, 2);
- else
- _vm->playGnapImpossible(0, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, 2, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 2);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, -1, -1, 1);
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y, 0, 0x107B9, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kASUseMeasuringClown;
- _vm->_timers[4] = 300;
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- if (!_vm->invHas(kItemBucketWithBeer)) {
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y + 1, 1, 0x107C2, 1);
- _vm->_hotspots[kHSWalkArea1]._flags |= SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSMeasuringClown].x, _vm->_hotspotsWalkPos[kHSMeasuringClown].y, 1, 0x107C2, 1);
- _vm->_hotspots[kHSWalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_platypusActionStatus = kASPlatMeasuringClown;
- _vm->_gnapActionStatus = kASPlatMeasuringClown;
- _vm->_timers[4] = 300;
- } else
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSBeerBarrel:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kASPlatMeasuringClown) {
- if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _s31_beerGuyDistracted) {
- _vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y) | 0x10000, 1);
- _s31_clerkMeasureMaxCtr += 5;
- _vm->_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
- _vm->playGnapPullOutDevice(6, 8);
- _vm->playGnapUseDevice(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASFillEmptyBucketWithBeer;
- _vm->_timers[4] = 300;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 6, 2);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 2);
- break;
- case GRAB_CURSOR:
- if (_s31_beerGuyDistracted) {
- _vm->playGnapScratchingHead(6, 2);
- } else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBeerBarrel].x, _vm->_hotspotsWalkPos[kHSBeerBarrel].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASUseBeerBarrel;
- _vm->_gnapIdleFacing = kDirUpLeft;
- }
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitCircus:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCircus].x + 1, _vm->_hotspotsWalkPos[kHSExitCircus].y, -1, -1, 1);
- }
- break;
-
- case kHSExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 27;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitOutsideClown].x, _vm->_hotspotsWalkPos[kHSExitOutsideClown].y + 1, -1, 0x107CF, 1);
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1093B))
- _vm->playSound(0x1093B, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0 && _s31_nextClerkSequenceId == -1) {
- switch (_vm->getRandom(6)){
- case 0:
- _s31_nextClerkSequenceId = 0xFF;
- break;
- case 1:
- _s31_nextClerkSequenceId = 0x100;
- break;
- case 2:
- _s31_nextClerkSequenceId = 0x101;
- break;
- default:
- _s31_nextClerkSequenceId = 0xFB;
- break;
- }
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
- }
- }
- _vm->playSoundB();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene31::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASUseBeerBarrel:
- _s31_nextClerkSequenceId = 0xFE;
- break;
- case kASFillEmptyBucketWithBeer:
- _vm->_gameSys->setAnimation(0x102, 59, 0);
- _vm->_gameSys->insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapX = 5;
- _vm->_gnapY = 7;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapSequenceId = 0x102;
- _vm->_gnapId = 59;
- _vm->_gnapActionStatus = kASFillEmptyBucketWithBeerDone;
- break;
- case kASFillEmptyBucketWithBeerDone:
- _vm->_gnapIdleFacing = kDirBottomLeft;
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- _vm->invAdd(kItemBucketWithBeer);
- _vm->invRemove(kItemEmptyBucket);
- _vm->setGrabCursorSprite(kItemBucketWithBeer);
- break;
- case kASUseMeasuringClown:
- _s31_nextClerkSequenceId = 0xFA;
- _s31_clerkMeasureMaxCtr = 1;
- break;
- case kASLeaveScene:
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- if (_vm->_platypusActionStatus == kASPlatMeasuringClown) {
- _vm->_sceneWaiting = true;
- _s31_beerGuyDistracted = true;
- _s31_nextClerkSequenceId = 0xFA;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- switch (_s31_nextClerkSequenceId) {
- case 0xFA:
- _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFC, 39, _s31_nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
- _s31_currClerkSequenceId = 0xFC;
- _s31_nextClerkSequenceId = 0xFC;
- _s31_clerkMeasureCtr = 0;
- break;
- case 0xFC:
- ++_s31_clerkMeasureCtr;
- if (_s31_clerkMeasureCtr >= _s31_clerkMeasureMaxCtr) {
- if (_vm->_gnapActionStatus != 5)
- _vm->_platypusActionStatus = -1;
- _vm->_timers[0] = 40;
- _vm->_gameSys->insertSequence(0xFD, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s31_currClerkSequenceId = 0xFD;
- _s31_nextClerkSequenceId = -1;
- if (_vm->_gnapActionStatus != kASFillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kASFillEmptyBucketWithBeer)
- _vm->_gnapActionStatus = -1;
- _s31_beerGuyDistracted = false;
- _s31_clerkMeasureMaxCtr = 3;
- _vm->_gameSys->setAnimation(0xFD, 39, 3);
- _vm->_sceneWaiting = false;
- } else {
- _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
- _s31_nextClerkSequenceId = 0xFC;
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
- }
- break;
- case 0xFE:
- _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s31_nextClerkSequenceId, 39, 3);
- _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
- _s31_nextClerkSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- break;
- default:
- if (_s31_nextClerkSequenceId != -1) {
- _vm->_gameSys->insertSequence(_s31_nextClerkSequenceId, 39, _s31_currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_s31_nextClerkSequenceId, 39, 3);
- _s31_currClerkSequenceId = _s31_nextClerkSequenceId;
- _s31_nextClerkSequenceId = -1;
- }
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene31.h b/engines/gnap/scenes/scene31.h
deleted file mode 100644
index 09b7c65..0000000
--- a/engines/gnap/scenes/scene31.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE31_H
-#define GNAP_SCENE31_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene31: public Scene {
-public:
- Scene31(GnapEngine *vm);
- ~Scene31() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- bool _s31_beerGuyDistracted;
- int _s31_currClerkSequenceId;
- int _s31_nextClerkSequenceId;
- int _s31_clerkMeasureCtr;
- int _s31_clerkMeasureMaxCtr;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE31_H
diff --git a/engines/gnap/scenes/scene32.cpp b/engines/gnap/scenes/scene32.cpp
deleted file mode 100644
index 75d2efa..0000000
--- a/engines/gnap/scenes/scene32.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene32.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitTruck = 1,
- kHSDevice = 2,
- kHSWalkArea1 = 3,
- kHSWalkArea2 = 4,
- kHSWalkArea3 = 5,
- kHSWalkArea4 = 6,
- kHSWalkArea5 = 7,
- kHSWalkArea6 = 8,
- kHSWalkArea7 = 9,
- kHSWalkArea8 = 10
-};
-
-enum {
- kASLeaveScene = 0
-};
-
-Scene32::Scene32(GnapEngine *vm) : Scene(vm) {
-
-}
-
-int Scene32::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0xF : 0x10;
-}
-
-void Scene32::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitTruck, 780, 226, 800, 455, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 6);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 162, 426);
- _vm->setHotspot(kHSWalkArea2, 162, 0, 237, 396);
- _vm->setHotspot(kHSWalkArea3, 237, 0, 319, 363);
- _vm->setHotspot(kHSWalkArea4, 520, 0, 800, 404);
- _vm->setHotspot(kHSWalkArea5, 300, 447, 800, 600);
- _vm->setHotspot(kHSWalkArea6, 678, 0, 800, 404);
- _vm->setHotspot(kHSWalkArea7, 0, 0, 520, 351);
- _vm->setHotspot(kHSWalkArea8, 0, 546, 300, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 11;
-}
-
-void Scene32::run() {
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(5);
- _vm->queueInsertDeviceIcon();
- _vm->_timers[4] = _vm->getRandom(100) + 300;
-
- if (_vm->_prevSceneNum == 33) {
- _vm->initGnapPos(11, 6, kDirBottomLeft);
- _vm->initPlatypusPos(12, 6, kDirUnk4);
- _vm->endSceneInit();
- _vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
- } else {
- _vm->initGnapPos(1, 6, kDirBottomRight);
- _vm->initPlatypusPos(1, 7, kDirNone);
- _vm->endSceneInit();
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitTruck:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitTruck].x, _vm->_hotspotsWalkPos[kHSExitTruck].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitTruck].x, _vm->_hotspotsWalkPos[kHSExitTruck].y + 1, -1, 0x107CD, 1);
- _vm->_newSceneNum = 33;
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
- case kHSWalkArea6:
- case kHSWalkArea7:
- case kHSWalkArea8:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = 0;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene32::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kASLeaveScene)
- _vm->_sceneDone = true;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene32.h b/engines/gnap/scenes/scene32.h
deleted file mode 100644
index d96e834..0000000
--- a/engines/gnap/scenes/scene32.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE32_H
-#define GNAP_SCENE32_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene32: public Scene {
-public:
- Scene32(GnapEngine *vm);
- ~Scene32() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE32_H
diff --git a/engines/gnap/scenes/scene33.cpp b/engines/gnap/scenes/scene33.cpp
deleted file mode 100644
index d0dec3f..0000000
--- a/engines/gnap/scenes/scene33.cpp
+++ /dev/null
@@ -1,328 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene33.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSChicken = 1,
- kHSDevice = 2,
- kHSExitHouse = 3,
- kHSExitBarn = 4,
- kHSExitCreek = 5,
- kHSExitPigpen = 6,
- kHSWalkArea1 = 7,
- kHSWalkArea2 = 8
-};
-
-enum {
- kASLeaveScene = 0,
- kASTalkChicken = 1,
- kASUseChicken = 2,
- kASUseChickenDone = 3
-};
-
-Scene33::Scene33(GnapEngine *vm) : Scene(vm) {
- _s33_currChickenSequenceId = -1;
- _s33_nextChickenSequenceId = -1;
-}
-
-int Scene33::init() {
- return _vm->isFlag(kGFPlatypusTalkingToAssistant) ? 0x84 : 0x85;
-}
-
-void Scene33::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSChicken, 606, 455, 702, 568, SF_WALKABLE | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSExitHouse, 480, 120, 556, 240, SF_EXIT_U_CURSOR, 7, 3);
- _vm->setHotspot(kHSExitBarn, 610, 75, 800, 164, SF_EXIT_U_CURSOR, 10, 3);
- _vm->setHotspot(kHSExitCreek, 780, 336, 800, 556, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- _vm->setHotspot(kHSExitPigpen, 0, 300, 20, 600, SF_EXIT_L_CURSOR | SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHSWalkArea1, 120, 0, 514, 458);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 800, 452);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 9;
-}
-
-void Scene33::run() {
- _vm->playSound(0x1091C, true);
- _vm->startSoundTimerC(6);
- _vm->queueInsertDeviceIcon();
-
- _s33_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _s33_nextChickenSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- _vm->_timers[4] = _vm->getRandom(100) + 300;
-
- switch (_vm->_prevSceneNum) {
- case 34:
- _vm->initGnapPos(11, 7, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 7, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
- break;
- case 37:
- _vm->initGnapPos(7, 7, kDirBottomRight);
- _vm->initPlatypusPos(8, 7, kDirNone);
- _vm->endSceneInit();
- break;
- case 32:
- _vm->initGnapPos(-1, 6, kDirBottomRight);
- _vm->initPlatypusPos(-1, 7, kDirNone);
- _vm->endSceneInit();
- _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- break;
- default:
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(2, 7, kDirNone);
- _vm->endSceneInit();
- break;
- }
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
- _vm->testWalk(0, 0, 7, 6, 8, 6);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSChicken:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 9, 9, 8);
- } else {
- switch (_vm->_verbCursor) {
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChicken].x, _vm->_hotspotsWalkPos[kHSChicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
- _vm->_gnapActionStatus = kASUseChicken;
- else
- _vm->_gnapActionStatus = -1;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChicken].x, _vm->_hotspotsWalkPos[kHSChicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkChicken;
- break;
- case LOOK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitHouse:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 37;
- if (_vm->_gnapX > 6)
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
- else
- _vm->gnapWalkTo(6, 7, 0, 0x107B1, 1);
- }
- break;
-
- case kHSExitBarn:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 35;
- if (_vm->_gnapX > 7)
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
- else
- _vm->gnapWalkTo(7, 7, 0, 0x107B1, 1);
- }
- break;
-
- case kHSExitCreek:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCreek].x, _vm->_hotspotsWalkPos[kHSExitCreek].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitCreek].x, _vm->_hotspotsWalkPos[kHSExitCreek].y, -1, 0x107CD, 1);
- _vm->_newSceneNum = 34;
- }
- break;
-
- case kHSExitPigpen:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitPigpen].x, _vm->_hotspotsWalkPos[kHSExitPigpen].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitPigpen].x, _vm->_hotspotsWalkPos[kHSExitPigpen].y, -1, 0x107CF, 1);
- _vm->_newSceneNum = 32;
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->isSoundPlaying(0x1091C))
- _vm->playSound(0x1091C, true);
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
- else
- _vm->_gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
- }
- if (!_vm->_timers[5] && _s33_nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kASTalkChicken && _vm->_gnapActionStatus != kASUseChicken) {
- if (_vm->getRandom(6) != 0) {
- _s33_nextChickenSequenceId = 0x7E;
- _vm->_timers[5] = _vm->getRandom(20) + 30;
- } else {
- _s33_nextChickenSequenceId = 0x80;
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- }
- }
- _vm->playSoundC();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene33::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASTalkChicken:
- _s33_nextChickenSequenceId = 0x7F;
- break;
- case kASUseChicken:
- _s33_nextChickenSequenceId = 0x81;
- _vm->_timers[2] = 100;
- break;
- case kASUseChickenDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapSequenceDatNum = 1;
- _s33_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_s33_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- _vm->_timers[5] = 30;
- break;
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- if (_s33_nextChickenSequenceId == 0x81) {
- _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_s33_currChickenSequenceId, 179, true);
- _s33_nextChickenSequenceId = -1;
- _s33_currChickenSequenceId = -1;
- _vm->_gnapActionStatus = kASUseChickenDone;
- _vm->_timers[5] = 500;
- } else if (_s33_nextChickenSequenceId == 0x7F) {
- _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _s33_currChickenSequenceId = _s33_nextChickenSequenceId;
- _s33_nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
- } else if (_s33_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_s33_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_s33_nextChickenSequenceId, 179, _s33_currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
- _s33_currChickenSequenceId = _s33_nextChickenSequenceId;
- _s33_nextChickenSequenceId = -1;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene33.h b/engines/gnap/scenes/scene33.h
deleted file mode 100644
index 4532a26..0000000
--- a/engines/gnap/scenes/scene33.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE33_H
-#define GNAP_SCENE33_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene33: public Scene {
-public:
- Scene33(GnapEngine *vm);
- ~Scene33() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s33_currChickenSequenceId;
- int _s33_nextChickenSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE33_H
diff --git a/engines/gnap/scenes/scene38.cpp b/engines/gnap/scenes/scene38.cpp
deleted file mode 100644
index 9360afd..0000000
--- a/engines/gnap/scenes/scene38.cpp
+++ /dev/null
@@ -1,360 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene38.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitHouse = 1,
- kHSExitCave = 2,
- kHSTrapDoorLid1 = 3,
- kHSTrapDoorLid2 = 4,
- kHSHuntingTrophy = 5,
- kHSWalkArea1 = 6,
- kHSDevice = 7,
- kHSWalkArea2 = 8,
- kHSWalkArea3 = 9,
- kHSWalkArea4 = 10,
- kHSWalkArea5 = 11,
- kHSWalkArea6 = 12
-};
-
-enum {
- kASLeaveScene = 0,
- kASExitCave = 1,
- kASUseHuntingTrophy = 2,
- kASHoldingHuntingTrophy = 3,
- kASReleaseHuntingTrophy = 4,
- kASUsePlatypusWithTrapDoor = 5,
- kASPlatypusHoldingTrapDoor = 6
-};
-
-Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene38::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- return 0xA5;
-}
-
-void Scene38::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitCave, 430, 440, 655, 470, SF_WALKABLE, 0, 8);
- _vm->setHotspot(kHSTrapDoorLid1, 525, 265, 640, 350, SF_DISABLED);
- _vm->setHotspot(kHSTrapDoorLid2, 555, 350, 670, 430, SF_DISABLED);
- _vm->setHotspot(kHSHuntingTrophy, 170, 85, 250, 190, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
- _vm->setHotspot(kHSWalkArea1, 330, 270, 640, 380, SF_DISABLED | SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 0, 8);
- _vm->setHotspot(kHSWalkArea2, 0, 0, 799, 396);
- _vm->setHotspot(kHSWalkArea3, 0, 585, 799, 599, SF_WALKABLE | SF_DISABLED);
- _vm->setHotspot(kHSWalkArea4, 0, 0, 97, 445);
- _vm->setHotspot(kHSWalkArea5, 770, 0, 799, 445);
- _vm->setHotspot(kHSWalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_hotspots[kHSPlatypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
- _vm->_hotspots[kHSExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_hotspots[kHSTrapDoorLid1]._flags = SF_DISABLED;
- else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
- _vm->_hotspots[kHSTrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_hotspots[kHSTrapDoorLid2]._flags = SF_DISABLED;
- else if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
- _vm->_hotspots[kHSTrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_hotspots[kHSWalkArea6]._flags = SF_NONE;
- _vm->_hotspotsCount = 13;
-}
-
-void Scene38::run() {
- _vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->_prevSceneNum == 39) {
- _vm->initGnapPos(3, 7, kDirBottomLeft);
- _vm->initPlatypusPos(4, 7, kDirUnk4);
- } else {
- _vm->initGnapPos(3, 8, kDirBottomRight);
- _vm->initPlatypusPos(4, 8, kDirNone);
- }
- _vm->endSceneInit();
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- break;
-
- case kHSExitHouse:
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- } else {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 37;
- }
- break;
-
- case kHSExitCave:
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->_isLeavingScene = true;
- } else if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _vm->_sceneWaiting = false;
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
- _vm->_newSceneNum = 39;
- _vm->_gnapActionStatus = kASExitCave;
- }
- break;
-
- case kHSTrapDoorLid1:
- case kHSTrapDoorLid2:
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy) {
- if (_vm->_verbCursor == PLAT_CURSOR && _vm->_platypusActionStatus != kASPlatypusHoldingTrapDoor)
- _vm->_gnapActionStatus = kASUsePlatypusWithTrapDoor;
- else
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- }
- break;
-
- case kHSHuntingTrophy:
- if (_vm->_gnapActionStatus != kASHoldingHuntingTrophy) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 6, 2, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
- break;
- case GRAB_CURSOR:
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor)
- _vm->playGnapImpossible(0, 0);
- else {
- _vm->gnapWalkTo(3, 6, 0, 0x107BB, 1);
- _vm->platypusWalkTo(4, 8, -1, -1, 1);
- _vm->_gnapActionStatus = kASUseHuntingTrophy;
- }
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(2, 0);
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- // Nothing
- break;
-
- case kHSWalkArea2:
- case kHSWalkArea3:
- case kHSWalkArea4:
- case kHSWalkArea5:
- case kHSWalkArea6:
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- else if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left) {
- if (_vm->_gnapActionStatus == kASHoldingHuntingTrophy)
- _vm->_gnapActionStatus = kASReleaseHuntingTrophy;
- else if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene38::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASExitCave:
- _vm->_gameSys->removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
- _vm->_gameSys->insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA3;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0xA3, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASLeaveScene;
- break;
- case kASUseHuntingTrophy:
- _vm->_gameSys->removeSequence(0x9B, 0, true);
- _vm->_gameSys->insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9C;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9C, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASHoldingHuntingTrophy;
- updateHotspots();
- break;
- case kASHoldingHuntingTrophy:
- if (_vm->_platypusActionStatus != kASPlatypusHoldingTrapDoor)
- _vm->_sceneWaiting = true;
- if (_vm->_gnapSequenceId == 0xA4) {
- _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9D;
- } else {
- _vm->_gameSys->insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA4;
- }
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
- break;
- case kASReleaseHuntingTrophy:
- if (_vm->_gnapSequenceId == 0x9E) {
- _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- } else if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0xA0;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->_isLeavingScene) {
- _vm->_sceneWaiting = false;
- _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
- _vm->_newSceneNum = 39;
- _vm->_gnapActionStatus = kASExitCave;
- } else {
- _vm->_gnapActionStatus = -1;
- }
- } else {
- _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9E;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
- _vm->_sceneWaiting = false;
- updateHotspots();
- }
- break;
- case kASUsePlatypusWithTrapDoor:
- _vm->_sceneWaiting = false;
- _vm->_gameSys->insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x9F;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9F, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASHoldingHuntingTrophy;
- if (_vm->_platypusFacing != kDirNone)
- _vm->playPlatypusSequence(0x107D5);
- else
- _vm->playPlatypusSequence(0x107D4);
- _vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
- _vm->_gameSys->insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xA1;
- _vm->_platypusSequenceDatNum = 0;
- _vm->_platypusId = _vm->_gnapId + 1;
- _vm->_gameSys->setAnimation(0xA1, _vm->_gnapId + 1, 1);
- _vm->_platypusActionStatus = kASPlatypusHoldingTrapDoor;
- updateHotspots();
- break;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- if (_vm->_platypusActionStatus == kASPlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_platypusSequenceId = 0xA2;
- _vm->_platypusSequenceDatNum = 0;
- updateHotspots();
- _vm->_sceneWaiting = true;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene38.h b/engines/gnap/scenes/scene38.h
deleted file mode 100644
index 8ad8e73..0000000
--- a/engines/gnap/scenes/scene38.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE38_H
-#define GNAP_SCENE38_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene38: public Scene {
-public:
- Scene38(GnapEngine *vm);
- ~Scene38() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE38_H
diff --git a/engines/gnap/scenes/scene39.cpp b/engines/gnap/scenes/scene39.cpp
deleted file mode 100644
index cfbdd57..0000000
--- a/engines/gnap/scenes/scene39.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene39.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitInsideHouse = 1,
- kHSExitUfoParty = 2,
- kHSSign = 3,
- kHSDevice = 4,
- kHSWalkArea1 = 5,
- kHSWalkArea2 = 6
-};
-
-enum {
- kASLeaveScene = 0
-};
-
-Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
- _s39_currGuySequenceId = -1;
- _s39_nextGuySequenceId = -1;
-}
-
-int Scene39::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- return 0x35;
-}
-
-void Scene39::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitInsideHouse, 0, 0, 140, 206, SF_EXIT_U_CURSOR, 4, 8);
- _vm->setHotspot(kHSExitUfoParty, 360, 204, 480, 430, SF_EXIT_R_CURSOR, 6, 8);
- _vm->setHotspot(kHSSign, 528, 232, 607, 397, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 3);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 466);
- _vm->setHotspot(kHSWalkArea2, 502, 466, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 7;
-}
-
-void Scene39::run() {
- // Bug in the original? Timer was never initialized.
- _vm->_timers[5] = 0;
-
- _vm->queueInsertDeviceIcon();
- _s39_currGuySequenceId = 0x33;
-
- _vm->_gameSys->setAnimation(0x33, 21, 3);
- _vm->_gameSys->insertSequence(_s39_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
-
- _s39_nextGuySequenceId = -1;
- if (_vm->_prevSceneNum == 38) {
- _vm->initGnapPos(3, 7, kDirUpRight);
- _vm->initPlatypusPos(2, 7, kDirUpLeft);
- _vm->endSceneInit();
- } else {
- _vm->initGnapPos(4, 7, kDirBottomRight);
- _vm->initPlatypusPos(5, 7, kDirNone);
- _vm->endSceneInit();
- }
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B)) {
- _vm->playSound(0x1094B, true);
- _vm->setSoundVolume(0x1094B, 60);
- }
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitUfoParty:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_sceneDone = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 40;
- }
- break;
-
- case kHSSign:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSign].x, _vm->_hotspotsWalkPos[kHSSign].y, 0, -1, 1);
- _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHSSign].x, _vm->_hotspotsWalkPos[kHSSign].y);
- _vm->showFullScreenSprite(0x1C);
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSExitInsideHouse:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_sceneDone = true;
- _vm->_isLeavingScene = true;
- _vm->_newSceneNum = 38;
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- _vm->_mouseClickState._left = false;
- }
- break;
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- switch (_vm->getRandom(4)) {
- case 0:
- _s39_nextGuySequenceId = 0x30;
- break;
- case 1:
- _s39_nextGuySequenceId = 0x31;
- break;
- case 2:
- _s39_nextGuySequenceId = 0x32;
- break;
- case 3:
- _s39_nextGuySequenceId = 0x33;
- break;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[5] = _vm->getRandom(20) + 50;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene39::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kASLeaveScene)
- _vm->_sceneDone = true;
- else
- _vm->_gnapActionStatus = -1;
- }
-
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _s39_nextGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_s39_nextGuySequenceId, 21, 3);
- _vm->_gameSys->insertSequence(_s39_nextGuySequenceId, 21, _s39_currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _s39_currGuySequenceId = _s39_nextGuySequenceId;
- _s39_nextGuySequenceId = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene39.h b/engines/gnap/scenes/scene39.h
deleted file mode 100644
index 68dfdfd..0000000
--- a/engines/gnap/scenes/scene39.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE39_H
-#define GNAP_SCENE39_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene39: public Scene {
-public:
- Scene39(GnapEngine *vm);
- ~Scene39() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _s39_currGuySequenceId;
- int _s39_nextGuySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE39_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 52925ca..a9024b5 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -29,14 +29,9 @@
#include "gnap/scenes/group0.h"
#include "gnap/scenes/group1.h"
#include "gnap/scenes/group2.h"
+#include "gnap/scenes/group3.h"
#include "gnap/scenes/intro.h"
-#include "gnap/scenes/scene30.h"
-#include "gnap/scenes/scene31.h"
-#include "gnap/scenes/scene32.h"
-#include "gnap/scenes/scene33.h"
-#include "gnap/scenes/scene38.h"
-#include "gnap/scenes/scene39.h"
#include "gnap/scenes/scene40.h"
#include "gnap/scenes/scene41.h"
#include "gnap/scenes/scene42.h"
Commit: 4120f8795e1aad9180a5207a9e8a068543ee84df
https://github.com/scummvm/scummvm/commit/4120f8795e1aad9180a5207a9e8a068543ee84df
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:46+02:00
Commit Message:
GNAP: renaming and grouping of scenes in group 4
Changed paths:
A engines/gnap/scenes/group4.cpp
A engines/gnap/scenes/group4.h
R engines/gnap/scenes/scene40.cpp
R engines/gnap/scenes/scene40.h
R engines/gnap/scenes/scene41.cpp
R engines/gnap/scenes/scene41.h
R engines/gnap/scenes/scene42.cpp
R engines/gnap/scenes/scene42.h
R engines/gnap/scenes/scene43.cpp
R engines/gnap/scenes/scene43.h
R engines/gnap/scenes/scene44.cpp
R engines/gnap/scenes/scene44.h
R engines/gnap/scenes/scene45.cpp
R engines/gnap/scenes/scene45.h
R engines/gnap/scenes/scene46.cpp
R engines/gnap/scenes/scene46.h
R engines/gnap/scenes/scene49.cpp
R engines/gnap/scenes/scene49.h
engines/gnap/module.mk
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 388b33b..cdbda4a 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -15,15 +15,8 @@ MODULE_OBJS := \
scenes/group1.o \
scenes/group2.o \
scenes/group3.o \
+ scenes/group4.o \
scenes/intro.o \
- scenes/scene40.o \
- scenes/scene41.o \
- scenes/scene42.o \
- scenes/scene43.o \
- scenes/scene44.o \
- scenes/scene45.o \
- scenes/scene46.o \
- scenes/scene49.o \
scenes/scene50.o \
scenes/scene51.o \
scenes/scene52.o \
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
new file mode 100644
index 0000000..7bb2961
--- /dev/null
+++ b/engines/gnap/scenes/group4.cpp
@@ -0,0 +1,3426 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group4.h"
+
+namespace Gnap {
+
+enum {
+ kHS40Platypus = 0,
+ kHS40ExitCave = 1,
+ kHS40ExitToyStand = 2,
+ kHS40ExitBBQ = 3,
+ kHS40ExitUfo = 4,
+ kHS40ExitKissinBooth = 5,
+ kHS40ExitDancefloor = 6,
+ kHS40ExitShoe = 7,
+ kHS40Device = 8
+};
+
+Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
+}
+
+int Scene40::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ return _vm->isFlag(kGFUnk23) ? 0x01 : 0x00;
+}
+
+void Scene40::updateHotspots() {
+ _vm->setHotspot(kHS40Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_DISABLED | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS40ExitCave, 169, 510, 264, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitToyStand, 238, 297, 328, 376, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitBBQ, 328, 220, 401, 306, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitUfo, 421, 215, 501, 282, SF_EXIT_U_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitKissinBooth, 476, 284, 556, 345, SF_EXIT_R_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitDancefloor, 317, 455, 445, 600, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setHotspot(kHS40ExitShoe, 455, 346, 549, 417, SF_EXIT_D_CURSOR, 0, 8);
+ _vm->setDeviceHotspot(kHS40Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+}
+
+void Scene40::run() {
+ _vm->queueInsertDeviceIcon();
+ _vm->endSceneInit();
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS40Device:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+
+ case kHS40Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS40ExitCave:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 39;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitToyStand:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 41;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitBBQ:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 42;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitUfo:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 43;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitKissinBooth:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 44;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitDancefloor:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 45;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ case kHS40ExitShoe:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_newSceneNum = 46;
+ _vm->_sceneDone = true;
+ }
+ break;
+
+ default:
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0)
+ _vm->_mouseClickState._left = false;
+ break;
+
+ }
+
+ updateAnimations();
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene40::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
+ if (_vm->_gnapActionStatus)
+ _vm->_gnapActionStatus = -1;
+ else
+ _vm->_sceneDone = true;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS41Platypus = 0,
+ kHS41ExitCave = 1,
+ kHS41Exit = 2,
+ kHS41ExitBBQ = 3,
+ kHS41ToyVendor = 4,
+ kHS41Kid = 5,
+ kHS41ToyUfo = 6,
+ kHS41Device = 7,
+ kHS41WalkArea1 = 8
+};
+
+enum {
+ kHS41UfoExitLeft = 1,
+ kHS41UfoExitRight = 2,
+ kHS41UfoDevice = 3,
+ kHS41UfoWalkArea1 = 4
+};
+
+enum {
+ kAS41LeaveScene = 0,
+ kAS41UseQuarterWithToyVendor = 1,
+ kAS41TalkToyVendor = 2,
+ kAS41UseGumWithToyUfo = 3,
+ kAS41UseChickenBucketWithKid = 4,
+ kAS41GrabKid = 5,
+ kAS41GiveBackToyUfo = 6,
+ kAS41ToyUfoLeaveScene = 7,
+ kAS41ToyUfoRefresh = 8,
+ kAS41UfoGumAttached = 9
+};
+
+Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
+ _currKidSequenceId = -1;
+ _nextKidSequenceId = -1;
+ _currToyVendorSequenceId = -1;
+ _nextToyVendorSequenceId = -1;
+}
+
+int Scene41::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ return 0x129;
+}
+
+void Scene41::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS41Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS41UfoExitLeft, 0, 0, 10, 500, SF_EXIT_L_CURSOR | SF_DISABLED);
+ _vm->setHotspot(kHS41UfoExitRight, 790, 0, 799, 500, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHS41UfoWalkArea1, 0, 0, 800, 470, SF_DISABLED);
+ _vm->setDeviceHotspot(kHS41UfoDevice, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 5;
+ } else {
+ _vm->setHotspot(kHS41Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS41ExitCave, 150, 590, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS41Exit, 0, 100, 10, 599, SF_EXIT_L_CURSOR | SF_DISABLED, 0, 8);
+ _vm->setHotspot(kHS41ExitBBQ, 790, 100, 799, 599, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
+ _vm->setHotspot(kHS41ToyVendor, 320, 150, 430, 310, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS41Kid, 615, 340, 710, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS41ToyUfo, 0, 0, 0, 0, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS41WalkArea1, 0, 0, 800, 470);
+ _vm->setDeviceHotspot(kHS41Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+ }
+}
+
+void Scene41::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoX = 770;
+ if (_vm->_toyUfoY < 0 || _vm->_toyUfoY > 300)
+ _vm->_toyUfoY = 150;
+ if (!_vm->_timers[9])
+ _vm->_gnapActionStatus = kAS41GiveBackToyUfo;
+ } else {
+ if (!_vm->isFlag(kGFUnk16) && !_vm->isFlag(kGFJointTaken) && !_vm->isFlag(kGFUnk18) && !_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->toyUfoSetStatus(kGFUnk16);
+ _vm->_toyUfoX = 600;
+ _vm->_toyUfoY = 200;
+ }
+
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ gameSys.insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
+ _currKidSequenceId = 0x11B;
+ else
+ _currKidSequenceId = 0x11D;
+
+ _nextKidSequenceId = -1;
+
+ gameSys.setAnimation(_currKidSequenceId, 1, 4);
+ gameSys.insertSequence(_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currToyVendorSequenceId = 0x118;
+ _nextToyVendorSequenceId = -1;
+
+ gameSys.setAnimation(0x118, 1, 3);
+ gameSys.insertSequence(_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_gnapSequenceId = 0x120;
+ _vm->_gnapSequenceDatNum = 0;
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapX = 7;
+ _vm->_gnapY = 7;
+ _vm->_gnapId = 140;
+ gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->initPlatypusPos(8, 10, kDirBottomLeft);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 45) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-2, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 42) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(5, 8, kDirBottomRight);
+ _vm->initPlatypusPos(6, 8, kDirBottomLeft);
+ _vm->endSceneInit();
+ }
+
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ if (!_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_hotspots[kHS41ToyUfo]._x1 = _vm->_toyUfoX - 25;
+ _vm->_hotspots[kHS41ToyUfo]._y1 = _vm->_toyUfoY - 20;
+ _vm->_hotspots[kHS41ToyUfo]._x2 = _vm->_toyUfoX + 25;
+ _vm->_hotspots[kHS41ToyUfo]._y2 = _vm->_toyUfoY + 20;
+ }
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS41UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kAS41ToyUfoLeaveScene;
+ _vm->_newSceneNum = 45;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
+ }
+ break;
+
+ case kHS41UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kAS41ToyUfoLeaveScene;
+ _vm->_newSceneNum = 42;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
+ }
+ break;
+
+ case kHS41UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ break;
+ }
+ } else {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS41Device:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ break;
+
+ case kHS41Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS41ExitCave:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave].x, _vm->_hotspotsWalkPos[kHS41ExitCave].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->_newSceneNum = 40;
+ break;
+
+ case kHS41Exit:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 45;
+ break;
+
+ case kHS41ExitBBQ:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 42;
+ break;
+
+ case kHS41ToyVendor:
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->_gnapActionStatus = kAS41UseQuarterWithToyVendor;
+ _vm->gnapWalkTo(4, 7, 0, 0x107BB, 9);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(4, 7, 5, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(5, 0);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS41TalkToyVendor;
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS41Kid:
+ if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS41UseChickenBucketWithKid;
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(7, 7, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(9, 0);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnapActionStatus = kAS41GrabKid;
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(7, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS41ToyUfo:
+ if (_vm->_grabCursorSpriteIndex == kItemGum) {
+ _vm->playGnapPullOutDevice(9, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ _vm->_gnapActionStatus = kAS41UseGumWithToyUfo;
+ }
+ break;
+
+ case kHS41WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+ }
+ }
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
+ _vm->_gnapActionStatus = 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->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ int sequenceId;
+ if (_vm->_leftClickMouseX >= 400) {
+ if (_vm->_gnapSequenceId == 0x11F || _vm->_gnapSequenceId == 0x120 || _vm->_gnapSequenceId == 0x123 || _vm->_gnapSequenceId == 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)
+ 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);
+ _vm->_toyUfoActionStatus = kAS41ToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _nextToyVendorSequenceId = 0x113;
+ break;
+ case 1:
+ _nextToyVendorSequenceId = 0x117;
+ break;
+ case 2:
+ _nextToyVendorSequenceId = 0x119;
+ break;
+ }
+ if (_nextToyVendorSequenceId == _currToyVendorSequenceId)
+ _nextToyVendorSequenceId = -1;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
+ if (_vm->isFlag(kGFGnapControlsToyUFO))
+ _nextKidSequenceId = 0x11B;
+ else if (_vm->getRandom(3) != 0)
+ _nextKidSequenceId = 0x11D;
+ else
+ _nextKidSequenceId = 0x11E;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene41::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
+ case kAS41LeaveScene:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS41UseQuarterWithToyVendor:
+ gameSys.setAnimation(0, 0, 0);
+ _nextToyVendorSequenceId = 0x114;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS41TalkToyVendor:
+ gameSys.setAnimation(0, 0, 0);
+ _nextToyVendorSequenceId = 0x116;
+ _vm->_gnapActionStatus = -1;
+ break;
+ case kAS41UseGumWithToyUfo:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->playGnapUseDevice(9, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemGum);
+ _vm->_toyUfoActionStatus = kAS41UfoGumAttached;
+ break;
+ case kAS41UseChickenBucketWithKid:
+ if (gameSys.getAnimationStatus(4) == 2) {
+ _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);
+ _nextKidSequenceId = 0x11A;
+ gameSys.insertSequence(0x11A, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = 0x11B;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
+ _vm->setFlag(kGFGnapControlsToyUFO);
+ updateHotspots();
+ _vm->_timers[9] = 600;
+ }
+ break;
+ case kAS41GrabKid:
+ 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);
+ _nextToyVendorSequenceId = 0x111;
+ gameSys.insertSequence(0x111, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _nextKidSequenceId = 0x10F;
+ gameSys.insertSequence(0x10F, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
+ }
+ break;
+ case kAS41GiveBackToyUfo:
+ 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,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceId = 0x124;
+ _vm->_gnapSequenceDatNum = 0;
+ gameSys.setAnimation(0x124, _vm->_gnapId, 0);
+ _nextToyVendorSequenceId = 0x112;
+ gameSys.insertSequence(0x112, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _nextKidSequenceId = 0x11C;
+ gameSys.insertSequence(0x11C, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ _vm->_gnapActionStatus = -1;
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+ updateHotspots();
+ }
+ break;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case kAS41ToyUfoLeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS41UfoGumAttached:
+ _vm->_toyUfoNextSequenceId = 0x873;
+ gameSys.insertSequence(0x10873, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 365, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ _vm->toyUfoSetStatus(kGFJointTaken);
+ break;
+ default:
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ break;
+ }
+ _vm->_toyUfoActionStatus = -1;
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2 && _nextToyVendorSequenceId != -1) {
+ gameSys.insertSequence(_nextToyVendorSequenceId, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
+ _currToyVendorSequenceId = _nextToyVendorSequenceId;
+ _nextToyVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ }
+
+ if (gameSys.getAnimationStatus(4) == 2 && _nextKidSequenceId != -1) {
+ gameSys.insertSequence(_nextKidSequenceId, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 1, 4);
+ _currKidSequenceId = _nextKidSequenceId;
+ _nextKidSequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(30) + 20;
+ if (_currKidSequenceId == 0x11E) {
+ _vm->_toyUfoActionStatus = kAS41ToyUfoRefresh;
+ _vm->toyUfoFlyTo(_vm->getRandom(300) + 500, _vm->getRandom(225) + 75, 0, 799, 0, 300, 2);
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS42Platypus = 0,
+ kHS42ExitUfoParty = 1,
+ kHS42ExitToyStand = 2,
+ kHS42ExitUfo = 3,
+ kHS42BBQVendor = 4,
+ kHS42ChickenLeg = 5,
+ kHS42Device = 6,
+ kHS42WalkArea1 = 7,
+ kHS42WalkArea2 = 8
+};
+
+enum {
+ kHS42UfoExitLeft = 1,
+ kHS42UfoExitRight = 2,
+ kHS42UfoHotSauce = 3,
+ kHS42UfoDevice = 4
+};
+
+enum {
+ kAS42LeaveScene = 0,
+ kAS42TalkBBQVendor = 1,
+ kAS42UseQuarterWithBBQVendor = 2,
+ kAS42UseQuarterWithBBQVendorDone = 3,
+ kAS42GrabChickenLeg = 4,
+ kAS42ToyUfoLeaveScene = 5,
+ kAS42ToyUfoRefresh = 6,
+ kAS42ToyUfoPickUpHotSauce = 7
+};
+
+Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
+ _currBBQVendorSequenceId = -1;
+ _nextBBQVendorSequenceId = -1;
+}
+
+int Scene42::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ if (_vm->isFlag(kGFPictureTaken) || (_vm->isFlag(kGFUnk18) && _vm->isFlag(kGFUnk23)))
+ return 0x153;
+ return 0x152;
+}
+
+void Scene42::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS42Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS42UfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS42UfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHS42UfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
+ _vm->setDeviceHotspot(kHS42UfoDevice, -1, 534, -1, 599);
+ if ((_vm->isFlag(kGFPictureTaken) || _vm->isFlag(kGFUnk18)) && _vm->isFlag(kGFUnk23) && !_vm->isFlag(kGFUnk24))
+ _vm->_hotspots[kHS42UfoHotSauce]._flags = SF_GRAB_CURSOR;
+ _vm->_hotspotsCount = 5;
+ } else {
+ _vm->setHotspot(kHS42Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS42ExitUfoParty, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS42ExitToyStand, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS42ExitUfo, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHS42BBQVendor, 410, 200, 520, 365, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 8);
+ _vm->setHotspot(kHS42ChickenLeg, 530, 340, 620, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 7);
+ _vm->setHotspot(kHS42WalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHS42WalkArea2, 240, 0, 550, 495);
+ _vm->setDeviceHotspot(kHS42Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 9;
+ }
+}
+
+void Scene42::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ _vm->queueInsertDeviceIcon();
+
+ _currBBQVendorSequenceId = 0x14A;
+ _nextBBQVendorSequenceId = -1;
+
+ gameSys.setAnimation(0x14A, 1, 2);
+ gameSys.insertSequence(_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ if (_vm->_prevSceneNum == 43 && _vm->isFlag(kGFUnk18)) {
+ _vm->_toyUfoSequenceId = 0x872;
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_toyUfoX = 317;
+ _vm->_toyUfoY = 61;
+ _vm->toyUfoSetStatus(kGFJointTaken);
+ _vm->setFlag(kGFPictureTaken);
+ _vm->_timers[9] = 600;
+ } else {
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 41)
+ _vm->_toyUfoX = 30;
+ else
+ _vm->_toyUfoX = 770;
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ }
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->endSceneInit();
+ if (_vm->_toyUfoSequenceId == 0x872)
+ _vm->setGrabCursorSprite(-1);
+ } else if (_vm->_prevSceneNum == 41) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ } else if (_vm->_prevSceneNum == 43) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ }
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS42UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kAS42ToyUfoLeaveScene;
+ _vm->_newSceneNum = 41;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ }
+ break;
+
+ case kHS42UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = kAS42ToyUfoLeaveScene;
+ _vm->_newSceneNum = 43;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ }
+ break;
+
+ case kHS42UfoHotSauce:
+ if (_vm->isFlag(kGFJointTaken)) {
+ _vm->_toyUfoActionStatus = kAS42ToyUfoPickUpHotSauce;
+ _vm->toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
+ _vm->_timers[9] = 600;
+ } else {
+ _vm->_toyUfoActionStatus = kAS42ToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ }
+ break;
+
+ case kHS42UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+ }
+ } else {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS42Device:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ break;
+
+ case kHS42Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS42ExitUfoParty:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->platypusWalkTo(_vm->_platX, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 40;
+ break;
+
+ case kHS42ExitToyStand:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 41;
+ break;
+
+ case kHS42ExitUfo:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 43;
+ break;
+
+ case kHS42BBQVendor:
+ if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, 0x107BB, 1);
+ _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendor;
+ if (_vm->_platY < 9)
+ _vm->platypusWalkTo(_vm->_platX, 9, -1, -1, 1);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = kAS42TalkBBQVendor;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS42ChickenLeg:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, _vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, 0, 0x107BC, 1);
+ _vm->_gnapActionStatus = kAS42GrabChickenLeg;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS42WalkArea1:
+ case kHS42WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ }
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = kAS42ToyUfoRefresh;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+
+ _vm->toyUfoCheckTimer();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextBBQVendorSequenceId == -1) {
+ switch (_vm->getRandom(8)) {
+ case 0:
+ _nextBBQVendorSequenceId = 0x14C;
+ break;
+ case 1:
+ case 2:
+ _nextBBQVendorSequenceId = 0x149;
+ break;
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ _nextBBQVendorSequenceId = 0x14D;
+ break;
+ case 7:
+ _nextBBQVendorSequenceId = 0x14A;
+ break;
+ }
+ if (_nextBBQVendorSequenceId == _currBBQVendorSequenceId && _nextBBQVendorSequenceId != 0x14D)
+ _nextBBQVendorSequenceId = -1;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene42::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
+ case kAS42LeaveScene:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _vm->_sceneDone = true;
+ break;
+ case kAS42TalkBBQVendor:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ _nextBBQVendorSequenceId = 0x14B;
+ break;
+ case kAS42UseQuarterWithBBQVendor:
+ case kAS42GrabChickenLeg:
+ if (gameSys.getAnimationStatus(2) == 2) {
+ int sequenceId;
+ if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor) {
+ _vm->invRemove(kItemDiceQuarterHole);
+ _vm->invAdd(kItemChickenBucket);
+ _vm->setGrabCursorSprite(-1);
+ sequenceId = 0x150;
+ _nextBBQVendorSequenceId = 0x148;
+ } else if (_vm->isFlag(kGFUnk27)) {
+ if (_vm->isFlag(kGFUnk28)) {
+ sequenceId = 0x7B7;
+ _nextBBQVendorSequenceId = 0x145;
+ } else {
+ _vm->setFlag(kGFUnk28);
+ sequenceId = 0x14F;
+ _nextBBQVendorSequenceId = 0x147;
+ }
+ } else {
+ _vm->setFlag(kGFUnk27);
+ sequenceId = 0x14E;
+ _nextBBQVendorSequenceId = 0x146;
+ }
+ if (sequenceId == 0x7B7) {
+ gameSys.insertSequence(0x107B7, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(_nextBBQVendorSequenceId),
+ 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->_gnapSequenceDatNum = 1;
+ } else {
+ gameSys.insertSequence(sequenceId, _vm->_gnapId,
+ makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ kSeqSyncWait, 0, 0, 0);
+ _vm->_gnapSequenceDatNum = 0;
+ }
+ _vm->_gnapSequenceId = sequenceId;
+ gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
+ if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor)
+ _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendorDone;
+ else
+ _vm->_gnapActionStatus = -1;
+ gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
+ _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
+ if (_nextBBQVendorSequenceId == 0x145)
+ _nextBBQVendorSequenceId = 0x14A;
+ else
+ _nextBBQVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = _vm->getRandom(50) + 200;
+ }
+ break;
+ case kAS42UseQuarterWithBBQVendorDone:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->setGrabCursorSprite(kItemChickenBucket);
+ _vm->_gnapActionStatus = -1;
+ break;
+ default:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2 && _nextBBQVendorSequenceId != -1) {
+ gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
+ _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
+ _nextBBQVendorSequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(20) + 30;
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case kAS42ToyUfoLeaveScene:
+ _vm->_sceneDone = true;
+ break;
+ case kAS42ToyUfoPickUpHotSauce:
+ gameSys.insertSequence(0x10870, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ _vm->setFlag(kGFUnk24);
+ updateHotspots();
+ _vm->toyUfoSetStatus(kGFGroceryStoreHatTaken);
+ _vm->_toyUfoSequenceId = 0x870;
+ gameSys.setAnimation(0x10870, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoX = 0x181;
+ _vm->_toyUfoY = 53;
+ break;
+ default:
+ if (_vm->_toyUfoSequenceId == 0x872) {
+ _vm->hideCursor();
+ _vm->addFullScreenSprite(0x13E, 255);
+ gameSys.setAnimation(0x151, 256, 0);
+ gameSys.insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ }
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10, 3);
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ _vm->_toyUfoId = (_vm->_toyUfoId + 1) % 10;
+ break;
+ }
+ _vm->_toyUfoActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS43Platypus = 0,
+ kHS43Device = 1,
+ kHS43ExitUfoParty = 2,
+ kHS43ExitBBQ = 3,
+ kHS43ExitKissinBooth = 4,
+ kHS43TwoHeadedGuy = 5,
+ kHS43Key = 6,
+ kHS43Ufo = 7,
+ kHS43WalkArea1 = 8,
+ kHS43WalkArea2 = 9
+};
+
+enum {
+ kHS43UfoExitLeft = 1,
+ kHS43UfoExitRight = 2,
+ kHS43UfoKey = 3,
+ kHS43UfoBucket = 4,
+ kHS43UfoDevice = 5
+};
+
+Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
+ _currTwoHeadedGuySequenceId = -1;
+ _nextTwoHeadedGuySequenceId = -1;
+}
+
+int Scene43::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ return 0x13F;
+}
+
+void Scene43::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS43Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS43UfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS43UfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setHotspot(kHS43UfoKey, 140, 170, 185, 260, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS43UfoBucket, 475, 290, 545, 365, SF_DISABLED);
+ _vm->setDeviceHotspot(kHS43UfoDevice, -1, 534, -1, 599);
+ if (_vm->isFlag(kGFGroceryStoreHatTaken))
+ _vm->_hotspots[kHS43UfoBucket]._flags = SF_GRAB_CURSOR;
+ // NOTE Bug in the original. Key hotspot wasn't disabled.
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_hotspots[kHS43UfoKey]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 6;
+ } else {
+ _vm->setHotspot(kHS43Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS43ExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS43ExitBBQ, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS43ExitKissinBooth, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHS43TwoHeadedGuy, 470, 240, 700, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS43Key, 140, 170, 185, 260, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS43Ufo, 110, 0, 690, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS43WalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHS43WalkArea2, 465, 0, 800, 493);
+ _vm->setDeviceHotspot(kHS43Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk14))
+ _vm->_hotspots[kHS43Key]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 10;
+ }
+}
+
+void Scene43::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (!_vm->isFlag(kGFUnk14))
+ gameSys.insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currTwoHeadedGuySequenceId = 0x13C;
+ _nextTwoHeadedGuySequenceId = -1;
+
+ gameSys.setAnimation(0x13C, 1, 2);
+ gameSys.insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 42)
+ _vm->_toyUfoX = 30;
+ else
+ _vm->_toyUfoX = 770;
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
+ } else {
+ switch (_vm->_prevSceneNum) {
+ case 42:
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ break;
+ case 44:
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ break;
+ case 54:
+ _vm->initGnapPos(4, 7, kDirBottomLeft);
+ _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ break;
+ default:
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ break;
+ }
+ }
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS43UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ break;
+
+ case kHS43UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 4;
+ _vm->_newSceneNum = 42;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ }
+ break;
+
+ case kHS43UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 4;
+ _vm->_newSceneNum = 44;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ }
+ break;
+
+ case kHS43UfoKey:
+ if (_vm->isFlag(kGFJointTaken)) {
+ _vm->_toyUfoActionStatus = 6;
+ _vm->toyUfoFlyTo(163, 145, 0, 799, 0, 300, 3);
+ } else {
+ _vm->_toyUfoActionStatus = 5;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ }
+ break;
+
+ case kHS43UfoBucket:
+ _vm->_toyUfoActionStatus = 7;
+ _vm->toyUfoFlyTo(497, 143, 0, 799, 0, 300, 3);
+ _vm->_timers[9] = 600;
+ break;
+ }
+ } else {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS43Device:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ break;
+
+ case kHS43Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS43ExitUfoParty:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->_newSceneNum = 40;
+ break;
+
+ case kHS43ExitBBQ:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 42;
+ break;
+
+ case kHS43ExitKissinBooth:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 44;
+ break;
+
+ case kHS43TwoHeadedGuy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(6, 8, 7, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(7, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 2;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS43Key:
+ case kHS43Ufo:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(3, 7, 2, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(0, 0);
+ break;
+ case GRAB_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(3, 7, 0, 67515, 1);
+ _vm->_gnapActionStatus = 1;
+ break;
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS43WalkArea1:
+ case kHS43WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+ }
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) {
+ _vm->_toyUfoActionStatus = 5;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+
+ _vm->toyUfoCheckTimer();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
+ switch (_vm->getRandom(5)) {
+ case 0:
+ _nextTwoHeadedGuySequenceId = 0x13C;
+ break;
+ case 1:
+ _nextTwoHeadedGuySequenceId = 0x134;
+ break;
+ case 2:
+ _nextTwoHeadedGuySequenceId = 0x135;
+ break;
+ case 3:
+ _nextTwoHeadedGuySequenceId = 0x136;
+ break;
+ case 4:
+ _nextTwoHeadedGuySequenceId = 0x13A;
+ break;
+ }
+ if (_nextTwoHeadedGuySequenceId == _currTwoHeadedGuySequenceId)
+ _nextTwoHeadedGuySequenceId = -1;
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ }
+
+ _vm->gameUpdateTick();
+ }
+
+ if (_vm->_newSceneNum == 54)
+ _vm->clearFlag(kGFGnapControlsToyUFO);
+}
+
+void Scene43::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_vm->_gnapActionStatus) {
+ case 0:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_sceneDone = true;
+ break;
+
+ case 1:
+ 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);
+ _nextTwoHeadedGuySequenceId = 0x13B;
+ gameSys.insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ _vm->_gnapActionStatus = -1;
+ }
+ break;
+
+ default:
+ gameSys.setAnimation(0, 0, 0);
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ if (_currTwoHeadedGuySequenceId == 0x13A) {
+ if (_vm->isFlag(kGFGroceryStoreHatTaken)) {
+ _nextTwoHeadedGuySequenceId = 0x13E;
+ _vm->stopSound(0x108F6);
+ } else if (_vm->getRandom(2) != 0) {
+ _nextTwoHeadedGuySequenceId = 0x137;
+ } else {
+ _nextTwoHeadedGuySequenceId = 0x138;
+ }
+ } else if (_currTwoHeadedGuySequenceId == 0x13E) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 54;
+ }
+ if (_nextTwoHeadedGuySequenceId != -1) {
+ gameSys.insertSequence(_nextTwoHeadedGuySequenceId, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
+ _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
+ _nextTwoHeadedGuySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(100) + 100;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case 4:
+ _vm->_sceneDone = true;
+ _vm->_toyUfoActionStatus = -1;
+ break;
+ case 6:
+ gameSys.insertSequence(0x10871, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x1086F, 1, true);
+ _vm->setFlag(kGFUnk14);
+ updateHotspots();
+ _vm->toyUfoSetStatus(kGFUnk18);
+ _vm->_toyUfoSequenceId = 0x871;
+ gameSys.setAnimation(0x10871, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoX = 96;
+ _vm->_toyUfoY = 131;
+ break;
+ case 7:
+ gameSys.insertSequence(0x10874, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
+ _vm->_toyUfoSequenceId = 0x874;
+ gameSys.setAnimation(0x10874, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = 8;
+ _vm->setFlag(kGFJointTaken);
+ _vm->_gnapActionStatus = 3;
+ break;
+ case 8:
+ _nextTwoHeadedGuySequenceId = 0x13A;
+ _vm->_toyUfoX = 514;
+ _vm->_toyUfoY = 125;
+ _vm->toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
+ _vm->_toyUfoActionStatus = 9;
+ break;
+ case 9:
+ // Nothing
+ break;
+ default:
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ _vm->_toyUfoActionStatus = -1;
+ break;
+ }
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS44Platypus = 0,
+ kHS44ExitUfoParty = 1,
+ kHS44ExitUfo = 2,
+ kHS44ExitShow = 3,
+ kHS44KissingLady = 4,
+ kHS44Spring = 5,
+ kHS44SpringGuy = 6,
+ kHS44Device = 7,
+ kHS44WalkArea1 = 8,
+ kHS44WalkArea2 = 9
+};
+
+enum {
+ kHS44UfoExitLeft = 1,
+ kHS44UfoExitRight = 2,
+ kHS44UfoDevice = 3
+};
+
+Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
+ _nextSpringGuySequenceId = -1;
+ _nextKissingLadySequenceId = -1;
+ _currSpringGuySequenceId = -1;
+ _currKissingLadySequenceId = -1;
+}
+
+int Scene44::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
+ return 0xFF;
+}
+
+void Scene44::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS44Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS44UfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS44UfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setDeviceHotspot(kHS44UfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
+ } else {
+ _vm->setHotspot(kHS44Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS44ExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS44ExitUfo, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS44ExitShow, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHS44KissingLady, 300, 160, 400, 315, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
+ _vm->setHotspot(kHS44Spring, 580, 310, 635, 375, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS44SpringGuy, 610, 375, 690, 515, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
+ _vm->setHotspot(kHS44WalkArea1, 0, 0, 800, 445);
+ _vm->setHotspot(kHS44WalkArea2, 617, 0, 800, 600);
+ _vm->setDeviceHotspot(kHS44Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk13))
+ _vm->_hotspots[kHS44KissingLady]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFSpringTaken))
+ _vm->_hotspots[kHS44Spring]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 10;
+ }
+}
+
+void Scene44::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ _vm->queueInsertDeviceIcon();
+
+ gameSys.insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFSpringTaken))
+ _currSpringGuySequenceId = 0xF8;
+ else
+ _currSpringGuySequenceId = 0xF9;
+
+ _nextSpringGuySequenceId = -1;
+ gameSys.setAnimation(_currSpringGuySequenceId, 1, 4);
+ gameSys.insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFUnk13)) {
+ if (_vm->_prevSceneNum != 50 || _vm->_sceneSavegameLoaded) {
+ _currKissingLadySequenceId = 0xF6;
+ _nextKissingLadySequenceId = -1;
+ } else {
+ _vm->setGrabCursorSprite(kItemGum);
+ _currKissingLadySequenceId = 0xF5;
+ _nextKissingLadySequenceId = 0xF6;
+ gameSys.setAnimation(0xF5, 1, 2);
+ }
+ } else {
+ _currKissingLadySequenceId = 0xEC;
+ _nextKissingLadySequenceId = -1;
+ gameSys.setAnimation(0xEC, 1, 2);
+ }
+
+ gameSys.insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 43)
+ _vm->_toyUfoX = 30;
+ else
+ _vm->_toyUfoX = 770;
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
+ } else {
+ switch (_vm->_prevSceneNum) {
+ case 43:
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 7, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ break;
+ case 46:
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
+ break;
+ case 50:
+ _vm->initGnapPos(4, 8, kDirBottomRight);
+ if (_vm->_sceneSavegameLoaded) {
+ _vm->initPlatypusPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
+ } else if (!_vm->isFlag(kGFUnk13)) {
+ _vm->_timers[0] = 50;
+ _vm->_timers[1] = 20;
+ _vm->_platX = 5;
+ _vm->_platY = 8;
+ _vm->_platypusSequenceId = 0xFD;
+ _vm->_platypusFacing = kDirNone;
+ _vm->_platypusId = 160;
+ _vm->_platypusSequenceDatNum = 0;
+ gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ _vm->endSceneInit();
+ break;
+ default:
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ break;
+ }
+ }
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS44UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 6;
+ _vm->_newSceneNum = 43;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
+ }
+ break;
+
+ case kHS44UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 6;
+ _vm->_newSceneNum = 46;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
+ }
+ break;
+
+ case kHS44UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ break;
+ }
+ } else if (_vm->_sceneClickedHotspot <= 9) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS44Device:
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ break;
+
+ case kHS44Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS44ExitUfoParty:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS44ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
+ break;
+
+ case kHS44ExitUfo:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 43;
+ break;
+
+ case kHS44ExitShow:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow].x, _vm->_hotspotsWalkPos[kHS44ExitShow].y, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 46;
+ break;
+
+ case kHS44KissingLady:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->_gnapActionStatus = 2;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, -1, 9);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(4, 3);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 1;
+ break;
+ case PLAT_CURSOR:
+ _vm->gnapUseDeviceOnPlatypuss();
+ _vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
+ if (_vm->_gnapX == 7 && _vm->_gnapY == 7)
+ _vm->gnapWalkStep();
+ _vm->playGnapIdle(5, 7);
+ _vm->_platypusActionStatus = 4;
+ break;
+ }
+ }
+ break;
+
+ case kHS44Spring:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring].x, _vm->_hotspotsWalkPos[kHS44Spring].y, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(8, 7);
+ break;
+ case GRAB_CURSOR:
+ _vm->playGnapPullOutDevice(8, 0);
+ _vm->playGnapUseDevice(8, 0);
+ _nextSpringGuySequenceId = 0xFB;
+ _vm->invAdd(kItemSpring);
+ _vm->setFlag(kGFSpringTaken);
+ updateHotspots();
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS44SpringGuy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, 8, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ if (_vm->isFlag(kGFSpringTaken))
+ _vm->playGnapMoan1(8, 7);
+ else
+ _vm->playGnapScratchingHead(8, 7);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS44WalkArea1:
+ case kHS44WalkArea2:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+
+ }
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 7;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextKissingLadySequenceId == -1) {
+ switch (_vm->getRandom(20)) {
+ case 0:
+ _nextKissingLadySequenceId = 0xED;
+ break;
+ case 1:
+ _nextKissingLadySequenceId = 0xEE;
+ break;
+ case 2:
+ _nextKissingLadySequenceId = 0xF0;
+ break;
+ case 3:
+ _nextKissingLadySequenceId = 0xF3;
+ break;
+ case 4:
+ _nextKissingLadySequenceId = 0xF4;
+ break;
+ default:
+ _nextKissingLadySequenceId = 0xEC;
+ break;
+ }
+ if (_nextKissingLadySequenceId != 0xEC && _nextKissingLadySequenceId == _currKissingLadySequenceId)
+ _nextKissingLadySequenceId = -1;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(20) + 20;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSpringGuySequenceId == -1) {
+ if (_vm->getRandom(5) != 0) {
+ if (!_vm->isFlag(kGFSpringTaken))
+ _nextSpringGuySequenceId = 0xF9;
+ } else {
+ if (_vm->isFlag(kGFSpringTaken))
+ _nextSpringGuySequenceId = 0xF8;
+ else
+ _nextSpringGuySequenceId = 0xFA;
+ }
+ }
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene44::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case 0:
+ _vm->_sceneDone = true;
+ break;
+ case 1:
+ _nextKissingLadySequenceId = 0xEF;
+ break;
+ case 2:
+ _nextKissingLadySequenceId = 0xF2;
+ break;
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
+ switch (_vm->_platypusActionStatus) {
+ 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.removeSequence(_currKissingLadySequenceId, 1, true);
+ _vm->_platypusActionStatus = 5;
+ }
+ break;
+ case 5:
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 50;
+ break;
+ default:
+ _vm->_platypusActionStatus = -1;
+ break;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ if (_nextKissingLadySequenceId == 0xF6) {
+ gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ _vm->initPlatypusPos(5, 8, kDirNone);
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
+ gameSys.setAnimation(0, 0, 2);
+ } else if (_nextKissingLadySequenceId != -1) {
+ gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKissingLadySequenceId, 1, 2);
+ _currKissingLadySequenceId = _nextKissingLadySequenceId;
+ _nextKissingLadySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(20) + 20;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(4) == 2) {
+ if (_currSpringGuySequenceId == 0xFB) {
+ _vm->setGrabCursorSprite(kItemSpring);
+ _nextSpringGuySequenceId = 0xF8;
+ }
+ if (_nextSpringGuySequenceId != -1) {
+ gameSys.insertSequence(_nextSpringGuySequenceId, 1, _currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextSpringGuySequenceId, 1, 4);
+ _currSpringGuySequenceId = _nextSpringGuySequenceId;
+ _nextSpringGuySequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(20) + 20;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case 6:
+ _vm->_sceneDone = true;
+ break;
+ default:
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
+ break;
+ }
+ _vm->_toyUfoActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS45Platypus = 0,
+ kHS45ExitUfoParty = 1,
+ kHS45ExitShoe = 2,
+ kHS45ExitRight = 3,
+ kHS45ExitDiscoBall = 4,
+ kHS45DiscoBall = 5,
+ kHS45Device = 6,
+ kHS45WalkArea1 = 7
+};
+
+enum {
+ kHS45UfoExitLeft = 1,
+ kHS45UfoExitRight = 2,
+ kHS45UfoDevice = 3
+};
+
+Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
+ _currDancerSequenceId = -1;
+}
+
+int Scene45::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 4);
+ gameSys.setAnimation(0, 0, 5);
+ return _vm->isFlag(kGFUnk23) ? 0xA2 : 0xA1;
+}
+
+void Scene45::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS45Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS45UfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS45UfoExitRight, 794, 0, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED);
+ _vm->setDeviceHotspot(kHS45UfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
+ } else {
+ _vm->setHotspot(kHS45Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS45ExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS45ExitShoe, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS45ExitRight, 794, 100, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED, 10, 8);
+ _vm->setHotspot(kHS45ExitDiscoBall, 200, 0, 600, 10, SF_DISABLED);
+ _vm->setHotspot(kHS45DiscoBall, 370, 10, 470, 125, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
+ _vm->setHotspot(kHS45WalkArea1, 0, 0, 800, 472);
+ _vm->setDeviceHotspot(kHS45Device, -1, -1, -1, -1);
+ if (_vm->isFlag(kGFUnk22)) {
+ _vm->_hotspots[kHS45Platypus]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS45ExitUfoParty]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS45ExitShoe]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS45ExitRight]._flags = SF_DISABLED;
+ _vm->_hotspots[kHS45ExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
+ }
+ if (_vm->isFlag(kGFUnk23) || _vm->isFlag(kGFUnk22))
+ _vm->_hotspots[kHS45DiscoBall]._flags = SF_DISABLED;
+ _vm->_hotspotsCount = 8;
+ }
+}
+
+void Scene45::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (!_vm->isSoundPlaying(0x1094A))
+ _vm->playSound(0x1094A, true);
+
+ _vm->queueInsertDeviceIcon();
+
+ gameSys.insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
+ _currDancerSequenceId = 0x8F;
+ gameSys.setAnimation(_currDancerSequenceId, 1, 2);
+ gameSys.insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 46)
+ _vm->_toyUfoX = 30;
+ else
+ _vm->_toyUfoX = 770;
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 5);
+ 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;
+ gameSys.setAnimation(0x9E, 1, 0);
+ _vm->_gnapActionStatus = 1;
+ gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->initPlatypusPos(4, 8, kDirNone);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 46) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 41) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->gnapWalkTo(10, 9, -1, 0x107BA, 1);
+ } else {
+ _vm->initGnapPos(2, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ }
+
+ 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);
+ while (gameSys.getAnimationStatus(0) != 2) {
+ _vm->gameUpdateTick();
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
+ int newSeqId = _vm->getRandom(7) + 0x8F;
+ gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
+ }
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
+ gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
+ }
+ }
+ _vm->_gnapSequenceId = 0x9D;
+ _vm->_gnapSequenceDatNum = 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,
+ kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ _vm->removeFullScreenSprite();
+ _vm->showCursor();
+ _vm->_gnapSequenceId = 0x7BD;
+ _vm->_gnapSequenceDatNum = 1;
+ }
+
+ _vm->playPlatypusSequence(0x9A);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094A))
+ _vm->playSound(0x1094A, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS45UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 2;
+ _vm->_newSceneNum = 46;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 5);
+ }
+ break;
+
+ case kHS45UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 2;
+ _vm->_newSceneNum = 41;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 5);
+ }
+ break;
+
+ case kHS45UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+ }
+ } else {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS45Device:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+
+ case kHS45Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ _vm->playPlatypusSequence(0x9A);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS45ExitUfoParty:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
+ }
+ break;
+
+ case kHS45ExitShoe:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 46;
+ }
+ break;
+
+ case kHS45ExitRight:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 41;
+ }
+ break;
+
+ case kHS45ExitDiscoBall:
+ _vm->clearFlag(kGFUnk22);
+ _vm->setFlag(kGFUnk23);
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 54;
+ break;
+
+ case kHS45DiscoBall:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex == kItemSpring) {
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall].x, _vm->_hotspotsWalkPos[kHS45DiscoBall].y, 0, 0x9F, 5);
+ _vm->_gnapActionStatus = 1;
+ _vm->setGrabCursorSprite(-1);
+ _vm->invRemove(kItemSpring);
+ } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapScratchingHead(5, 0);
+ break;
+ case GRAB_CURSOR:
+ case TALK_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS45WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+ }
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 3;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
+
+ if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+
+ _vm->_sceneWaiting = false;
+}
+
+void Scene45::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case 0:
+ _vm->_sceneDone = true;
+ break;
+ case 1:
+ _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);
+ break;
+ default:
+ _vm->_gnapActionStatus = -1;
+ break;
+ }
+ }
+
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
+ if (_vm->getRandom(2) != 0)
+ _vm->playPlatypusSequence(0x9B);
+ else
+ _vm->playPlatypusSequence(0x9C);
+ gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
+ int newSeqId = _vm->getRandom(7) + 0x8F;
+ gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(newSeqId, 1, 2);
+ _currDancerSequenceId = newSeqId;
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
+ gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x96, 1, 3);
+ gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x99, 1, 4);
+ }
+
+ if (gameSys.getAnimationStatus(5) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case 2:
+ _vm->_sceneDone = true;
+ break;
+ default:
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 5);
+ break;
+ }
+ _vm->_toyUfoActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+enum {
+ kHS46Platypus = 0,
+ kHS46ExitUfoParty = 1,
+ kHS46ExitKissinBooth = 2,
+ kHS46ExitDisco = 3,
+ kHS46SackGuy = 4,
+ kHS46ItchyGuy = 5,
+ kHS46Device = 6,
+ kHS46WalkArea1 = 7
+};
+
+enum {
+ kHS46UfoExitLeft = 1,
+ kHS46UfoExitRight = 2,
+ kHS46UfoDevice = 3
+};
+
+Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
+ _currSackGuySequenceId = -1;
+ _nextItchyGuySequenceId = -1;
+ _nextSackGuySequenceId = -1;
+ _currItchyGuySequenceId = -1;
+}
+
+int Scene46::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 4);
+ return 0x4E;
+}
+
+void Scene46::updateHotspots() {
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->setHotspot(kHS46Platypus, 0, 0, 0, 0, SF_DISABLED);
+ _vm->setHotspot(kHS46UfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
+ _vm->setHotspot(kHS46UfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
+ _vm->setDeviceHotspot(kHS46UfoDevice, -1, 534, -1, 599);
+ _vm->_hotspotsCount = 4;
+ } else {
+ _vm->setHotspot(kHS46Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS46ExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
+ _vm->setHotspot(kHS46ExitKissinBooth, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
+ _vm->setHotspot(kHS46ExitDisco, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
+ _vm->setHotspot(kHS46SackGuy, 180, 370, 235, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHS46ItchyGuy, 535, 210, 650, 480, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
+ _vm->setHotspot(kHS46WalkArea1, 0, 0, 800, 485);
+ _vm->setDeviceHotspot(kHS46Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 8;
+ }
+}
+
+void Scene46::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ _vm->queueInsertDeviceIcon();
+ gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
+
+ _currSackGuySequenceId = 0x4B;
+ _nextSackGuySequenceId = -1;
+ gameSys.setAnimation(0x4B, 1, 3);
+ gameSys.insertSequence(_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ _currItchyGuySequenceId = 0x47;
+ _nextItchyGuySequenceId = -1;
+ gameSys.setAnimation(0x47, 1, 4);
+ gameSys.insertSequence(_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoId = 0;
+ _vm->_toyUfoActionStatus = -1;
+ _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
+ _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
+ if (_vm->_prevSceneNum == 44)
+ _vm->_toyUfoX = 30;
+ else
+ _vm->_toyUfoX = 770;
+ gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->endSceneInit();
+ } else if (_vm->_prevSceneNum == 44) {
+ _vm->initGnapPos(-1, 8, kDirUpRight);
+ _vm->initPlatypusPos(-1, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ } else if (_vm->_prevSceneNum == 45) {
+ _vm->initGnapPos(11, 8, kDirUpRight);
+ _vm->initPlatypusPos(12, 8, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ } else {
+ _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->endSceneInit();
+ _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ }
+
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
+
+ while (!_vm->_sceneDone) {
+ if (!_vm->isSoundPlaying(0x1094B))
+ _vm->playSound(0x1094B, true);
+
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS46UfoExitLeft:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 3;
+ _vm->_newSceneNum = 44;
+ _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
+ }
+ break;
+
+ case kHS46UfoExitRight:
+ if (_vm->_toyUfoActionStatus < 0) {
+ _vm->_isLeavingScene = true;
+ _vm->_toyUfoActionStatus = 3;
+ _vm->_newSceneNum = 45;
+ _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
+ }
+ break;
+
+ case kHS46UfoDevice:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+ }
+ } else {
+ switch (_vm->_sceneClickedHotspot) {
+ case kHS46Device:
+ _vm->runMenu();
+ updateHotspots();
+ break;
+
+ case kHS46Platypus:
+ if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ break;
+ case GRAB_CURSOR:
+ _vm->gnapKissPlatypus(0);
+ break;
+ case TALK_CURSOR:
+ _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
+ break;
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ break;
+ }
+ }
+ }
+ break;
+
+ case kHS46SackGuy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 2, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 2;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS46ItchyGuy:
+ if (_vm->_grabCursorSpriteIndex >= 0) {
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 7, 0);
+ } else {
+ switch (_vm->_verbCursor) {
+ case LOOK_CURSOR:
+ _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0);
+ break;
+ case TALK_CURSOR:
+ _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnapActionStatus = 1;
+ break;
+ case GRAB_CURSOR:
+ case PLAT_CURSOR:
+ _vm->playGnapImpossible(0, 0);
+ break;
+ }
+ }
+ break;
+
+ case kHS46ExitUfoParty:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 40;
+ break;
+
+ case kHS46ExitKissinBooth:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->_newSceneNum = 44;
+ break;
+
+ case kHS46ExitDisco:
+ _vm->_isLeavingScene = true;
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->_gnapActionStatus = 0;
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->_newSceneNum = 45;
+ break;
+
+ case kHS46WalkArea1:
+ if (_vm->_gnapActionStatus < 0)
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ break;
+ }
+ }
+
+ if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ _vm->_mouseClickState._left = false;
+ if (_vm->isFlag(kGFGnapControlsToyUFO)) {
+ _vm->_toyUfoActionStatus = 4;
+ _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
+ } else {
+ _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ }
+ }
+
+ updateAnimations();
+ _vm->toyUfoCheckTimer();
+
+ if (!_vm->_isLeavingScene) {
+ if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updatePlatypusIdleSequence();
+ if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->updateGnapIdleSequence();
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextItchyGuySequenceId == -1) {
+ if (_vm->getRandom(2) != 0)
+ _nextItchyGuySequenceId = 0x49;
+ else
+ _nextItchyGuySequenceId = 0x48;
+ }
+ }
+ if (!_vm->_timers[5]) {
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
+ if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSackGuySequenceId == -1)
+ _nextSackGuySequenceId = 0x4C;
+ }
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+
+ _vm->gameUpdateTick();
+ }
+}
+
+void Scene46::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
+ switch (_vm->_gnapActionStatus) {
+ case 0:
+ _vm->_sceneDone = true;
+ break;
+ case 1:
+ _nextItchyGuySequenceId = 0x46;
+ break;
+ case 2:
+ _nextSackGuySequenceId = 0x4A;
+ break;
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+
+ if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) {
+ gameSys.insertSequence(_nextSackGuySequenceId, 1, _currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextSackGuySequenceId, 1, 3);
+ _currSackGuySequenceId = _nextSackGuySequenceId;
+ _nextSackGuySequenceId = -1;
+ _vm->_timers[5] = _vm->getRandom(50) + 80;
+ }
+
+ if (gameSys.getAnimationStatus(4) == 2 && _nextItchyGuySequenceId != -1) {
+ gameSys.insertSequence(_nextItchyGuySequenceId, 1, _currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextItchyGuySequenceId, 1, 4);
+ _currItchyGuySequenceId = _nextItchyGuySequenceId;
+ _nextItchyGuySequenceId = -1;
+ _vm->_timers[4] = _vm->getRandom(50) + 80;
+ }
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ switch (_vm->_toyUfoActionStatus) {
+ case 3:
+ _vm->_sceneDone = true;
+ break;
+ default:
+ _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
+ gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
+ _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
+ kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
+ _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
+ ++_vm->_toyUfoId;
+ gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
+ break;
+ }
+ _vm->_toyUfoActionStatus = -1;
+ }
+}
+
+/*****************************************************************************/
+
+static const ObstacleDef kObstacleDefs[] = {
+ {0xB4, 15}, {0xCB, 14}, {0xCD, 13}, {0xCF, 15}, {0xBA, 14},
+ {0xCD, 13}, {0xCF, 12}, {0xCB, 15}, {0xBD, 13}, {0xCF, 12},
+ {0xCD, 11}, {0xCB, 15}, {0xB7, 12}, {0xCD, 11}, {0xCB, 10},
+ {0xCF, 15}, {0xCF, 14}, {0xBD, 13}, {0xCF, 12}, {0xCD, 11},
+ {0xCB, 15}, {0xCB, 13}, {0xB4, 12}, {0xCB, 11}, {0xCD, 10},
+ {0xCF, 15}, {0xCD, 12}, {0xBA, 12}, {0xCD, 12}, {0xCF, 12},
+ {0xCB, 15}, {0xCB, 9}, {0xCD, 9}, {0xCF, 9}, {0xCD, 9},
+ {0xCB, 9}, {0xCD, 9}, {0xCF, 5}, {0xBD, 13}, {0xCF, 8},
+ {0xCB, 8}, {0xCD, 15}, {0xB4, 1}, {0xBD, 7}, {0xCF, 7},
+ {0xCD, 7}, {0xCB, 7}, {0xCD, 7}, {0xCF, 15}, {0xCF, 15}
+};
+
+Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
+ _scoreBarFlash = false;
+ _scoreBarPos = -1;
+ _scoreLevel = -1;
+ _obstacleIndex = -1;
+ _truckSequenceId = -1;
+ _truckId = -1;
+ _truckLaneNum = -1;
+
+ for (int i = 0; i < 5; i++) {
+ _obstacles[i]._currSequenceId = -1;
+ _obstacles[i]._closerSequenceId = -1;
+ _obstacles[i]._passedSequenceId = -1;
+ _obstacles[i]._splashSequenceId = -1;
+ _obstacles[i]._collisionSequenceId = -1;
+ _obstacles[i]._prevId = -1;
+ _obstacles[i]._currId = -1;
+ _obstacles[i]._laneNum = -1;
+ }
+}
+
+int Scene49::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ for (int i = 0; i < 5; ++i)
+ gameSys.setAnimation(0, 0, i + 2);
+ _vm->_timers[2] = 0;
+ _vm->_timers[0] = 0;
+ _vm->_timers[1] = 0;
+ _vm->clearKeyStatus1(28);
+ _vm->clearKeyStatus1(54);
+ _vm->clearKeyStatus1(52);
+ return 0xD5;
+}
+
+void Scene49::updateHotspots() {
+ _vm->_hotspotsCount = 0;
+}
+
+void Scene49::checkObstacles() {
+ if (_vm->_timers[2] == 0) {
+ if (_vm->_timers[3] == 0) {
+ for (int i = 0; i < 5; ++i)
+ clearObstacle(i);
+ }
+
+ for (int j = 0; j < 5; ++j) {
+ if (_obstacles[j]._currSequenceId == 0) {
+ _vm->_timers[3] = 35;
+ _obstacles[j]._currSequenceId = kObstacleDefs[_obstacleIndex]._sequenceId;
+ switch (_obstacles[j]._currSequenceId) {
+ case 0xB4:
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 180;
+ _obstacles[j]._passedSequenceId = 181;
+ _obstacles[j]._splashSequenceId = 182;
+ _obstacles[j]._collisionSequenceId = 192;
+ break;
+ case 0xB7:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 183;
+ _obstacles[j]._passedSequenceId = 184;
+ _obstacles[j]._splashSequenceId = 185;
+ _obstacles[j]._collisionSequenceId = 193;
+ break;
+ case 0xBD:
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 189;
+ _obstacles[j]._passedSequenceId = 190;
+ _obstacles[j]._splashSequenceId = 191;
+ _obstacles[j]._collisionSequenceId = 195;
+ break;
+ case 0xBA:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 186;
+ _obstacles[j]._passedSequenceId = 187;
+ _obstacles[j]._splashSequenceId = 188;
+ _obstacles[j]._collisionSequenceId = 194;
+ break;
+ case 0xCB:
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 203;
+ _obstacles[j]._passedSequenceId = 204;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 209;
+ break;
+ case 0xCD:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 205;
+ _obstacles[j]._passedSequenceId = 206;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 210;
+ break;
+ case 0xCF:
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 207;
+ _obstacles[j]._passedSequenceId = 208;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 211;
+ break;
+ }
+ _obstacles[j]._prevId = _truckId;
+ _obstacles[j]._currId = _obstacles[j]._prevId;
+ _vm->_gameSys->setAnimation(_obstacles[j]._currSequenceId, _obstacles[j]._currId, j + 2);
+ _vm->_gameSys->insertSequence(_obstacles[j]._currSequenceId, _obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_timers[2] = kObstacleDefs[_obstacleIndex]._ticks;
+ ++_obstacleIndex;
+ if (_obstacleIndex == 50)
+ _obstacleIndex = 0;
+ break;
+ }
+ }
+ }
+}
+
+void Scene49::updateObstacle(int id) {
+ GameSys gameSys = *_vm->_gameSys;
+ Scene49Obstacle &obstacle = _obstacles[id];
+
+ obstacle._currId = obstacle._prevId;
+
+ switch (obstacle._laneNum) {
+ case 1:
+ obstacle._prevId = _truckId + 1;
+ break;
+ case 2:
+ if (_truckLaneNum != 2 && _truckLaneNum != 3)
+ obstacle._prevId = _truckId - 1;
+ else
+ obstacle._prevId = _truckId + 1;
+ break;
+ case 3:
+ if (_truckLaneNum != 1 && _truckLaneNum != 2)
+ obstacle._prevId = _truckId;
+ else
+ obstacle._prevId = _truckId - 1;
+ break;
+ }
+
+ if (obstacle._currSequenceId == obstacle._closerSequenceId) {
+ if (_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
+ _vm->playSound(224, false);
+ increaseScore(30);
+ } else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
+ (obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
+ (obstacle._laneNum == 3 && _truckSequenceId == 0xB3)) {
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ } else {
+ gameSys.setAnimation(obstacle._collisionSequenceId, 256, 0);
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ gameSys.insertSequence(obstacle._collisionSequenceId, 256,
+ _truckSequenceId, _truckId,
+ kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = obstacle._collisionSequenceId;
+ _truckId = 256;
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ _vm->playSound(225, false);
+ decreaseScore(30);
+ }
+ } else {
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ }
+ } else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
+ if (_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
+ _vm->playSound(224, false);
+ increaseScore(30);
+ }
+ } else if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._splashSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._splashSequenceId;
+ }
+ } else {
+ gameSys.setAnimation(0, 0, id + 2);
+ clearObstacle(id);
+ }
+}
+
+void Scene49::increaseScore(int amount) {
+ if (_scoreBarPos + amount <= 556) {
+ _scoreBarPos += amount;
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
+ }
+ _scoreLevel = _scoreBarPos + amount >= 556;
+}
+
+void Scene49::decreaseScore(int amount) {
+ if (_scoreBarPos >= 226 && _scoreLevel == 0) {
+ if (_scoreBarFlash)
+ refreshScoreBar();
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
+ _scoreBarPos -= amount;
+ _scoreLevel = 0;
+ }
+}
+
+void Scene49::refreshScoreBar() {
+ if (_scoreBarFlash)
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
+ else
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
+ _scoreBarFlash = !_scoreBarFlash;
+}
+
+void Scene49::clearObstacle(int index) {
+ _obstacles[index]._currSequenceId = 0;
+ _obstacles[index]._closerSequenceId = 0;
+ _obstacles[index]._passedSequenceId = 0;
+ _obstacles[index]._splashSequenceId = 0;
+ _obstacles[index]._collisionSequenceId = 0;
+ _obstacles[index]._prevId = 0;
+ _obstacles[index]._currId = 0;
+ _obstacles[index]._laneNum = 0;
+}
+
+void Scene49::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ bool animToggle6 = false;
+ bool animToggle5 = false;
+ bool animToggle4 = false;
+ bool animToggle3 = false;
+ bool streetAnimToggle = false;
+ bool bgAnimToggle = false;
+
+ _vm->playSound(0xE2, true);
+ _vm->setSoundVolume(0xE2, 75);
+
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+
+ _scoreBarPos = 196;
+ _scoreLevel = 0;
+ _scoreBarFlash = false;
+
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _truckSequenceId = 0xAD;
+ _truckLaneNum = 1;
+ break;
+ case 1:
+ _truckSequenceId = 0xAE;
+ _truckLaneNum = 2;
+ break;
+ case 2:
+ _truckSequenceId = 0xAF;
+ _truckLaneNum = 3;
+ break;
+ }
+
+ int bgWidth1 = gameSys.getSpriteWidthById(0x5E);
+ int bgX1 = 600;
+
+ int bgWidth2 = gameSys.getSpriteWidthById(0x5F);
+ int bgX2 = 400;
+
+ int bgWidth3 = gameSys.getSpriteWidthById(4);
+ int bgX3 = 700;
+
+ int bgWidth4 = gameSys.getSpriteWidthById(5);
+ int bgX4 = 500;
+
+ int bgWidth5 = gameSys.getSpriteWidthById(6);
+ int bgX5 = 300;
+
+ int bgWidth6 = gameSys.getSpriteWidthById(7);
+ int bgX6 = 100;
+
+ gameSys.setAnimation(0xC8, 251, 1);
+ gameSys.setAnimation(_truckSequenceId, 256, 0);
+ gameSys.insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
+ gameSys.insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
+ gameSys.insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
+ gameSys.insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
+ gameSys.insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
+ gameSys.insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
+ gameSys.insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
+ gameSys.insertSequence(_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
+
+ _vm->_timers[0] = 2;
+
+ for (int i = 0; i < 5; ++i)
+ clearObstacle(i);
+
+ _obstacleIndex = 0;
+
+ _vm->_timers[2] = _vm->getRandom(20) + 10;
+
+ _truckId = 256;
+ _vm->_timers[3] = 35;
+
+ while (!_vm->_sceneDone) {
+ if (_vm->_timers[0] == 0) {
+ // Update background animations (clouds etc.)
+ --bgX1;
+ bgX2 -= 2;
+ bgX3 -= 5;
+ --bgX4;
+ --bgX5;
+ --bgX6;
+ if (bgX1 <= -bgWidth1)
+ bgX1 = 799;
+ if (bgX2 <= -bgWidth2)
+ bgX2 = 799;
+ if (bgX3 <= -bgWidth3)
+ bgX3 = 799;
+ if (bgX4 <= -bgWidth4)
+ bgX4 = 799;
+ if (bgX5 <= -bgWidth5)
+ bgX5 = 799;
+ if (bgX6 <= -bgWidth6)
+ bgX6 = 799;
+ bgAnimToggle = !bgAnimToggle;
+ gameSys.insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
+ gameSys.insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
+ gameSys.insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
+ gameSys.insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
+ gameSys.insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
+ gameSys.insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
+ _vm->_timers[0] = 2;
+ }
+
+ if (gameSys.getAnimationStatus(1) == 2) {
+ streetAnimToggle = !streetAnimToggle;
+ gameSys.setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
+ gameSys.insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
+ }
+
+ checkObstacles();
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_truckSequenceId) {
+ case 0xB1:
+ _truckLaneNum = 1;
+ break;
+ case 0xB0:
+ case 0xB3:
+ _truckLaneNum = 2;
+ break;
+ case 0xB2:
+ _truckLaneNum = 3;
+ break;
+ }
+ animToggle3 = !animToggle3;
+ if (_truckLaneNum == 1) {
+ gameSys.setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAD;
+ } else if (_truckLaneNum == 2) {
+ gameSys.setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAE;
+ } else {
+ gameSys.setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAF;
+ }
+ _truckId = (animToggle3 ? 1 : 0) + 256;
+ if (_scoreLevel == 1) {
+ if (!gameSys.isSequenceActive(0xD4, 266)) {
+ gameSys.setAnimation(0xD4, 266, 8);
+ gameSys.insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
+ }
+ ++_scoreLevel;
+ _vm->_timers[1] = 2;
+ animToggle4 = false;
+ animToggle5 = false;
+ animToggle6 = false;
+ _scoreBarFlash = false;
+ }
+ }
+
+ if (_scoreLevel != 0 && !_vm->_timers[1]) {
+ refreshScoreBar();
+ _vm->_timers[1] = 8;
+ if (animToggle6) {
+ if (animToggle5) {
+ if (animToggle4 && !gameSys.isSequenceActive(212, 266))
+ gameSys.insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
+ animToggle4 = !animToggle4;
+ }
+ animToggle5 = !animToggle5;
+ }
+ animToggle6 = !animToggle6;
+ }
+
+ updateAnimations();
+
+ if (clearKeyStatus()) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 2;
+ _vm->_newCursorValue = 1;
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
+ // Steer right
+ if (_truckSequenceId == 0xB3)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB1)
+ _truckLaneNum = 1;
+ if (_truckLaneNum != 3 && _truckLaneNum != 2) {
+ if (_scoreLevel) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
+ }
+ } else {
+ int steerSequenceId = (_truckLaneNum == 3) ? 0xB3 : 0xB1;
+ if (_truckSequenceId == 0xAE || _truckSequenceId == 0xAF) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
+ }
+ }
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
+ // Steer left
+ if (_truckSequenceId == 0xB0)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB2)
+ _truckLaneNum = 3;
+ if (_truckLaneNum == 1 || _truckLaneNum == 2) {
+ int steerSequenceId = (_truckLaneNum == 1) ? 0xB0 : 0xB2;
+ if (_truckSequenceId == 0xAD || _truckSequenceId == 0xAE) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
+ }
+ }
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ }
+ _vm->gameUpdateTick();
+ }
+ _vm->stopSound(0xE2);
+}
+
+void Scene49::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ for (int i = 0; i < 5; ++i) {
+ if (gameSys.getAnimationStatus(i + 2) == 2) {
+ if (_obstacles[i]._currSequenceId)
+ updateObstacle(i);
+ }
+ }
+
+ if (gameSys.getAnimationStatus(8) == 2) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
+ }
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group4.h b/engines/gnap/scenes/group4.h
new file mode 100644
index 0000000..db73bbd
--- /dev/null
+++ b/engines/gnap/scenes/group4.h
@@ -0,0 +1,193 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP4_H
+#define GNAP_GROUP4_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+class Scene40: public Scene {
+public:
+ Scene40(GnapEngine *vm);
+ ~Scene40() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+};
+
+class Scene41: public Scene {
+public:
+ Scene41(GnapEngine *vm);
+ ~Scene41() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currKidSequenceId;
+ int _nextKidSequenceId;
+ int _currToyVendorSequenceId;
+ int _nextToyVendorSequenceId;
+};
+
+class Scene42: public Scene {
+public:
+ Scene42(GnapEngine *vm);
+ ~Scene42() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currBBQVendorSequenceId;
+ int _nextBBQVendorSequenceId;
+};
+
+class Scene43: public Scene {
+public:
+ Scene43(GnapEngine *vm);
+ ~Scene43() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currTwoHeadedGuySequenceId;
+ int _nextTwoHeadedGuySequenceId;
+};
+
+class Scene44: public Scene {
+public:
+ Scene44(GnapEngine *vm);
+ ~Scene44() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _nextSpringGuySequenceId;
+ int _nextKissingLadySequenceId;
+ int _currSpringGuySequenceId;
+ int _currKissingLadySequenceId;
+};
+
+class Scene45: public Scene {
+public:
+ Scene45(GnapEngine *vm);
+ ~Scene45() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currDancerSequenceId;
+};
+
+class Scene46: public Scene {
+public:
+ Scene46(GnapEngine *vm);
+ ~Scene46() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _currSackGuySequenceId;
+ int _nextItchyGuySequenceId;
+ int _nextSackGuySequenceId;
+ int _currItchyGuySequenceId;
+};
+
+struct Scene49Obstacle {
+ int _currSequenceId;
+ int _closerSequenceId;
+ int _passedSequenceId;
+ int _splashSequenceId;
+ int _collisionSequenceId;
+ int _prevId;
+ int _currId;
+ int _laneNum;
+};
+
+struct ObstacleDef {
+ int _sequenceId;
+ int _ticks;
+};
+
+class Scene49: public Scene {
+public:
+ Scene49(GnapEngine *vm);
+ ~Scene49() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _scoreBarPos;
+ int _scoreLevel;
+ bool _scoreBarFlash;
+ int _obstacleIndex;
+ Scene49Obstacle _obstacles[5];
+ int _truckSequenceId;
+ int _truckId;
+ int _truckLaneNum;
+
+ void checkObstacles();
+ void updateObstacle(int id);
+ void increaseScore(int amount);
+ void decreaseScore(int amount);
+ void refreshScoreBar();
+ void clearObstacle(int index);
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_GROUP4_H
diff --git a/engines/gnap/scenes/scene40.cpp b/engines/gnap/scenes/scene40.cpp
deleted file mode 100644
index ade6636..0000000
--- a/engines/gnap/scenes/scene40.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene40.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitCave = 1,
- kHSExitToyStand = 2,
- kHSExitBBQ = 3,
- kHSExitUfo = 4,
- kHSExitKissinBooth = 5,
- kHSExitDancefloor = 6,
- kHSExitShoe = 7,
- kHSDevice = 8
-};
-
-Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
-}
-
-int Scene40::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- return _vm->isFlag(kGFUnk23) ? 0x01 : 0x00;
-}
-
-void Scene40::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_DISABLED | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitCave, 169, 510, 264, 600, SF_EXIT_D_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitToyStand, 238, 297, 328, 376, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitBBQ, 328, 220, 401, 306, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitUfo, 421, 215, 501, 282, SF_EXIT_U_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitKissinBooth, 476, 284, 556, 345, SF_EXIT_R_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitDancefloor, 317, 455, 445, 600, SF_EXIT_D_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitShoe, 455, 346, 549, 417, SF_EXIT_D_CURSOR, 0, 8);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 9;
-}
-
-void Scene40::run() {
- _vm->queueInsertDeviceIcon();
- _vm->endSceneInit();
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitCave:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 39;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitToyStand:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 41;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitBBQ:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 42;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitUfo:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 43;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitKissinBooth:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 44;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitDancefloor:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 45;
- _vm->_sceneDone = true;
- }
- break;
-
- case kHSExitShoe:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_newSceneNum = 46;
- _vm->_sceneDone = true;
- }
- break;
-
- default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0)
- _vm->_mouseClickState._left = false;
- break;
-
- }
-
- updateAnimations();
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene40::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus)
- _vm->_gnapActionStatus = -1;
- else
- _vm->_sceneDone = true;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene40.h b/engines/gnap/scenes/scene40.h
deleted file mode 100644
index f4f1010..0000000
--- a/engines/gnap/scenes/scene40.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE40_H
-#define GNAP_SCENE40_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene40: public Scene {
-public:
- Scene40(GnapEngine *vm);
- ~Scene40() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE40_H
diff --git a/engines/gnap/scenes/scene41.cpp b/engines/gnap/scenes/scene41.cpp
deleted file mode 100644
index 605dff0..0000000
--- a/engines/gnap/scenes/scene41.cpp
+++ /dev/null
@@ -1,589 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene41.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitCave = 1,
- kHSExit = 2,
- kHSExitBBQ = 3,
- kHSToyVendor = 4,
- kHSKid = 5,
- kHSToyUfo = 6,
- kHSDevice = 7,
- kHSWalkArea1 = 8
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoDevice = 3,
- kHSUfoWalkArea1 = 4
-};
-
-enum {
- kASLeaveScene = 0,
- kASUseQuarterWithToyVendor = 1,
- kASTalkToyVendor = 2,
- kASUseGumWithToyUfo = 3,
- kASUseChickenBucketWithKid = 4,
- kASGrabKid = 5,
- kASGiveBackToyUfo = 6,
- kASToyUfoLeaveScene = 7,
- kASToyUfoRefresh = 8,
- kASUfoGumAttached = 9
-};
-
-Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
- _currKidSequenceId = -1;
- _nextKidSequenceId = -1;
- _currToyVendorSequenceId = -1;
- _nextToyVendorSequenceId = -1;
-}
-
-int Scene41::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- return 0x129;
-}
-
-void Scene41::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 500, SF_EXIT_L_CURSOR | SF_DISABLED);
- _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 500, SF_EXIT_R_CURSOR);
- _vm->setHotspot(kHSUfoWalkArea1, 0, 0, 800, 470, SF_DISABLED);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 5;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitCave, 150, 590, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExit, 0, 100, 10, 599, SF_EXIT_L_CURSOR | SF_DISABLED, 0, 8);
- _vm->setHotspot(kHSExitBBQ, 790, 100, 799, 599, SF_EXIT_R_CURSOR | SF_WALKABLE, 10, 8);
- _vm->setHotspot(kHSToyVendor, 320, 150, 430, 310, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSKid, 615, 340, 710, 460, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSToyUfo, 0, 0, 0, 0, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 470);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 9;
- }
-}
-
-void Scene41::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoX = 770;
- if (_vm->_toyUfoY < 0 || _vm->_toyUfoY > 300)
- _vm->_toyUfoY = 150;
- if (!_vm->_timers[9])
- _vm->_gnapActionStatus = kASGiveBackToyUfo;
- } else {
- if (!_vm->isFlag(kGFUnk16) && !_vm->isFlag(kGFJointTaken) && !_vm->isFlag(kGFUnk18) && !_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->toyUfoSetStatus(kGFUnk16);
- _vm->_toyUfoX = 600;
- _vm->_toyUfoY = 200;
- }
-
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
-
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- gameSys.insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO))
- _currKidSequenceId = 0x11B;
- else
- _currKidSequenceId = 0x11D;
-
- _nextKidSequenceId = -1;
-
- gameSys.setAnimation(_currKidSequenceId, 1, 4);
- gameSys.insertSequence(_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _currToyVendorSequenceId = 0x118;
- _nextToyVendorSequenceId = -1;
-
- gameSys.setAnimation(0x118, 1, 3);
- gameSys.insertSequence(_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_gnapSequenceId = 0x120;
- _vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapX = 7;
- _vm->_gnapY = 7;
- _vm->_gnapId = 140;
- gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->initPlatypusPos(8, 10, kDirBottomLeft);
- _vm->endSceneInit();
- } else if (_vm->_prevSceneNum == 45) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-2, 8, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- } else if (_vm->_prevSceneNum == 42) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(5, 8, kDirBottomRight);
- _vm->initPlatypusPos(6, 8, kDirBottomLeft);
- _vm->endSceneInit();
- }
-
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- if (!_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_hotspots[kHSToyUfo]._x1 = _vm->_toyUfoX - 25;
- _vm->_hotspots[kHSToyUfo]._y1 = _vm->_toyUfoY - 20;
- _vm->_hotspots[kHSToyUfo]._x2 = _vm->_toyUfoX + 25;
- _vm->_hotspots[kHSToyUfo]._y2 = _vm->_toyUfoY + 20;
- }
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
- _vm->_newSceneNum = 45;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
- _vm->_newSceneNum = 42;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
- }
- break;
-
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- break;
- }
- } else {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitCave:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitCave].x, _vm->_hotspotsWalkPos[kHSExitCave].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->_newSceneNum = 40;
- break;
-
- case kHSExit:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExit].x, -1, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExit].x, -1, -1, 0x107CF, 1);
- _vm->_newSceneNum = 45;
- break;
-
- case kHSExitBBQ:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, -1, -1, 0x107CD, 1);
- _vm->_newSceneNum = 42;
- break;
-
- case kHSToyVendor:
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnapActionStatus = kASUseQuarterWithToyVendor;
- _vm->gnapWalkTo(4, 7, 0, 0x107BB, 9);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 7, 5, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(5, 0);
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkToyVendor;
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSKid:
- if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASUseChickenBucketWithKid;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 7, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 0);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kASGrabKid;
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSToyUfo:
- if (_vm->_grabCursorSpriteIndex == kItemGum) {
- _vm->playGnapPullOutDevice(9, 0);
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kASUseGumWithToyUfo;
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
- }
- }
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
- _vm->_gnapActionStatus = kASGiveBackToyUfo;
- 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->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- int sequenceId;
- if (_vm->_leftClickMouseX >= 400) {
- if (_vm->_gnapSequenceId == 0x11F || _vm->_gnapSequenceId == 0x120 || _vm->_gnapSequenceId == 0x123 || _vm->_gnapSequenceId == 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)
- 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);
- _vm->_toyUfoActionStatus = kASToyUfoRefresh;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
- switch (_vm->getRandom(3)) {
- case 0:
- _nextToyVendorSequenceId = 0x113;
- break;
- case 1:
- _nextToyVendorSequenceId = 0x117;
- break;
- case 2:
- _nextToyVendorSequenceId = 0x119;
- break;
- }
- if (_nextToyVendorSequenceId == _currToyVendorSequenceId)
- _nextToyVendorSequenceId = -1;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
- if (_vm->isFlag(kGFGnapControlsToyUFO))
- _nextKidSequenceId = 0x11B;
- else if (_vm->getRandom(3) != 0)
- _nextKidSequenceId = 0x11D;
- else
- _nextKidSequenceId = 0x11E;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- }
- _vm->gameUpdateTick();
- }
-}
-
-void Scene41::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- gameSys.setAnimation(0, 0, 0);
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
- break;
- case kASUseQuarterWithToyVendor:
- gameSys.setAnimation(0, 0, 0);
- _nextToyVendorSequenceId = 0x114;
- _vm->_gnapActionStatus = -1;
- break;
- case kASTalkToyVendor:
- gameSys.setAnimation(0, 0, 0);
- _nextToyVendorSequenceId = 0x116;
- _vm->_gnapActionStatus = -1;
- break;
- case kASUseGumWithToyUfo:
- gameSys.setAnimation(0, 0, 0);
- _vm->playGnapUseDevice(9, 0);
- _vm->_gnapActionStatus = -1;
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemGum);
- _vm->_toyUfoActionStatus = kASUfoGumAttached;
- break;
- case kASUseChickenBucketWithKid:
- if (gameSys.getAnimationStatus(4) == 2) {
- _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);
- _nextKidSequenceId = 0x11A;
- gameSys.insertSequence(0x11A, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextKidSequenceId, 1, 4);
- _currKidSequenceId = _nextKidSequenceId;
- _nextKidSequenceId = 0x11B;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
- _vm->setFlag(kGFGnapControlsToyUFO);
- updateHotspots();
- _vm->_timers[9] = 600;
- }
- break;
- case kASGrabKid:
- 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);
- _nextToyVendorSequenceId = 0x111;
- gameSys.insertSequence(0x111, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
- _currToyVendorSequenceId = _nextToyVendorSequenceId;
- _nextToyVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _nextKidSequenceId = 0x10F;
- gameSys.insertSequence(0x10F, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextKidSequenceId, 1, 4);
- _currKidSequenceId = _nextKidSequenceId;
- _nextKidSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
- }
- break;
- case kASGiveBackToyUfo:
- 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,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceId = 0x124;
- _vm->_gnapSequenceDatNum = 0;
- gameSys.setAnimation(0x124, _vm->_gnapId, 0);
- _nextToyVendorSequenceId = 0x112;
- gameSys.insertSequence(0x112, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
- _currToyVendorSequenceId = _nextToyVendorSequenceId;
- _nextToyVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _nextKidSequenceId = 0x11C;
- gameSys.insertSequence(0x11C, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextKidSequenceId, 1, 4);
- _currKidSequenceId = _nextKidSequenceId;
- _nextKidSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
- _vm->clearFlag(kGFGnapControlsToyUFO);
- updateHotspots();
- }
- break;
- }
- }
-
- if (gameSys.getAnimationStatus(2) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case kASToyUfoLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASUfoGumAttached:
- _vm->_toyUfoNextSequenceId = 0x873;
- gameSys.insertSequence(0x10873, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 365, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
- _vm->toyUfoSetStatus(kGFJointTaken);
- break;
- default:
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- ++_vm->_toyUfoId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
- break;
- }
- _vm->_toyUfoActionStatus = -1;
- }
-
- if (gameSys.getAnimationStatus(3) == 2 && _nextToyVendorSequenceId != -1) {
- gameSys.insertSequence(_nextToyVendorSequenceId, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
- _currToyVendorSequenceId = _nextToyVendorSequenceId;
- _nextToyVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- }
-
- if (gameSys.getAnimationStatus(4) == 2 && _nextKidSequenceId != -1) {
- gameSys.insertSequence(_nextKidSequenceId, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextKidSequenceId, 1, 4);
- _currKidSequenceId = _nextKidSequenceId;
- _nextKidSequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_currKidSequenceId == 0x11E) {
- _vm->_toyUfoActionStatus = kASToyUfoRefresh;
- _vm->toyUfoFlyTo(_vm->getRandom(300) + 500, _vm->getRandom(225) + 75, 0, 799, 0, 300, 2);
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene41.h b/engines/gnap/scenes/scene41.h
deleted file mode 100644
index 0b0cd4e..0000000
--- a/engines/gnap/scenes/scene41.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE41_H
-#define GNAP_SCENE41_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene41: public Scene {
-public:
- Scene41(GnapEngine *vm);
- ~Scene41() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _currKidSequenceId;
- int _nextKidSequenceId;
- int _currToyVendorSequenceId;
- int _nextToyVendorSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE41_H
diff --git a/engines/gnap/scenes/scene42.cpp b/engines/gnap/scenes/scene42.cpp
deleted file mode 100644
index 8bab502..0000000
--- a/engines/gnap/scenes/scene42.cpp
+++ /dev/null
@@ -1,503 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene42.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitUfoParty = 1,
- kHSExitToyStand = 2,
- kHSExitUfo = 3,
- kHSBBQVendor = 4,
- kHSChickenLeg = 5,
- kHSDevice = 6,
- kHSWalkArea1 = 7,
- kHSWalkArea2 = 8
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoHotSauce = 3,
- kHSUfoDevice = 4
-};
-
-enum {
- kASLeaveScene = 0,
- kASTalkBBQVendor = 1,
- kASUseQuarterWithBBQVendor = 2,
- kASUseQuarterWithBBQVendorDone = 3,
- kASGrabChickenLeg = 4,
- kASToyUfoLeaveScene = 5,
- kASToyUfoRefresh = 6,
- kASToyUfoPickUpHotSauce = 7
-};
-
-Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
- _currBBQVendorSequenceId = -1;
- _nextBBQVendorSequenceId = -1;
-}
-
-int Scene42::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- if (_vm->isFlag(kGFPictureTaken) || (_vm->isFlag(kGFUnk18) && _vm->isFlag(kGFUnk23)))
- return 0x153;
- return 0x152;
-}
-
-void Scene42::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- _vm->setHotspot(kHSUfoHotSauce, 335, 110, 440, 175, SF_DISABLED);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if ((_vm->isFlag(kGFPictureTaken) || _vm->isFlag(kGFUnk18)) && _vm->isFlag(kGFUnk23) && !_vm->isFlag(kGFUnk24))
- _vm->_hotspots[kHSUfoHotSauce]._flags = SF_GRAB_CURSOR;
- _vm->_hotspotsCount = 5;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitUfoParty, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitToyStand, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitUfo, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- _vm->setHotspot(kHSBBQVendor, 410, 200, 520, 365, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 4, 8);
- _vm->setHotspot(kHSChickenLeg, 530, 340, 620, 430, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 8, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- _vm->setHotspot(kHSWalkArea2, 240, 0, 550, 495);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 9;
- }
-}
-
-void Scene42::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- _vm->queueInsertDeviceIcon();
-
- _currBBQVendorSequenceId = 0x14A;
- _nextBBQVendorSequenceId = -1;
-
- gameSys.setAnimation(0x14A, 1, 2);
- gameSys.insertSequence(_currBBQVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- if (_vm->_prevSceneNum == 43 && _vm->isFlag(kGFUnk18)) {
- _vm->_toyUfoSequenceId = 0x872;
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_toyUfoX = 317;
- _vm->_toyUfoY = 61;
- _vm->toyUfoSetStatus(kGFJointTaken);
- _vm->setFlag(kGFPictureTaken);
- _vm->_timers[9] = 600;
- } else {
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- if (_vm->_prevSceneNum == 41)
- _vm->_toyUfoX = 30;
- else
- _vm->_toyUfoX = 770;
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- }
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
- _vm->endSceneInit();
- if (_vm->_toyUfoSequenceId == 0x872)
- _vm->setGrabCursorSprite(-1);
- } else if (_vm->_prevSceneNum == 41) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- } else if (_vm->_prevSceneNum == 43) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- }
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
- _vm->_newSceneNum = 41;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = kASToyUfoLeaveScene;
- _vm->_newSceneNum = 43;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
- }
- break;
-
- case kHSUfoHotSauce:
- if (_vm->isFlag(kGFJointTaken)) {
- _vm->_toyUfoActionStatus = kASToyUfoPickUpHotSauce;
- _vm->toyUfoFlyTo(384, 77, 0, 799, 0, 300, 3);
- _vm->_timers[9] = 600;
- } else {
- _vm->_toyUfoActionStatus = kASToyUfoRefresh;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
- }
- break;
-
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- break;
- }
- } else {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 30;
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitUfoParty:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_platX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
- _vm->_newSceneNum = 40;
- break;
-
- case kHSExitToyStand:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStand].x, _vm->_gnapY, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitToyStand].x, _vm->_hotspotsWalkPos[kHSExitToyStand].y, -1, 0x107CF, 1);
- _vm->_newSceneNum = 41;
- break;
-
- case kHSExitUfo:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_gnapY, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kASLeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_hotspotsWalkPos[kHSExitUfo].y, -1, 0x107CD, 1);
- _vm->_newSceneNum = 43;
- break;
-
- case kHSBBQVendor:
- if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kASUseQuarterWithBBQVendor;
- if (_vm->_platY < 9)
- _vm->platypusWalkTo(_vm->_platX, 9, -1, -1, 1);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, _vm->_hotspotsWalkPos[kHSBBQVendor].x + 1, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSBBQVendor].x - 1, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSBBQVendor].x, _vm->_hotspotsWalkPos[kHSBBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kASTalkBBQVendor;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSChickenLeg:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSChickenLeg].x, _vm->_hotspotsWalkPos[kHSChickenLeg].y, _vm->_hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHSChickenLeg].x - 1, 0);
- break;
- case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSChickenLeg].x, _vm->_hotspotsWalkPos[kHSChickenLeg].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kASGrabChickenLeg;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- }
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoActionStatus = kASToyUfoRefresh;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
-
- _vm->toyUfoCheckTimer();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextBBQVendorSequenceId == -1) {
- switch (_vm->getRandom(8)) {
- case 0:
- _nextBBQVendorSequenceId = 0x14C;
- break;
- case 1:
- case 2:
- _nextBBQVendorSequenceId = 0x149;
- break;
- case 3:
- case 4:
- case 5:
- case 6:
- _nextBBQVendorSequenceId = 0x14D;
- break;
- case 7:
- _nextBBQVendorSequenceId = 0x14A;
- break;
- }
- if (_nextBBQVendorSequenceId == _currBBQVendorSequenceId && _nextBBQVendorSequenceId != 0x14D)
- _nextBBQVendorSequenceId = -1;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 30;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene42::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
- case kASLeaveScene:
- gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
- _vm->_sceneDone = true;
- break;
- case kASTalkBBQVendor:
- gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
- _nextBBQVendorSequenceId = 0x14B;
- break;
- case kASUseQuarterWithBBQVendor:
- case kASGrabChickenLeg:
- if (gameSys.getAnimationStatus(2) == 2) {
- int sequenceId;
- if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor) {
- _vm->invRemove(kItemDiceQuarterHole);
- _vm->invAdd(kItemChickenBucket);
- _vm->setGrabCursorSprite(-1);
- sequenceId = 0x150;
- _nextBBQVendorSequenceId = 0x148;
- } else if (_vm->isFlag(kGFUnk27)) {
- if (_vm->isFlag(kGFUnk28)) {
- sequenceId = 0x7B7;
- _nextBBQVendorSequenceId = 0x145;
- } else {
- _vm->setFlag(kGFUnk28);
- sequenceId = 0x14F;
- _nextBBQVendorSequenceId = 0x147;
- }
- } else {
- _vm->setFlag(kGFUnk27);
- sequenceId = 0x14E;
- _nextBBQVendorSequenceId = 0x146;
- }
- if (sequenceId == 0x7B7) {
- gameSys.insertSequence(0x107B7, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, _vm->getSequenceTotalDuration(_nextBBQVendorSequenceId),
- 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapSequenceDatNum = 1;
- } else {
- gameSys.insertSequence(sequenceId, _vm->_gnapId,
- makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 0, 0);
- _vm->_gnapSequenceDatNum = 0;
- }
- _vm->_gnapSequenceId = sequenceId;
- gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
- if (_vm->_gnapActionStatus == kASUseQuarterWithBBQVendor)
- _vm->_gnapActionStatus = kASUseQuarterWithBBQVendorDone;
- else
- _vm->_gnapActionStatus = -1;
- gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
- _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
- if (_nextBBQVendorSequenceId == 0x145)
- _nextBBQVendorSequenceId = 0x14A;
- else
- _nextBBQVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(20) + 30;
- _vm->_timers[2] = _vm->getRandom(30) + 20;
- _vm->_timers[3] = _vm->getRandom(50) + 200;
- }
- break;
- case kASUseQuarterWithBBQVendorDone:
- gameSys.setAnimation(0, 0, 0);
- _vm->setGrabCursorSprite(kItemChickenBucket);
- _vm->_gnapActionStatus = -1;
- break;
- default:
- gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (gameSys.getAnimationStatus(2) == 2 && _nextBBQVendorSequenceId != -1) {
- gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
- _currBBQVendorSequenceId = _nextBBQVendorSequenceId;
- _nextBBQVendorSequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(20) + 30;
- }
-
- if (gameSys.getAnimationStatus(3) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case kASToyUfoLeaveScene:
- _vm->_sceneDone = true;
- break;
- case kASToyUfoPickUpHotSauce:
- gameSys.insertSequence(0x10870, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
- _vm->setFlag(kGFUnk24);
- updateHotspots();
- _vm->toyUfoSetStatus(kGFGroceryStoreHatTaken);
- _vm->_toyUfoSequenceId = 0x870;
- gameSys.setAnimation(0x10870, _vm->_toyUfoId, 3);
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoX = 0x181;
- _vm->_toyUfoY = 53;
- break;
- default:
- if (_vm->_toyUfoSequenceId == 0x872) {
- _vm->hideCursor();
- _vm->addFullScreenSprite(0x13E, 255);
- gameSys.setAnimation(0x151, 256, 0);
- gameSys.insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
- _vm->gameUpdateTick();
- _vm->removeFullScreenSprite();
- _vm->showCursor();
- }
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10, 3);
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, (_vm->_toyUfoId + 1) % 10,
- _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- _vm->_toyUfoId = (_vm->_toyUfoId + 1) % 10;
- break;
- }
- _vm->_toyUfoActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene42.h b/engines/gnap/scenes/scene42.h
deleted file mode 100644
index 8175e98..0000000
--- a/engines/gnap/scenes/scene42.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE42_H
-#define GNAP_SCENE42_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene42: public Scene {
-public:
- Scene42(GnapEngine *vm);
- ~Scene42() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _currBBQVendorSequenceId;
- int _nextBBQVendorSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE42_H
diff --git a/engines/gnap/scenes/scene43.cpp b/engines/gnap/scenes/scene43.cpp
deleted file mode 100644
index a3119bf..0000000
--- a/engines/gnap/scenes/scene43.cpp
+++ /dev/null
@@ -1,484 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene43.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSDevice = 1,
- kHSExitUfoParty = 2,
- kHSExitBBQ = 3,
- kHSExitKissinBooth = 4,
- kHSTwoHeadedGuy = 5,
- kHSKey = 6,
- kHSUfo = 7,
- kHSWalkArea1 = 8,
- kHSWalkArea2 = 9
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoKey = 3,
- kHSUfoBucket = 4,
- kHSUfoDevice = 5
-};
-
-Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
- _currTwoHeadedGuySequenceId = -1;
- _nextTwoHeadedGuySequenceId = -1;
-}
-
-int Scene43::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- return 0x13F;
-}
-
-void Scene43::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- _vm->setHotspot(kHSUfoKey, 140, 170, 185, 260, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSUfoBucket, 475, 290, 545, 365, SF_DISABLED);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_hotspots[kHSUfoBucket]._flags = SF_GRAB_CURSOR;
- // NOTE Bug in the original. Key hotspot wasn't disabled.
- if (_vm->isFlag(kGFUnk14))
- _vm->_hotspots[kHSUfoKey]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 6;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitBBQ, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitKissinBooth, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- _vm->setHotspot(kHSTwoHeadedGuy, 470, 240, 700, 470, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSKey, 140, 170, 185, 260, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSUfo, 110, 0, 690, 350, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- _vm->setHotspot(kHSWalkArea2, 465, 0, 800, 493);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk14))
- _vm->_hotspots[kHSKey]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 10;
- }
-}
-
-void Scene43::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- _vm->queueInsertDeviceIcon();
-
- if (!_vm->isFlag(kGFUnk14))
- gameSys.insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _currTwoHeadedGuySequenceId = 0x13C;
- _nextTwoHeadedGuySequenceId = -1;
-
- gameSys.setAnimation(0x13C, 1, 2);
- gameSys.insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- if (_vm->_prevSceneNum == 42)
- _vm->_toyUfoX = 30;
- else
- _vm->_toyUfoX = 770;
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->endSceneInit();
- } else {
- switch (_vm->_prevSceneNum) {
- case 42:
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- break;
- case 44:
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- break;
- case 54:
- _vm->initGnapPos(4, 7, kDirBottomLeft);
- _vm->initPlatypusPos(11, 8, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- break;
- default:
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- break;
- }
- }
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- break;
-
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 4;
- _vm->_newSceneNum = 42;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 4;
- _vm->_newSceneNum = 44;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
- }
- break;
-
- case kHSUfoKey:
- if (_vm->isFlag(kGFJointTaken)) {
- _vm->_toyUfoActionStatus = 6;
- _vm->toyUfoFlyTo(163, 145, 0, 799, 0, 300, 3);
- } else {
- _vm->_toyUfoActionStatus = 5;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
- }
- break;
-
- case kHSUfoBucket:
- _vm->_toyUfoActionStatus = 7;
- _vm->toyUfoFlyTo(497, 143, 0, 799, 0, 300, 3);
- _vm->_timers[9] = 600;
- break;
- }
- } else {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitUfoParty:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, -1, 0x107C7, 1);
- _vm->_newSceneNum = 40;
- break;
-
- case kHSExitBBQ:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, _vm->_gnapY, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitBBQ].x, _vm->_hotspotsWalkPos[kHSExitBBQ].y, -1, 0x107CF, 1);
- _vm->_newSceneNum = 42;
- break;
-
- case kHSExitKissinBooth:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_gnapY, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_hotspotsWalkPos[kHSExitKissinBooth].y, -1, 0x107CD, 1);
- _vm->_newSceneNum = 44;
- break;
-
- case kHSTwoHeadedGuy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 8, 7, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = 2;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSKey:
- case kHSUfo:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 2, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
- break;
- case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(3, 7, 0, 67515, 1);
- _vm->_gnapActionStatus = 1;
- break;
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
- }
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) {
- _vm->_toyUfoActionStatus = 5;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
-
- _vm->toyUfoCheckTimer();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
- switch (_vm->getRandom(5)) {
- case 0:
- _nextTwoHeadedGuySequenceId = 0x13C;
- break;
- case 1:
- _nextTwoHeadedGuySequenceId = 0x134;
- break;
- case 2:
- _nextTwoHeadedGuySequenceId = 0x135;
- break;
- case 3:
- _nextTwoHeadedGuySequenceId = 0x136;
- break;
- case 4:
- _nextTwoHeadedGuySequenceId = 0x13A;
- break;
- }
- if (_nextTwoHeadedGuySequenceId == _currTwoHeadedGuySequenceId)
- _nextTwoHeadedGuySequenceId = -1;
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- }
-
- _vm->gameUpdateTick();
- }
-
- if (_vm->_newSceneNum == 54)
- _vm->clearFlag(kGFGnapControlsToyUFO);
-}
-
-void Scene43::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
- case 0:
- gameSys.setAnimation(0, 0, 0);
- _vm->_sceneDone = true;
- break;
-
- case 1:
- 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);
- _nextTwoHeadedGuySequenceId = 0x13B;
- gameSys.insertSequence(0x13B, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
- _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
- _nextTwoHeadedGuySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_gnapActionStatus = -1;
- }
- break;
-
- default:
- gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (gameSys.getAnimationStatus(2) == 2) {
- if (_currTwoHeadedGuySequenceId == 0x13A) {
- if (_vm->isFlag(kGFGroceryStoreHatTaken)) {
- _nextTwoHeadedGuySequenceId = 0x13E;
- _vm->stopSound(0x108F6);
- } else if (_vm->getRandom(2) != 0) {
- _nextTwoHeadedGuySequenceId = 0x137;
- } else {
- _nextTwoHeadedGuySequenceId = 0x138;
- }
- } else if (_currTwoHeadedGuySequenceId == 0x13E) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 54;
- }
- if (_nextTwoHeadedGuySequenceId != -1) {
- gameSys.insertSequence(_nextTwoHeadedGuySequenceId, 1, _currTwoHeadedGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextTwoHeadedGuySequenceId, 1, 2);
- _currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
- _nextTwoHeadedGuySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(100) + 100;
- }
- }
-
- if (gameSys.getAnimationStatus(3) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case 4:
- _vm->_sceneDone = true;
- _vm->_toyUfoActionStatus = -1;
- break;
- case 6:
- gameSys.insertSequence(0x10871, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
- gameSys.removeSequence(0x1086F, 1, true);
- _vm->setFlag(kGFUnk14);
- updateHotspots();
- _vm->toyUfoSetStatus(kGFUnk18);
- _vm->_toyUfoSequenceId = 0x871;
- gameSys.setAnimation(0x10871, _vm->_toyUfoId, 3);
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoX = 96;
- _vm->_toyUfoY = 131;
- break;
- case 7:
- gameSys.insertSequence(0x10874, _vm->_toyUfoId, _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, kSeqSyncWait, 0, 0, 0);
- _vm->_toyUfoSequenceId = 0x874;
- gameSys.setAnimation(0x10874, _vm->_toyUfoId, 3);
- _vm->_toyUfoActionStatus = 8;
- _vm->setFlag(kGFJointTaken);
- _vm->_gnapActionStatus = 3;
- break;
- case 8:
- _nextTwoHeadedGuySequenceId = 0x13A;
- _vm->_toyUfoX = 514;
- _vm->_toyUfoY = 125;
- _vm->toyUfoFlyTo(835, 125, 0, 835, 0, 300, 3);
- _vm->_toyUfoActionStatus = 9;
- break;
- case 9:
- // Nothing
- break;
- default:
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
- _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- ++_vm->_toyUfoId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
- _vm->_toyUfoActionStatus = -1;
- break;
- }
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene43.h b/engines/gnap/scenes/scene43.h
deleted file mode 100644
index fdf6d6e..0000000
--- a/engines/gnap/scenes/scene43.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE43_H
-#define GNAP_SCENE43_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene43: public Scene {
-public:
- Scene43(GnapEngine *vm);
- ~Scene43() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _currTwoHeadedGuySequenceId;
- int _nextTwoHeadedGuySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE43_H
diff --git a/engines/gnap/scenes/scene44.cpp b/engines/gnap/scenes/scene44.cpp
deleted file mode 100644
index 2e66df7..0000000
--- a/engines/gnap/scenes/scene44.cpp
+++ /dev/null
@@ -1,527 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene44.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitUfoParty = 1,
- kHSExitUfo = 2,
- kHSExitShow = 3,
- kHSKissingLady = 4,
- kHSSpring = 5,
- kHSSpringGuy = 6,
- kHSDevice = 7,
- kHSWalkArea1 = 8,
- kHSWalkArea2 = 9
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoDevice = 3
-};
-
-Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
- _nextSpringGuySequenceId = -1;
- _nextKissingLadySequenceId = -1;
- _currSpringGuySequenceId = -1;
- _currKissingLadySequenceId = -1;
-}
-
-int Scene44::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- gameSys.setAnimation(0, 0, 3);
- return 0xFF;
-}
-
-void Scene44::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _vm->_hotspotsCount = 4;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitUfo, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitShow, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- _vm->setHotspot(kHSKissingLady, 300, 160, 400, 315, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 5, 7);
- _vm->setHotspot(kHSSpring, 580, 310, 635, 375, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSSpringGuy, 610, 375, 690, 515, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 7, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 445);
- _vm->setHotspot(kHSWalkArea2, 617, 0, 800, 600);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk13))
- _vm->_hotspots[kHSKissingLady]._flags = SF_DISABLED;
- if (_vm->isFlag(kGFSpringTaken))
- _vm->_hotspots[kHSSpring]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 10;
- }
-}
-
-void Scene44::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- _vm->queueInsertDeviceIcon();
-
- gameSys.insertSequence(0xF7, 0, 0, 0, kSeqLoop, 0, 0, 0);
- gameSys.insertSequence(0xFC, 256, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFSpringTaken))
- _currSpringGuySequenceId = 0xF8;
- else
- _currSpringGuySequenceId = 0xF9;
-
- _nextSpringGuySequenceId = -1;
- gameSys.setAnimation(_currSpringGuySequenceId, 1, 4);
- gameSys.insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFUnk13)) {
- if (_vm->_prevSceneNum != 50 || _vm->_sceneSavegameLoaded) {
- _currKissingLadySequenceId = 0xF6;
- _nextKissingLadySequenceId = -1;
- } else {
- _vm->setGrabCursorSprite(kItemGum);
- _currKissingLadySequenceId = 0xF5;
- _nextKissingLadySequenceId = 0xF6;
- gameSys.setAnimation(0xF5, 1, 2);
- }
- } else {
- _currKissingLadySequenceId = 0xEC;
- _nextKissingLadySequenceId = -1;
- gameSys.setAnimation(0xEC, 1, 2);
- }
-
- gameSys.insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- if (_vm->_prevSceneNum == 43)
- _vm->_toyUfoX = 30;
- else
- _vm->_toyUfoX = 770;
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 3);
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->endSceneInit();
- } else {
- switch (_vm->_prevSceneNum) {
- case 43:
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 7, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- break;
- case 46:
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 8, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
- break;
- case 50:
- _vm->initGnapPos(4, 8, kDirBottomRight);
- if (_vm->_sceneSavegameLoaded) {
- _vm->initPlatypusPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
- } else if (!_vm->isFlag(kGFUnk13)) {
- _vm->_timers[0] = 50;
- _vm->_timers[1] = 20;
- _vm->_platX = 5;
- _vm->_platY = 8;
- _vm->_platypusSequenceId = 0xFD;
- _vm->_platypusFacing = kDirNone;
- _vm->_platypusId = 160;
- _vm->_platypusSequenceDatNum = 0;
- gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
- }
- _vm->endSceneInit();
- break;
- default:
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
- break;
- }
- }
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 6;
- _vm->_newSceneNum = 43;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 6;
- _vm->_newSceneNum = 46;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
- }
- break;
-
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- break;
- }
- } else if (_vm->_sceneClickedHotspot <= 9) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitUfoParty:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfoParty].x, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 40;
- break;
-
- case kHSExitUfo:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_gnapY, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
- _vm->_newSceneNum = 43;
- break;
-
- case kHSExitShow:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitShow].x, _vm->_hotspotsWalkPos[kHSExitShow].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 46;
- break;
-
- case kHSKissingLady:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnapActionStatus = 2;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSKissingLady].x, _vm->_hotspotsWalkPos[kHSKissingLady].y, 0, -1, 9);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHSKissingLady].x - 1, _vm->_hotspotsWalkPos[kHSKissingLady].y);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(4, 3);
- break;
- case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSKissingLady].x, _vm->_hotspotsWalkPos[kHSKissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = 1;
- break;
- case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
- _vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
- if (_vm->_gnapX == 7 && _vm->_gnapY == 7)
- _vm->gnapWalkStep();
- _vm->playGnapIdle(5, 7);
- _vm->_platypusActionStatus = 4;
- break;
- }
- }
- break;
-
- case kHSSpring:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSpring].x, _vm->_hotspotsWalkPos[kHSSpring].y, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 7);
- break;
- case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(8, 0);
- _vm->playGnapUseDevice(8, 0);
- _nextSpringGuySequenceId = 0xFB;
- _vm->invAdd(kItemSpring);
- _vm->setFlag(kGFSpringTaken);
- updateHotspots();
- break;
- case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSSpringGuy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSpringGuy].x, _vm->_hotspotsWalkPos[kHSSpringGuy].y, 8, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- if (_vm->isFlag(kGFSpringTaken))
- _vm->playGnapMoan1(8, 7);
- else
- _vm->playGnapScratchingHead(8, 7);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSpringGuy].x, _vm->_hotspotsWalkPos[kHSSpringGuy].y, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSWalkArea1:
- case kHSWalkArea2:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
-
- }
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoActionStatus = 7;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
- _vm->toyUfoCheckTimer();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextKissingLadySequenceId == -1) {
- switch (_vm->getRandom(20)) {
- case 0:
- _nextKissingLadySequenceId = 0xED;
- break;
- case 1:
- _nextKissingLadySequenceId = 0xEE;
- break;
- case 2:
- _nextKissingLadySequenceId = 0xF0;
- break;
- case 3:
- _nextKissingLadySequenceId = 0xF3;
- break;
- case 4:
- _nextKissingLadySequenceId = 0xF4;
- break;
- default:
- _nextKissingLadySequenceId = 0xEC;
- break;
- }
- if (_nextKissingLadySequenceId != 0xEC && _nextKissingLadySequenceId == _currKissingLadySequenceId)
- _nextKissingLadySequenceId = -1;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSpringGuySequenceId == -1) {
- if (_vm->getRandom(5) != 0) {
- if (!_vm->isFlag(kGFSpringTaken))
- _nextSpringGuySequenceId = 0xF9;
- } else {
- if (_vm->isFlag(kGFSpringTaken))
- _nextSpringGuySequenceId = 0xF8;
- else
- _nextSpringGuySequenceId = 0xFA;
- }
- }
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene44::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case 0:
- _vm->_sceneDone = true;
- break;
- case 1:
- _nextKissingLadySequenceId = 0xEF;
- break;
- case 2:
- _nextKissingLadySequenceId = 0xF2;
- break;
- }
- _vm->_gnapActionStatus = -1;
- }
-
- if (gameSys.getAnimationStatus(1) == 2) {
- gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
- 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.removeSequence(_currKissingLadySequenceId, 1, true);
- _vm->_platypusActionStatus = 5;
- }
- break;
- case 5:
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 50;
- break;
- default:
- _vm->_platypusActionStatus = -1;
- break;
- }
- }
-
- if (gameSys.getAnimationStatus(2) == 2) {
- if (_nextKissingLadySequenceId == 0xF6) {
- gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->initPlatypusPos(5, 8, kDirNone);
- _currKissingLadySequenceId = _nextKissingLadySequenceId;
- _nextKissingLadySequenceId = -1;
- gameSys.setAnimation(0, 0, 2);
- } else if (_nextKissingLadySequenceId != -1) {
- gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextKissingLadySequenceId, 1, 2);
- _currKissingLadySequenceId = _nextKissingLadySequenceId;
- _nextKissingLadySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(20) + 20;
- }
- }
-
- if (gameSys.getAnimationStatus(4) == 2) {
- if (_currSpringGuySequenceId == 0xFB) {
- _vm->setGrabCursorSprite(kItemSpring);
- _nextSpringGuySequenceId = 0xF8;
- }
- if (_nextSpringGuySequenceId != -1) {
- gameSys.insertSequence(_nextSpringGuySequenceId, 1, _currSpringGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextSpringGuySequenceId, 1, 4);
- _currSpringGuySequenceId = _nextSpringGuySequenceId;
- _nextSpringGuySequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(20) + 20;
- }
- }
-
- if (gameSys.getAnimationStatus(3) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case 6:
- _vm->_sceneDone = true;
- break;
- default:
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
- _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- ++_vm->_toyUfoId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 3);
- break;
- }
- _vm->_toyUfoActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene44.h b/engines/gnap/scenes/scene44.h
deleted file mode 100644
index 3ba5438..0000000
--- a/engines/gnap/scenes/scene44.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE44_H
-#define GNAP_SCENE44_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene44: public Scene {
-public:
- Scene44(GnapEngine *vm);
- ~Scene44() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _nextSpringGuySequenceId;
- int _nextKissingLadySequenceId;
- int _currSpringGuySequenceId;
- int _currKissingLadySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE44_H
diff --git a/engines/gnap/scenes/scene45.cpp b/engines/gnap/scenes/scene45.cpp
deleted file mode 100644
index 95aac39..0000000
--- a/engines/gnap/scenes/scene45.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene45.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitUfoParty = 1,
- kHSExitShoe = 2,
- kHSExitRight = 3,
- kHSExitDiscoBall = 4,
- kHSDiscoBall = 5,
- kHSDevice = 6,
- kHSWalkArea1 = 7
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoDevice = 3
-};
-
-Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
- _currDancerSequenceId = -1;
-}
-
-int Scene45::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- gameSys.setAnimation(0, 0, 3);
- gameSys.setAnimation(0, 0, 4);
- gameSys.setAnimation(0, 0, 5);
- return _vm->isFlag(kGFUnk23) ? 0xA2 : 0xA1;
-}
-
-void Scene45::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSUfoExitRight, 794, 0, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _vm->_hotspotsCount = 4;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitShoe, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitRight, 794, 100, 799, 599, SF_EXIT_R_CURSOR | SF_DISABLED, 10, 8);
- _vm->setHotspot(kHSExitDiscoBall, 200, 0, 600, 10, SF_DISABLED);
- _vm->setHotspot(kHSDiscoBall, 370, 10, 470, 125, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 7);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 472);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk22)) {
- _vm->_hotspots[kHSPlatypus]._flags = SF_DISABLED;
- _vm->_hotspots[kHSExitUfoParty]._flags = SF_DISABLED;
- _vm->_hotspots[kHSExitShoe]._flags = SF_DISABLED;
- _vm->_hotspots[kHSExitRight]._flags = SF_DISABLED;
- _vm->_hotspots[kHSExitDiscoBall]._flags = SF_EXIT_U_CURSOR;
- }
- if (_vm->isFlag(kGFUnk23) || _vm->isFlag(kGFUnk22))
- _vm->_hotspots[kHSDiscoBall]._flags = SF_DISABLED;
- _vm->_hotspotsCount = 8;
- }
-}
-
-void Scene45::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (!_vm->isSoundPlaying(0x1094A))
- _vm->playSound(0x1094A, true);
-
- _vm->queueInsertDeviceIcon();
-
- gameSys.insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(0x96, 1, 3);
- gameSys.insertSequence(0x99, 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(0x99, 1, 4);
- _currDancerSequenceId = 0x8F;
- gameSys.setAnimation(_currDancerSequenceId, 1, 2);
- gameSys.insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- if (_vm->_prevSceneNum == 46)
- _vm->_toyUfoX = 30;
- else
- _vm->_toyUfoX = 770;
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 5);
- 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;
- gameSys.setAnimation(0x9E, 1, 0);
- _vm->_gnapActionStatus = 1;
- gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->initPlatypusPos(4, 8, kDirNone);
- _vm->endSceneInit();
- } else if (_vm->_prevSceneNum == 46) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
- } else if (_vm->_prevSceneNum == 41) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _vm->gnapWalkTo(10, 9, -1, 0x107BA, 1);
- } else {
- _vm->initGnapPos(2, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
- }
-
- 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);
- while (gameSys.getAnimationStatus(0) != 2) {
- _vm->gameUpdateTick();
- if (gameSys.getAnimationStatus(2) == 2) {
- gameSys.setAnimation(0, 0, 2);
- int newSeqId = _vm->getRandom(7) + 0x8F;
- gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(newSeqId, 1, 2);
- _currDancerSequenceId = newSeqId;
- }
- if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
- gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x96, 1, 3);
- gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x99, 1, 4);
- }
- }
- _vm->_gnapSequenceId = 0x9D;
- _vm->_gnapSequenceDatNum = 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,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->removeFullScreenSprite();
- _vm->showCursor();
- _vm->_gnapSequenceId = 0x7BD;
- _vm->_gnapSequenceDatNum = 1;
- }
-
- _vm->playPlatypusSequence(0x9A);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094A))
- _vm->playSound(0x1094A, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 2;
- _vm->_newSceneNum = 46;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 5);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 2;
- _vm->_newSceneNum = 41;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 5);
- }
- break;
-
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- break;
- }
- } else {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- _vm->playPlatypusSequence(0x9A);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSExitUfoParty:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 40;
- }
- break;
-
- case kHSExitShoe:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitShoe].x, _vm->_gnapY, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitShoe].x, _vm->_platY, -1, 0x107CF, 1);
- _vm->_newSceneNum = 46;
- }
- break;
-
- case kHSExitRight:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitRight].x, _vm->_gnapY, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitRight].x, _vm->_platY, -1, 0x107CD, 1);
- _vm->_newSceneNum = 41;
- }
- break;
-
- case kHSExitDiscoBall:
- _vm->clearFlag(kGFUnk22);
- _vm->setFlag(kGFUnk23);
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 54;
- break;
-
- case kHSDiscoBall:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex == kItemSpring) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSDiscoBall].x, _vm->_hotspotsWalkPos[kHSDiscoBall].y, 0, 0x9F, 5);
- _vm->_gnapActionStatus = 1;
- _vm->setGrabCursorSprite(-1);
- _vm->invRemove(kItemSpring);
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 0);
- break;
- case GRAB_CURSOR:
- case TALK_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- }
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
- }
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoActionStatus = 3;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
- _vm->toyUfoCheckTimer();
-
- if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-
- _vm->_sceneWaiting = false;
-}
-
-void Scene45::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case 0:
- _vm->_sceneDone = true;
- break;
- case 1:
- _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);
- break;
- default:
- _vm->_gnapActionStatus = -1;
- break;
- }
- }
-
- if (gameSys.getAnimationStatus(1) == 2) {
- gameSys.setAnimation(0, 0, 1);
- if (_vm->getRandom(2) != 0)
- _vm->playPlatypusSequence(0x9B);
- else
- _vm->playPlatypusSequence(0x9C);
- gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
- }
-
- if (gameSys.getAnimationStatus(2) == 2) {
- gameSys.setAnimation(0, 0, 2);
- int newSeqId = _vm->getRandom(7) + 0x8F;
- gameSys.insertSequence(newSeqId, 1, _currDancerSequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(newSeqId, 1, 2);
- _currDancerSequenceId = newSeqId;
- }
-
- if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
- gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x96, 1, 3);
- gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x99, 1, 4);
- }
-
- if (gameSys.getAnimationStatus(5) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case 2:
- _vm->_sceneDone = true;
- break;
- default:
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
- _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- ++_vm->_toyUfoId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 5);
- break;
- }
- _vm->_toyUfoActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene45.h b/engines/gnap/scenes/scene45.h
deleted file mode 100644
index 3aa7f9c..0000000
--- a/engines/gnap/scenes/scene45.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE45_H
-#define GNAP_SCENE45_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene45: public Scene {
-public:
- Scene45(GnapEngine *vm);
- ~Scene45() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _currDancerSequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE45_H
diff --git a/engines/gnap/scenes/scene46.cpp b/engines/gnap/scenes/scene46.cpp
deleted file mode 100644
index 5de3d49..0000000
--- a/engines/gnap/scenes/scene46.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene46.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSExitUfoParty = 1,
- kHSExitKissinBooth = 2,
- kHSExitDisco = 3,
- kHSSackGuy = 4,
- kHSItchyGuy = 5,
- kHSDevice = 6,
- kHSWalkArea1 = 7
-};
-
-enum {
- kHSUfoExitLeft = 1,
- kHSUfoExitRight = 2,
- kHSUfoDevice = 3
-};
-
-Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
- _currSackGuySequenceId = -1;
- _nextItchyGuySequenceId = -1;
- _nextSackGuySequenceId = -1;
- _currItchyGuySequenceId = -1;
-}
-
-int Scene46::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- gameSys.setAnimation(0, 0, 2);
- gameSys.setAnimation(0, 0, 3);
- gameSys.setAnimation(0, 0, 4);
- return 0x4E;
-}
-
-void Scene46::updateHotspots() {
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_DISABLED);
- _vm->setHotspot(kHSUfoExitLeft, 0, 0, 10, 599, SF_EXIT_L_CURSOR);
- _vm->setHotspot(kHSUfoExitRight, 790, 0, 799, 599, SF_EXIT_R_CURSOR);
- _vm->setDeviceHotspot(kHSUfoDevice, -1, 534, -1, 599);
- _vm->_hotspotsCount = 4;
- } else {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSExitUfoParty, 150, 580, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
- _vm->setHotspot(kHSExitKissinBooth, 0, 100, 10, 599, SF_EXIT_L_CURSOR, 0, 8);
- _vm->setHotspot(kHSExitDisco, 790, 100, 799, 599, SF_EXIT_R_CURSOR, 10, 8);
- _vm->setHotspot(kHSSackGuy, 180, 370, 235, 490, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
- _vm->setHotspot(kHSItchyGuy, 535, 210, 650, 480, SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 6, 8);
- _vm->setHotspot(kHSWalkArea1, 0, 0, 800, 485);
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 8;
- }
-}
-
-void Scene46::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- _vm->queueInsertDeviceIcon();
- gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
-
- _currSackGuySequenceId = 0x4B;
- _nextSackGuySequenceId = -1;
- gameSys.setAnimation(0x4B, 1, 3);
- gameSys.insertSequence(_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- _currItchyGuySequenceId = 0x47;
- _nextItchyGuySequenceId = -1;
- gameSys.setAnimation(0x47, 1, 4);
- gameSys.insertSequence(_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoId = 0;
- _vm->_toyUfoActionStatus = -1;
- _vm->_toyUfoSequenceId = _vm->toyUfoGetSequenceId();
- _vm->_toyUfoNextSequenceId = _vm->_toyUfoSequenceId;
- if (_vm->_prevSceneNum == 44)
- _vm->_toyUfoX = 30;
- else
- _vm->_toyUfoX = 770;
- gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
- gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->endSceneInit();
- } else if (_vm->_prevSceneNum == 44) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 8, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
- } else if (_vm->_prevSceneNum == 45) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(12, 8, kDirUpLeft);
- _vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
- } else {
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
- _vm->endSceneInit();
- _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
- }
-
- _vm->_timers[4] = _vm->getRandom(50) + 80;
- _vm->_timers[5] = _vm->getRandom(50) + 80;
-
- while (!_vm->_sceneDone) {
- if (!_vm->isSoundPlaying(0x1094B))
- _vm->playSound(0x1094B, true);
-
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- switch (_vm->_sceneClickedHotspot) {
- case kHSUfoExitLeft:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 3;
- _vm->_newSceneNum = 44;
- _vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
- }
- break;
-
- case kHSUfoExitRight:
- if (_vm->_toyUfoActionStatus < 0) {
- _vm->_isLeavingScene = true;
- _vm->_toyUfoActionStatus = 3;
- _vm->_newSceneNum = 45;
- _vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
- }
- break;
-
- case kHSUfoDevice:
- _vm->runMenu();
- updateHotspots();
- break;
- }
- } else {
- switch (_vm->_sceneClickedHotspot) {
- case kHSDevice:
- _vm->runMenu();
- updateHotspots();
- break;
-
- case kHSPlatypus:
- if (_vm->_gnapActionStatus < 0) {
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
- break;
- case GRAB_CURSOR:
- _vm->gnapKissPlatypus(0);
- break;
- case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
- _vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
- break;
- case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
- break;
- }
- }
- }
- break;
-
- case kHSSackGuy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSSackGuy].x, _vm->_hotspotsWalkPos[kHSSackGuy].y, 2, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHSSackGuy].x + 1, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSSackGuy].x, _vm->_hotspotsWalkPos[kHSSackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = 2;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSItchyGuy:
- if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHSItchyGuy].x, _vm->_hotspotsWalkPos[kHSItchyGuy].y, 7, 0);
- } else {
- switch (_vm->_verbCursor) {
- case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHSItchyGuy].x - 1, 0);
- break;
- case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSItchyGuy].x, _vm->_hotspotsWalkPos[kHSItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = 1;
- break;
- case GRAB_CURSOR:
- case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
- break;
- }
- }
- break;
-
- case kHSExitUfoParty:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHSExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 40;
- break;
-
- case kHSExitKissinBooth:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_gnapY, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitKissinBooth].x, _vm->_platY, -1, 0x107CF, 1);
- _vm->_newSceneNum = 44;
- break;
-
- case kHSExitDisco:
- _vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHSExitDisco].x, _vm->_gnapY, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHSExitDisco].x, _vm->_platY, -1, 0x107CD, 1);
- _vm->_newSceneNum = 45;
- break;
-
- case kHSWalkArea1:
- if (_vm->_gnapActionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- break;
- }
- }
-
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
- _vm->_mouseClickState._left = false;
- if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_toyUfoActionStatus = 4;
- _vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
- } else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
- }
- }
-
- updateAnimations();
- _vm->toyUfoCheckTimer();
-
- if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextItchyGuySequenceId == -1) {
- if (_vm->getRandom(2) != 0)
- _nextItchyGuySequenceId = 0x49;
- else
- _nextItchyGuySequenceId = 0x48;
- }
- }
- if (!_vm->_timers[5]) {
- _vm->_timers[5] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSackGuySequenceId == -1)
- _nextSackGuySequenceId = 0x4C;
- }
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
-
- _vm->gameUpdateTick();
- }
-}
-
-void Scene46::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- if (gameSys.getAnimationStatus(0) == 2) {
- gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
- case 0:
- _vm->_sceneDone = true;
- break;
- case 1:
- _nextItchyGuySequenceId = 0x46;
- break;
- case 2:
- _nextSackGuySequenceId = 0x4A;
- break;
- }
- _vm->_gnapActionStatus = -1;
- }
-
- if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) {
- gameSys.insertSequence(_nextSackGuySequenceId, 1, _currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextSackGuySequenceId, 1, 3);
- _currSackGuySequenceId = _nextSackGuySequenceId;
- _nextSackGuySequenceId = -1;
- _vm->_timers[5] = _vm->getRandom(50) + 80;
- }
-
- if (gameSys.getAnimationStatus(4) == 2 && _nextItchyGuySequenceId != -1) {
- gameSys.insertSequence(_nextItchyGuySequenceId, 1, _currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_nextItchyGuySequenceId, 1, 4);
- _currItchyGuySequenceId = _nextItchyGuySequenceId;
- _nextItchyGuySequenceId = -1;
- _vm->_timers[4] = _vm->getRandom(50) + 80;
- }
-
- if (gameSys.getAnimationStatus(2) == 2) {
- switch (_vm->_toyUfoActionStatus) {
- case 3:
- _vm->_sceneDone = true;
- break;
- default:
- _vm->_toyUfoNextSequenceId = _vm->toyUfoGetSequenceId();
- gameSys.insertSequence(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId + 1,
- _vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId,
- kSeqSyncWait, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
- _vm->_toyUfoSequenceId = _vm->_toyUfoNextSequenceId;
- ++_vm->_toyUfoId;
- gameSys.setAnimation(_vm->_toyUfoNextSequenceId | 0x10000, _vm->_toyUfoId, 2);
- break;
- }
- _vm->_toyUfoActionStatus = -1;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene46.h b/engines/gnap/scenes/scene46.h
deleted file mode 100644
index 9a57828..0000000
--- a/engines/gnap/scenes/scene46.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE46_H
-#define GNAP_SCENE46_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene46: public Scene {
-public:
- Scene46(GnapEngine *vm);
- ~Scene46() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _currSackGuySequenceId;
- int _nextItchyGuySequenceId;
- int _nextSackGuySequenceId;
- int _currItchyGuySequenceId;
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE46_H
diff --git a/engines/gnap/scenes/scene49.cpp b/engines/gnap/scenes/scene49.cpp
deleted file mode 100644
index 3753d98..0000000
--- a/engines/gnap/scenes/scene49.cpp
+++ /dev/null
@@ -1,527 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene49.h"
-
-namespace Gnap {
-
-static const ObstacleDef kObstacleDefs[] = {
- {0xB4, 15}, {0xCB, 14}, {0xCD, 13}, {0xCF, 15}, {0xBA, 14},
- {0xCD, 13}, {0xCF, 12}, {0xCB, 15}, {0xBD, 13}, {0xCF, 12},
- {0xCD, 11}, {0xCB, 15}, {0xB7, 12}, {0xCD, 11}, {0xCB, 10},
- {0xCF, 15}, {0xCF, 14}, {0xBD, 13}, {0xCF, 12}, {0xCD, 11},
- {0xCB, 15}, {0xCB, 13}, {0xB4, 12}, {0xCB, 11}, {0xCD, 10},
- {0xCF, 15}, {0xCD, 12}, {0xBA, 12}, {0xCD, 12}, {0xCF, 12},
- {0xCB, 15}, {0xCB, 9}, {0xCD, 9}, {0xCF, 9}, {0xCD, 9},
- {0xCB, 9}, {0xCD, 9}, {0xCF, 5}, {0xBD, 13}, {0xCF, 8},
- {0xCB, 8}, {0xCD, 15}, {0xB4, 1}, {0xBD, 7}, {0xCF, 7},
- {0xCD, 7}, {0xCB, 7}, {0xCD, 7}, {0xCF, 15}, {0xCF, 15}
-};
-
-Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
- _scoreBarFlash = false;
- _scoreBarPos = -1;
- _scoreLevel = -1;
- _obstacleIndex = -1;
- _truckSequenceId = -1;
- _truckId = -1;
- _truckLaneNum = -1;
-
- for (int i = 0; i < 5; i++) {
- _obstacles[i]._currSequenceId = -1;
- _obstacles[i]._closerSequenceId = -1;
- _obstacles[i]._passedSequenceId = -1;
- _obstacles[i]._splashSequenceId = -1;
- _obstacles[i]._collisionSequenceId = -1;
- _obstacles[i]._prevId = -1;
- _obstacles[i]._currId = -1;
- _obstacles[i]._laneNum = -1;
- }
-}
-
-int Scene49::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- for (int i = 0; i < 5; ++i)
- gameSys.setAnimation(0, 0, i + 2);
- _vm->_timers[2] = 0;
- _vm->_timers[0] = 0;
- _vm->_timers[1] = 0;
- _vm->clearKeyStatus1(28);
- _vm->clearKeyStatus1(54);
- _vm->clearKeyStatus1(52);
- return 0xD5;
-}
-
-void Scene49::updateHotspots() {
- _vm->_hotspotsCount = 0;
-}
-
-void Scene49::checkObstacles() {
- if (_vm->_timers[2] == 0) {
- if (_vm->_timers[3] == 0) {
- for (int i = 0; i < 5; ++i)
- clearObstacle(i);
- }
-
- for (int j = 0; j < 5; ++j) {
- if (_obstacles[j]._currSequenceId == 0) {
- _vm->_timers[3] = 35;
- _obstacles[j]._currSequenceId = kObstacleDefs[_obstacleIndex]._sequenceId;
- switch (_obstacles[j]._currSequenceId) {
- case 0xB4:
- _obstacles[j]._laneNum = 1;
- _obstacles[j]._closerSequenceId = 180;
- _obstacles[j]._passedSequenceId = 181;
- _obstacles[j]._splashSequenceId = 182;
- _obstacles[j]._collisionSequenceId = 192;
- break;
- case 0xB7:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 183;
- _obstacles[j]._passedSequenceId = 184;
- _obstacles[j]._splashSequenceId = 185;
- _obstacles[j]._collisionSequenceId = 193;
- break;
- case 0xBD:
- _obstacles[j]._laneNum = 3;
- _obstacles[j]._closerSequenceId = 189;
- _obstacles[j]._passedSequenceId = 190;
- _obstacles[j]._splashSequenceId = 191;
- _obstacles[j]._collisionSequenceId = 195;
- break;
- case 0xBA:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 186;
- _obstacles[j]._passedSequenceId = 187;
- _obstacles[j]._splashSequenceId = 188;
- _obstacles[j]._collisionSequenceId = 194;
- break;
- case 0xCB:
- _obstacles[j]._laneNum = 1;
- _obstacles[j]._closerSequenceId = 203;
- _obstacles[j]._passedSequenceId = 204;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 209;
- break;
- case 0xCD:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 205;
- _obstacles[j]._passedSequenceId = 206;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 210;
- break;
- case 0xCF:
- _obstacles[j]._laneNum = 3;
- _obstacles[j]._closerSequenceId = 207;
- _obstacles[j]._passedSequenceId = 208;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 211;
- break;
- }
- _obstacles[j]._prevId = _truckId;
- _obstacles[j]._currId = _obstacles[j]._prevId;
- _vm->_gameSys->setAnimation(_obstacles[j]._currSequenceId, _obstacles[j]._currId, j + 2);
- _vm->_gameSys->insertSequence(_obstacles[j]._currSequenceId, _obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
- _vm->_timers[2] = kObstacleDefs[_obstacleIndex]._ticks;
- ++_obstacleIndex;
- if (_obstacleIndex == 50)
- _obstacleIndex = 0;
- break;
- }
- }
-
- }
-
-}
-
-void Scene49::updateObstacle(int id) {
- GameSys gameSys = *_vm->_gameSys;
- Scene49Obstacle &obstacle = _obstacles[id];
-
- obstacle._currId = obstacle._prevId;
-
- switch (obstacle._laneNum) {
- case 1:
- obstacle._prevId = _truckId + 1;
- break;
- case 2:
- if (_truckLaneNum != 2 && _truckLaneNum != 3)
- obstacle._prevId = _truckId - 1;
- else
- obstacle._prevId = _truckId + 1;
- break;
- case 3:
- if (_truckLaneNum != 1 && _truckLaneNum != 2)
- obstacle._prevId = _truckId;
- else
- obstacle._prevId = _truckId - 1;
- break;
- }
-
- if (obstacle._currSequenceId == obstacle._closerSequenceId) {
- if (_truckLaneNum == obstacle._laneNum) {
- if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
- increaseScore(30);
- } else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
- (obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
- (obstacle._laneNum == 3 && _truckSequenceId == 0xB3)) {
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._passedSequenceId;
- } else {
- gameSys.setAnimation(obstacle._collisionSequenceId, 256, 0);
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- gameSys.insertSequence(obstacle._collisionSequenceId, 256,
- _truckSequenceId, _truckId,
- kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = obstacle._collisionSequenceId;
- _truckId = 256;
- obstacle._currSequenceId = obstacle._passedSequenceId;
- _vm->playSound(225, false);
- decreaseScore(30);
- }
- } else {
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._passedSequenceId;
- }
- } else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
- if (_truckLaneNum == obstacle._laneNum) {
- if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
- increaseScore(30);
- }
- } else if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._splashSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._splashSequenceId;
- }
- } else {
- gameSys.setAnimation(0, 0, id + 2);
- clearObstacle(id);
- }
-}
-
-void Scene49::increaseScore(int amount) {
- if (_scoreBarPos + amount <= 556) {
- _scoreBarPos += amount;
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
- }
- _scoreLevel = _scoreBarPos + amount >= 556;
-}
-
-void Scene49::decreaseScore(int amount) {
- if (_scoreBarPos >= 226 && _scoreLevel == 0) {
- if (_scoreBarFlash)
- refreshScoreBar();
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
- _scoreBarPos -= amount;
- _scoreLevel = 0;
- }
-}
-
-void Scene49::refreshScoreBar() {
- if (_scoreBarFlash)
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
- else
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
- _scoreBarFlash = !_scoreBarFlash;
-}
-
-void Scene49::clearObstacle(int index) {
- _obstacles[index]._currSequenceId = 0;
- _obstacles[index]._closerSequenceId = 0;
- _obstacles[index]._passedSequenceId = 0;
- _obstacles[index]._splashSequenceId = 0;
- _obstacles[index]._collisionSequenceId = 0;
- _obstacles[index]._prevId = 0;
- _obstacles[index]._currId = 0;
- _obstacles[index]._laneNum = 0;
-}
-
-void Scene49::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- bool animToggle6 = false;
- bool animToggle5 = false;
- bool animToggle4 = false;
- bool animToggle3 = false;
- bool streetAnimToggle = false;
- bool bgAnimToggle = false;
-
- _vm->playSound(0xE2, true);
- _vm->setSoundVolume(0xE2, 75);
-
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
-
- _scoreBarPos = 196;
- _scoreLevel = 0;
- _scoreBarFlash = false;
-
- switch (_vm->getRandom(3)) {
- case 0:
- _truckSequenceId = 0xAD;
- _truckLaneNum = 1;
- break;
- case 1:
- _truckSequenceId = 0xAE;
- _truckLaneNum = 2;
- break;
- case 2:
- _truckSequenceId = 0xAF;
- _truckLaneNum = 3;
- break;
- }
-
- int bgWidth1 = gameSys.getSpriteWidthById(0x5E);
- int bgX1 = 600;
-
- int bgWidth2 = gameSys.getSpriteWidthById(0x5F);
- int bgX2 = 400;
-
- int bgWidth3 = gameSys.getSpriteWidthById(4);
- int bgX3 = 700;
-
- int bgWidth4 = gameSys.getSpriteWidthById(5);
- int bgX4 = 500;
-
- int bgWidth5 = gameSys.getSpriteWidthById(6);
- int bgX5 = 300;
-
- int bgWidth6 = gameSys.getSpriteWidthById(7);
- int bgX6 = 100;
-
- gameSys.setAnimation(0xC8, 251, 1);
- gameSys.setAnimation(_truckSequenceId, 256, 0);
- gameSys.insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
- gameSys.insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
- gameSys.insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
- gameSys.insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
- gameSys.insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
- gameSys.insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
- gameSys.insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
- gameSys.insertSequence(_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
-
- _vm->_timers[0] = 2;
-
- for (int i = 0; i < 5; ++i)
- clearObstacle(i);
-
- _obstacleIndex = 0;
-
- _vm->_timers[2] = _vm->getRandom(20) + 10;
-
- _truckId = 256;
- _vm->_timers[3] = 35;
-
- while (!_vm->_sceneDone) {
- if (_vm->_timers[0] == 0) {
- // Update background animations (clouds etc.)
- --bgX1;
- bgX2 -= 2;
- bgX3 -= 5;
- --bgX4;
- --bgX5;
- --bgX6;
- if (bgX1 <= -bgWidth1)
- bgX1 = 799;
- if (bgX2 <= -bgWidth2)
- bgX2 = 799;
- if (bgX3 <= -bgWidth3)
- bgX3 = 799;
- if (bgX4 <= -bgWidth4)
- bgX4 = 799;
- if (bgX5 <= -bgWidth5)
- bgX5 = 799;
- if (bgX6 <= -bgWidth6)
- bgX6 = 799;
- bgAnimToggle = !bgAnimToggle;
- gameSys.insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
- gameSys.insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
- gameSys.insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
- gameSys.insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
- gameSys.insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
- gameSys.insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
- _vm->_timers[0] = 2;
- }
-
- if (gameSys.getAnimationStatus(1) == 2) {
- streetAnimToggle = !streetAnimToggle;
- gameSys.setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
- gameSys.insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
- }
-
- checkObstacles();
-
- if (gameSys.getAnimationStatus(0) == 2) {
- switch (_truckSequenceId) {
- case 0xB1:
- _truckLaneNum = 1;
- break;
- case 0xB0:
- case 0xB3:
- _truckLaneNum = 2;
- break;
- case 0xB2:
- _truckLaneNum = 3;
- break;
- }
- animToggle3 = !animToggle3;
- if (_truckLaneNum == 1) {
- gameSys.setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAD;
- } else if (_truckLaneNum == 2) {
- gameSys.setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAE;
- } else {
- gameSys.setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAF;
- }
- _truckId = (animToggle3 ? 1 : 0) + 256;
- if (_scoreLevel == 1) {
- if (!gameSys.isSequenceActive(0xD4, 266)) {
- gameSys.setAnimation(0xD4, 266, 8);
- gameSys.insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
- }
- ++_scoreLevel;
- _vm->_timers[1] = 2;
- animToggle4 = false;
- animToggle5 = false;
- animToggle6 = false;
- _scoreBarFlash = false;
- }
- }
-
- if (_scoreLevel != 0 && !_vm->_timers[1]) {
- refreshScoreBar();
- _vm->_timers[1] = 8;
- if (animToggle6) {
- if (animToggle5) {
- if (animToggle4 && !gameSys.isSequenceActive(212, 266))
- gameSys.insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
- animToggle4 = !animToggle4;
- }
- animToggle5 = !animToggle5;
- }
- animToggle6 = !animToggle6;
- }
-
- updateAnimations();
-
- if (clearKeyStatus()) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 2;
- _vm->_newCursorValue = 1;
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
- // Steer right
- if (_truckSequenceId == 0xB3)
- _truckLaneNum = 2;
- if (_truckSequenceId == 0xB1)
- _truckLaneNum = 1;
- if (_truckLaneNum != 3 && _truckLaneNum != 2) {
- if (_scoreLevel) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 47;
- }
- } else {
- int steerSequenceId = (_truckLaneNum == 3) ? 0xB3 : 0xB1;
- if (_truckSequenceId == 0xAE || _truckSequenceId == 0xAF) {
- gameSys.setAnimation(steerSequenceId, 256, 0);
- gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = steerSequenceId;
- _truckId = 256;
- }
- }
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
- // Steer left
- if (_truckSequenceId == 0xB0)
- _truckLaneNum = 2;
- if (_truckSequenceId == 0xB2)
- _truckLaneNum = 3;
- if (_truckLaneNum == 1 || _truckLaneNum == 2) {
- int steerSequenceId = (_truckLaneNum == 1) ? 0xB0 : 0xB2;
- if (_truckSequenceId == 0xAD || _truckSequenceId == 0xAE) {
- gameSys.setAnimation(steerSequenceId, 256, 0);
- gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = steerSequenceId;
- _truckId = 256;
- }
- }
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- }
- _vm->gameUpdateTick();
- }
- _vm->stopSound(0xE2);
-}
-
-void Scene49::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- for (int i = 0; i < 5; ++i) {
- if (gameSys.getAnimationStatus(i + 2) == 2) {
- if (_obstacles[i]._currSequenceId)
- updateObstacle(i);
- }
- }
-
- if (gameSys.getAnimationStatus(8) == 2) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 47;
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene49.h b/engines/gnap/scenes/scene49.h
deleted file mode 100644
index d69d977..0000000
--- a/engines/gnap/scenes/scene49.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE49_H
-#define GNAP_SCENE49_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-struct Scene49Obstacle {
- int _currSequenceId;
- int _closerSequenceId;
- int _passedSequenceId;
- int _splashSequenceId;
- int _collisionSequenceId;
- int _prevId;
- int _currId;
- int _laneNum;
-};
-
-struct ObstacleDef {
- int _sequenceId;
- int _ticks;
-};
-
-class Scene49: public Scene {
-public:
- Scene49(GnapEngine *vm);
- ~Scene49() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _scoreBarPos;
- int _scoreLevel;
- bool _scoreBarFlash;
- int _obstacleIndex;
- Scene49Obstacle _obstacles[5];
- int _truckSequenceId;
- int _truckId;
- int _truckLaneNum;
-
- void checkObstacles();
- void updateObstacle(int id);
- void increaseScore(int amount);
- void decreaseScore(int amount);
- void refreshScoreBar();
- void clearObstacle(int index);
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE49_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index a9024b5..6fc51d8 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -30,16 +30,9 @@
#include "gnap/scenes/group1.h"
#include "gnap/scenes/group2.h"
#include "gnap/scenes/group3.h"
+#include "gnap/scenes/group4.h"
#include "gnap/scenes/intro.h"
-#include "gnap/scenes/scene40.h"
-#include "gnap/scenes/scene41.h"
-#include "gnap/scenes/scene42.h"
-#include "gnap/scenes/scene43.h"
-#include "gnap/scenes/scene44.h"
-#include "gnap/scenes/scene45.h"
-#include "gnap/scenes/scene46.h"
-#include "gnap/scenes/scene49.h"
#include "gnap/scenes/scene50.h"
#include "gnap/scenes/scene51.h"
#include "gnap/scenes/scene52.h"
Commit: 8a91335bfa4a23ab0cbc5427ab3a407bcbe5f2ef
https://github.com/scummvm/scummvm/commit/8a91335bfa4a23ab0cbc5427ab3a407bcbe5f2ef
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:47+02:00
Commit Message:
GNAP: renaming and grouping of scenes in group Arcade and Group 5
Changed paths:
A engines/gnap/scenes/arcade.cpp
A engines/gnap/scenes/arcade.h
A engines/gnap/scenes/group5.cpp
A engines/gnap/scenes/group5.h
R engines/gnap/scenes/scene50.cpp
R engines/gnap/scenes/scene50.h
R engines/gnap/scenes/scene51.cpp
R engines/gnap/scenes/scene51.h
R engines/gnap/scenes/scene52.cpp
R engines/gnap/scenes/scene52.h
R engines/gnap/scenes/scene53.cpp
R engines/gnap/scenes/scene53.h
engines/gnap/module.mk
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group4.h
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index cdbda4a..79849cf 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -10,17 +10,15 @@ MODULE_OBJS := \
menu.o \
resource.o \
sound.o \
+ scenes/arcade.o \
scenes/groupcs.o \
scenes/group0.o \
scenes/group1.o \
scenes/group2.o \
scenes/group3.o \
scenes/group4.o \
+ scenes/group5.o \
scenes/intro.o \
- scenes/scene50.o \
- scenes/scene51.o \
- scenes/scene52.o \
- scenes/scene53.o \
scenes/scenecore.o
# This module can be built as a plugin
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
new file mode 100644
index 0000000..3b1b1b0
--- /dev/null
+++ b/engines/gnap/scenes/arcade.cpp
@@ -0,0 +1,2730 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/arcade.h"
+
+namespace Gnap {
+
+static const ObstacleDef kObstacleDefs[] = {
+ {0xB4, 15}, {0xCB, 14}, {0xCD, 13}, {0xCF, 15}, {0xBA, 14},
+ {0xCD, 13}, {0xCF, 12}, {0xCB, 15}, {0xBD, 13}, {0xCF, 12},
+ {0xCD, 11}, {0xCB, 15}, {0xB7, 12}, {0xCD, 11}, {0xCB, 10},
+ {0xCF, 15}, {0xCF, 14}, {0xBD, 13}, {0xCF, 12}, {0xCD, 11},
+ {0xCB, 15}, {0xCB, 13}, {0xB4, 12}, {0xCB, 11}, {0xCD, 10},
+ {0xCF, 15}, {0xCD, 12}, {0xBA, 12}, {0xCD, 12}, {0xCF, 12},
+ {0xCB, 15}, {0xCB, 9}, {0xCD, 9}, {0xCF, 9}, {0xCD, 9},
+ {0xCB, 9}, {0xCD, 9}, {0xCF, 5}, {0xBD, 13}, {0xCF, 8},
+ {0xCB, 8}, {0xCD, 15}, {0xB4, 1}, {0xBD, 7}, {0xCF, 7},
+ {0xCD, 7}, {0xCB, 7}, {0xCD, 7}, {0xCF, 15}, {0xCF, 15}
+};
+
+Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
+ _scoreBarFlash = false;
+ _scoreBarPos = -1;
+ _scoreLevel = -1;
+ _obstacleIndex = -1;
+ _truckSequenceId = -1;
+ _truckId = -1;
+ _truckLaneNum = -1;
+
+ for (int i = 0; i < 5; i++) {
+ _obstacles[i]._currSequenceId = -1;
+ _obstacles[i]._closerSequenceId = -1;
+ _obstacles[i]._passedSequenceId = -1;
+ _obstacles[i]._splashSequenceId = -1;
+ _obstacles[i]._collisionSequenceId = -1;
+ _obstacles[i]._prevId = -1;
+ _obstacles[i]._currId = -1;
+ _obstacles[i]._laneNum = -1;
+ }
+}
+
+int Scene49::init() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ for (int i = 0; i < 5; ++i)
+ gameSys.setAnimation(0, 0, i + 2);
+ _vm->_timers[2] = 0;
+ _vm->_timers[0] = 0;
+ _vm->_timers[1] = 0;
+ _vm->clearKeyStatus1(28);
+ _vm->clearKeyStatus1(54);
+ _vm->clearKeyStatus1(52);
+ return 0xD5;
+}
+
+void Scene49::updateHotspots() {
+ _vm->_hotspotsCount = 0;
+}
+
+void Scene49::checkObstacles() {
+ if (_vm->_timers[2] == 0) {
+ if (_vm->_timers[3] == 0) {
+ for (int i = 0; i < 5; ++i)
+ clearObstacle(i);
+ }
+
+ for (int j = 0; j < 5; ++j) {
+ if (_obstacles[j]._currSequenceId == 0) {
+ _vm->_timers[3] = 35;
+ _obstacles[j]._currSequenceId = kObstacleDefs[_obstacleIndex]._sequenceId;
+ switch (_obstacles[j]._currSequenceId) {
+ case 0xB4:
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 180;
+ _obstacles[j]._passedSequenceId = 181;
+ _obstacles[j]._splashSequenceId = 182;
+ _obstacles[j]._collisionSequenceId = 192;
+ break;
+ case 0xB7:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 183;
+ _obstacles[j]._passedSequenceId = 184;
+ _obstacles[j]._splashSequenceId = 185;
+ _obstacles[j]._collisionSequenceId = 193;
+ break;
+ case 0xBD:
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 189;
+ _obstacles[j]._passedSequenceId = 190;
+ _obstacles[j]._splashSequenceId = 191;
+ _obstacles[j]._collisionSequenceId = 195;
+ break;
+ case 0xBA:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 186;
+ _obstacles[j]._passedSequenceId = 187;
+ _obstacles[j]._splashSequenceId = 188;
+ _obstacles[j]._collisionSequenceId = 194;
+ break;
+ case 0xCB:
+ _obstacles[j]._laneNum = 1;
+ _obstacles[j]._closerSequenceId = 203;
+ _obstacles[j]._passedSequenceId = 204;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 209;
+ break;
+ case 0xCD:
+ _obstacles[j]._laneNum = 2;
+ _obstacles[j]._closerSequenceId = 205;
+ _obstacles[j]._passedSequenceId = 206;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 210;
+ break;
+ case 0xCF:
+ _obstacles[j]._laneNum = 3;
+ _obstacles[j]._closerSequenceId = 207;
+ _obstacles[j]._passedSequenceId = 208;
+ _obstacles[j]._splashSequenceId = 0;
+ _obstacles[j]._collisionSequenceId = 211;
+ break;
+ }
+ _obstacles[j]._prevId = _truckId;
+ _obstacles[j]._currId = _obstacles[j]._prevId;
+ _vm->_gameSys->setAnimation(_obstacles[j]._currSequenceId, _obstacles[j]._currId, j + 2);
+ _vm->_gameSys->insertSequence(_obstacles[j]._currSequenceId, _obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
+ _vm->_timers[2] = kObstacleDefs[_obstacleIndex]._ticks;
+ ++_obstacleIndex;
+ if (_obstacleIndex == 50)
+ _obstacleIndex = 0;
+ break;
+ }
+ }
+ }
+}
+
+void Scene49::updateObstacle(int id) {
+ GameSys gameSys = *_vm->_gameSys;
+ Scene49Obstacle &obstacle = _obstacles[id];
+
+ obstacle._currId = obstacle._prevId;
+
+ switch (obstacle._laneNum) {
+ case 1:
+ obstacle._prevId = _truckId + 1;
+ break;
+ case 2:
+ if (_truckLaneNum != 2 && _truckLaneNum != 3)
+ obstacle._prevId = _truckId - 1;
+ else
+ obstacle._prevId = _truckId + 1;
+ break;
+ case 3:
+ if (_truckLaneNum != 1 && _truckLaneNum != 2)
+ obstacle._prevId = _truckId;
+ else
+ obstacle._prevId = _truckId - 1;
+ break;
+ }
+
+ if (obstacle._currSequenceId == obstacle._closerSequenceId) {
+ if (_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
+ _vm->playSound(224, false);
+ increaseScore(30);
+ } else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
+ (obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
+ (obstacle._laneNum == 3 && _truckSequenceId == 0xB3)) {
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ } else {
+ gameSys.setAnimation(obstacle._collisionSequenceId, 256, 0);
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ gameSys.insertSequence(obstacle._collisionSequenceId, 256,
+ _truckSequenceId, _truckId,
+ kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = obstacle._collisionSequenceId;
+ _truckId = 256;
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ _vm->playSound(225, false);
+ decreaseScore(30);
+ }
+ } else {
+ gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._passedSequenceId;
+ }
+ } else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
+ if (_truckLaneNum == obstacle._laneNum) {
+ if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._collisionSequenceId;
+ _vm->playSound(224, false);
+ increaseScore(30);
+ }
+ } else if (obstacle._splashSequenceId) {
+ gameSys.setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
+ gameSys.insertSequence(obstacle._splashSequenceId, obstacle._prevId,
+ obstacle._currSequenceId, obstacle._currId,
+ kSeqSyncWait, 0, 0, -50);
+ obstacle._currSequenceId = obstacle._splashSequenceId;
+ }
+ } else {
+ gameSys.setAnimation(0, 0, id + 2);
+ clearObstacle(id);
+ }
+}
+
+void Scene49::increaseScore(int amount) {
+ if (_scoreBarPos + amount <= 556) {
+ _scoreBarPos += amount;
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
+ }
+ _scoreLevel = _scoreBarPos + amount >= 556;
+}
+
+void Scene49::decreaseScore(int amount) {
+ if (_scoreBarPos >= 226 && _scoreLevel == 0) {
+ if (_scoreBarFlash)
+ refreshScoreBar();
+ _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
+ _scoreBarPos -= amount;
+ _scoreLevel = 0;
+ }
+}
+
+void Scene49::refreshScoreBar() {
+ if (_scoreBarFlash)
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
+ else
+ _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
+ _scoreBarFlash = !_scoreBarFlash;
+}
+
+void Scene49::clearObstacle(int index) {
+ _obstacles[index]._currSequenceId = 0;
+ _obstacles[index]._closerSequenceId = 0;
+ _obstacles[index]._passedSequenceId = 0;
+ _obstacles[index]._splashSequenceId = 0;
+ _obstacles[index]._collisionSequenceId = 0;
+ _obstacles[index]._prevId = 0;
+ _obstacles[index]._currId = 0;
+ _obstacles[index]._laneNum = 0;
+}
+
+void Scene49::run() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ bool animToggle6 = false;
+ bool animToggle5 = false;
+ bool animToggle4 = false;
+ bool animToggle3 = false;
+ bool streetAnimToggle = false;
+ bool bgAnimToggle = false;
+
+ _vm->playSound(0xE2, true);
+ _vm->setSoundVolume(0xE2, 75);
+
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+
+ _scoreBarPos = 196;
+ _scoreLevel = 0;
+ _scoreBarFlash = false;
+
+ switch (_vm->getRandom(3)) {
+ case 0:
+ _truckSequenceId = 0xAD;
+ _truckLaneNum = 1;
+ break;
+ case 1:
+ _truckSequenceId = 0xAE;
+ _truckLaneNum = 2;
+ break;
+ case 2:
+ _truckSequenceId = 0xAF;
+ _truckLaneNum = 3;
+ break;
+ }
+
+ int bgWidth1 = gameSys.getSpriteWidthById(0x5E);
+ int bgX1 = 600;
+
+ int bgWidth2 = gameSys.getSpriteWidthById(0x5F);
+ int bgX2 = 400;
+
+ int bgWidth3 = gameSys.getSpriteWidthById(4);
+ int bgX3 = 700;
+
+ int bgWidth4 = gameSys.getSpriteWidthById(5);
+ int bgX4 = 500;
+
+ int bgWidth5 = gameSys.getSpriteWidthById(6);
+ int bgX5 = 300;
+
+ int bgWidth6 = gameSys.getSpriteWidthById(7);
+ int bgX6 = 100;
+
+ gameSys.setAnimation(0xC8, 251, 1);
+ gameSys.setAnimation(_truckSequenceId, 256, 0);
+ gameSys.insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
+ gameSys.insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
+ gameSys.insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
+ gameSys.insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
+ gameSys.insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
+ gameSys.insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
+ gameSys.insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
+ gameSys.insertSequence(_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
+
+ _vm->_timers[0] = 2;
+
+ for (int i = 0; i < 5; ++i)
+ clearObstacle(i);
+
+ _obstacleIndex = 0;
+
+ _vm->_timers[2] = _vm->getRandom(20) + 10;
+
+ _truckId = 256;
+ _vm->_timers[3] = 35;
+
+ while (!_vm->_sceneDone) {
+ if (_vm->_timers[0] == 0) {
+ // Update background animations (clouds etc.)
+ --bgX1;
+ bgX2 -= 2;
+ bgX3 -= 5;
+ --bgX4;
+ --bgX5;
+ --bgX6;
+ if (bgX1 <= -bgWidth1)
+ bgX1 = 799;
+ if (bgX2 <= -bgWidth2)
+ bgX2 = 799;
+ if (bgX3 <= -bgWidth3)
+ bgX3 = 799;
+ if (bgX4 <= -bgWidth4)
+ bgX4 = 799;
+ if (bgX5 <= -bgWidth5)
+ bgX5 = 799;
+ if (bgX6 <= -bgWidth6)
+ bgX6 = 799;
+ bgAnimToggle = !bgAnimToggle;
+ gameSys.insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
+ gameSys.insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
+ gameSys.insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
+ gameSys.insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
+ gameSys.insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
+ gameSys.insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
+ _vm->_timers[0] = 2;
+ }
+
+ if (gameSys.getAnimationStatus(1) == 2) {
+ streetAnimToggle = !streetAnimToggle;
+ gameSys.setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
+ gameSys.insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
+ }
+
+ checkObstacles();
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ switch (_truckSequenceId) {
+ case 0xB1:
+ _truckLaneNum = 1;
+ break;
+ case 0xB0:
+ case 0xB3:
+ _truckLaneNum = 2;
+ break;
+ case 0xB2:
+ _truckLaneNum = 3;
+ break;
+ }
+ animToggle3 = !animToggle3;
+ if (_truckLaneNum == 1) {
+ gameSys.setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAD;
+ } else if (_truckLaneNum == 2) {
+ gameSys.setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAE;
+ } else {
+ gameSys.setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
+ gameSys.insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
+ _truckSequenceId = 0xAF;
+ }
+ _truckId = (animToggle3 ? 1 : 0) + 256;
+ if (_scoreLevel == 1) {
+ if (!gameSys.isSequenceActive(0xD4, 266)) {
+ gameSys.setAnimation(0xD4, 266, 8);
+ gameSys.insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
+ }
+ ++_scoreLevel;
+ _vm->_timers[1] = 2;
+ animToggle4 = false;
+ animToggle5 = false;
+ animToggle6 = false;
+ _scoreBarFlash = false;
+ }
+ }
+
+ if (_scoreLevel != 0 && !_vm->_timers[1]) {
+ refreshScoreBar();
+ _vm->_timers[1] = 8;
+ if (animToggle6) {
+ if (animToggle5) {
+ if (animToggle4 && !gameSys.isSequenceActive(212, 266))
+ gameSys.insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
+ animToggle4 = !animToggle4;
+ }
+ animToggle5 = !animToggle5;
+ }
+ animToggle6 = !animToggle6;
+ }
+
+ updateAnimations();
+
+ if (clearKeyStatus()) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 2;
+ _vm->_newCursorValue = 1;
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
+ // Steer right
+ if (_truckSequenceId == 0xB3)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB1)
+ _truckLaneNum = 1;
+ if (_truckLaneNum != 3 && _truckLaneNum != 2) {
+ if (_scoreLevel) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
+ }
+ } else {
+ int steerSequenceId = (_truckLaneNum == 3) ? 0xB3 : 0xB1;
+ if (_truckSequenceId == 0xAE || _truckSequenceId == 0xAF) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
+ }
+ }
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
+ // Steer left
+ if (_truckSequenceId == 0xB0)
+ _truckLaneNum = 2;
+ if (_truckSequenceId == 0xB2)
+ _truckLaneNum = 3;
+ if (_truckLaneNum == 1 || _truckLaneNum == 2) {
+ int steerSequenceId = (_truckLaneNum == 1) ? 0xB0 : 0xB2;
+ if (_truckSequenceId == 0xAD || _truckSequenceId == 0xAE) {
+ gameSys.setAnimation(steerSequenceId, 256, 0);
+ gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
+ _truckSequenceId = steerSequenceId;
+ _truckId = 256;
+ }
+ }
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ }
+ _vm->gameUpdateTick();
+ }
+ _vm->stopSound(0xE2);
+}
+
+void Scene49::updateAnimations() {
+ GameSys gameSys = *_vm->_gameSys;
+
+ for (int i = 0; i < 5; ++i) {
+ if (gameSys.getAnimationStatus(i + 2) == 2) {
+ if (_obstacles[i]._currSequenceId)
+ updateObstacle(i);
+ }
+ }
+
+ if (gameSys.getAnimationStatus(8) == 2) {
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 47;
+ }
+}
+
+/*****************************************************************************/
+
+Scene50::Scene50(GnapEngine *vm) : Scene(vm) {
+ _fightDone = false;
+
+ _roundNum = -1;
+ _timeRemaining = -1;
+ _leftTongueRoundsWon = -1;
+ _rightTongueRoundsWon = -1;
+ _leftTongueSequenceId = -1;
+ _leftTongueId = -1;
+ _leftTongueNextSequenceId = -1;
+ _leftTongueNextId = -1;
+ _rightTongueSequenceId = -1;
+ _rightTongueId = -1;
+ _rightTongueNextSequenceId = -1;
+ _rightTongueNextId = -1;
+ _leftTongueEnergy = -1;
+ _rightTongueEnergy = -1;
+
+ _timesPlayed = 0;
+ _timesPlayedModifier = 0;
+ _attackCounter = 0;
+ _leftTongueEnergyBarPos = 10;
+ _leftTongueNextIdCtr = 0;
+ _rightTongueEnergyBarPos = 10;
+ _rightTongueNextIdCtr = 0;
+}
+
+int Scene50::init() {
+ return 0xC7;
+}
+
+void Scene50::updateHotspots() {
+ _vm->_hotspotsCount = 0;
+}
+
+bool Scene50::tongueWinsRound(int tongueNum) {
+ if (tongueNum == 1)
+ ++_leftTongueRoundsWon;
+ else
+ ++_rightTongueRoundsWon;
+ playWinBadgeAnim(tongueNum);
+ bool fightOver = _rightTongueRoundsWon == 2 || _leftTongueRoundsWon == 2;
+ playWinAnim(tongueNum, fightOver);
+ return fightOver;
+}
+
+void Scene50::playWinAnim(int tongueNum, bool fightOver) {
+ if (tongueNum == 1) {
+ if (fightOver) {
+ _vm->_gameSys->insertSequence(0xAD, 140, 0xAC, 140, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB4, 100, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBD, 100, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
+ _leftTongueSequenceId = 0xB4;
+ _rightTongueSequenceId = 0xBC;
+ _rightTongueId = 100;
+ _leftTongueId = 100;
+ _vm->_gameSys->setAnimation(0xB4, 100, 6);
+ _vm->_gameSys->setAnimation(_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
+ _vm->invAdd(kItemGum);
+ _vm->setFlag(kGFUnk13);
+ } else {
+ _vm->_gameSys->insertSequence(0xB4, 100, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBD, 100, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
+ _leftTongueSequenceId = 0xB4;
+ _rightTongueSequenceId = 0xBC;
+ _rightTongueId = 100;
+ _leftTongueId = 100;
+ _vm->_gameSys->setAnimation(0xB4, 100, 6);
+ _vm->_gameSys->setAnimation(_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
+ }
+ } else {
+ _vm->_gameSys->insertSequence(0xBE, 100, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xBE, 100, 5);
+ waitForAnim(5);
+ _vm->_gameSys->insertSequence(0xBF, 100, 0xBE, 100, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB5, 100, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _rightTongueSequenceId = 0xBF;
+ _leftTongueSequenceId = 0xB5;
+ _rightTongueId = 100;
+ _leftTongueId = 100;
+ _vm->_gameSys->setAnimation(0xB5, 100, 6);
+ _vm->_gameSys->setAnimation(_rightTongueSequenceId, 100, 5);
+ waitForAnim(6);
+ waitForAnim(5);
+ }
+ // TODO delayTicksA(1, 7);
+}
+
+void Scene50::delayTicks() {
+ // TODO delayTicksA(3, 7);
+}
+
+void Scene50::initRound() {
+ _leftTongueEnergy = 10;
+ _rightTongueEnergy = 10;
+ _fightDone = false;
+ _vm->_timers[3] = getRightTongueActionTicks();
+ _vm->_timers[4] = 0;
+ _vm->_timers[6] = 0;
+ _vm->_gameSys->fillSurface(0, 91, 73, 260, 30, 212, 0, 0);
+ _vm->_gameSys->fillSurface(0, 450, 73, 260, 30, 212, 0, 0);
+ _timeRemaining = 40;
+ drawCountdown(40);
+}
+
+bool Scene50::updateCountdown() {
+ if (!_vm->_timers[5]) {
+ --_timeRemaining;
+ if (_timeRemaining < 0) {
+ return true;
+ } else {
+ _vm->_timers[5] = 15;
+ drawCountdown(_timeRemaining);
+ }
+ }
+ return false;
+}
+
+void Scene50::drawCountdown(int value) {
+ char str[8];
+ sprintf(str, "%02d", value);
+ _vm->_gameSys->fillSurface(0, 371, 505, 50, 27, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(0, 381, 504, 255, 255, 255, str);
+}
+
+void Scene50::playTonguesIdle() {
+ _vm->_gameSys->insertSequence(0xBA, 100, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xC2, 100, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _leftTongueSequenceId = 0xBA;
+ _rightTongueSequenceId = 0xC2;
+ _rightTongueNextSequenceId = -1;
+ _leftTongueNextSequenceId = -1;
+ _leftTongueId = 100;
+ _rightTongueId = 100;
+ _vm->_gameSys->setAnimation(0xC2, 100, 5);
+ _vm->_gameSys->setAnimation(_leftTongueSequenceId, _leftTongueId, 6);
+}
+
+void Scene50::playRoundAnim(int roundNum) {
+ int sequenceId = 0;
+
+ switch (roundNum) {
+ case 1:
+ sequenceId = 0xAF;
+ break;
+ case 2:
+ sequenceId = 0xB0;
+ break;
+ case 3:
+ sequenceId = 0xB1;
+ break;
+ }
+
+ _vm->_gameSys->insertSequence(sequenceId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->setAnimation(sequenceId, 256, 7);
+ waitForAnim(7);
+
+ _vm->_gameSys->insertSequence(0xAB, 256, sequenceId, 256, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->setAnimation(0xAB, 256, 7);
+ waitForAnim(7);
+}
+
+bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
+ if (newLeftBarPos != _leftTongueEnergyBarPos) {
+ if (newLeftBarPos < 0)
+ newLeftBarPos = 0;
+ _leftTongueEnergyBarPos = newLeftBarPos;
+ _vm->_gameSys->fillSurface(0, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
+ }
+
+ if (newRightBarPos != _rightTongueEnergyBarPos) {
+ if (newRightBarPos < 0)
+ newRightBarPos = 0;
+ _rightTongueEnergyBarPos = newRightBarPos;
+ if (newRightBarPos != 10)
+ _vm->_gameSys->fillSurface(0, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
+ }
+
+ if (newLeftBarPos * newRightBarPos > 0)
+ return false;
+
+ _leftTongueEnergyBarPos = 10;
+ _rightTongueEnergyBarPos = 10;
+ return true;
+}
+
+void Scene50::waitForAnim(int animationIndex) {
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
+ _vm->gameUpdateTick();
+ }
+ _vm->_gameSys->setAnimation(0, 0, animationIndex);
+}
+
+int Scene50::checkInput() {
+ int sequenceId = -1;
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ sequenceId = 0xB6;
+ } else if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ sequenceId = 0xB3;
+ } else if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _fightDone = true;
+ }
+
+ return sequenceId;
+}
+
+int Scene50::getRightTongueAction() {
+ int sequenceId = -1;
+
+ if (!_vm->_timers[3]) {
+ _vm->_timers[3] = getRightTongueActionTicks();
+ if (_rightTongueEnergy >= _leftTongueEnergy) {
+ switch (_vm->getRandom(5)) {
+ case 0:
+ sequenceId = 0xBE;
+ break;
+ case 1:
+ sequenceId = 0xBE;
+ break;
+ case 2:
+ sequenceId = 0xBB;
+ break;
+ case 3:
+ sequenceId = 0xBB;
+ break;
+ case 4:
+ sequenceId = 0xBB;
+ break;
+ }
+ } else {
+ switch (_vm->getRandom(4)) {
+ case 0:
+ sequenceId = 0xBE;
+ break;
+ case 1:
+ sequenceId = 0xBB;
+ break;
+ case 2:
+ sequenceId = 0xBE;
+ break;
+ case 3:
+ sequenceId = 0xBE;
+ break;
+ }
+ }
+ }
+
+ return sequenceId;
+}
+
+void Scene50::updateAnimations() {
+ if (!_vm->_timers[4])
+ _attackCounter = 0;
+
+ if (_vm->_gameSys->getAnimationStatus(5) == 2) {
+ if (_rightTongueSequenceId == 0xBE) {
+ if (_leftTongueSequenceId != 0xB3 && _leftTongueSequenceId != 0xB8)
+ _rightTongueNextSequenceId = 0xBF;
+ else
+ _rightTongueNextSequenceId = 0xC0;
+ }
+ if (_rightTongueNextSequenceId == -1)
+ _rightTongueNextSequenceId = 0xC2;
+ if (_rightTongueNextSequenceId == 0xBF) {
+ _leftTongueNextId = getLeftTongueNextId();
+ _rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_rightTongueNextSequenceId, _rightTongueNextId, 5);
+ _vm->_gameSys->setAnimation(0xB9, _leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_rightTongueNextSequenceId, _rightTongueNextId, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xB9, _leftTongueNextId, _leftTongueSequenceId, _leftTongueId, kSeqSyncExists, 0, 0, 0);
+ _rightTongueSequenceId = _rightTongueNextSequenceId;
+ _rightTongueNextSequenceId = -1;
+ _leftTongueSequenceId = 0xB9;
+ _leftTongueNextSequenceId = -1;
+ _rightTongueId = _rightTongueNextId;
+ _leftTongueId = _leftTongueNextId;
+ _leftTongueEnergy -= _vm->getRandom(2) + 1;//CHECKME
+ } else {
+ _rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_rightTongueNextSequenceId, _rightTongueNextId, 5);
+ _vm->_gameSys->insertSequence(_rightTongueNextSequenceId, _rightTongueNextId, _rightTongueSequenceId, _rightTongueId, kSeqSyncWait, 0, 0, 0);
+ _rightTongueSequenceId = _rightTongueNextSequenceId;
+ _rightTongueNextSequenceId = -1;
+ _rightTongueId = _rightTongueNextId;
+ }
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(6) == 2) {
+ if (_leftTongueSequenceId == 0xB6) {
+ ++_attackCounter;
+ if (_timesPlayedModifier + 3 <= _attackCounter) {
+ _leftTongueNextSequenceId = 0xB8;
+ } else {
+ _vm->_timers[4] = 20;
+ //CHECKME
+ if (_rightTongueSequenceId != 0xBB && _rightTongueSequenceId != 0xC0 && _vm->getRandom(8) != _roundNum)
+ _leftTongueNextSequenceId = 0xB7;
+ else
+ _leftTongueNextSequenceId = 0xB8;
+ }
+ }
+ if (_leftTongueNextSequenceId == 0xB3)
+ --_attackCounter;
+ if (_leftTongueNextSequenceId == -1)
+ _leftTongueNextSequenceId = 0xBA;
+ if (_leftTongueNextSequenceId == 0xB7) {
+ _leftTongueNextId = getLeftTongueNextId();
+ _rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(_leftTongueNextSequenceId, _leftTongueNextId, 6);
+ _vm->_gameSys->setAnimation(0xC1, _rightTongueNextId, 5);
+ _vm->_gameSys->insertSequence(_leftTongueNextSequenceId, _leftTongueNextId, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xC1, _rightTongueNextId, _rightTongueSequenceId, _rightTongueId, kSeqSyncExists, 0, 0, 0);
+ _leftTongueSequenceId = _leftTongueNextSequenceId;
+ _leftTongueNextSequenceId = -1;
+ _rightTongueSequenceId = 0xC1;
+ _rightTongueNextSequenceId = -1;
+ _rightTongueId = _rightTongueNextId;
+ _leftTongueId = _leftTongueNextId;
+ --_rightTongueEnergy;
+ } else if (_leftTongueNextSequenceId != 0xB8 || _rightTongueSequenceId != 0xC2) {
+ _leftTongueNextId = getLeftTongueNextId();
+ _vm->_gameSys->setAnimation(_leftTongueNextSequenceId, _leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_leftTongueNextSequenceId, _leftTongueNextId, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _leftTongueSequenceId = _leftTongueNextSequenceId;
+ _leftTongueNextSequenceId = -1;
+ _leftTongueId = _leftTongueNextId;
+ } else {
+ _leftTongueNextId = getLeftTongueNextId();
+ _rightTongueNextId = getRightTongueNextId();
+ _vm->_gameSys->setAnimation(0xBB, _rightTongueNextId, 5);
+ _vm->_gameSys->setAnimation(_leftTongueNextSequenceId, _leftTongueNextId, 6);
+ _vm->_gameSys->insertSequence(_leftTongueNextSequenceId, _leftTongueNextId, _leftTongueSequenceId, _leftTongueId, kSeqSyncWait, 0, 0, 0);
+ _vm->_gameSys->insertSequence(0xBB, _rightTongueNextId, _rightTongueSequenceId, _rightTongueId, kSeqSyncExists, 0, 0, 0);
+ _rightTongueSequenceId = 0xBB;
+ _rightTongueId = _rightTongueNextId;
+ _rightTongueNextSequenceId = -1;
+ _leftTongueSequenceId = _leftTongueNextSequenceId;
+ _leftTongueNextSequenceId = -1;
+ _leftTongueId = _leftTongueNextId;
+ }
+ }
+}
+
+int Scene50::getRightTongueActionTicks() {
+ return 15 - 5 * _roundNum + 1;
+}
+
+int Scene50::getLeftTongueNextId() {
+ _leftTongueNextIdCtr = (_leftTongueNextIdCtr + 1) % 3;
+ return _leftTongueNextIdCtr + 100;
+}
+
+int Scene50::getRightTongueNextId() {
+ _rightTongueNextIdCtr = (_rightTongueNextIdCtr + 1) % 3;
+ return _rightTongueNextIdCtr + 100;
+}
+
+void Scene50::playWinBadgeAnim(int tongueNum) {
+ int sequenceId;
+
+ if (tongueNum == 1) {
+ if (_leftTongueRoundsWon == 1)
+ sequenceId = 0xC3;
+ else
+ sequenceId = 0xC4;
+ } else {
+ if (_rightTongueRoundsWon == 1)
+ sequenceId = 0xC5;
+ else
+ sequenceId = 0xC6;
+ }
+
+ _vm->_gameSys->setAnimation(sequenceId, 120, 7);
+ _vm->_gameSys->insertSequence(sequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
+ waitForAnim(7);
+}
+
+void Scene50::run() {
+ ++_timesPlayed;
+ _timesPlayedModifier = _timesPlayed / 4;
+ _leftTongueRoundsWon = 0;
+ _rightTongueRoundsWon = 0;
+ // initFont();
+ _leftTongueSequenceId = 186;
+ _rightTongueSequenceId = 194;
+ _rightTongueNextSequenceId = -1;
+ _leftTongueNextSequenceId = -1;
+ _leftTongueId = 100;
+ _rightTongueId = 100;
+
+ _vm->_gameSys->setAnimation(194, 100, 5);
+ _vm->_gameSys->setAnimation(_leftTongueSequenceId, _leftTongueId, 6);
+ _vm->_gameSys->insertSequence(_leftTongueSequenceId, _leftTongueId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(_rightTongueSequenceId, _rightTongueId, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_gameSys->insertSequence(172, 140, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+
+ initRound();
+
+ _roundNum = 1;
+
+ _vm->setGrabCursorSprite(-1);
+ _vm->hideCursor();
+
+ // TODO delayTicksA(1, 7);
+
+ playRoundAnim(_roundNum);
+
+ _vm->_timers[5] = 15;
+
+ while (!_fightDone) {
+ /* TODO
+ if (sceneXX_sub_4466B1())
+ _fightDone = true;
+ */
+
+ int playerSequenceId = checkInput();
+ if (playerSequenceId != -1)
+ _leftTongueNextSequenceId = playerSequenceId;
+
+ int rightSequenceId = getRightTongueAction();
+ if (rightSequenceId != -1)
+ _rightTongueNextSequenceId = rightSequenceId;
+
+ updateAnimations();
+
+ if (updateCountdown() ||
+ updateEnergyBars(_leftTongueEnergy, _rightTongueEnergy)) {
+ bool v0;
+ if (_rightTongueEnergy < _leftTongueEnergy)
+ v0 = tongueWinsRound(1);
+ else
+ v0 = tongueWinsRound(2);
+ if (v0) {
+ delayTicks();
+ _fightDone = true;
+ } else {
+ ++_roundNum;
+ initRound();
+ playTonguesIdle();
+ updateEnergyBars(_leftTongueEnergy, _rightTongueEnergy);
+ playRoundAnim(_roundNum);
+ _vm->_timers[5] = 15;
+ }
+ }
+ _vm->gameUpdateTick();
+ }
+
+ // freeFont();
+
+ _vm->_gameSys->setAnimation(0, 0, 7);
+ _vm->_gameSys->setAnimation(0, 0, 6);
+ _vm->_gameSys->setAnimation(0, 0, 5);
+ _vm->_gameSys->setAnimation(0, 0, 3);
+
+ _vm->showCursor();
+}
+
+/*****************************************************************************/
+
+static const int kDigitSequenceIds[] = {
+ 0xCA, 0xCB, 0xCC, 0xCD, 0xCE,
+ 0xCF, 0xD0, 0xD1, 0xD2, 0xD3
+};
+
+static const int kDigitPositions[4] = {
+ 0, 34, 83, 119
+};
+
+/*
+ 0xBA Falling banana peel
+ 0xBC Banana peel goes away
+ 0xBD Falling coin
+ 0xBE Fallen coin
+ 0xC0 Falling banknote
+ 0xB6 Platypus tripping (right)
+ 0xB7 Platypus tripping (left)
+ 0x76 Platypus jumping (right)
+*/
+
+Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
+ _dropLoseCash = false;
+
+ _cashAmount = -1;
+ _guySequenceId = -1;
+ _guyNextSequenceId = -1;
+ _itemsCaughtCtr = -1;
+ _dropSpeedTicks = -1;
+ _nextDropItemKind = -1;
+ _itemInsertX = -1;
+ _itemInsertDirection = -1;
+ _platypusSequenceId = -1;
+ _platypusNextSequenceId = -1;
+ _platypusJumpSequenceId = -1;
+ _itemsCtr = -1;
+ _itemsCtr1 = -1;
+ _itemsCtr2 = -1;
+
+ for (int i = 0; i < 4; i++) {
+ _digits[i] = 0;
+ _digitSequenceIds[4] = -1;
+ }
+
+ for (int i = 0; i < 6; i++) {
+ _items[i]._currSequenceId = -1;
+ _items[i]._droppedSequenceId;
+ _items[i]._x = 0;
+ _items[i]._y = 0;
+ _items[i]._collisionX;
+ _items[i]._canCatch = false;
+ _items[i]._isCollision = false;
+ _items[i]._x2 = 0;
+ _items[i]._id = -1;
+ }
+}
+
+int Scene51::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ for (int i = 0; i < 6; ++i)
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
+ return 0xD4;
+}
+
+void Scene51::updateHotspots() {
+ _vm->_hotspotsCount = 0;
+}
+
+void Scene51::clearItem(Scene51Item *item) {
+ item->_currSequenceId = 0;
+ item->_droppedSequenceId = 0;
+ item->_x = 0;
+ item->_y = 0;
+ item->_x2 = 0;
+ item->_collisionX = 0;
+ item->_canCatch = false;
+}
+
+void Scene51::dropNextItem() {
+ if (_vm->_timers[0])
+ return;
+
+ int index = 0;
+ while (index < 6 && _items[index]._currSequenceId)
+ ++index;
+
+ if (index == 6)
+ return;
+
+ switch (_nextDropItemKind) {
+ case 0:
+ if (_vm->getRandom(10) != 0 || _itemsCtr2 >= 2) {
+ _items[index]._currSequenceId = 0xBD;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+
+ case 1:
+ if (_vm->getRandom(8) != 0 || _itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) == 0) {
+ if (_itemInsertDirection)
+ _itemInsertX -= 70;
+ else
+ _itemInsertX += 70;
+ }
+ _items[index]._currSequenceId = 0xBD;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+
+ case 2:
+ if (_vm->getRandom(6) != 0 || _itemsCtr2 >= 2) {
+ _items[index]._currSequenceId = 0xBD;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+
+ case 3:
+ case 4:
+ if (_itemsCtr == 0)
+ _itemsCtr1 = 3;
+ _items[index]._currSequenceId = 0xC0;
+ break;
+
+ case 5:
+ case 6:
+ if (_vm->getRandom(5) != 0 || _itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) != 0)
+ _items[index]._currSequenceId = 0xBD;
+ else
+ _items[index]._currSequenceId = 0xC0;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+
+ case 7:
+ if (_vm->getRandom(5) != 0 || _itemsCtr2 >= 2) {
+ if (_vm->getRandom(5) == 0) {
+ if (_itemInsertDirection)
+ _itemInsertX -= 40;
+ else
+ _itemInsertX += 40;
+ }
+ if (_vm->getRandom(9) != 0)
+ _items[index]._currSequenceId = 0xBD;
+ else
+ _items[index]._currSequenceId = 0xC0;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+
+ default:
+ if (_vm->getRandom(4) != 0 || _itemsCtr2 >= 2) {
+ if (_vm->getRandom(9) != 0)
+ _items[index]._currSequenceId = 0xBD;
+ else
+ _items[index]._currSequenceId = 0xC0;
+ } else {
+ --_itemsCtr1;
+ _items[index]._currSequenceId = 0xBA;
+ ++_itemsCtr2;
+ }
+ break;
+ }
+
+ if (_itemInsertDirection) {
+ _itemInsertX -= 73;
+ if (_itemInsertX < 129) {
+ _itemInsertX += 146;
+ _itemInsertDirection = 0;
+ }
+ } else {
+ _itemInsertX += 73;
+ if (_itemInsertX > 685) {
+ _itemInsertX -= 146;
+ _itemInsertDirection = 1;
+ }
+ }
+
+ if (_itemInsertX > 685)
+ _itemInsertX = 685;
+
+ if (_itemInsertX < 129)
+ _itemInsertX = 129;
+
+ if (_items[index]._currSequenceId == 0xBA) {
+ _items[index]._x2 = _vm->getRandom(350) + 200;
+ _items[index]._x = _items[index]._x2 - 362;
+ _items[index]._y = 15;
+ _items[index]._id = 249 - index;
+ } else {
+ _items[index]._collisionX = _itemInsertX;
+ _items[index]._x = _items[index]._collisionX - 395;
+ if (_items[index]._currSequenceId == 0xC0)
+ _items[index]._x -= 65;
+ _items[index]._id = index + 250;
+ _items[index]._canCatch = true;
+ }
+
+ _vm->_gameSys->setAnimation(_items[index]._currSequenceId, _items[index]._id, index + 1);
+ _vm->_gameSys->insertSequence(_items[index]._currSequenceId, _items[index]._id, 0, 0,
+ kSeqNone, 0, _items[index]._x, _items[index]._y);
+
+ _vm->_timers[0] = _dropSpeedTicks;
+
+ if (_nextDropItemKind >= 3)
+ _vm->_timers[0] = 20;
+
+ if (_nextDropItemKind >= 5)
+ _vm->_timers[0] = 5;
+
+ if (_nextDropItemKind == 8)
+ _vm->_timers[0] = 4;
+
+ ++_itemsCtr;
+}
+
+void Scene51::updateItemAnimations() {
+ for (int i = 0; i < 6; ++i) {
+ if (_vm->_gameSys->getAnimationStatus(i + 1) == 2)
+ updateItemAnimation(&_items[i], i);
+ }
+}
+
+int Scene51::checkCollision(int sequenceId) {
+ bool jumpingLeft = false, jumpingRight = false;
+ int v8, v4;
+ int result = 0;
+
+ if (!isJumping(sequenceId))
+ return false;
+
+ bool checkFl = false;
+ for (int i = 0; i < 6; i++)
+ checkFl |= _items[i]._isCollision;
+
+ if (!checkFl)
+ return false;
+
+ if (isJumpingRight(sequenceId)) {
+ v8 = getPosRight(sequenceId);
+ v4 = getPosRight(sequenceId + 1);
+ jumpingRight = true;
+ } else if (isJumpingLeft(sequenceId)) {
+ v4 = getPosLeft(sequenceId - 1) + 33;
+ v8 = getPosLeft(sequenceId) + 33;
+ jumpingLeft = true;
+ }
+
+ if (jumpingRight || jumpingLeft) {
+ int v5 = 0;
+ int i;
+ for (i = 0; i < 6; ++i) {
+ if (_items[i]._isCollision) {
+ if (jumpingRight && _items[i]._x2 > v8 && _items[i]._x2 < v4) {
+ v5 = v8 - 359;
+ if (v5 == 0)
+ v5 = 1;
+ _platypusNextSequenceId = 0xB6;
+ break;
+ } else if (jumpingLeft && _items[i]._x2 < v4 && _items[i]._x2 > v8) {
+ v5 = v8 - 344;
+ if (v5 == 0)
+ v5 = 1;
+ _platypusNextSequenceId = 0xB7;
+ break;
+ }
+ }
+ }
+ if (v5) {
+ _vm->_gameSys->setAnimation(0xBC, _items[i]._id, i + 1);
+ _vm->_gameSys->insertSequence(0xBC, _items[i]._id, _items[i]._currSequenceId, _items[i]._id, kSeqSyncWait, 0, _items[i]._x, 15);
+ _items[i]._isCollision = false;
+ _items[i]._currSequenceId = 0xBC;
+ --_itemsCtr2;
+ }
+ result = v5;
+ }
+
+ return result;
+}
+
+void Scene51::updateItemAnimation(Scene51Item *item, int index) {
+
+ switch (item->_currSequenceId) {
+ case 0xBD:
+ case 0xC0:
+ case 0xC1:
+ // Falling coin and banknote
+ if (!itemIsCaught(item)) {
+ if (_dropLoseCash) {
+ if (item->_currSequenceId == 0xBD)
+ _cashAmount -= 2;
+ else
+ _cashAmount -= 25;
+ if (_cashAmount < 0)
+ _cashAmount = 0;
+ updateCash(_cashAmount);
+ }
+ item->_droppedSequenceId = item->_currSequenceId + 1;
+ if (item->_currSequenceId != 0xC0) {
+ item->_canCatch = false;
+ _dropLoseCash = true;
+ _itemsCtr = 0;
+ _vm->_timers[0] = 10;
+ }
+ if (item->_droppedSequenceId) {
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
+ }
+ } else {
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ _vm->playSound(218, false);
+ if (incCashAmount(item->_currSequenceId) == 1995) {
+ winMinigame();
+ _vm->_sceneDone = true;
+ } else {
+ clearItem(item);
+ ++_itemsCaughtCtr;
+ if (_itemsCaughtCtr == 5)
+ --_dropSpeedTicks;
+ if (_itemsCaughtCtr == 8)
+ --_dropSpeedTicks;
+ if (_itemsCaughtCtr == 11)
+ --_dropSpeedTicks;
+ if (_itemsCaughtCtr == 14)
+ --_dropSpeedTicks;
+ if (_itemsCaughtCtr >= 15 && _dropSpeedTicks > 4)
+ --_dropSpeedTicks;
+ if (_itemsCtr1 <= _itemsCaughtCtr) {
+ ++_nextDropItemKind;
+ _dropSpeedTicks = 10;
+ _itemsCtr = 0;
+ _itemsCtr1 = 20;
+ _dropLoseCash = false;
+ _itemsCaughtCtr = 0;
+ removeCollidedItems();
+ }
+ }
+ }
+ break;
+
+ case 0xBE:
+ // Fallen coin
+ item->_droppedSequenceId = item->_currSequenceId + 1;
+ if (item->_droppedSequenceId) {
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
+ }
+ break;
+
+ case 0xBF:
+ case 0xC2:
+ // Bouncing coin and banknote
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ clearItem(item);
+ break;
+
+ case 0xBA:
+ // Falling banana peel
+ item->_droppedSequenceId = 0xBB;
+ item->_y = 15;
+ if (item->_droppedSequenceId) {
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
+ }
+ break;
+
+ case 0xBB:
+ item->_isCollision = true;
+ item->_droppedSequenceId = 0;
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ break;
+
+ case 0xBC:
+ _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
+ _vm->_gameSys->setAnimation(0, 0, index + 1);
+ clearItem(item);
+ break;
+
+ default:
+ if (item->_droppedSequenceId) {
+ _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
+ _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
+ item->_currSequenceId = item->_droppedSequenceId;
+ item->_y = 0;
+ }
+ break;
+ }
+}
+
+void Scene51::removeCollidedItems() {
+ for (int i = 0; i < 6; ++i) {
+ if (_items[i]._isCollision) {
+ _vm->_gameSys->removeSequence(_items[i]._currSequenceId, _items[i]._id, true);
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
+ clearItem(&_items[i]);
+ }
+ }
+ _itemsCtr2 = 0;
+}
+
+int Scene51::itemIsCaught(Scene51Item *item) {
+ if (!item->_canCatch)
+ return 0;
+
+ if (isJumpingRight(_platypusJumpSequenceId)) {
+ int v4 = getPosRight(_platypusJumpSequenceId) + 97;
+ if (item->_collisionX < v4 && v4 - item->_collisionX < 56)
+ return 1;
+ } else {
+ int v2 = getPosLeft(_platypusJumpSequenceId);
+ if (item->_collisionX > v2 && item->_collisionX - v2 < 56)
+ return 1;
+ }
+
+ if (item->_currSequenceId == 0xC1) {
+ int v3 = item->_collisionX + 100;
+ if (isJumpingRight(_platypusJumpSequenceId)) {
+ if (ABS(getPosRight(_platypusJumpSequenceId) + 46 - v3) < 56)
+ return 1;
+ } else if (ABS(getPosLeft(_platypusJumpSequenceId) + 46 - v3) < 56) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+bool Scene51::isJumpingRight(int sequenceId) {
+ return sequenceId >= 0x76 && sequenceId <= 0x95;
+}
+
+bool Scene51::isJumpingLeft(int sequenceId) {
+ return sequenceId >= 0x96 && sequenceId <= 0xB5;
+}
+
+bool Scene51::isJumping(int sequenceId) {
+ return sequenceId >= 0x76 && sequenceId <= 0xB5;
+}
+
+void Scene51::waitForAnim(int animationIndex) {
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
+ // pollMessages();
+ updateItemAnimations();
+ _vm->gameUpdateTick();
+ }
+}
+
+int Scene51::getPosRight(int sequenceId) {
+ static const int kRightPosTbl[] = {
+ 131, 159, 178, 195, 203, 219, 238, 254,
+ 246, 274, 293, 310, 318, 334, 353, 369,
+ 362, 390, 409, 426, 434, 450, 469, 485,
+ 477, 505, 524, 541, 549, 565, 584, 600
+ };
+
+ if (sequenceId >= 118 && sequenceId <= 149)
+ return kRightPosTbl[sequenceId - 118];
+ return -1;
+}
+
+int Scene51::getPosLeft(int sequenceId) {
+ static const int kLeftPosTbl[] = {
+ 580, 566, 550, 536, 526, 504, 488, 469,
+ 460, 446, 430, 416, 406, 384, 368, 349,
+ 342, 328, 312, 298, 288, 266, 250, 231,
+ 220, 206, 190, 176, 166, 144, 128, 109
+ };
+
+ if (sequenceId >= 150 && sequenceId <= 181)
+ return kLeftPosTbl[sequenceId - 150];
+ return -1;
+}
+
+void Scene51::playIntroAnim() {
+ int soundCtr = 0;
+
+ _platypusSequenceId = 0x76;
+ _platypusNextSequenceId = 0x76;
+
+ for (int i = 0; i < 6; ++i)
+ clearItem(&_items[i]);
+
+ _items[0]._currSequenceId = 0xBA;
+ _items[0]._x2 = 320;
+ _items[0]._x = -42;
+ _items[0]._y = 15;
+ _items[0]._id = 249;
+ _items[0]._isCollision = true;
+
+ _vm->_gameSys->insertSequence(_platypusSequenceId, 256, 0, 0, kSeqNone, 0, -179, 0);
+ _vm->_gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _items[0]._x, _items[0]._y);
+ _vm->_gameSys->setAnimation(0xBA, 249, 1);
+ _vm->_gameSys->setAnimation(_platypusSequenceId, 256, 0);
+
+ while (_platypusSequenceId < 0x80) {
+ waitForAnim(0);
+ ++_platypusNextSequenceId;
+ _vm->_gameSys->setAnimation(_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_platypusNextSequenceId, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, -179, 0);
+ _platypusSequenceId = _platypusNextSequenceId;
+ ++soundCtr;
+ if (soundCtr % 4 == 0)
+ _vm->playSound(214, false);
+ }
+
+ _platypusNextSequenceId = 0x75;
+
+ while (_platypusSequenceId != 0x84) {
+ waitForAnim(0);
+ ++_platypusNextSequenceId;
+ int oldSequenceId = _platypusNextSequenceId;
+ int v0 = checkCollision(_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_platypusNextSequenceId, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, v0, 0);
+ _platypusSequenceId = _platypusNextSequenceId;
+ if (v0) {
+ _platypusNextSequenceId = oldSequenceId;
+ } else {
+ ++soundCtr;
+ if (soundCtr % 4 == 0)
+ _vm->playSound(214, false);
+ }
+ }
+ waitForAnim(0);
+}
+
+void Scene51::updateGuyAnimation() {
+ if (!_vm->_timers[4]) {
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+
+ switch (_vm->getRandom(5)) {
+ case 0:
+ _guyNextSequenceId = 0xC3;
+ break;
+ case 1:
+ _guyNextSequenceId = 0xC4;
+ break;
+ case 2:
+ _guyNextSequenceId = 0xC5;
+ break;
+ case 3:
+ _guyNextSequenceId = 0xC6;
+ break;
+ case 4:
+ _guyNextSequenceId = 0xC7;
+ break;
+ }
+
+ _vm->_gameSys->insertSequence(_guyNextSequenceId, 39, _guySequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ _guySequenceId = _guyNextSequenceId;
+ _guyNextSequenceId = -1;
+ }
+}
+
+int Scene51::incCashAmount(int sequenceId) {
+ switch (sequenceId) {
+ case 0xBD:
+ _cashAmount += 10;
+ break;
+ case 0xC0:
+ case 0xC1:
+ _cashAmount += 100;
+ break;
+ case 0xB6:
+ case 0xB7:
+ _cashAmount -= 10 * _vm->getRandom(5) + 50;
+ if (_cashAmount < 0)
+ _cashAmount = 0;
+ break;
+ }
+ if (_cashAmount > 1995)
+ _cashAmount = 1995;
+ updateCash(_cashAmount);
+ return _cashAmount;
+}
+
+void Scene51::winMinigame() {
+ updateCash(1995);
+ _vm->playSound(218, false);
+ // TODO delayTicksA(1, 5);
+ _vm->_newSceneNum = 48;
+ _vm->invRemove(kItemBanana);
+}
+
+void Scene51::playCashAppearAnim() {
+ _vm->_gameSys->setAnimation(0xC8, 252, 0);
+ _vm->_gameSys->insertSequence(0xC8, 252, 0, 0, kSeqNone, 0, -20, -20);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->gameUpdateTick();
+ // checkGameAppStatus();
+ }
+}
+
+void Scene51::updateCash(int amount) {
+ drawDigit(amount / 1000, 0);
+ drawDigit(amount / 100 % 10, 1);
+ drawDigit(amount / 10 % 10, 2);
+ drawDigit(amount % 10, 3);
+}
+
+void Scene51::drawDigit(int digit, int position) {
+ if (digit != _digits[position]) {
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[digit], 253,
+ _digitSequenceIds[position], 253,
+ kSeqSyncWait, 0, kDigitPositions[position] - 20, -20);
+ _digitSequenceIds[position] = kDigitSequenceIds[digit];
+ _digits[position] = digit;
+ }
+}
+
+void Scene51::initCashDisplay() {
+ for (int position = 0; position < 4; ++position) {
+ _digits[position] = 0;
+ _digitSequenceIds[position] = kDigitSequenceIds[0];
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[0], 253, 0, 0,
+ kSeqNone, 0, kDigitPositions[position] - 20, -20);
+ }
+ _cashAmount = 0;
+}
+
+void Scene51::run() {
+ int soundCtr = 0;
+ bool isIdle = true;
+
+ _itemsCtr = 0;
+ _vm->_newSceneNum = _vm->_prevSceneNum;
+ _cashAmount = 0;
+ _platypusJumpSequenceId = 0x84;
+ _vm->endSceneInit();
+
+ _vm->hideCursor();
+ _vm->setGrabCursorSprite(-1);
+
+ _guySequenceId = 0xC3;
+ _guyNextSequenceId = -1;
+
+ _vm->_gameSys->insertSequence(0xC3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->_timers[4] = _vm->getRandom(20) + 60;
+
+ playCashAppearAnim();
+ initCashDisplay();
+ playIntroAnim();
+
+ _platypusNextSequenceId = 0x74;
+ _vm->_gameSys->setAnimation(0x74, 256, 0);
+ _vm->_gameSys->insertSequence(_platypusNextSequenceId, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_platypusJumpSequenceId) - 362, 0);
+ _platypusSequenceId = _platypusNextSequenceId;
+
+ _itemInsertDirection = 0;
+ _itemInsertX = 685;
+ _dropSpeedTicks = 10;
+ _nextDropItemKind = 0;
+
+ for (int i = 0; i < 6; ++i)
+ clearItem(&_items[i]);
+
+ _itemInsertX = _vm->getRandom(556) + 129;
+ _vm->_timers[0] = 15;
+
+ _itemsCaughtCtr = 0;
+ _dropLoseCash = false;
+ _itemsCtr1 = 20;
+
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+
+ bool isCollision = false;
+ bool startWalk = true;
+
+ while (!_vm->_sceneDone) {
+ if (clearKeyStatus())
+ _vm->_sceneDone = true;
+
+ _vm->gameUpdateTick();
+
+ updateGuyAnimation();
+ dropNextItem();
+ updateItemAnimations();
+
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ if (isJumpingRight(_platypusJumpSequenceId)) {
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB8, 256, 0);
+ _vm->_gameSys->insertSequence(0xB8, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_platypusJumpSequenceId) - 348, 0);
+ _platypusSequenceId = 0xB8;
+ waitForAnim(0);
+ _platypusNextSequenceId += 6;
+ if (_platypusNextSequenceId > 0x95)
+ _platypusNextSequenceId = 0x95;
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ } else {
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB9, 256, 0);
+ _vm->_gameSys->insertSequence(0xB9, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_platypusJumpSequenceId) - 338, 0);
+ _platypusSequenceId = 0xB9;
+ waitForAnim(0);
+ _platypusNextSequenceId += 6;
+ if (_platypusNextSequenceId > 0xB5)
+ _platypusNextSequenceId = 0xB5;
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ }
+ isIdle = false;
+ }
+
+ while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT) && _platypusNextSequenceId != 0x96) {
+ // pollMessages();
+ if (_platypusNextSequenceId == 0xB6)
+ _platypusNextSequenceId = 0x76;
+ updateItemAnimations();
+ if (startWalk) {
+ _platypusNextSequenceId = 0x86;
+ startWalk = false;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ int collisionX = checkCollision(_platypusNextSequenceId);
+ if (collisionX)
+ incCashAmount(_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_platypusNextSequenceId, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
+ _platypusSequenceId = _platypusNextSequenceId;
+ if (collisionX) {
+ isCollision = true;
+ ++_platypusJumpSequenceId;
+ _platypusNextSequenceId = _platypusJumpSequenceId;
+ } else {
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ }
+ if (isJumpingRight(_platypusJumpSequenceId)) {
+ ++_platypusNextSequenceId;
+ if (!isCollision) {
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB8, 256, 0);
+ _vm->_gameSys->insertSequence(0xB8, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_platypusJumpSequenceId) - 348, 0);
+ _platypusSequenceId = 0xB8;
+ waitForAnim(0);
+ _platypusNextSequenceId += 6;
+ if (_platypusNextSequenceId > 0x95)
+ _platypusNextSequenceId = 0x95;
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ } else {
+ ++soundCtr;
+ if (soundCtr % 4 == 0)
+ _vm->playSound(214, false);
+ }
+ }
+ } else {
+ _platypusNextSequenceId = 150 - (_platypusJumpSequenceId - 150);
+ }
+ isCollision = false;
+ isIdle = false;
+ }
+ _vm->gameUpdateTick();
+ }
+
+ while (_vm->isKeyStatus2(Common::KEYCODE_LEFT) && _platypusNextSequenceId != 0xB6) {
+ // pollMessages();
+ updateItemAnimations();
+ if (startWalk) {
+ _platypusNextSequenceId = 0xA5;
+ startWalk = false;
+ }
+
+ if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ int collisionX = checkCollision(_platypusNextSequenceId);
+ if (collisionX)
+ incCashAmount(_platypusNextSequenceId);
+ _vm->_gameSys->setAnimation(_platypusNextSequenceId, 256, 0);
+ _vm->_gameSys->insertSequence(_platypusNextSequenceId, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
+ _platypusSequenceId = _platypusNextSequenceId;
+ if (collisionX) {
+ isCollision = true;
+ ++_platypusJumpSequenceId;
+ _platypusNextSequenceId = _platypusJumpSequenceId;
+ } else {
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ }
+ if (isJumpingLeft(_platypusJumpSequenceId)) {
+ ++_platypusNextSequenceId;
+ if (!isCollision) {
+ if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ waitForAnim(0);
+ _vm->_gameSys->setAnimation(0xB9, 256, 0);
+ _vm->_gameSys->insertSequence(0xB9, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_platypusJumpSequenceId) - 338, 0);
+ _platypusSequenceId = 0xB9;
+ waitForAnim(0);
+ _platypusNextSequenceId += 6;
+ if (_platypusNextSequenceId > 0xB5)
+ _platypusNextSequenceId = 0xB5;
+ _platypusJumpSequenceId = _platypusNextSequenceId;
+ } else {
+ ++soundCtr;
+ if (soundCtr % 4 == 0)
+ _vm->playSound(214, false);
+ }
+ }
+ } else {
+ _platypusNextSequenceId = 182 - (_platypusJumpSequenceId - 118);
+ }
+ isCollision = false;
+ isIdle = false;
+ }
+ _vm->gameUpdateTick();
+ }
+
+ if (!isIdle && _vm->_gameSys->getAnimationStatus(0) == 2) {
+ if (isJumpingRight(_platypusJumpSequenceId)) {
+ _vm->_gameSys->setAnimation(0x74, 256, 0);
+ _vm->_gameSys->insertSequence(0x74, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_platypusJumpSequenceId) - 362, 0);
+ _platypusSequenceId = 0x74;
+ } else {
+ _vm->_gameSys->setAnimation(0x75, 256, 0);
+ _vm->_gameSys->insertSequence(0x75, 256, _platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_platypusJumpSequenceId) - 341, 0);
+ _platypusSequenceId = 0x75;
+ }
+ waitForAnim(0);
+ isIdle = true;
+ }
+ }
+
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ for (int i = 0; i < 6; ++i)
+ _vm->_gameSys->setAnimation(0, 0, i + 1);
+
+ _vm->showCursor();
+}
+
+/*****************************************************************************/
+
+Scene52::Scene52(GnapEngine *vm) : Scene(vm) {
+ _gameScore = 0;
+ _aliensInitialized = false;
+ _alienDirection = 0;
+ _soundToggle = false;
+}
+
+int Scene52::init() {
+ initAnims();
+ return 0x2B;
+}
+
+void Scene52::updateHotspots() {
+ _vm->_hotspotsCount = 0;
+}
+
+void Scene52::update() {
+ for (int rowNum = 0; rowNum < 7; ++rowNum) {
+ _vm->gameUpdateTick();
+ if (_vm->_gameSys->getAnimationStatus(_alienRowAnims[rowNum]) == 2) {
+ updateAlienRow(rowNum);
+ rowNum = 0;
+ }
+ }
+
+ if (_liveAlienRows == 0 && !_alienSingle) {
+ _alienWave = false;
+ _vm->playSound(48, false);
+ ++_alienCounter;
+ if (_alienCounter != 3) {
+ _vm->_timers[0] = 50;
+ _vm->_timers[2] = 100;
+ _alienRowDownCtr = 0;
+ _alienSingle = true;
+ }
+ }
+
+ if (_alienSingle && !_vm->_timers[0]) {
+ initAliens();
+ _alienSingle = false;
+ _vm->_timers[2] = 5;
+ _alienWave = true;
+ }
+
+ if ((_alienRowDownCtr || _liveAlienRows == 0) && !_alienSingle) {
+ moveDownAlienRow();
+ _alienRowDownCtr = 0;
+ }
+
+ if (_vm->isKeyStatus1(Common::KEYCODE_UP) || _vm->isKeyStatus1(Common::KEYCODE_SPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ if (!_aliensCount)
+ fireShipCannon(_shipPosX);
+ }
+
+ if (_shipCannonFiring)
+ updateShipCannon();
+
+ fireAlienCannon();
+ updateAlienCannons();
+
+ if (_aliensCount == 1) {
+ _alienWave = false;
+ _vm->_timers[3] = 20;
+ _vm->_timers[2] = 100;
+ ++_aliensCount;
+ }
+
+ if (_aliensCount && !_vm->_timers[3]) {
+ updateAliens();
+ loseShip();
+ if (_shipsLeft != 0) {
+ _vm->_timers[3] = 40;
+ while (_vm->_timers[3]) {
+ updateAlienCannons();
+ if (_shipCannonFiring)
+ updateShipCannon();
+ _vm->gameUpdateTick();
+ }
+ initAliens();
+ _shipPosX = (800 - _shipMidX) / 2;
+ _vm->_gameSys->setAnimation(_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _shipPosX, _arcadeScreenBottom);
+ _ufoSequenceId = _nextUfoSequenceId;
+ _vm->_timers[2] = 5;
+ _alienWave = true;
+ } else {
+ _vm->_sceneDone = true;
+ }
+ }
+
+ if (_vm->_timers[1] || getFreeShipCannon() == -1) {
+ _nextUfoSequenceId = 34;
+ if (_ufoSequenceId != 34)
+ _shipFlag = true;
+ } else {
+ _nextUfoSequenceId = 34;
+ if (_ufoSequenceId != 34)
+ _shipFlag = true;
+ }
+
+ if (_shipFlag) {
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
+ _vm->_gameSys->setAnimation(_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_nextUfoSequenceId, 256, _ufoSequenceId, 256, kSeqSyncWait, 0, _shipPosX, _arcadeScreenBottom);
+ _ufoSequenceId = _nextUfoSequenceId;
+ }
+ _shipFlag = false;
+ }
+
+ if (_alienWave && !_vm->_timers[0]) {
+ playSound();
+ int v0 = _alienSpeed;
+ if (_alienSpeed >= 10)
+ v0 = 10;
+ int v1 = v0;
+ if (v0 < 2)
+ v1 = 2;
+ _vm->_timers[0] = v1;
+ }
+}
+
+void Scene52::initShipCannon(int bottomY) {
+ _shipCannonFired = false;
+ _shipCannonWidth = MAX(_vm->_gameSys->getSpriteWidthById(14), _vm->_gameSys->getSpriteWidthById(16));
+ _shipCannonHeight = MAX(_vm->_gameSys->getSpriteHeightById(14), _vm->_gameSys->getSpriteHeightById(16));
+ _shipCannonTopY = bottomY - _shipCannonHeight;
+ _shipCannonFiring = false;
+}
+
+void Scene52::initAlienCannons() {
+ for (int i = 0; i < 3; ++i) {
+ _alienCannonIds[i] = 0;
+ _alienCannonFired[i] = 0;
+ }
+ _alienCannonSequenceIds[0] = 30;
+ _alienCannonSequenceIds[1] = 31;
+ _alienCannonSequenceIds[2] = 32;
+}
+
+void Scene52::fireShipCannon(int posX) {
+ if (_vm->_timers[1])
+ return;
+
+ int cannonNum = getFreeShipCannon();
+ if (cannonNum != -1) {
+ _shipCannonPosX = _shipMidX / 2 + posX - _shipCannonWidth / 2;
+ _shipCannonPosY = _shipCannonTopY;
+ _vm->_gameSys->setAnimation(0x23, cannonNum + 256, cannonNum + 8);
+ _vm->_gameSys->insertSequence(0x23, cannonNum + 256, 0, 0, kSeqNone, 0, _shipCannonPosX, _shipCannonPosY);
+ _vm->playSound(0x2D, false);
+ if (shipCannonHitShield(cannonNum)) {
+ _vm->_gameSys->setAnimation(0, 0, cannonNum + 8);
+ _vm->_gameSys->removeSequence(0x23, cannonNum + 256, true);
+ } else {
+ _shipCannonFired = true;
+ _shipCannonPosY -= 13;
+ _shipCannonFiring = true;
+ }
+ _vm->_timers[1] = 5;
+ }
+}
+
+void Scene52::fireAlienCannon() {
+ if (_vm->_timers[2])
+ return;
+
+ int cannonNum = getFreeAlienCannon();
+ if (cannonNum != -1) {
+ int alienX1 = _alienLeftX + _alienRowXOfs[0];
+ int alienX2 = _alienLeftX + _alienRowXOfs[0] + 5 * _alienWidth - (_alienWidth / 2 - 15);
+ _alienCannonPosX[cannonNum] = _vm->getRandom(alienX2 - alienX1) + alienX1;
+ _alienCannonPosY[cannonNum] = 104;
+ _alienCannonFired[cannonNum] = 1;
+ _vm->_gameSys->setAnimation(_alienCannonSequenceIds[cannonNum], _alienCannonIds[cannonNum] + 256, cannonNum + 9);
+ _vm->_gameSys->insertSequence(_alienCannonSequenceIds[cannonNum], _alienCannonIds[cannonNum] + 256, 0, 0,
+ kSeqNone, 0, _alienCannonPosX[cannonNum], _alienCannonPosY[cannonNum]);
+ _alienCannonPosY[cannonNum] -= 13;
+ _vm->_timers[2] = 5;
+ }
+}
+
+int Scene52::getFreeShipCannon() {
+ if (!_shipCannonFired)
+ return 0;
+ return -1;
+}
+
+int Scene52::getFreeAlienCannon() {
+ for (int i = 0; i < 3; ++i)
+ if (!_alienCannonFired[i])
+ return i;
+ return -1;
+}
+
+void Scene52::updateShipCannon() {
+ if (_shipCannonFired && _vm->_gameSys->getAnimationStatus(8) == 2) {
+ _shipCannonPosY -= 13;
+ if (_shipCannonPosY - 13 >= 135) {
+ if (updateHitAlien()) {
+ _vm->_gameSys->setAnimation(0, 0, 8);
+ _vm->_gameSys->removeSequence(35, 256, true);
+ _shipCannonFired = false;
+ drawScore(_gameScore);
+ } else {
+ _vm->_gameSys->setAnimation(35, 256, 8);
+ _vm->_gameSys->insertSequence(35, 256, 35, 256, kSeqSyncWait, 0, _shipCannonPosX, _shipCannonPosY);
+ _shipCannonPosY -= 13;
+ }
+ } else {
+ _vm->_gameSys->setAnimation(0, 0, 8);
+ _vm->_gameSys->removeSequence(35, 256, true);
+ _shipCannonFired = false;
+ }
+ }
+}
+
+void Scene52::updateAlienCannons() {
+ for (int i = 0; i < 3; ++i) {
+ if (_alienCannonFired[i] && _vm->_gameSys->getAnimationStatus(i + 9) == 2) {
+ _alienCannonPosY[i] += 13;
+ if (_shipCannonHeight + _alienCannonPosY[i] + 13 <= 550) {
+ if (alienCannonHitShip(i)) {
+ _vm->_gameSys->setAnimation(0, 0, i + 9);
+ _alienCannonFired[i] = 0;
+ shipExplode();
+ } else if (alienCannonHitShield(i)) {
+ _alienCannonFired[i] = 0;
+ } else {
+ _vm->_gameSys->insertSequence(_alienCannonSequenceIds[i], 1 - _alienCannonIds[i] + 256, 0, 0,
+ kSeqNone, 0, _alienCannonPosX[i], _alienCannonPosY[i]);
+ _vm->_gameSys->setAnimation(_alienCannonSequenceIds[i], 1 - _alienCannonIds[i] + 256, i + 9);
+ _alienCannonIds[i] = 1 - _alienCannonIds[i];
+ _alienCannonPosY[i] += 13;
+ }
+ } else {
+ _vm->_gameSys->setAnimation(0, 0, i + 9);
+ _alienCannonFired[i] = 0;
+ }
+ }
+ }
+}
+
+void Scene52::initAliens() {
+ if (!_aliensInitialized) {
+ initAlienSize();
+ _aliensInitialized = true;
+ }
+
+ _liveAlienRows = 0;
+ _alienSpeed = 0;
+ _bottomAlienFlag = false;
+ _aliensCount = 0;
+ _alienSingle = false;
+ _alienRowDownCtr = 0;
+
+ initShields();
+
+ _alienRowKind[0] = -1;
+ _alienRowKind[1] = -1;
+ _alienRowKind[2] = -1;
+ _alienRowKind[3] = -1;
+ _alienRowKind[4] = _vm->getRandom(2) != 0 ? 24 : 27;
+ _alienRowKind[5] = _vm->getRandom(2) != 0 ? 25 : 28;
+ _alienRowKind[6] = _vm->getRandom(2) != 0 ? 26 : 29;
+
+ for (int i = 0; i < 7; ++i) {
+ _alienRowAnims[i] = i;
+ _alienRowXOfs[i] = 0;
+ initAlienRowKind(i, _alienRowKind[i]);
+ insertAlienRow(i);
+ }
+}
+
+void Scene52::initAlienRowKind(int rowNum, int alienKind) {
+ for (int i = 0; i < 5; ++i)
+ _items[rowNum][i] = alienKind;
+}
+
+void Scene52::insertAlienRow(int rowNum) {
+ if (_alienRowKind[rowNum] >= 0) {
+ insertAlienRowAliens(rowNum);
+ _alienRowIds[rowNum] = 256;
+ _vm->_gameSys->setAnimation(_alienRowKind[rowNum], _alienRowIds[rowNum], _alienRowAnims[rowNum]);
+ ++_liveAlienRows;
+ }
+}
+
+void Scene52::insertAlienRowAliens(int rowNum) {
+ int xOffs = _alienLeftX;
+ int yOffs = _alienTopY - 52 * rowNum - _alienHeight + 10;
+ for (int i = 0; i < 5; ++i) {
+ if (_items[rowNum][i] >= 0) {
+ _vm->_gameSys->insertSequence(_items[rowNum][i], i + 256, 0, 0, kSeqNone, 0, xOffs, yOffs);
+ ++_alienSpeed;
+ }
+ xOffs += _alienWidth;
+ }
+}
+
+void Scene52::updateAlienRow(int rowNum) {
+ if (_alienRowKind[rowNum] != -1 && !checkAlienRow(rowNum)) {
+ updateAlienRowXOfs();
+ _alienRowIds[rowNum] = -1;
+ int xOffs = _alienLeftX + _alienRowXOfs[rowNum];
+ int yOffs = _alienTopY - 52 * rowNum - _alienHeight + 10;
+ for (int i = 0; i < 5; ++i) {
+ if (_items[rowNum][i] >= 0) {
+ _vm->_gameSys->insertSequence(_items[rowNum][i], i + 256, _items[rowNum][i], i + 256, kSeqSyncWait, 0, xOffs, yOffs);
+ if (_alienRowIds[rowNum] == -1)
+ _alienRowIds[rowNum] = i + 256;
+ } else if (_items[rowNum][i] == -2) {
+ _vm->_gameSys->removeSequence(_alienRowKind[rowNum], i + 256, true);
+ _items[rowNum][i] = -1;
+ --_alienSpeed;
+ }
+ xOffs += _alienWidth;
+ }
+ if (_alienRowIds[rowNum] == -1) {
+ _vm->_gameSys->setAnimation(0, 0, _alienRowAnims[rowNum]);
+ // MessageBoxA(0, "No live aliens!", "Error 3:", 0x30u);
+ } else {
+ _vm->_gameSys->setAnimation(_alienRowKind[rowNum], _alienRowIds[rowNum], _alienRowAnims[rowNum]);
+ }
+ if (rowNum == 1) {
+ for (int j = 0; j < 3; ++j) {
+ if (_shieldSpriteIds[j] != -1) {
+ _vm->_gameSys->fillSurface(0, _shieldPosX[j], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _shieldSpriteIds[j] = -1;
+ }
+ }
+ }
+ if (rowNum == 0 && _bottomAlienFlag)
+ shipExplode();
+ }
+}
+
+void Scene52::moveDownAlienRow() {
+ int v2[5], v3, v1, v0, v4;
+
+ for (int i = 0; i < 5; ++i)
+ v2[i] = _items[0][i];
+
+ v3 = _alienRowIds[0];
+ v1 = _alienRowAnims[0];
+ v0 = _alienRowKind[0];
+ v4 = _alienRowXOfs[0];
+
+ for (int j = 0; j < 7; ++j) {
+ for (int i = 0; i < 5; ++i)
+ _items[j][i] = _items[j + 1][i];
+ _alienRowIds[j] = _alienRowIds[j + 1];
+ _alienRowAnims[j] = _alienRowAnims[j + 1];
+ _alienRowKind[j] = _alienRowKind[j + 1];
+ _alienRowXOfs[j] = _alienRowXOfs[j + 1];
+ }
+
+ for (int i = 0; i < 5; ++i)
+ _items[6][i] = v2[i];
+
+ _alienRowIds[6] = v3;
+ _alienRowAnims[6] = v1;
+ _alienRowKind[6] = v0;
+ _alienRowXOfs[6] = v4;
+
+ updateAlien(6);
+ initAlienRowKind(6, _alienRowKind[6]);
+ insertAlienRow(6);
+
+ _bottomAlienFlag = _alienRowKind[0] > -1;
+}
+
+int Scene52::updateHitAlien() {
+ int result = 0, rowNum, ya;
+
+ int y = _shipCannonTopY - _shipCannonPosY;
+
+ if (y == 26) {
+ rowNum = 1;
+ ya = _shipCannonPosY + 26;
+ } else {
+ if (y % 52)
+ return 0;
+ rowNum = y / 52 + 1;
+ ya = _shipCannonPosY;
+ }
+
+ if (rowNum < 7) {
+ int hitAlienNum = getHitAlienNum(rowNum);
+ if (hitAlienNum != -1 && _items[rowNum][hitAlienNum] >= 0) {
+ _gameScore = ((_items[rowNum][hitAlienNum] - 24) % 3 + _gameScore + 1) % 1000;
+ _items[rowNum][hitAlienNum] = -2;
+ _vm->playSound(44, false);
+ _vm->_gameSys->insertSequence(0x21, 266, 0, 0,
+ kSeqNone, 0, _alienLeftX + hitAlienNum * _alienWidth + _alienRowXOfs[rowNum] - 10, ya - _alienHeight);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
+int Scene52::getHitAlienNum(int rowNum) {
+ int result = -1;
+
+ int v3 = _alienLeftX + _alienRowXOfs[rowNum];
+
+ if (_shipCannonPosX >= v3) {
+ int v8 = _alienWidth / 2 - 15;
+ if (v3 + 5 * _alienWidth - v8 >= _shipCannonPosX) {
+ int v4 = v3 + _alienWidth;
+ if (_shipCannonPosX >= v4 - v8) {
+ int v5 = v4 + _alienWidth;
+ if (_shipCannonPosX >= v5 - v8) {
+ int v6 = v5 + _alienWidth;
+ if (_shipCannonPosX >= v6 - v8) {
+ int v7 = v6 + _alienWidth;
+ if (_shipCannonPosX >= v7 - v8) {
+ if (_shipCannonPosX >= v7 + _alienWidth - v8)
+ result = -1;
+ else
+ result = 4;
+ } else {
+ result = 3;
+ }
+ } else {
+ result = 2;
+ }
+ } else {
+ result = 1;
+ }
+ } else {
+ result = 0;
+ }
+ } else {
+ result = -1;
+ }
+ } else {
+ result = -1;
+ }
+ return result;
+}
+
+int Scene52::alienCannonHitShip(int cannonNum) {
+ int result = 0;
+
+ if (_aliensCount) {
+ result = 0;
+ } else {
+ int cannonY = _alienCannonPosY[cannonNum] - 13;
+ if (_arcadeScreenBottom <= cannonY) {
+ if (_shipMidY + _arcadeScreenBottom > cannonY) {
+ if (_alienCannonPosX[cannonNum] >= _shipPosX)
+ result = _alienCannonPosX[cannonNum] < _shipMidX + _shipPosX;
+ else
+ result = 0;
+ } else {
+ result = 0;
+ }
+ } else {
+ result = 0;
+ }
+ }
+ return result;
+}
+
+int Scene52::alienCannonHitShield(int cannonNum) {
+ int result = 0;
+
+ int v3 = _alienCannonPosY[cannonNum] + 39;
+ if (_arcadeScreenBottom - 44 > v3)
+ return 0;
+
+ if (_arcadeScreenBottom <= v3)
+ return 0;
+
+ if (_alienCannonPosX[cannonNum] < _shieldPosX[0])
+ return 0;
+
+ if (_alienCannonPosX[cannonNum] > _shieldPosX[2] + 33)
+ return 0;
+
+ int shieldNum = -1;
+ if (_alienCannonPosX[cannonNum] < _shieldPosX[0] + 33)
+ shieldNum = 0;
+
+ if (shieldNum < 0 && _alienCannonPosX[cannonNum] < _shieldPosX[1])
+ return 0;
+
+ if (shieldNum < 0 && _alienCannonPosX[cannonNum] < _shieldPosX[1] + 33)
+ shieldNum = 1;
+
+ if (shieldNum < 0) {
+ if (_alienCannonPosX[cannonNum] < _shieldPosX[2])
+ return 0;
+ shieldNum = 2;
+ }
+
+ if (_shieldSpriteIds[shieldNum] == -1) {
+ result = 0;
+ } else {
+ ++_shieldSpriteIds[shieldNum];
+ if (_shieldSpriteIds[shieldNum] <= 21) {
+ _vm->_gameSys->drawSpriteToBackground(_shieldPosX[shieldNum], _arcadeScreenBottom - 44, _shieldSpriteIds[shieldNum]);
+ } else {
+ _vm->_gameSys->fillSurface(0, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _shieldSpriteIds[shieldNum] = -1;
+ }
+ _vm->_gameSys->setAnimation(0, 0, cannonNum + 9);
+ _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _alienCannonPosX[cannonNum] - 18, _arcadeScreenBottom - 44);
+ _vm->playSound(0x2C, false);
+ result = 1;
+ }
+
+ return result;
+}
+
+bool Scene52::shipCannonHitShield(int cannonNum) {
+ bool result = false;
+
+ if (_shipCannonPosX < _shieldPosX[0])
+ return result;
+
+ if (_shipCannonPosX > _shieldPosX[2] + 33)
+ return result;
+
+ int shieldNum = -1;
+ if (_shipCannonPosX < _shieldPosX[0] + 33)
+ shieldNum = 0;
+
+ if (shieldNum < 0 && _shipCannonPosX < _shieldPosX[1])
+ return result;
+
+ if (shieldNum < 0 && _shipCannonPosX < _shieldPosX[1] + 33)
+ shieldNum = 1;
+
+ if (shieldNum < 0) {
+ if (_shipCannonPosX < _shieldPosX[2])
+ return result;
+ shieldNum = 2;
+ }
+
+ if (_shieldSpriteIds[shieldNum] == -1) {
+ result = false;
+ } else {
+ ++_shieldSpriteIds[shieldNum];
+ if (_shieldSpriteIds[shieldNum] <= 21) {
+ _vm->_gameSys->drawSpriteToBackground(_shieldPosX[shieldNum], _arcadeScreenBottom - 44, _shieldSpriteIds[shieldNum]);
+ } else {
+ _vm->_gameSys->fillSurface(0, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _shieldSpriteIds[shieldNum] = -1;
+ }
+ _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _shipCannonPosX - 18, _arcadeScreenBottom - 44);
+ _vm->playSound(0x2C, false);
+ result = true;
+ }
+
+ return result;
+}
+
+bool Scene52::shipCannonHitAlien() {
+ bool result = false;
+
+ if (_aliensCount || checkAlienRow(0))
+ return false;
+
+ int alienNextX = _alienLeftX + _alienRowXOfs[0];
+ if (_shipMidX + _shipPosX >= alienNextX) {
+ int startX = _alienWidth / 2 - 15;
+ if (alienNextX + 5 * _alienWidth - startX >= _shipPosX) {
+ int alienNextDeltaX = alienNextX + _alienWidth;
+ if (_items[0][0] <= -1 || alienNextDeltaX - startX <= _shipPosX) {
+ alienNextDeltaX += _alienWidth;
+ if (_items[0][1] <= -1 || alienNextDeltaX - startX <= _shipPosX) {
+ alienNextDeltaX += _alienWidth;
+ if (_items[0][2] <= -1 || alienNextDeltaX - startX <= _shipPosX) {
+ alienNextDeltaX += _alienWidth;
+ if (_items[0][3] <= -1 || alienNextDeltaX - startX <= _shipPosX) {
+ alienNextDeltaX += _alienWidth;
+ result = _items[0][4] > -1 && alienNextDeltaX - startX > _shipPosX;
+ } else {
+ result = true;
+ }
+ } else {
+ result = true;
+ }
+ } else {
+ result = true;
+ }
+ } else {
+ result = true;
+ }
+ } else {
+ result = false;
+ }
+ } else {
+ result = false;
+ }
+
+ return result;
+}
+
+void Scene52::shipExplode() {
+ if (!_aliensCount) {
+ _vm->_gameSys->setAnimation(0, 0, 7);
+ _vm->_gameSys->removeSequence(_ufoSequenceId, 256, true);
+ _vm->playSound(44, false);
+ _vm->_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _shipPosX, _arcadeScreenBottom);
+ _aliensCount = 1;
+ _vm->playSound(0x31, false);
+ }
+}
+
+bool Scene52::checkAlienRow(int rowNum) {
+ for (int i = 0; i < 5; ++i) {
+ if (_items[rowNum][i] >= 0)
+ return false;
+ }
+
+ bool found = false;
+ for (int j = 0; j < 5; ++j)
+ if (_items[rowNum][j] == -2) {
+ _vm->_gameSys->removeSequence(_alienRowKind[rowNum], j + 256, true);
+ _items[rowNum][j] = -1;
+ --_alienSpeed;
+ found = true;
+ }
+
+ if (found) {
+ _vm->_gameSys->setAnimation(0, 0, _alienRowAnims[rowNum]);
+ --_liveAlienRows;
+ }
+
+ if (_liveAlienRows < 0)
+ _liveAlienRows = 0;
+
+ return true;
+}
+
+void Scene52::updateAlienRowXOfs() {
+ int amount = 2 * (3 - _liveAlienRows) + 1;
+
+ if (_alienSpeed == 2)
+ amount *= 4;
+ else if (_alienSpeed == 1)
+ amount *= 10;
+
+ if (_alienDirection) {
+ for (int i = 0; i < 7; ++i) {
+ _alienRowXOfs[i] -= amount;
+ if (_alienRowXOfs[i] <= -100) {
+ _alienRowXOfs[i] = -100;
+ _alienDirection = 0;
+ ++_alienRowDownCtr;
+ }
+ }
+ } else {
+ for (int j = 0; j < 7; ++j) {
+ _alienRowXOfs[j] += amount;
+ if (_alienRowXOfs[j] >= 100) {
+ _alienRowXOfs[j] = 100;
+ _alienDirection = 1;
+ ++_alienRowDownCtr;
+ }
+ }
+ }
+}
+
+void Scene52::initAlienSize() {
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(0);
+ if (_vm->_gameSys->getSpriteWidthById(1) > _alienWidth)
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(1);
+ if (_vm->_gameSys->getSpriteWidthById(4) > _alienWidth)
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(4);
+ if (_vm->_gameSys->getSpriteWidthById(5) > _alienWidth)
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(5);
+ if (_vm->_gameSys->getSpriteWidthById(12) > _alienWidth)
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(12);
+ if (_vm->_gameSys->getSpriteWidthById(13) > _alienWidth)
+ _alienWidth = _vm->_gameSys->getSpriteWidthById(13);
+
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(0);
+ if (_vm->_gameSys->getSpriteHeightById(1) > _alienHeight)
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(1);
+ if (_vm->_gameSys->getSpriteHeightById(4) > _alienHeight)
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(4);
+ if (_vm->_gameSys->getSpriteHeightById(5) > _alienHeight)
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(5);
+ if (_vm->_gameSys->getSpriteHeightById(12) > _alienHeight)
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(12);
+ if (_vm->_gameSys->getSpriteHeightById(13) > _alienHeight)
+ _alienHeight = _vm->_gameSys->getSpriteHeightById(13);
+
+ _alienTopY = _shipCannonTopY + 52;
+ _alienLeftX = (800 - 5 * _alienWidth) / 2;
+}
+
+void Scene52::playSound() {
+ if (_soundToggle) {
+ _vm->playSound(0x2F, false);
+ _soundToggle = false;
+ } else {
+ _vm->playSound(0x2E, false);
+ _soundToggle = true;
+ }
+}
+
+void Scene52::updateAliens() {
+ for (int i = 0; i < 7; ++i)
+ updateAlien(i);
+}
+
+void Scene52::updateAlien(int rowNum) {
+ if (_alienRowKind[rowNum] >= 0 && !checkAlienRow(rowNum)) {
+ for (int i = 0; i < 5; ++i) {
+ if (_items[rowNum][i] >= 0)
+ _items[rowNum][i] = -2;
+ }
+ checkAlienRow(rowNum);
+ }
+}
+
+void Scene52::loseShip() {
+ --_shipsLeft;
+ if (_shipsLeft == 2) {
+ _vm->_gameSys->fillSurface(0, 120, 140, _shipMidX, _shipMidY, 0, 0, 0);
+ } else if (_shipsLeft == 1) {
+ _vm->_gameSys->fillSurface(0, 120, 185, _shipMidX, _shipMidY, 0, 0, 0);
+ }
+}
+
+void Scene52::initShields() {
+ for (int i = 0; i < 3; ++i) {
+ _vm->_gameSys->drawSpriteToBackground(_shieldPosX[i], _arcadeScreenBottom - 44, 17);
+ _shieldSpriteIds[i] = 17;
+ }
+}
+
+void Scene52::initAnims() {
+ for (int i = 0; i < 7; ++i)
+ _vm->_gameSys->setAnimation(0, 0, i);
+ _vm->_gameSys->setAnimation(0, 0, 7);
+ for (int j = 0; j < 1; ++j)
+ _vm->_gameSys->setAnimation(0, 0, j + 8);
+ for (int k = 0; k < 3; ++k)
+ _vm->_gameSys->setAnimation(0, 0, k + 9);
+}
+
+void Scene52::drawScore(int score) {
+ char str[4];
+ sprintf(str, "%03d", score);
+ _vm->_gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
+}
+
+void Scene52::run() {
+ _vm->_timers[1] = 0;
+
+ _vm->hideCursor();
+
+ // TODO loadFont("maturasc", "Matura MT Script Capitals", 2000);
+ // TODO setFontSize(24);
+
+ _gameScore = 0;
+ _vm->_gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
+ _vm->_gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
+
+ drawScore(0);
+
+ _shipMidX = 33;
+ _shipMidY = _vm->_gameSys->getSpriteHeightById(15);
+ _shipPosX = (800 - _shipMidX) / 2;
+ _arcadeScreenBottom = 496;
+ _arcadeScreenRight = 595 - _shipMidX;
+ _arcadeScreenLeft = 210;
+ _shipsLeft = 3;
+ _alienCounter = 0;
+
+ _shieldPosX[0] = 247;
+ _shieldPosX[1] = 387;
+ _shieldPosX[2] = 525;
+
+ for (int i = 0; i < 3; ++i)
+ _shieldSpriteIds[i] = -1;
+
+ _vm->_gameSys->drawSpriteToBackground(120, 140, 0xF);
+ _vm->_gameSys->drawSpriteToBackground(120, 185, 0xF);
+
+ initShipCannon(_arcadeScreenBottom);
+ initAlienCannons();
+ initAliens();
+
+ _nextUfoSequenceId = 0x22;
+ _vm->_gameSys->setAnimation(0x22, 256, 7);
+ _vm->_gameSys->insertSequence(_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _shipPosX, _arcadeScreenBottom);
+
+ _ufoSequenceId = _nextUfoSequenceId;
+
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
+ _vm->clearKeyStatus1(Common::KEYCODE_UP);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+
+ _vm->_timers[2] = 5;
+ _shipFlag = false;
+
+ _vm->_timers[0] = 10;
+ _alienWave = true;
+
+ while (!_vm->_sceneDone) {
+ _vm->gameUpdateTick();
+
+ while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT)) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
+ if (_shipPosX < _arcadeScreenRight) {
+ _shipPosX += 15;
+ if (_shipPosX > _arcadeScreenRight)
+ _shipPosX = _arcadeScreenRight;
+ _vm->_gameSys->setAnimation(_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_nextUfoSequenceId, 256, _ufoSequenceId, 256, kSeqSyncWait, 0, _shipPosX, _arcadeScreenBottom);
+ _ufoSequenceId = _nextUfoSequenceId;
+ if (_bottomAlienFlag && shipCannonHitAlien())
+ shipExplode();
+ }
+ break;
+ }
+ }
+
+ while (_vm->isKeyStatus2(Common::KEYCODE_LEFT)) {
+ update();
+ if (_vm->_gameSys->getAnimationStatus(7) == 2) {
+ if (_shipPosX > _arcadeScreenLeft) {
+ _shipPosX -= 15;
+ if (_shipPosX < _arcadeScreenLeft)
+ _shipPosX = _arcadeScreenLeft;
+ _vm->_gameSys->setAnimation(_nextUfoSequenceId, 256, 7);
+ _vm->_gameSys->insertSequence(_nextUfoSequenceId, 256, _ufoSequenceId, 256, kSeqSyncWait, 0, _shipPosX, _arcadeScreenBottom);
+ _ufoSequenceId = _nextUfoSequenceId;
+ if (_bottomAlienFlag && shipCannonHitAlien())
+ shipExplode();
+ }
+ break;
+ }
+ }
+
+ update();
+
+ if (clearKeyStatus()) {
+ _alienWave = false;
+ _vm->_gameSys->waitForUpdate();
+ initAnims();
+ _vm->clearKeyStatus1(30);
+ _vm->_sceneDone = true;
+ }
+ }
+
+ // TODO freeFont();
+
+ _vm->_gameSys->waitForUpdate();
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/arcade.h b/engines/gnap/scenes/arcade.h
new file mode 100644
index 0000000..4255a2d
--- /dev/null
+++ b/engines/gnap/scenes/arcade.h
@@ -0,0 +1,290 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_ARCADE_H
+#define GNAP_ARCADE_H
+
+#include "gnap/debugger.h"
+
+namespace Gnap {
+
+class GnapEngine;
+class CutScene;
+
+struct Scene49Obstacle {
+ int _currSequenceId;
+ int _closerSequenceId;
+ int _passedSequenceId;
+ int _splashSequenceId;
+ int _collisionSequenceId;
+ int _prevId;
+ int _currId;
+ int _laneNum;
+};
+
+struct ObstacleDef {
+ int _sequenceId;
+ int _ticks;
+};
+
+class Scene49: public Scene {
+public:
+ Scene49(GnapEngine *vm);
+ ~Scene49() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _scoreBarPos;
+ int _scoreLevel;
+ bool _scoreBarFlash;
+ int _obstacleIndex;
+ Scene49Obstacle _obstacles[5];
+ int _truckSequenceId;
+ int _truckId;
+ int _truckLaneNum;
+
+ void checkObstacles();
+ void updateObstacle(int id);
+ void increaseScore(int amount);
+ void decreaseScore(int amount);
+ void refreshScoreBar();
+ void clearObstacle(int index);
+};
+
+/*****************************************************************************/
+
+class Scene50: public Scene {
+public:
+ Scene50(GnapEngine *vm);
+ ~Scene50() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations();
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _fightDone;
+ int _timesPlayed;
+ int _timesPlayedModifier;
+ int _attackCounter;
+ int _roundNum;
+ int _timeRemaining;
+ int _leftTongueRoundsWon;
+ int _rightTongueRoundsWon;
+ int _leftTongueEnergyBarPos;
+ int _rightTongueEnergyBarPos;
+ int _leftTongueSequenceId;
+ int _leftTongueId;
+ int _leftTongueNextSequenceId;
+ int _leftTongueNextId;
+ int _leftTongueNextIdCtr;
+ int _rightTongueSequenceId;
+ int _rightTongueId;
+ int _rightTongueNextSequenceId;
+ int _rightTongueNextId;
+ int _rightTongueNextIdCtr;
+ int _leftTongueEnergy;
+ int _rightTongueEnergy;
+
+ bool tongueWinsRound(int tongueNum);
+ void playWinAnim(int tongueNum, bool fightOver);
+ void delayTicks();
+ void initRound();
+ bool updateCountdown();
+ void drawCountdown(int value);
+ void playTonguesIdle();
+ void playRoundAnim(int roundNum);
+ bool updateEnergyBars(int newLeftBarPos, int newRightBarPos);
+ void waitForAnim(int animationIndex);
+ int checkInput();
+ int getRightTongueAction();
+ int getRightTongueActionTicks();
+ int getLeftTongueNextId();
+ int getRightTongueNextId();
+ void playWinBadgeAnim(int tongueNum);
+};
+
+/*****************************************************************************/
+
+struct Scene51Item {
+ int _currSequenceId;
+ int _droppedSequenceId;
+ int _x, _y;
+ int _collisionX;
+ bool _canCatch;
+ bool _isCollision;
+ int _x2;
+ int _id;
+};
+
+class Scene51: public Scene {
+public:
+ Scene51(GnapEngine *vm);
+ ~Scene51() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _dropLoseCash;
+
+ int _cashAmount;
+ int _digits[4];
+ int _digitSequenceIds[4];
+ int _guySequenceId;
+ int _guyNextSequenceId;
+ int _itemsCaughtCtr;
+ int _dropSpeedTicks;
+ int _nextDropItemKind;
+ int _itemInsertX;
+ int _itemInsertDirection;
+ int _platypusSequenceId;
+ int _platypusNextSequenceId;
+ int _platypusJumpSequenceId;
+ int _itemsCtr;
+ int _itemsCtr1;
+ int _itemsCtr2;
+
+ Scene51Item _items[6];
+
+ void clearItem(Scene51Item *item);
+ void dropNextItem();
+ void updateItemAnimations();
+ int checkCollision(int sequenceId);
+ void updateItemAnimation(Scene51Item *item, int index);
+ void removeCollidedItems();
+ int itemIsCaught(Scene51Item *item);
+ bool isJumpingRight(int sequenceId);
+ bool isJumpingLeft(int sequenceId);
+ bool isJumping(int sequenceId);
+ void waitForAnim(int animationIndex);
+ int getPosRight(int sequenceId);
+ int getPosLeft(int sequenceId);
+ void playIntroAnim();
+ void updateGuyAnimation();
+ int incCashAmount(int sequenceId);
+ void winMinigame();
+ void playCashAppearAnim();
+ void updateCash(int amount);
+ void drawDigit(int digit, int position);
+ void initCashDisplay();
+};
+
+/*****************************************************************************/
+
+class Scene52: public Scene {
+public:
+ Scene52(GnapEngine *vm);
+ ~Scene52() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ int _liveAlienRows;
+ int _gameScore;
+ bool _soundToggle;
+ int _arcadeScreenLeft;
+ int _arcadeScreenRight;
+ int _arcadeScreenBottom;
+ int _shipsLeft;
+ int _shieldSpriteIds[3];
+ int _shieldPosX[3];
+ int _shipPosX;
+ int _shipCannonPosX, _shipCannonPosY;
+ bool _shipCannonFiring;
+ bool _shipCannonFired;
+ int _shipCannonWidth, _shipCannonHeight;
+ int _shipCannonTopY;
+ int _shipMidX, _shipMidY;
+ bool _shipFlag;
+ bool _aliensInitialized;
+ int _alienSpeed, _alienDirection;
+ int _alienWidth, _alienHeight;
+ int _alienLeftX, _alienTopY;
+ int _alienRowDownCtr;
+ int _alienRowKind[7];
+ int _alienRowAnims[7];
+ int _alienRowIds[7];
+ int _alienRowXOfs[7];
+ int _alienCannonFired[3];
+ int _alienCannonPosX[3];
+ int _alienCannonPosY[3];
+ int _alienCannonSequenceIds[3];
+ int _alienCannonIds[3];
+ bool _alienWave, _alienSingle;
+ int _alienCounter;
+ bool _bottomAlienFlag;
+ int _aliensCount;
+ int _items[8][5];
+ int _nextUfoSequenceId, _ufoSequenceId;
+
+ void update();
+ void initShipCannon(int bottomY);
+ void initAlienCannons();
+ void fireShipCannon(int posX);
+ void fireAlienCannon();
+ int getFreeShipCannon();
+ int getFreeAlienCannon();
+ void updateShipCannon();
+ void updateAlienCannons();
+ void initAliens();
+ void initAlienRowKind(int rowNum, int alienKind);
+ void insertAlienRow(int rowNum);
+ void insertAlienRowAliens(int rowNum);
+ void updateAlienRow(int rowNum);
+ void moveDownAlienRow();
+ int updateHitAlien();
+ int getHitAlienNum(int rowNum);
+ int alienCannonHitShip(int cannonNum);
+ int alienCannonHitShield(int cannonNum);
+ bool shipCannonHitShield(int cannonNum);
+ bool shipCannonHitAlien();
+ void shipExplode();
+ bool checkAlienRow(int rowNum);
+ void updateAlienRowXOfs();
+ void initAlienSize();
+ void playSound();
+ void updateAliens();
+ void updateAlien(int rowNum);
+ void loseShip();
+ void initShields();
+ void initAnims();
+ void drawScore(int score);
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_ARCADE_H
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 7bb2961..90cb91f 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -2926,501 +2926,4 @@ void Scene46::updateAnimations() {
}
}
-/*****************************************************************************/
-
-static const ObstacleDef kObstacleDefs[] = {
- {0xB4, 15}, {0xCB, 14}, {0xCD, 13}, {0xCF, 15}, {0xBA, 14},
- {0xCD, 13}, {0xCF, 12}, {0xCB, 15}, {0xBD, 13}, {0xCF, 12},
- {0xCD, 11}, {0xCB, 15}, {0xB7, 12}, {0xCD, 11}, {0xCB, 10},
- {0xCF, 15}, {0xCF, 14}, {0xBD, 13}, {0xCF, 12}, {0xCD, 11},
- {0xCB, 15}, {0xCB, 13}, {0xB4, 12}, {0xCB, 11}, {0xCD, 10},
- {0xCF, 15}, {0xCD, 12}, {0xBA, 12}, {0xCD, 12}, {0xCF, 12},
- {0xCB, 15}, {0xCB, 9}, {0xCD, 9}, {0xCF, 9}, {0xCD, 9},
- {0xCB, 9}, {0xCD, 9}, {0xCF, 5}, {0xBD, 13}, {0xCF, 8},
- {0xCB, 8}, {0xCD, 15}, {0xB4, 1}, {0xBD, 7}, {0xCF, 7},
- {0xCD, 7}, {0xCB, 7}, {0xCD, 7}, {0xCF, 15}, {0xCF, 15}
-};
-
-Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
- _scoreBarFlash = false;
- _scoreBarPos = -1;
- _scoreLevel = -1;
- _obstacleIndex = -1;
- _truckSequenceId = -1;
- _truckId = -1;
- _truckLaneNum = -1;
-
- for (int i = 0; i < 5; i++) {
- _obstacles[i]._currSequenceId = -1;
- _obstacles[i]._closerSequenceId = -1;
- _obstacles[i]._passedSequenceId = -1;
- _obstacles[i]._splashSequenceId = -1;
- _obstacles[i]._collisionSequenceId = -1;
- _obstacles[i]._prevId = -1;
- _obstacles[i]._currId = -1;
- _obstacles[i]._laneNum = -1;
- }
-}
-
-int Scene49::init() {
- GameSys gameSys = *_vm->_gameSys;
-
- gameSys.setAnimation(0, 0, 0);
- gameSys.setAnimation(0, 0, 1);
- for (int i = 0; i < 5; ++i)
- gameSys.setAnimation(0, 0, i + 2);
- _vm->_timers[2] = 0;
- _vm->_timers[0] = 0;
- _vm->_timers[1] = 0;
- _vm->clearKeyStatus1(28);
- _vm->clearKeyStatus1(54);
- _vm->clearKeyStatus1(52);
- return 0xD5;
-}
-
-void Scene49::updateHotspots() {
- _vm->_hotspotsCount = 0;
-}
-
-void Scene49::checkObstacles() {
- if (_vm->_timers[2] == 0) {
- if (_vm->_timers[3] == 0) {
- for (int i = 0; i < 5; ++i)
- clearObstacle(i);
- }
-
- for (int j = 0; j < 5; ++j) {
- if (_obstacles[j]._currSequenceId == 0) {
- _vm->_timers[3] = 35;
- _obstacles[j]._currSequenceId = kObstacleDefs[_obstacleIndex]._sequenceId;
- switch (_obstacles[j]._currSequenceId) {
- case 0xB4:
- _obstacles[j]._laneNum = 1;
- _obstacles[j]._closerSequenceId = 180;
- _obstacles[j]._passedSequenceId = 181;
- _obstacles[j]._splashSequenceId = 182;
- _obstacles[j]._collisionSequenceId = 192;
- break;
- case 0xB7:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 183;
- _obstacles[j]._passedSequenceId = 184;
- _obstacles[j]._splashSequenceId = 185;
- _obstacles[j]._collisionSequenceId = 193;
- break;
- case 0xBD:
- _obstacles[j]._laneNum = 3;
- _obstacles[j]._closerSequenceId = 189;
- _obstacles[j]._passedSequenceId = 190;
- _obstacles[j]._splashSequenceId = 191;
- _obstacles[j]._collisionSequenceId = 195;
- break;
- case 0xBA:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 186;
- _obstacles[j]._passedSequenceId = 187;
- _obstacles[j]._splashSequenceId = 188;
- _obstacles[j]._collisionSequenceId = 194;
- break;
- case 0xCB:
- _obstacles[j]._laneNum = 1;
- _obstacles[j]._closerSequenceId = 203;
- _obstacles[j]._passedSequenceId = 204;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 209;
- break;
- case 0xCD:
- _obstacles[j]._laneNum = 2;
- _obstacles[j]._closerSequenceId = 205;
- _obstacles[j]._passedSequenceId = 206;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 210;
- break;
- case 0xCF:
- _obstacles[j]._laneNum = 3;
- _obstacles[j]._closerSequenceId = 207;
- _obstacles[j]._passedSequenceId = 208;
- _obstacles[j]._splashSequenceId = 0;
- _obstacles[j]._collisionSequenceId = 211;
- break;
- }
- _obstacles[j]._prevId = _truckId;
- _obstacles[j]._currId = _obstacles[j]._prevId;
- _vm->_gameSys->setAnimation(_obstacles[j]._currSequenceId, _obstacles[j]._currId, j + 2);
- _vm->_gameSys->insertSequence(_obstacles[j]._currSequenceId, _obstacles[j]._currId, 0, 0, kSeqNone, 0, 0, -50);
- _vm->_timers[2] = kObstacleDefs[_obstacleIndex]._ticks;
- ++_obstacleIndex;
- if (_obstacleIndex == 50)
- _obstacleIndex = 0;
- break;
- }
- }
- }
-}
-
-void Scene49::updateObstacle(int id) {
- GameSys gameSys = *_vm->_gameSys;
- Scene49Obstacle &obstacle = _obstacles[id];
-
- obstacle._currId = obstacle._prevId;
-
- switch (obstacle._laneNum) {
- case 1:
- obstacle._prevId = _truckId + 1;
- break;
- case 2:
- if (_truckLaneNum != 2 && _truckLaneNum != 3)
- obstacle._prevId = _truckId - 1;
- else
- obstacle._prevId = _truckId + 1;
- break;
- case 3:
- if (_truckLaneNum != 1 && _truckLaneNum != 2)
- obstacle._prevId = _truckId;
- else
- obstacle._prevId = _truckId - 1;
- break;
- }
-
- if (obstacle._currSequenceId == obstacle._closerSequenceId) {
- if (_truckLaneNum == obstacle._laneNum) {
- if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
- increaseScore(30);
- } else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
- (obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
- (obstacle._laneNum == 3 && _truckSequenceId == 0xB3)) {
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._passedSequenceId;
- } else {
- gameSys.setAnimation(obstacle._collisionSequenceId, 256, 0);
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- gameSys.insertSequence(obstacle._collisionSequenceId, 256,
- _truckSequenceId, _truckId,
- kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = obstacle._collisionSequenceId;
- _truckId = 256;
- obstacle._currSequenceId = obstacle._passedSequenceId;
- _vm->playSound(225, false);
- decreaseScore(30);
- }
- } else {
- gameSys.setAnimation(obstacle._passedSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._passedSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._passedSequenceId;
- }
- } else if (obstacle._currSequenceId == obstacle._passedSequenceId) {
- if (_truckLaneNum == obstacle._laneNum) {
- if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._collisionSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._collisionSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
- increaseScore(30);
- }
- } else if (obstacle._splashSequenceId) {
- gameSys.setAnimation(obstacle._splashSequenceId, obstacle._prevId, id + 2);
- gameSys.insertSequence(obstacle._splashSequenceId, obstacle._prevId,
- obstacle._currSequenceId, obstacle._currId,
- kSeqSyncWait, 0, 0, -50);
- obstacle._currSequenceId = obstacle._splashSequenceId;
- }
- } else {
- gameSys.setAnimation(0, 0, id + 2);
- clearObstacle(id);
- }
-}
-
-void Scene49::increaseScore(int amount) {
- if (_scoreBarPos + amount <= 556) {
- _scoreBarPos += amount;
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
- }
- _scoreLevel = _scoreBarPos + amount >= 556;
-}
-
-void Scene49::decreaseScore(int amount) {
- if (_scoreBarPos >= 226 && _scoreLevel == 0) {
- if (_scoreBarFlash)
- refreshScoreBar();
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
- _scoreBarPos -= amount;
- _scoreLevel = 0;
- }
-}
-
-void Scene49::refreshScoreBar() {
- if (_scoreBarFlash)
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
- else
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
- _scoreBarFlash = !_scoreBarFlash;
-}
-
-void Scene49::clearObstacle(int index) {
- _obstacles[index]._currSequenceId = 0;
- _obstacles[index]._closerSequenceId = 0;
- _obstacles[index]._passedSequenceId = 0;
- _obstacles[index]._splashSequenceId = 0;
- _obstacles[index]._collisionSequenceId = 0;
- _obstacles[index]._prevId = 0;
- _obstacles[index]._currId = 0;
- _obstacles[index]._laneNum = 0;
-}
-
-void Scene49::run() {
- GameSys gameSys = *_vm->_gameSys;
-
- bool animToggle6 = false;
- bool animToggle5 = false;
- bool animToggle4 = false;
- bool animToggle3 = false;
- bool streetAnimToggle = false;
- bool bgAnimToggle = false;
-
- _vm->playSound(0xE2, true);
- _vm->setSoundVolume(0xE2, 75);
-
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
-
- _scoreBarPos = 196;
- _scoreLevel = 0;
- _scoreBarFlash = false;
-
- switch (_vm->getRandom(3)) {
- case 0:
- _truckSequenceId = 0xAD;
- _truckLaneNum = 1;
- break;
- case 1:
- _truckSequenceId = 0xAE;
- _truckLaneNum = 2;
- break;
- case 2:
- _truckSequenceId = 0xAF;
- _truckLaneNum = 3;
- break;
- }
-
- int bgWidth1 = gameSys.getSpriteWidthById(0x5E);
- int bgX1 = 600;
-
- int bgWidth2 = gameSys.getSpriteWidthById(0x5F);
- int bgX2 = 400;
-
- int bgWidth3 = gameSys.getSpriteWidthById(4);
- int bgX3 = 700;
-
- int bgWidth4 = gameSys.getSpriteWidthById(5);
- int bgX4 = 500;
-
- int bgWidth5 = gameSys.getSpriteWidthById(6);
- int bgX5 = 300;
-
- int bgWidth6 = gameSys.getSpriteWidthById(7);
- int bgX6 = 100;
-
- gameSys.setAnimation(0xC8, 251, 1);
- gameSys.setAnimation(_truckSequenceId, 256, 0);
- gameSys.insertSequence(0xC9, 256, 0, 0, kSeqNone, 0, 600, 85);
- gameSys.insertSequence(0xCA, 257, 0, 0, kSeqNone, 0, 400, 100);
- gameSys.insertSequence(0xC4, 256, 0, 0, kSeqNone, 0, 700, 140);
- gameSys.insertSequence(0xC5, 257, 0, 0, kSeqNone, 0, 500, 160);
- gameSys.insertSequence(0xC6, 258, 0, 0, kSeqNone, 0, 300, 140);
- gameSys.insertSequence(0xC7, 259, 0, 0, kSeqNone, 0, 100, 140);
- gameSys.insertSequence(0xC8, 251, 0, 0, kSeqNone, 0, 0, -50);
- gameSys.insertSequence(_truckSequenceId, 256, 0, 0, kSeqNone, 0, 0, -50);
-
- _vm->_timers[0] = 2;
-
- for (int i = 0; i < 5; ++i)
- clearObstacle(i);
-
- _obstacleIndex = 0;
-
- _vm->_timers[2] = _vm->getRandom(20) + 10;
-
- _truckId = 256;
- _vm->_timers[3] = 35;
-
- while (!_vm->_sceneDone) {
- if (_vm->_timers[0] == 0) {
- // Update background animations (clouds etc.)
- --bgX1;
- bgX2 -= 2;
- bgX3 -= 5;
- --bgX4;
- --bgX5;
- --bgX6;
- if (bgX1 <= -bgWidth1)
- bgX1 = 799;
- if (bgX2 <= -bgWidth2)
- bgX2 = 799;
- if (bgX3 <= -bgWidth3)
- bgX3 = 799;
- if (bgX4 <= -bgWidth4)
- bgX4 = 799;
- if (bgX5 <= -bgWidth5)
- bgX5 = 799;
- if (bgX6 <= -bgWidth6)
- bgX6 = 799;
- bgAnimToggle = !bgAnimToggle;
- gameSys.insertSequence(0xC9, (bgAnimToggle ? 1 : 0) + 256, 0xC9, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX1, 85);
- gameSys.insertSequence(0xCA, (bgAnimToggle ? 1 : 0) + 257, 0xCA, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX2, 100);
- gameSys.insertSequence(0xC4, (bgAnimToggle ? 1 : 0) + 256, 0xC4, (bgAnimToggle ? 0 : 1) + 256, kSeqSyncWait, 0, bgX3, 140);
- gameSys.insertSequence(0xC5, (bgAnimToggle ? 1 : 0) + 257, 0xC5, (bgAnimToggle ? 0 : 1) + 257, kSeqSyncWait, 0, bgX4, 160);
- gameSys.insertSequence(0xC6, (bgAnimToggle ? 1 : 0) + 258, 0xC6, (bgAnimToggle ? 0 : 1) + 258, kSeqSyncWait, 0, bgX5, 140);
- gameSys.insertSequence(0xC7, (bgAnimToggle ? 1 : 0) + 259, 0xC7, (bgAnimToggle ? 0 : 1) + 259, kSeqSyncWait, 0, bgX6, 140);
- _vm->_timers[0] = 2;
- }
-
- if (gameSys.getAnimationStatus(1) == 2) {
- streetAnimToggle = !streetAnimToggle;
- gameSys.setAnimation(0xC8, (streetAnimToggle ? 1 : 0) + 251, 1);
- gameSys.insertSequence(0xC8, (streetAnimToggle ? 1 : 0) + 251, 200, (streetAnimToggle ? 0 : 1) + 251, kSeqSyncWait, 0, 0, -50);
- }
-
- checkObstacles();
-
- if (gameSys.getAnimationStatus(0) == 2) {
- switch (_truckSequenceId) {
- case 0xB1:
- _truckLaneNum = 1;
- break;
- case 0xB0:
- case 0xB3:
- _truckLaneNum = 2;
- break;
- case 0xB2:
- _truckLaneNum = 3;
- break;
- }
- animToggle3 = !animToggle3;
- if (_truckLaneNum == 1) {
- gameSys.setAnimation(0xAD, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAD, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAD;
- } else if (_truckLaneNum == 2) {
- gameSys.setAnimation(0xAE, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAE, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAE;
- } else {
- gameSys.setAnimation(0xAF, (animToggle3 ? 1 : 0) + 256, 0);
- gameSys.insertSequence(0xAF, (animToggle3 ? 1 : 0) + 256, _truckSequenceId, _truckId, kSeqSyncWait, 0, 0, -50);
- _truckSequenceId = 0xAF;
- }
- _truckId = (animToggle3 ? 1 : 0) + 256;
- if (_scoreLevel == 1) {
- if (!gameSys.isSequenceActive(0xD4, 266)) {
- gameSys.setAnimation(0xD4, 266, 8);
- gameSys.insertSequence(0xD4, 266, 0, 0, kSeqNone, 0, 0, -50);
- }
- ++_scoreLevel;
- _vm->_timers[1] = 2;
- animToggle4 = false;
- animToggle5 = false;
- animToggle6 = false;
- _scoreBarFlash = false;
- }
- }
-
- if (_scoreLevel != 0 && !_vm->_timers[1]) {
- refreshScoreBar();
- _vm->_timers[1] = 8;
- if (animToggle6) {
- if (animToggle5) {
- if (animToggle4 && !gameSys.isSequenceActive(212, 266))
- gameSys.insertSequence(212, 266, 0, 0, kSeqNone, 0, 0, -50);
- animToggle4 = !animToggle4;
- }
- animToggle5 = !animToggle5;
- }
- animToggle6 = !animToggle6;
- }
-
- updateAnimations();
-
- if (clearKeyStatus()) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 2;
- _vm->_newCursorValue = 1;
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
- // Steer right
- if (_truckSequenceId == 0xB3)
- _truckLaneNum = 2;
- if (_truckSequenceId == 0xB1)
- _truckLaneNum = 1;
- if (_truckLaneNum != 3 && _truckLaneNum != 2) {
- if (_scoreLevel) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 47;
- }
- } else {
- int steerSequenceId = (_truckLaneNum == 3) ? 0xB3 : 0xB1;
- if (_truckSequenceId == 0xAE || _truckSequenceId == 0xAF) {
- gameSys.setAnimation(steerSequenceId, 256, 0);
- gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = steerSequenceId;
- _truckId = 256;
- }
- }
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
- // Steer left
- if (_truckSequenceId == 0xB0)
- _truckLaneNum = 2;
- if (_truckSequenceId == 0xB2)
- _truckLaneNum = 3;
- if (_truckLaneNum == 1 || _truckLaneNum == 2) {
- int steerSequenceId = (_truckLaneNum == 1) ? 0xB0 : 0xB2;
- if (_truckSequenceId == 0xAD || _truckSequenceId == 0xAE) {
- gameSys.setAnimation(steerSequenceId, 256, 0);
- gameSys.insertSequence(steerSequenceId, 256, _truckSequenceId, _truckId, kSeqSyncExists, 0, 0, -50);
- _truckSequenceId = steerSequenceId;
- _truckId = 256;
- }
- }
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- }
- _vm->gameUpdateTick();
- }
- _vm->stopSound(0xE2);
-}
-
-void Scene49::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
-
- for (int i = 0; i < 5; ++i) {
- if (gameSys.getAnimationStatus(i + 2) == 2) {
- if (_obstacles[i]._currSequenceId)
- updateObstacle(i);
- }
- }
-
- if (gameSys.getAnimationStatus(8) == 2) {
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 47;
- }
-}
-
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group4.h b/engines/gnap/scenes/group4.h
index db73bbd..28f03ee 100644
--- a/engines/gnap/scenes/group4.h
+++ b/engines/gnap/scenes/group4.h
@@ -143,51 +143,6 @@ private:
int _currItchyGuySequenceId;
};
-struct Scene49Obstacle {
- int _currSequenceId;
- int _closerSequenceId;
- int _passedSequenceId;
- int _splashSequenceId;
- int _collisionSequenceId;
- int _prevId;
- int _currId;
- int _laneNum;
-};
-
-struct ObstacleDef {
- int _sequenceId;
- int _ticks;
-};
-
-class Scene49: public Scene {
-public:
- Scene49(GnapEngine *vm);
- ~Scene49() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- int _scoreBarPos;
- int _scoreLevel;
- bool _scoreBarFlash;
- int _obstacleIndex;
- Scene49Obstacle _obstacles[5];
- int _truckSequenceId;
- int _truckId;
- int _truckLaneNum;
-
- void checkObstacles();
- void updateObstacle(int id);
- void increaseScore(int amount);
- void decreaseScore(int amount);
- void refreshScoreBar();
- void clearObstacle(int index);
-};
-
} // End of namespace Gnap
#endif // GNAP_GROUP4_H
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
new file mode 100644
index 0000000..68b957f
--- /dev/null
+++ b/engines/gnap/scenes/group5.cpp
@@ -0,0 +1,395 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+#include "gnap/scenes/group5.h"
+
+namespace Gnap {
+
+enum {
+ kHS53Platypus = 0,
+ kHS53Device = 1,
+ kHS53PhoneKey1 = 2,
+ kHS53PhoneKey2 = 3,
+ kHS53PhoneKey3 = 4,
+ kHS53PhoneKey4 = 5,
+ kHS53PhoneKey5 = 6,
+ kHS53PhoneKey6 = 7,
+ kHS53PhoneKey7 = 8,
+ kHS53PhoneKey8 = 9,
+ kHS53PhoneKey9 = 10,
+ kHS53PhoneKey0 = 11,
+ kHS53PhoneKeySharp = 12,
+ kHS53PhoneKeyStar = 13,
+ kHS53PhoneExit = 14
+};
+
+Scene53::Scene53(GnapEngine *vm) : Scene(vm) {
+ _isGnapPhoning = false;
+ _currHandSequenceId = -1;
+ _callsMadeCtr = 0;
+ _callsRndUsed = 0;
+}
+
+int Scene53::init() {
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ _vm->_gameSys->setAnimation(0, 0, 1);
+ return 0x75;
+}
+
+void Scene53::updateHotspots() {
+ _vm->setHotspot(kHS53Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey1, 336, 238, 361, 270, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey2, 376, 243, 405, 274, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey3, 415, 248, 441, 276, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey4, 329, 276, 358, 303, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey5, 378, 282, 408, 311, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey6, 417, 286, 446, 319, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey7, 332, 311, 361, 342, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey8, 376, 318, 407, 349, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey9, 417, 320, 447, 353, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKey0, 377, 352, 405, 384, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKeySharp, 419, 358, 450, 394, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneKeyStar, 328, 346, 359, 379, SF_GRAB_CURSOR);
+ _vm->setHotspot(kHS53PhoneExit, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
+
+ _vm->setDeviceHotspot(kHS53Device, -1, -1, -1, -1);
+ _vm->_hotspotsCount = 15;
+}
+
+int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
+ static const int kGnapHandSequenceIds[13] = {
+ 0x00,
+ 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
+ 0x4C, 0x4D, 0x4E, 0x50, 0x51, 0x4F
+ };
+
+ static const int kPlatypusHandSequenceIds[13] = {
+ 0x00,
+ 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5A, 0x5C, 0x5D, 0x5B
+ };
+
+ if (_isGnapPhoning) {
+ _vm->_gameSys->setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
+ _vm->_gameSys->insertSequence(kGnapHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currHandSequenceId = kGnapHandSequenceIds[buttonNum];
+ } else {
+ _vm->_gameSys->setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
+ _vm->_gameSys->insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currHandSequenceId = kPlatypusHandSequenceIds[buttonNum];
+ }
+
+ _vm->_gnapActionStatus = 6;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ // checkGameAppStatus();
+ _vm->updateMouseCursor();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gnapActionStatus = -1;
+
+ if (buttonNum < 11)
+ phoneNumber = buttonNum % 10 + 10 * phoneNumber;
+
+ return phoneNumber;
+}
+
+int Scene53::getRandomCallIndex() {
+ int index, tries = 0;
+ if (_callsRndUsed == 0x7FFF)
+ _callsRndUsed = 0;
+ do {
+ index = _vm->getRandom(16);
+ if (++tries == 300)
+ _callsRndUsed = 0;
+ } while (_callsRndUsed & (1 << index));
+ _callsRndUsed |= (1 << index);
+ return index;
+}
+
+void Scene53::runRandomCall() {
+ static const int kCallSequenceIds[15] = {
+ 0x60, 0x61, 0x62, 0x63, 0x64,
+ 0x65, 0x66, 0x67, 0x68, 0x69,
+ 0x6A, 0x6B, 0x6C, 0x6D, 0x71
+ };
+
+ ++_callsMadeCtr;
+
+ if (_callsMadeCtr <= 10) {
+ int index;
+
+ do {
+ index = getRandomCallIndex();
+ } while (!_isGnapPhoning && (index == 0 || index == 3 || index == 4 || index == 11));
+ _vm->_gameSys->setAnimation(kCallSequenceIds[index], 1, 6);
+ _vm->_gameSys->insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
+ } else {
+ _vm->_gameSys->setAnimation(0x74, 1, 6);
+ _vm->_gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _callsMadeCtr = 0;
+ }
+
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gnapActionStatus = -1;
+}
+
+void Scene53::runChitChatLine() {
+ bool flag = false;
+ int sequenceId = -1;
+
+ _vm->_gameSys->setAnimation(0x6E, 1, 6);
+ _vm->_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
+
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gnapActionStatus = -1;
+
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currHandSequenceId = 0x45;
+ } else {
+ _vm->_gameSys->insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ _currHandSequenceId = 0x5E;
+ }
+
+ _vm->_hotspots[kHS53Device]._flags = SF_DISABLED;
+
+ while (!flag) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case 2:
+ sequenceId = 0x6F;
+ flag = 1;
+ break;
+ case 3:
+ sequenceId = 0x70;
+ flag = 1;
+ break;
+ case 4:
+ sequenceId = 0x71;
+ flag = 1;
+ break;
+ case 14:
+ sequenceId = -1;
+ flag = 1;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 17;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
+ break;
+ }
+
+ if (flag && sequenceId != -1) {
+ _vm->stopSound(0xA0);
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
+ _vm->_gnapActionStatus = 1;
+ _vm->_gameSys->setAnimation(sequenceId, 1, 6);
+ _vm->_gameSys->insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gnapActionStatus = -1;
+ _vm->_gameSys->setAnimation(0x72, 1, 6);
+ _vm->_gameSys->insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
+ _vm->_gnapActionStatus = 1;
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _vm->_gnapActionStatus = -1;
+ }
+ }
+
+ updateHotspots();
+
+ _vm->_gnapActionStatus = 1;
+
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _currHandSequenceId = 0x73;
+ _vm->_gnapActionStatus = -1;
+ }
+}
+
+void Scene53::run() {
+ int phoneNumber = 0;
+ int phoneNumberLen = 0;
+
+ _vm->queueInsertDeviceIcon();
+
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _currHandSequenceId = 0x45;
+ _isGnapPhoning = true;
+ } else {
+ _currHandSequenceId = 0x5E;
+ _isGnapPhoning = false;
+ }
+
+ _vm->_gameSys->insertSequence(_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ _vm->endSceneInit();
+ _vm->setVerbCursor(GRAB_CURSOR);
+ _vm->playSound(0xA0, true);
+
+ while (!_vm->_sceneDone) {
+ _vm->updateMouseCursor();
+ _vm->updateCursorByHotspot();
+
+ _vm->testWalk(0, 0, -1, -1, -1, -1);
+
+ _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
+ _vm->updateGrabCursorSprite(0, 0);
+
+ switch (_vm->_sceneClickedHotspot) {
+ case 1:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->runMenu();
+ updateHotspots();
+ }
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ _vm->stopSound(0xA0);
+ ++phoneNumberLen;
+ phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1);
+ debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
+ if (phoneNumberLen == 7) {
+ _vm->_gnapActionStatus = 1;
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _currHandSequenceId = 0x73;
+ _vm->_gnapActionStatus = -1;
+ }
+ if (phoneNumber == 7284141) {
+ runChitChatLine();
+ phoneNumber = 0;
+ phoneNumberLen = 0;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
+ } else if (phoneNumber != 5556789 || _vm->isFlag(kGFPictureTaken)) {
+ runRandomCall();
+ phoneNumber = 0;
+ phoneNumberLen = 0;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
+ } else {
+ phoneNumber = 0;
+ phoneNumberLen = 0;
+ _vm->_sceneDone = true;
+ _vm->_newSceneNum = 17;
+ if (_isGnapPhoning)
+ _vm->setFlag(kGFUnk25);
+ else
+ _vm->setFlag(kGFPlatypusTalkingToAssistant);
+ }
+ }
+ break;
+ case 12:
+ case 13:
+ pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
+ break;
+ case 14:
+ if (_vm->_gnapActionStatus < 0) {
+ _vm->_gnapActionStatus = 1;
+ if (_vm->isFlag(kGFSpringTaken)) {
+ _vm->_gameSys->setAnimation(0x73, 40, 6);
+ _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ _vm->updateMouseCursor();
+ // checkGameAppStatus();
+ _vm->gameUpdateTick();
+ }
+ _currHandSequenceId = 0x73;
+ _vm->_gnapActionStatus = -1;
+ }
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->_gnapActionStatus = 0;
+ _vm->_newSceneNum = 17;
+ }
+ break;
+ }
+
+ _vm->checkGameKeys();
+
+ if (_vm->isKeyStatus1(8)) {
+ _vm->clearKeyStatus1(8);
+ _vm->runMenu();
+ updateHotspots();
+ }
+ _vm->gameUpdateTick();
+ }
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group5.h b/engines/gnap/scenes/group5.h
new file mode 100644
index 0000000..d9ffc19
--- /dev/null
+++ b/engines/gnap/scenes/group5.h
@@ -0,0 +1,57 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_GROUP5_H
+#define GNAP_GROUP5_H
+
+#include "gnap/debugger.h"
+#include "gnap/scenes/scenecore.h"
+
+namespace Gnap {
+
+class GnapEngine;
+
+class Scene53: public Scene {
+public:
+ Scene53(GnapEngine *vm);
+ ~Scene53() {}
+
+ virtual int init();
+ virtual void updateHotspots();
+ virtual void run();
+ virtual void updateAnimations() {};
+ virtual void updateAnimationsCb() {};
+
+private:
+ bool _isGnapPhoning;
+ int _currHandSequenceId;
+ int _callsMadeCtr;
+ uint _callsRndUsed;
+
+ int pressPhoneNumberButton(int phoneNumber, int buttonNum);
+ int getRandomCallIndex();
+ void runRandomCall();
+ void runChitChatLine();
+};
+
+} // End of namespace Gnap
+#endif // GNAP_GROUP5_H
diff --git a/engines/gnap/scenes/scene50.cpp b/engines/gnap/scenes/scene50.cpp
deleted file mode 100644
index 68f29f3..0000000
--- a/engines/gnap/scenes/scene50.cpp
+++ /dev/null
@@ -1,498 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene50.h"
-
-namespace Gnap {
-
-Scene50::Scene50(GnapEngine *vm) : Scene(vm) {
- _s50_fightDone = false;
-
- _s50_roundNum = -1;
- _s50_timeRemaining = -1;
- _s50_leftTongueRoundsWon = -1;
- _s50_rightTongueRoundsWon = -1;
- _s50_leftTongueSequenceId = -1;
- _s50_leftTongueId = -1;
- _s50_leftTongueNextSequenceId = -1;
- _s50_leftTongueNextId = -1;
- _s50_rightTongueSequenceId = -1;
- _s50_rightTongueId = -1;
- _s50_rightTongueNextSequenceId = -1;
- _s50_rightTongueNextId = -1;
- _s50_leftTongueEnergy = -1;
- _s50_rightTongueEnergy = -1;
-
- _s50_timesPlayed = 0;
- _s50_timesPlayedModifier = 0;
- _s50_attackCounter = 0;
- _s50_leftTongueEnergyBarPos = 10;
- _s50_leftTongueNextIdCtr = 0;
- _s50_rightTongueEnergyBarPos = 10;
- _s50_rightTongueNextIdCtr = 0;
-}
-
-int Scene50::init() {
- return 0xC7;
-}
-
-void Scene50::updateHotspots() {
- _vm->_hotspotsCount = 0;
-}
-
-bool Scene50::tongueWinsRound(int tongueNum) {
- if (tongueNum == 1)
- ++_s50_leftTongueRoundsWon;
- else
- ++_s50_rightTongueRoundsWon;
- playWinBadgeAnim(tongueNum);
- bool fightOver = _s50_rightTongueRoundsWon == 2 || _s50_leftTongueRoundsWon == 2;
- playWinAnim(tongueNum, fightOver);
- return fightOver;
-}
-
-void Scene50::playWinAnim(int tongueNum, bool fightOver) {
- if (tongueNum == 1) {
- if (fightOver) {
- _vm->_gameSys->insertSequence(0xAD, 140, 0xAC, 140, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
- _s50_leftTongueSequenceId = 0xB4;
- _s50_rightTongueSequenceId = 0xBC;
- _s50_rightTongueId = 100;
- _s50_leftTongueId = 100;
- _vm->_gameSys->setAnimation(0xB4, 100, 6);
- _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- waitForAnim(6);
- waitForAnim(5);
- _vm->invAdd(kItemGum);
- _vm->setFlag(kGFUnk13);
- } else {
- _vm->_gameSys->insertSequence(0xB4, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBD, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBC, 100, 0xBD, 100, kSeqSyncWait, 0, 0, 0);
- _s50_leftTongueSequenceId = 0xB4;
- _s50_rightTongueSequenceId = 0xBC;
- _s50_rightTongueId = 100;
- _s50_leftTongueId = 100;
- _vm->_gameSys->setAnimation(0xB4, 100, 6);
- _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- waitForAnim(6);
- waitForAnim(5);
- }
- } else {
- _vm->_gameSys->insertSequence(0xBE, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xBE, 100, 5);
- waitForAnim(5);
- _vm->_gameSys->insertSequence(0xBF, 100, 0xBE, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xB5, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _s50_rightTongueSequenceId = 0xBF;
- _s50_leftTongueSequenceId = 0xB5;
- _s50_rightTongueId = 100;
- _s50_leftTongueId = 100;
- _vm->_gameSys->setAnimation(0xB5, 100, 6);
- _vm->_gameSys->setAnimation(_s50_rightTongueSequenceId, 100, 5);
- waitForAnim(6);
- waitForAnim(5);
- }
- // TODO delayTicksA(1, 7);
-}
-
-void Scene50::delayTicks() {
- // TODO delayTicksA(3, 7);
-}
-
-void Scene50::initRound() {
- _s50_leftTongueEnergy = 10;
- _s50_rightTongueEnergy = 10;
- _s50_fightDone = false;
- _vm->_timers[3] = getRightTongueActionTicks();
- _vm->_timers[4] = 0;
- _vm->_timers[6] = 0;
- _vm->_gameSys->fillSurface(0, 91, 73, 260, 30, 212, 0, 0);
- _vm->_gameSys->fillSurface(0, 450, 73, 260, 30, 212, 0, 0);
- _s50_timeRemaining = 40;
- drawCountdown(40);
-}
-
-bool Scene50::updateCountdown() {
- if (!_vm->_timers[5]) {
- --_s50_timeRemaining;
- if (_s50_timeRemaining < 0) {
- return true;
- } else {
- _vm->_timers[5] = 15;
- drawCountdown(_s50_timeRemaining);
- }
- }
- return false;
-}
-
-void Scene50::drawCountdown(int value) {
- char str[8];
- sprintf(str, "%02d", value);
- _vm->_gameSys->fillSurface(0, 371, 505, 50, 27, 0, 0, 0);
- _vm->_gameSys->drawTextToSurface(0, 381, 504, 255, 255, 255, str);
-}
-
-void Scene50::playTonguesIdle() {
- _vm->_gameSys->insertSequence(0xBA, 100, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xC2, 100, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _s50_leftTongueSequenceId = 0xBA;
- _s50_rightTongueSequenceId = 0xC2;
- _s50_rightTongueNextSequenceId = -1;
- _s50_leftTongueNextSequenceId = -1;
- _s50_leftTongueId = 100;
- _s50_rightTongueId = 100;
- _vm->_gameSys->setAnimation(0xC2, 100, 5);
- _vm->_gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
-}
-
-void Scene50::playRoundAnim(int roundNum) {
- int sequenceId = 0;
-
- switch (roundNum) {
- case 1:
- sequenceId = 0xAF;
- break;
- case 2:
- sequenceId = 0xB0;
- break;
- case 3:
- sequenceId = 0xB1;
- break;
- }
-
- _vm->_gameSys->insertSequence(sequenceId, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(sequenceId, 256, 7);
- waitForAnim(7);
-
- _vm->_gameSys->insertSequence(0xAB, 256, sequenceId, 256, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xAB, 256, 7);
- waitForAnim(7);
-}
-
-bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
- if (newLeftBarPos != _s50_leftTongueEnergyBarPos) {
- if (newLeftBarPos < 0)
- newLeftBarPos = 0;
- _s50_leftTongueEnergyBarPos = newLeftBarPos;
- _vm->_gameSys->fillSurface(0, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
- }
-
- if (newRightBarPos != _s50_rightTongueEnergyBarPos) {
- if (newRightBarPos < 0)
- newRightBarPos = 0;
- _s50_rightTongueEnergyBarPos = newRightBarPos;
- if (newRightBarPos != 10)
- _vm->_gameSys->fillSurface(0, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
- }
-
- if (newLeftBarPos * newRightBarPos > 0)
- return false;
-
- _s50_leftTongueEnergyBarPos = 10;
- _s50_rightTongueEnergyBarPos = 10;
- return true;
-}
-
-void Scene50::waitForAnim(int animationIndex) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
- _vm->gameUpdateTick();
- }
- _vm->_gameSys->setAnimation(0, 0, animationIndex);
-}
-
-int Scene50::checkInput() {
- int sequenceId = -1;
-
- if (_vm->isKeyStatus1(Common::KEYCODE_RIGHT)) {
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- sequenceId = 0xB6;
- } else if (_vm->isKeyStatus1(Common::KEYCODE_LEFT)) {
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- sequenceId = 0xB3;
- } else if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE)) {
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _s50_fightDone = true;
- }
-
- return sequenceId;
-}
-
-int Scene50::getRightTongueAction() {
- int sequenceId = -1;
-
- if (!_vm->_timers[3]) {
- _vm->_timers[3] = getRightTongueActionTicks();
- if (_s50_rightTongueEnergy >= _s50_leftTongueEnergy) {
- switch (_vm->getRandom(5)) {
- case 0:
- sequenceId = 0xBE;
- break;
- case 1:
- sequenceId = 0xBE;
- break;
- case 2:
- sequenceId = 0xBB;
- break;
- case 3:
- sequenceId = 0xBB;
- break;
- case 4:
- sequenceId = 0xBB;
- break;
- }
- } else {
- switch (_vm->getRandom(4)) {
- case 0:
- sequenceId = 0xBE;
- break;
- case 1:
- sequenceId = 0xBB;
- break;
- case 2:
- sequenceId = 0xBE;
- break;
- case 3:
- sequenceId = 0xBE;
- break;
- }
- }
- }
-
- return sequenceId;
-}
-
-void Scene50::updateAnimations() {
- if (!_vm->_timers[4])
- _s50_attackCounter = 0;
-
- if (_vm->_gameSys->getAnimationStatus(5) == 2) {
- if (_s50_rightTongueSequenceId == 0xBE) {
- if (_s50_leftTongueSequenceId != 0xB3 && _s50_leftTongueSequenceId != 0xB8)
- _s50_rightTongueNextSequenceId = 0xBF;
- else
- _s50_rightTongueNextSequenceId = 0xC0;
- }
- if (_s50_rightTongueNextSequenceId == -1)
- _s50_rightTongueNextSequenceId = 0xC2;
- if (_s50_rightTongueNextSequenceId == 0xBF) {
- _s50_leftTongueNextId = getLeftTongueNextId();
- _s50_rightTongueNextId = getRightTongueNextId();
- _vm->_gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
- _vm->_gameSys->setAnimation(0xB9, _s50_leftTongueNextId, 6);
- _vm->_gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xB9, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncExists, 0, 0, 0);
- _s50_rightTongueSequenceId = _s50_rightTongueNextSequenceId;
- _s50_rightTongueNextSequenceId = -1;
- _s50_leftTongueSequenceId = 0xB9;
- _s50_leftTongueNextSequenceId = -1;
- _s50_rightTongueId = _s50_rightTongueNextId;
- _s50_leftTongueId = _s50_leftTongueNextId;
- _s50_leftTongueEnergy -= _vm->getRandom(2) + 1;//CHECKME
- } else {
- _s50_rightTongueNextId = getRightTongueNextId();
- _vm->_gameSys->setAnimation(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, 5);
- _vm->_gameSys->insertSequence(_s50_rightTongueNextSequenceId, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncWait, 0, 0, 0);
- _s50_rightTongueSequenceId = _s50_rightTongueNextSequenceId;
- _s50_rightTongueNextSequenceId = -1;
- _s50_rightTongueId = _s50_rightTongueNextId;
- }
- }
-
- if (_vm->_gameSys->getAnimationStatus(6) == 2) {
- if (_s50_leftTongueSequenceId == 0xB6) {
- ++_s50_attackCounter;
- if (_s50_timesPlayedModifier + 3 <= _s50_attackCounter) {
- _s50_leftTongueNextSequenceId = 0xB8;
- } else {
- _vm->_timers[4] = 20;
- //CHECKME
- if (_s50_rightTongueSequenceId != 0xBB && _s50_rightTongueSequenceId != 0xC0 && _vm->getRandom(8) != _s50_roundNum)
- _s50_leftTongueNextSequenceId = 0xB7;
- else
- _s50_leftTongueNextSequenceId = 0xB8;
- }
- }
- if (_s50_leftTongueNextSequenceId == 0xB3)
- --_s50_attackCounter;
- if (_s50_leftTongueNextSequenceId == -1)
- _s50_leftTongueNextSequenceId = 0xBA;
- if (_s50_leftTongueNextSequenceId == 0xB7) {
- _s50_leftTongueNextId = getLeftTongueNextId();
- _s50_rightTongueNextId = getRightTongueNextId();
- _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _vm->_gameSys->setAnimation(0xC1, _s50_rightTongueNextId, 5);
- _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xC1, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
- _s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
- _s50_leftTongueNextSequenceId = -1;
- _s50_rightTongueSequenceId = 0xC1;
- _s50_rightTongueNextSequenceId = -1;
- _s50_rightTongueId = _s50_rightTongueNextId;
- _s50_leftTongueId = _s50_leftTongueNextId;
- --_s50_rightTongueEnergy;
- } else if (_s50_leftTongueNextSequenceId != 0xB8 || _s50_rightTongueSequenceId != 0xC2) {
- _s50_leftTongueNextId = getLeftTongueNextId();
- _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
- _s50_leftTongueNextSequenceId = -1;
- _s50_leftTongueId = _s50_leftTongueNextId;
- } else {
- _s50_leftTongueNextId = getLeftTongueNextId();
- _s50_rightTongueNextId = getRightTongueNextId();
- _vm->_gameSys->setAnimation(0xBB, _s50_rightTongueNextId, 5);
- _vm->_gameSys->setAnimation(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, 6);
- _vm->_gameSys->insertSequence(_s50_leftTongueNextSequenceId, _s50_leftTongueNextId, _s50_leftTongueSequenceId, _s50_leftTongueId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBB, _s50_rightTongueNextId, _s50_rightTongueSequenceId, _s50_rightTongueId, kSeqSyncExists, 0, 0, 0);
- _s50_rightTongueSequenceId = 0xBB;
- _s50_rightTongueId = _s50_rightTongueNextId;
- _s50_rightTongueNextSequenceId = -1;
- _s50_leftTongueSequenceId = _s50_leftTongueNextSequenceId;
- _s50_leftTongueNextSequenceId = -1;
- _s50_leftTongueId = _s50_leftTongueNextId;
- }
- }
-}
-
-int Scene50::getRightTongueActionTicks() {
- return 15 - 5 * _s50_roundNum + 1;
-}
-
-int Scene50::getLeftTongueNextId() {
- _s50_leftTongueNextIdCtr = (_s50_leftTongueNextIdCtr + 1) % 3;
- return _s50_leftTongueNextIdCtr + 100;
-}
-
-int Scene50::getRightTongueNextId() {
- _s50_rightTongueNextIdCtr = (_s50_rightTongueNextIdCtr + 1) % 3;
- return _s50_rightTongueNextIdCtr + 100;
-}
-
-void Scene50::playWinBadgeAnim(int tongueNum) {
- int sequenceId;
-
- if (tongueNum == 1) {
- if (_s50_leftTongueRoundsWon == 1)
- sequenceId = 0xC3;
- else
- sequenceId = 0xC4;
- } else {
- if (_s50_rightTongueRoundsWon == 1)
- sequenceId = 0xC5;
- else
- sequenceId = 0xC6;
- }
-
- _vm->_gameSys->setAnimation(sequenceId, 120, 7);
- _vm->_gameSys->insertSequence(sequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
- waitForAnim(7);
-}
-
-void Scene50::run() {
- ++_s50_timesPlayed;
- _s50_timesPlayedModifier = _s50_timesPlayed / 4;
- _s50_leftTongueRoundsWon = 0;
- _s50_rightTongueRoundsWon = 0;
- // initFont();
- _s50_leftTongueSequenceId = 186;
- _s50_rightTongueSequenceId = 194;
- _s50_rightTongueNextSequenceId = -1;
- _s50_leftTongueNextSequenceId = -1;
- _s50_leftTongueId = 100;
- _s50_rightTongueId = 100;
-
- _vm->_gameSys->setAnimation(194, 100, 5);
- _vm->_gameSys->setAnimation(_s50_leftTongueSequenceId, _s50_leftTongueId, 6);
- _vm->_gameSys->insertSequence(_s50_leftTongueSequenceId, _s50_leftTongueId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_s50_rightTongueSequenceId, _s50_rightTongueId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(172, 140, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
-
- initRound();
-
- _s50_roundNum = 1;
-
- _vm->setGrabCursorSprite(-1);
- _vm->hideCursor();
-
- // TODO delayTicksA(1, 7);
-
- playRoundAnim(_s50_roundNum);
-
- _vm->_timers[5] = 15;
-
- while (!_s50_fightDone) {
- /* TODO
- if (sceneXX_sub_4466B1())
- _s50_fightDone = true;
- */
-
- int playerSequenceId = checkInput();
- if (playerSequenceId != -1)
- _s50_leftTongueNextSequenceId = playerSequenceId;
-
- int rightSequenceId = getRightTongueAction();
- if (rightSequenceId != -1)
- _s50_rightTongueNextSequenceId = rightSequenceId;
-
- updateAnimations();
-
- if (updateCountdown() ||
- updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy)) {
- bool v0;
- if (_s50_rightTongueEnergy < _s50_leftTongueEnergy)
- v0 = tongueWinsRound(1);
- else
- v0 = tongueWinsRound(2);
- if (v0) {
- delayTicks();
- _s50_fightDone = true;
- } else {
- ++_s50_roundNum;
- initRound();
- playTonguesIdle();
- updateEnergyBars(_s50_leftTongueEnergy, _s50_rightTongueEnergy);
- playRoundAnim(_s50_roundNum);
- _vm->_timers[5] = 15;
- }
- }
- _vm->gameUpdateTick();
- }
-
- // freeFont();
-
- _vm->_gameSys->setAnimation(0, 0, 7);
- _vm->_gameSys->setAnimation(0, 0, 6);
- _vm->_gameSys->setAnimation(0, 0, 5);
- _vm->_gameSys->setAnimation(0, 0, 3);
-
- _vm->showCursor();
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene50.h b/engines/gnap/scenes/scene50.h
deleted file mode 100644
index 6cc4bc3..0000000
--- a/engines/gnap/scenes/scene50.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE50_H
-#define GNAP_SCENE50_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene50: public Scene {
-public:
- Scene50(GnapEngine *vm);
- ~Scene50() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations();
- virtual void updateAnimationsCb() {};
-
-private:
- bool _s50_fightDone;
- int _s50_timesPlayed;
- int _s50_timesPlayedModifier;
- int _s50_attackCounter;
- int _s50_roundNum;
- int _s50_timeRemaining;
- int _s50_leftTongueRoundsWon;
- int _s50_rightTongueRoundsWon;
- int _s50_leftTongueEnergyBarPos;
- int _s50_rightTongueEnergyBarPos;
- int _s50_leftTongueSequenceId;
- int _s50_leftTongueId;
- int _s50_leftTongueNextSequenceId;
- int _s50_leftTongueNextId;
- int _s50_leftTongueNextIdCtr;
- int _s50_rightTongueSequenceId;
- int _s50_rightTongueId;
- int _s50_rightTongueNextSequenceId;
- int _s50_rightTongueNextId;
- int _s50_rightTongueNextIdCtr;
- int _s50_leftTongueEnergy;
- int _s50_rightTongueEnergy;
-
- bool tongueWinsRound(int tongueNum);
- void playWinAnim(int tongueNum, bool fightOver);
- void delayTicks();
- void initRound();
- bool updateCountdown();
- void drawCountdown(int value);
- void playTonguesIdle();
- void playRoundAnim(int roundNum);
- bool updateEnergyBars(int newLeftBarPos, int newRightBarPos);
- void waitForAnim(int animationIndex);
- int checkInput();
- int getRightTongueAction();
- int getRightTongueActionTicks();
- int getLeftTongueNextId();
- int getRightTongueNextId();
- void playWinBadgeAnim(int tongueNum);
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE50_H
diff --git a/engines/gnap/scenes/scene51.cpp b/engines/gnap/scenes/scene51.cpp
deleted file mode 100644
index dc93c6b..0000000
--- a/engines/gnap/scenes/scene51.cpp
+++ /dev/null
@@ -1,897 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene51.h"
-
-namespace Gnap {
-
-static const int kDigitSequenceIds[] = {
- 0xCA, 0xCB, 0xCC, 0xCD, 0xCE,
- 0xCF, 0xD0, 0xD1, 0xD2, 0xD3
-};
-
-static const int kDigitPositions[4] = {
- 0, 34, 83, 119
-};
-
-/*
- 0xBA Falling banana peel
- 0xBC Banana peel goes away
- 0xBD Falling coin
- 0xBE Fallen coin
- 0xC0 Falling banknote
- 0xB6 Platypus tripping (right)
- 0xB7 Platypus tripping (left)
- 0x76 Platypus jumping (right)
-*/
-
-Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
- _s51_dropLoseCash = false;
-
- _s51_cashAmount = -1;
- _s51_guySequenceId = -1;
- _s51_guyNextSequenceId = -1;
- _s51_itemsCaughtCtr = -1;
- _s51_dropSpeedTicks = -1;
- _s51_nextDropItemKind = -1;
- _s51_itemInsertX = -1;
- _s51_itemInsertDirection = -1;
- _s51_platypusSequenceId = -1;
- _s51_platypusNextSequenceId = -1;
- _s51_platypusJumpSequenceId = -1;
- _s51_itemsCtr = -1;
- _s51_itemsCtr1 = -1;
- _s51_itemsCtr2 = -1;
-
- for (int i = 0; i < 4; i++) {
- _s51_digits[i] = 0;
- _s51_digitSequenceIds[4] = -1;
- }
-
- for (int i = 0; i < 6; i++) {
- _s51_items[i]._currSequenceId = -1;
- _s51_items[i]._droppedSequenceId;
- _s51_items[i]._x = 0;
- _s51_items[i]._y = 0;
- _s51_items[i]._collisionX;
- _s51_items[i]._canCatch = false;
- _s51_items[i]._isCollision = false;
- _s51_items[i]._x2 = 0;
- _s51_items[i]._id = -1;
- }
-}
-
-int Scene51::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- for (int i = 0; i < 6; ++i)
- _vm->_gameSys->setAnimation(0, 0, i + 1);
- return 0xD4;
-}
-
-void Scene51::updateHotspots() {
- _vm->_hotspotsCount = 0;
-}
-
-void Scene51::clearItem(Scene51Item *item) {
- item->_currSequenceId = 0;
- item->_droppedSequenceId = 0;
- item->_x = 0;
- item->_y = 0;
- item->_x2 = 0;
- item->_collisionX = 0;
- item->_canCatch = false;
-}
-
-void Scene51::dropNextItem() {
- if (_vm->_timers[0])
- return;
-
- int index = 0;
- while (index < 6 && _s51_items[index]._currSequenceId)
- ++index;
-
- if (index == 6)
- return;
-
- switch (_s51_nextDropItemKind) {
- case 0:
- if (_vm->getRandom(10) != 0 || _s51_itemsCtr2 >= 2) {
- _s51_items[index]._currSequenceId = 0xBD;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
-
- case 1:
- if (_vm->getRandom(8) != 0 || _s51_itemsCtr2 >= 2) {
- if (_vm->getRandom(5) == 0) {
- if (_s51_itemInsertDirection)
- _s51_itemInsertX -= 70;
- else
- _s51_itemInsertX += 70;
- }
- _s51_items[index]._currSequenceId = 0xBD;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
-
- case 2:
- if (_vm->getRandom(6) != 0 || _s51_itemsCtr2 >= 2) {
- _s51_items[index]._currSequenceId = 0xBD;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
-
- case 3:
- case 4:
- if (_s51_itemsCtr == 0)
- _s51_itemsCtr1 = 3;
- _s51_items[index]._currSequenceId = 0xC0;
- break;
-
- case 5:
- case 6:
- if (_vm->getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
- if (_vm->getRandom(5) != 0)
- _s51_items[index]._currSequenceId = 0xBD;
- else
- _s51_items[index]._currSequenceId = 0xC0;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
-
- case 7:
- if (_vm->getRandom(5) != 0 || _s51_itemsCtr2 >= 2) {
- if (_vm->getRandom(5) == 0) {
- if (_s51_itemInsertDirection)
- _s51_itemInsertX -= 40;
- else
- _s51_itemInsertX += 40;
- }
- if (_vm->getRandom(9) != 0)
- _s51_items[index]._currSequenceId = 0xBD;
- else
- _s51_items[index]._currSequenceId = 0xC0;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
-
- default:
- if (_vm->getRandom(4) != 0 || _s51_itemsCtr2 >= 2) {
- if (_vm->getRandom(9) != 0)
- _s51_items[index]._currSequenceId = 0xBD;
- else
- _s51_items[index]._currSequenceId = 0xC0;
- } else {
- --_s51_itemsCtr1;
- _s51_items[index]._currSequenceId = 0xBA;
- ++_s51_itemsCtr2;
- }
- break;
- }
-
- if (_s51_itemInsertDirection) {
- _s51_itemInsertX -= 73;
- if (_s51_itemInsertX < 129) {
- _s51_itemInsertX += 146;
- _s51_itemInsertDirection = 0;
- }
- } else {
- _s51_itemInsertX += 73;
- if (_s51_itemInsertX > 685) {
- _s51_itemInsertX -= 146;
- _s51_itemInsertDirection = 1;
- }
- }
-
- if (_s51_itemInsertX > 685)
- _s51_itemInsertX = 685;
-
- if (_s51_itemInsertX < 129)
- _s51_itemInsertX = 129;
-
- if (_s51_items[index]._currSequenceId == 0xBA) {
- _s51_items[index]._x2 = _vm->getRandom(350) + 200;
- _s51_items[index]._x = _s51_items[index]._x2 - 362;
- _s51_items[index]._y = 15;
- _s51_items[index]._id = 249 - index;
- } else {
- _s51_items[index]._collisionX = _s51_itemInsertX;
- _s51_items[index]._x = _s51_items[index]._collisionX - 395;
- if (_s51_items[index]._currSequenceId == 0xC0)
- _s51_items[index]._x -= 65;
- _s51_items[index]._id = index + 250;
- _s51_items[index]._canCatch = true;
- }
-
- _vm->_gameSys->setAnimation(_s51_items[index]._currSequenceId, _s51_items[index]._id, index + 1);
- _vm->_gameSys->insertSequence(_s51_items[index]._currSequenceId, _s51_items[index]._id, 0, 0,
- kSeqNone, 0, _s51_items[index]._x, _s51_items[index]._y);
-
- _vm->_timers[0] = _s51_dropSpeedTicks;
-
- if (_s51_nextDropItemKind >= 3)
- _vm->_timers[0] = 20;
-
- if (_s51_nextDropItemKind >= 5)
- _vm->_timers[0] = 5;
-
- if (_s51_nextDropItemKind == 8)
- _vm->_timers[0] = 4;
-
- ++_s51_itemsCtr;
-}
-
-void Scene51::updateItemAnimations() {
- for (int i = 0; i < 6; ++i) {
- if (_vm->_gameSys->getAnimationStatus(i + 1) == 2)
- updateItemAnimation(&_s51_items[i], i);
- }
-}
-
-int Scene51::checkCollision(int sequenceId) {
- bool jumpingLeft = false, jumpingRight = false;
- int v8, v4;
- int result = 0;
-
- if (!isJumping(sequenceId))
- return false;
-
- bool checkFl = false;
- for (int i = 0; i < 6; i++)
- checkFl |= _s51_items[i]._isCollision;
-
- if (!checkFl)
- return false;
-
- if (isJumpingRight(sequenceId)) {
- v8 = getPosRight(sequenceId);
- v4 = getPosRight(sequenceId + 1);
- jumpingRight = true;
- } else if (isJumpingLeft(sequenceId)) {
- v4 = getPosLeft(sequenceId - 1) + 33;
- v8 = getPosLeft(sequenceId) + 33;
- jumpingLeft = true;
- }
-
- if (jumpingRight || jumpingLeft) {
- int v5 = 0;
- int i;
- for (i = 0; i < 6; ++i) {
- if (_s51_items[i]._isCollision) {
- if (jumpingRight && _s51_items[i]._x2 > v8 && _s51_items[i]._x2 < v4) {
- v5 = v8 - 359;
- if (v5 == 0)
- v5 = 1;
- _s51_platypusNextSequenceId = 0xB6;
- break;
- } else if (jumpingLeft && _s51_items[i]._x2 < v4 && _s51_items[i]._x2 > v8) {
- v5 = v8 - 344;
- if (v5 == 0)
- v5 = 1;
- _s51_platypusNextSequenceId = 0xB7;
- break;
- }
- }
- }
- if (v5) {
- _vm->_gameSys->setAnimation(0xBC, _s51_items[i]._id, i + 1);
- _vm->_gameSys->insertSequence(0xBC, _s51_items[i]._id, _s51_items[i]._currSequenceId, _s51_items[i]._id, kSeqSyncWait, 0, _s51_items[i]._x, 15);
- _s51_items[i]._isCollision = false;
- _s51_items[i]._currSequenceId = 0xBC;
- --_s51_itemsCtr2;
- }
- result = v5;
- }
-
- return result;
-}
-
-void Scene51::updateItemAnimation(Scene51Item *item, int index) {
-
- switch (item->_currSequenceId) {
- case 0xBD:
- case 0xC0:
- case 0xC1:
- // Falling coin and banknote
- if (!itemIsCaught(item)) {
- if (_s51_dropLoseCash) {
- if (item->_currSequenceId == 0xBD)
- _s51_cashAmount -= 2;
- else
- _s51_cashAmount -= 25;
- if (_s51_cashAmount < 0)
- _s51_cashAmount = 0;
- updateCash(_s51_cashAmount);
- }
- item->_droppedSequenceId = item->_currSequenceId + 1;
- if (item->_currSequenceId != 0xC0) {
- item->_canCatch = false;
- _s51_dropLoseCash = true;
- _s51_itemsCtr = 0;
- _vm->_timers[0] = 10;
- }
- if (item->_droppedSequenceId) {
- _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
- item->_currSequenceId = item->_droppedSequenceId;
- item->_y = 0;
- }
- } else {
- _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- _vm->_gameSys->setAnimation(0, 0, index + 1);
- _vm->playSound(218, false);
- if (incCashAmount(item->_currSequenceId) == 1995) {
- winMinigame();
- _vm->_sceneDone = true;
- } else {
- clearItem(item);
- ++_s51_itemsCaughtCtr;
- if (_s51_itemsCaughtCtr == 5)
- --_s51_dropSpeedTicks;
- if (_s51_itemsCaughtCtr == 8)
- --_s51_dropSpeedTicks;
- if (_s51_itemsCaughtCtr == 11)
- --_s51_dropSpeedTicks;
- if (_s51_itemsCaughtCtr == 14)
- --_s51_dropSpeedTicks;
- if (_s51_itemsCaughtCtr >= 15 && _s51_dropSpeedTicks > 4)
- --_s51_dropSpeedTicks;
- if (_s51_itemsCtr1 <= _s51_itemsCaughtCtr) {
- ++_s51_nextDropItemKind;
- _s51_dropSpeedTicks = 10;
- _s51_itemsCtr = 0;
- _s51_itemsCtr1 = 20;
- _s51_dropLoseCash = false;
- _s51_itemsCaughtCtr = 0;
- removeCollidedItems();
- }
- }
- }
- break;
-
- case 0xBE:
- // Fallen coin
- item->_droppedSequenceId = item->_currSequenceId + 1;
- if (item->_droppedSequenceId) {
- _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
- item->_currSequenceId = item->_droppedSequenceId;
- item->_y = 0;
- }
- break;
-
- case 0xBF:
- case 0xC2:
- // Bouncing coin and banknote
- _vm->_gameSys->setAnimation(0, 0, index + 1);
- _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- clearItem(item);
- break;
-
- case 0xBA:
- // Falling banana peel
- item->_droppedSequenceId = 0xBB;
- item->_y = 15;
- if (item->_droppedSequenceId) {
- _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
- item->_currSequenceId = item->_droppedSequenceId;
- item->_y = 0;
- }
- break;
-
- case 0xBB:
- item->_isCollision = true;
- item->_droppedSequenceId = 0;
- _vm->_gameSys->setAnimation(0, 0, index + 1);
- break;
-
- case 0xBC:
- _vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
- _vm->_gameSys->setAnimation(0, 0, index + 1);
- clearItem(item);
- break;
-
- default:
- if (item->_droppedSequenceId) {
- _vm->_gameSys->setAnimation(item->_droppedSequenceId, item->_id, index + 1);
- _vm->_gameSys->insertSequence(item->_droppedSequenceId, item->_id, item->_currSequenceId, item->_id, kSeqSyncWait, 0, item->_x, item->_y);
- item->_currSequenceId = item->_droppedSequenceId;
- item->_y = 0;
- }
- break;
- }
-}
-
-void Scene51::removeCollidedItems() {
- for (int i = 0; i < 6; ++i) {
- if (_s51_items[i]._isCollision) {
- _vm->_gameSys->removeSequence(_s51_items[i]._currSequenceId, _s51_items[i]._id, true);
- _vm->_gameSys->setAnimation(0, 0, i + 1);
- clearItem(&_s51_items[i]);
- }
- }
- _s51_itemsCtr2 = 0;
-}
-
-int Scene51::itemIsCaught(Scene51Item *item) {
- if (!item->_canCatch)
- return 0;
-
- if (isJumpingRight(_s51_platypusJumpSequenceId)) {
- int v4 = getPosRight(_s51_platypusJumpSequenceId) + 97;
- if (item->_collisionX < v4 && v4 - item->_collisionX < 56)
- return 1;
- } else {
- int v2 = getPosLeft(_s51_platypusJumpSequenceId);
- if (item->_collisionX > v2 && item->_collisionX - v2 < 56)
- return 1;
- }
-
- if (item->_currSequenceId == 0xC1) {
- int v3 = item->_collisionX + 100;
- if (isJumpingRight(_s51_platypusJumpSequenceId)) {
- if (ABS(getPosRight(_s51_platypusJumpSequenceId) + 46 - v3) < 56)
- return 1;
- } else if (ABS(getPosLeft(_s51_platypusJumpSequenceId) + 46 - v3) < 56) {
- return 1;
- }
- }
-
- return 0;
-}
-
-bool Scene51::isJumpingRight(int sequenceId) {
- return sequenceId >= 0x76 && sequenceId <= 0x95;
-}
-
-bool Scene51::isJumpingLeft(int sequenceId) {
- return sequenceId >= 0x96 && sequenceId <= 0xB5;
-}
-
-bool Scene51::isJumping(int sequenceId) {
- return sequenceId >= 0x76 && sequenceId <= 0xB5;
-}
-
-void Scene51::waitForAnim(int animationIndex) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
- // pollMessages();
- updateItemAnimations();
- _vm->gameUpdateTick();
- }
-}
-
-int Scene51::getPosRight(int sequenceId) {
- static const int kRightPosTbl[] = {
- 131, 159, 178, 195, 203, 219, 238, 254,
- 246, 274, 293, 310, 318, 334, 353, 369,
- 362, 390, 409, 426, 434, 450, 469, 485,
- 477, 505, 524, 541, 549, 565, 584, 600
- };
-
- if (sequenceId >= 118 && sequenceId <= 149)
- return kRightPosTbl[sequenceId - 118];
- return -1;
-}
-
-int Scene51::getPosLeft(int sequenceId) {
- static const int kLeftPosTbl[] = {
- 580, 566, 550, 536, 526, 504, 488, 469,
- 460, 446, 430, 416, 406, 384, 368, 349,
- 342, 328, 312, 298, 288, 266, 250, 231,
- 220, 206, 190, 176, 166, 144, 128, 109
- };
-
- if (sequenceId >= 150 && sequenceId <= 181)
- return kLeftPosTbl[sequenceId - 150];
- return -1;
-}
-
-void Scene51::playIntroAnim() {
- int soundCtr = 0;
-
- _s51_platypusSequenceId = 0x76;
- _s51_platypusNextSequenceId = 0x76;
-
- for (int i = 0; i < 6; ++i)
- clearItem(&_s51_items[i]);
-
- _s51_items[0]._currSequenceId = 0xBA;
- _s51_items[0]._x2 = 320;
- _s51_items[0]._x = -42;
- _s51_items[0]._y = 15;
- _s51_items[0]._id = 249;
- _s51_items[0]._isCollision = true;
-
- _vm->_gameSys->insertSequence(_s51_platypusSequenceId, 256, 0, 0, kSeqNone, 0, -179, 0);
- _vm->_gameSys->insertSequence(0xBA, 249, 0, 0, kSeqNone, 0, _s51_items[0]._x, _s51_items[0]._y);
- _vm->_gameSys->setAnimation(0xBA, 249, 1);
- _vm->_gameSys->setAnimation(_s51_platypusSequenceId, 256, 0);
-
- while (_s51_platypusSequenceId < 0x80) {
- waitForAnim(0);
- ++_s51_platypusNextSequenceId;
- _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, -179, 0);
- _s51_platypusSequenceId = _s51_platypusNextSequenceId;
- ++soundCtr;
- if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
- }
-
- _s51_platypusNextSequenceId = 0x75;
-
- while (_s51_platypusSequenceId != 0x84) {
- waitForAnim(0);
- ++_s51_platypusNextSequenceId;
- int oldSequenceId = _s51_platypusNextSequenceId;
- int v0 = checkCollision(_s51_platypusNextSequenceId);
- _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, v0, 0);
- _s51_platypusSequenceId = _s51_platypusNextSequenceId;
- if (v0) {
- _s51_platypusNextSequenceId = oldSequenceId;
- } else {
- ++soundCtr;
- if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
- }
- }
- waitForAnim(0);
-}
-
-void Scene51::updateGuyAnimation() {
- if (!_vm->_timers[4]) {
- _vm->_timers[4] = _vm->getRandom(20) + 60;
-
- switch (_vm->getRandom(5)) {
- case 0:
- _s51_guyNextSequenceId = 0xC3;
- break;
- case 1:
- _s51_guyNextSequenceId = 0xC4;
- break;
- case 2:
- _s51_guyNextSequenceId = 0xC5;
- break;
- case 3:
- _s51_guyNextSequenceId = 0xC6;
- break;
- case 4:
- _s51_guyNextSequenceId = 0xC7;
- break;
- }
-
- _vm->_gameSys->insertSequence(_s51_guyNextSequenceId, 39, _s51_guySequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _s51_guySequenceId = _s51_guyNextSequenceId;
- _s51_guyNextSequenceId = -1;
- }
-}
-
-int Scene51::incCashAmount(int sequenceId) {
- switch (sequenceId) {
- case 0xBD:
- _s51_cashAmount += 10;
- break;
- case 0xC0:
- case 0xC1:
- _s51_cashAmount += 100;
- break;
- case 0xB6:
- case 0xB7:
- _s51_cashAmount -= 10 * _vm->getRandom(5) + 50;
- if (_s51_cashAmount < 0)
- _s51_cashAmount = 0;
- break;
- }
- if (_s51_cashAmount > 1995)
- _s51_cashAmount = 1995;
- updateCash(_s51_cashAmount);
- return _s51_cashAmount;
-}
-
-void Scene51::winMinigame() {
- updateCash(1995);
- _vm->playSound(218, false);
- // TODO delayTicksA(1, 5);
- _vm->_newSceneNum = 48;
- _vm->invRemove(kItemBanana);
-}
-
-void Scene51::playCashAppearAnim() {
- _vm->_gameSys->setAnimation(0xC8, 252, 0);
- _vm->_gameSys->insertSequence(0xC8, 252, 0, 0, kSeqNone, 0, -20, -20);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
- _vm->gameUpdateTick();
- // checkGameAppStatus();
- }
-}
-
-void Scene51::updateCash(int amount) {
- drawDigit(amount / 1000, 0);
- drawDigit(amount / 100 % 10, 1);
- drawDigit(amount / 10 % 10, 2);
- drawDigit(amount % 10, 3);
-}
-
-void Scene51::drawDigit(int digit, int position) {
- if (digit != _s51_digits[position]) {
- _vm->_gameSys->insertSequence(kDigitSequenceIds[digit], 253,
- _s51_digitSequenceIds[position], 253,
- kSeqSyncWait, 0, kDigitPositions[position] - 20, -20);
- _s51_digitSequenceIds[position] = kDigitSequenceIds[digit];
- _s51_digits[position] = digit;
- }
-}
-
-void Scene51::initCashDisplay() {
- for (int position = 0; position < 4; ++position) {
- _s51_digits[position] = 0;
- _s51_digitSequenceIds[position] = kDigitSequenceIds[0];
- _vm->_gameSys->insertSequence(kDigitSequenceIds[0], 253, 0, 0,
- kSeqNone, 0, kDigitPositions[position] - 20, -20);
- }
- _s51_cashAmount = 0;
-}
-
-void Scene51::run() {
- int soundCtr = 0;
- bool isIdle = true;
-
- _s51_itemsCtr = 0;
- _vm->_newSceneNum = _vm->_prevSceneNum;
- _s51_cashAmount = 0;
- _s51_platypusJumpSequenceId = 0x84;
- _vm->endSceneInit();
-
- _vm->hideCursor();
- _vm->setGrabCursorSprite(-1);
-
- _s51_guySequenceId = 0xC3;
- _s51_guyNextSequenceId = -1;
-
- _vm->_gameSys->insertSequence(0xC3, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_timers[4] = _vm->getRandom(20) + 60;
-
- playCashAppearAnim();
- initCashDisplay();
- playIntroAnim();
-
- _s51_platypusNextSequenceId = 0x74;
- _vm->_gameSys->setAnimation(0x74, 256, 0);
- _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
- _s51_platypusSequenceId = _s51_platypusNextSequenceId;
-
- _s51_itemInsertDirection = 0;
- _s51_itemInsertX = 685;
- _s51_dropSpeedTicks = 10;
- _s51_nextDropItemKind = 0;
-
- for (int i = 0; i < 6; ++i)
- clearItem(&_s51_items[i]);
-
- _s51_itemInsertX = _vm->getRandom(556) + 129;
- _vm->_timers[0] = 15;
-
- _s51_itemsCaughtCtr = 0;
- _s51_dropLoseCash = false;
- _s51_itemsCtr1 = 20;
-
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
-
- bool isCollision = false;
- bool startWalk = true;
-
- while (!_vm->_sceneDone) {
- if (clearKeyStatus())
- _vm->_sceneDone = true;
-
- _vm->gameUpdateTick();
-
- updateGuyAnimation();
- dropNextItem();
- updateItemAnimations();
-
- if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- if (isJumpingRight(_s51_platypusJumpSequenceId)) {
- waitForAnim(0);
- _vm->_gameSys->setAnimation(0xB8, 256, 0);
- _vm->_gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
- _s51_platypusSequenceId = 0xB8;
- waitForAnim(0);
- _s51_platypusNextSequenceId += 6;
- if (_s51_platypusNextSequenceId > 0x95)
- _s51_platypusNextSequenceId = 0x95;
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- } else {
- waitForAnim(0);
- _vm->_gameSys->setAnimation(0xB9, 256, 0);
- _vm->_gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
- _s51_platypusSequenceId = 0xB9;
- waitForAnim(0);
- _s51_platypusNextSequenceId += 6;
- if (_s51_platypusNextSequenceId > 0xB5)
- _s51_platypusNextSequenceId = 0xB5;
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- }
- isIdle = false;
- }
-
- while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT) && _s51_platypusNextSequenceId != 0x96) {
- // pollMessages();
- if (_s51_platypusNextSequenceId == 0xB6)
- _s51_platypusNextSequenceId = 0x76;
- updateItemAnimations();
- if (startWalk) {
- _s51_platypusNextSequenceId = 0x86;
- startWalk = false;
- }
-
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- int collisionX = checkCollision(_s51_platypusNextSequenceId);
- if (collisionX)
- incCashAmount(_s51_platypusNextSequenceId);
- _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
- _s51_platypusSequenceId = _s51_platypusNextSequenceId;
- if (collisionX) {
- isCollision = true;
- ++_s51_platypusJumpSequenceId;
- _s51_platypusNextSequenceId = _s51_platypusJumpSequenceId;
- } else {
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- }
- if (isJumpingRight(_s51_platypusJumpSequenceId)) {
- ++_s51_platypusNextSequenceId;
- if (!isCollision) {
- if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- waitForAnim(0);
- _vm->_gameSys->setAnimation(0xB8, 256, 0);
- _vm->_gameSys->insertSequence(0xB8, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 348, 0);
- _s51_platypusSequenceId = 0xB8;
- waitForAnim(0);
- _s51_platypusNextSequenceId += 6;
- if (_s51_platypusNextSequenceId > 0x95)
- _s51_platypusNextSequenceId = 0x95;
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- } else {
- ++soundCtr;
- if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
- }
- }
- } else {
- _s51_platypusNextSequenceId = 150 - (_s51_platypusJumpSequenceId - 150);
- }
- isCollision = false;
- isIdle = false;
- }
- _vm->gameUpdateTick();
- }
-
- while (_vm->isKeyStatus2(Common::KEYCODE_LEFT) && _s51_platypusNextSequenceId != 0xB6) {
- // pollMessages();
- updateItemAnimations();
- if (startWalk) {
- _s51_platypusNextSequenceId = 0xA5;
- startWalk = false;
- }
-
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- int collisionX = checkCollision(_s51_platypusNextSequenceId);
- if (collisionX)
- incCashAmount(_s51_platypusNextSequenceId);
- _vm->_gameSys->setAnimation(_s51_platypusNextSequenceId, 256, 0);
- _vm->_gameSys->insertSequence(_s51_platypusNextSequenceId, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, collisionX, 0);
- _s51_platypusSequenceId = _s51_platypusNextSequenceId;
- if (collisionX) {
- isCollision = true;
- ++_s51_platypusJumpSequenceId;
- _s51_platypusNextSequenceId = _s51_platypusJumpSequenceId;
- } else {
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- }
- if (isJumpingLeft(_s51_platypusJumpSequenceId)) {
- ++_s51_platypusNextSequenceId;
- if (!isCollision) {
- if (_vm->isKeyStatus2(Common::KEYCODE_UP) || _vm->isKeyStatus2(Common::KEYCODE_SPACE)) {
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- waitForAnim(0);
- _vm->_gameSys->setAnimation(0xB9, 256, 0);
- _vm->_gameSys->insertSequence(0xB9, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 338, 0);
- _s51_platypusSequenceId = 0xB9;
- waitForAnim(0);
- _s51_platypusNextSequenceId += 6;
- if (_s51_platypusNextSequenceId > 0xB5)
- _s51_platypusNextSequenceId = 0xB5;
- _s51_platypusJumpSequenceId = _s51_platypusNextSequenceId;
- } else {
- ++soundCtr;
- if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
- }
- }
- } else {
- _s51_platypusNextSequenceId = 182 - (_s51_platypusJumpSequenceId - 118);
- }
- isCollision = false;
- isIdle = false;
- }
- _vm->gameUpdateTick();
- }
-
- if (!isIdle && _vm->_gameSys->getAnimationStatus(0) == 2) {
- if (isJumpingRight(_s51_platypusJumpSequenceId)) {
- _vm->_gameSys->setAnimation(0x74, 256, 0);
- _vm->_gameSys->insertSequence(0x74, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosRight(_s51_platypusJumpSequenceId) - 362, 0);
- _s51_platypusSequenceId = 0x74;
- } else {
- _vm->_gameSys->setAnimation(0x75, 256, 0);
- _vm->_gameSys->insertSequence(0x75, 256, _s51_platypusSequenceId, 256, kSeqSyncWait, 0, getPosLeft(_s51_platypusJumpSequenceId) - 341, 0);
- _s51_platypusSequenceId = 0x75;
- }
- waitForAnim(0);
- isIdle = true;
- }
- }
-
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
-
- _vm->_gameSys->setAnimation(0, 0, 0);
- for (int i = 0; i < 6; ++i)
- _vm->_gameSys->setAnimation(0, 0, i + 1);
-
- _vm->showCursor();
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene51.h b/engines/gnap/scenes/scene51.h
deleted file mode 100644
index 44fbd3d..0000000
--- a/engines/gnap/scenes/scene51.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE51_H
-#define GNAP_SCENE51_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-struct Scene51Item {
- int _currSequenceId;
- int _droppedSequenceId;
- int _x, _y;
- int _collisionX;
- bool _canCatch;
- bool _isCollision;
- int _x2;
- int _id;
-};
-
-class Scene51: public Scene {
-public:
- Scene51(GnapEngine *vm);
- ~Scene51() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations() {};
- virtual void updateAnimationsCb() {};
-
-private:
- bool _s51_dropLoseCash;
-
- int _s51_cashAmount;
- int _s51_digits[4];
- int _s51_digitSequenceIds[4];
- int _s51_guySequenceId;
- int _s51_guyNextSequenceId;
- int _s51_itemsCaughtCtr;
- int _s51_dropSpeedTicks;
- int _s51_nextDropItemKind;
- int _s51_itemInsertX;
- int _s51_itemInsertDirection;
- int _s51_platypusSequenceId;
- int _s51_platypusNextSequenceId;
- int _s51_platypusJumpSequenceId;
- int _s51_itemsCtr;
- int _s51_itemsCtr1;
- int _s51_itemsCtr2;
-
- Scene51Item _s51_items[6];
-
- void clearItem(Scene51Item *item);
- void dropNextItem();
- void updateItemAnimations();
- int checkCollision(int sequenceId);
- void updateItemAnimation(Scene51Item *item, int index);
- void removeCollidedItems();
- int itemIsCaught(Scene51Item *item);
- bool isJumpingRight(int sequenceId);
- bool isJumpingLeft(int sequenceId);
- bool isJumping(int sequenceId);
- void waitForAnim(int animationIndex);
- int getPosRight(int sequenceId);
- int getPosLeft(int sequenceId);
- void playIntroAnim();
- void updateGuyAnimation();
- int incCashAmount(int sequenceId);
- void winMinigame();
- void playCashAppearAnim();
- void updateCash(int amount);
- void drawDigit(int digit, int position);
- void initCashDisplay();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE51_H
diff --git a/engines/gnap/scenes/scene52.cpp b/engines/gnap/scenes/scene52.cpp
deleted file mode 100644
index ba1b0ff..0000000
--- a/engines/gnap/scenes/scene52.cpp
+++ /dev/null
@@ -1,894 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene52.h"
-
-namespace Gnap {
-
-Scene52::Scene52(GnapEngine *vm) : Scene(vm) {
- _s52_gameScore = 0;
- _s52_aliensInitialized = false;
- _s52_alienDirection = 0;
- _s52_soundToggle = false;
-}
-
-int Scene52::init() {
- initAnims();
- return 0x2B;
-}
-
-void Scene52::updateHotspots() {
- _vm->_hotspotsCount = 0;
-}
-
-void Scene52::update() {
- for (int rowNum = 0; rowNum < 7; ++rowNum) {
- _vm->gameUpdateTick();
- if (_vm->_gameSys->getAnimationStatus(_s52_alienRowAnims[rowNum]) == 2) {
- updateAlienRow(rowNum);
- rowNum = 0;
- }
- }
-
- if (_s52_liveAlienRows == 0 && !_s52_alienSingle) {
- _s52_alienWave = false;
- _vm->playSound(48, false);
- ++_s52_alienCounter;
- if (_s52_alienCounter != 3) {
- _vm->_timers[0] = 50;
- _vm->_timers[2] = 100;
- _s52_alienRowDownCtr = 0;
- _s52_alienSingle = true;
- }
- }
-
- if (_s52_alienSingle && !_vm->_timers[0]) {
- initAliens();
- _s52_alienSingle = false;
- _vm->_timers[2] = 5;
- _s52_alienWave = true;
- }
-
- if ((_s52_alienRowDownCtr || _s52_liveAlienRows == 0) && !_s52_alienSingle) {
- moveDownAlienRow();
- _s52_alienRowDownCtr = 0;
- }
-
- if (_vm->isKeyStatus1(Common::KEYCODE_UP) || _vm->isKeyStatus1(Common::KEYCODE_SPACE)) {
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- if (!_s52_aliensCount)
- fireShipCannon(_s52_shipPosX);
- }
-
- if (_s52_shipCannonFiring)
- updateShipCannon();
-
- fireAlienCannon();
- updateAlienCannons();
-
- if (_s52_aliensCount == 1) {
- _s52_alienWave = false;
- _vm->_timers[3] = 20;
- _vm->_timers[2] = 100;
- ++_s52_aliensCount;
- }
-
- if (_s52_aliensCount && !_vm->_timers[3]) {
- updateAliens();
- loseShip();
- if (_s52_shipsLeft != 0) {
- _vm->_timers[3] = 40;
- while (_vm->_timers[3]) {
- updateAlienCannons();
- if (_s52_shipCannonFiring)
- updateShipCannon();
- _vm->gameUpdateTick();
- }
- initAliens();
- _s52_shipPosX = (800 - _s52_shipMidX) / 2;
- _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
- _s52_ufoSequenceId = _s52_nextUfoSequenceId;
- _vm->_timers[2] = 5;
- _s52_alienWave = true;
- } else {
- _vm->_sceneDone = true;
- }
- }
-
- if (_vm->_timers[1] || getFreeShipCannon() == -1) {
- _s52_nextUfoSequenceId = 34;
- if (_s52_ufoSequenceId != 34)
- _s52_shipFlag = true;
- } else {
- _s52_nextUfoSequenceId = 34;
- if (_s52_ufoSequenceId != 34)
- _s52_shipFlag = true;
- }
-
- if (_s52_shipFlag) {
- if (_vm->_gameSys->getAnimationStatus(7) == 2) {
- _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
- _s52_ufoSequenceId = _s52_nextUfoSequenceId;
- }
- _s52_shipFlag = false;
- }
-
- if (_s52_alienWave && !_vm->_timers[0]) {
- playSound();
- int v0 = _s52_alienSpeed;
- if (_s52_alienSpeed >= 10)
- v0 = 10;
- int v1 = v0;
- if (v0 < 2)
- v1 = 2;
- _vm->_timers[0] = v1;
- }
-}
-
-void Scene52::initShipCannon(int bottomY) {
- _s52_shipCannonFired = false;
- _s52_shipCannonWidth = MAX(_vm->_gameSys->getSpriteWidthById(14), _vm->_gameSys->getSpriteWidthById(16));
- _s52_shipCannonHeight = MAX(_vm->_gameSys->getSpriteHeightById(14), _vm->_gameSys->getSpriteHeightById(16));
- _s52_shipCannonTopY = bottomY - _s52_shipCannonHeight;
- _s52_shipCannonFiring = false;
-}
-
-void Scene52::initAlienCannons() {
- for (int i = 0; i < 3; ++i) {
- _s52_alienCannonIds[i] = 0;
- _s52_alienCannonFired[i] = 0;
- }
- _s52_alienCannonSequenceIds[0] = 30;
- _s52_alienCannonSequenceIds[1] = 31;
- _s52_alienCannonSequenceIds[2] = 32;
-}
-
-void Scene52::fireShipCannon(int posX) {
- if (_vm->_timers[1])
- return;
-
- int cannonNum = getFreeShipCannon();
- if (cannonNum != -1) {
- _s52_shipCannonPosX = _s52_shipMidX / 2 + posX - _s52_shipCannonWidth / 2;
- _s52_shipCannonPosY = _s52_shipCannonTopY;
- _vm->_gameSys->setAnimation(0x23, cannonNum + 256, cannonNum + 8);
- _vm->_gameSys->insertSequence(0x23, cannonNum + 256, 0, 0, kSeqNone, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
- _vm->playSound(0x2D, false);
- if (shipCannonHitShield(cannonNum)) {
- _vm->_gameSys->setAnimation(0, 0, cannonNum + 8);
- _vm->_gameSys->removeSequence(0x23, cannonNum + 256, true);
- } else {
- _s52_shipCannonFired = true;
- _s52_shipCannonPosY -= 13;
- _s52_shipCannonFiring = true;
- }
- _vm->_timers[1] = 5;
- }
-}
-
-void Scene52::fireAlienCannon() {
- if (_vm->_timers[2])
- return;
-
- int cannonNum = getFreeAlienCannon();
- if (cannonNum != -1) {
- int alienX1 = _s52_alienLeftX + _s52_alienRowXOfs[0];
- int alienX2 = _s52_alienLeftX + _s52_alienRowXOfs[0] + 5 * _s52_alienWidth - (_s52_alienWidth / 2 - 15);
- _s52_alienCannonPosX[cannonNum] = _vm->getRandom(alienX2 - alienX1) + alienX1;
- _s52_alienCannonPosY[cannonNum] = 104;
- _s52_alienCannonFired[cannonNum] = 1;
- _vm->_gameSys->setAnimation(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, cannonNum + 9);
- _vm->_gameSys->insertSequence(_s52_alienCannonSequenceIds[cannonNum], _s52_alienCannonIds[cannonNum] + 256, 0, 0,
- kSeqNone, 0, _s52_alienCannonPosX[cannonNum], _s52_alienCannonPosY[cannonNum]);
- _s52_alienCannonPosY[cannonNum] -= 13;
- _vm->_timers[2] = 5;
- }
-}
-
-int Scene52::getFreeShipCannon() {
- if (!_s52_shipCannonFired)
- return 0;
- return -1;
-}
-
-int Scene52::getFreeAlienCannon() {
- for (int i = 0; i < 3; ++i)
- if (!_s52_alienCannonFired[i])
- return i;
- return -1;
-}
-
-void Scene52::updateShipCannon() {
- if (_s52_shipCannonFired && _vm->_gameSys->getAnimationStatus(8) == 2) {
- _s52_shipCannonPosY -= 13;
- if (_s52_shipCannonPosY - 13 >= 135) {
- if (updateHitAlien()) {
- _vm->_gameSys->setAnimation(0, 0, 8);
- _vm->_gameSys->removeSequence(35, 256, true);
- _s52_shipCannonFired = false;
- drawScore(_s52_gameScore);
- } else {
- _vm->_gameSys->setAnimation(35, 256, 8);
- _vm->_gameSys->insertSequence(35, 256, 35, 256, kSeqSyncWait, 0, _s52_shipCannonPosX, _s52_shipCannonPosY);
- _s52_shipCannonPosY -= 13;
- }
- } else {
- _vm->_gameSys->setAnimation(0, 0, 8);
- _vm->_gameSys->removeSequence(35, 256, true);
- _s52_shipCannonFired = false;
- }
- }
-}
-
-void Scene52::updateAlienCannons() {
- for (int i = 0; i < 3; ++i) {
- if (_s52_alienCannonFired[i] && _vm->_gameSys->getAnimationStatus(i + 9) == 2) {
- _s52_alienCannonPosY[i] += 13;
- if (_s52_shipCannonHeight + _s52_alienCannonPosY[i] + 13 <= 550) {
- if (alienCannonHitShip(i)) {
- _vm->_gameSys->setAnimation(0, 0, i + 9);
- _s52_alienCannonFired[i] = 0;
- shipExplode();
- } else if (alienCannonHitShield(i)) {
- _s52_alienCannonFired[i] = 0;
- } else {
- _vm->_gameSys->insertSequence(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, 0, 0,
- kSeqNone, 0, _s52_alienCannonPosX[i], _s52_alienCannonPosY[i]);
- _vm->_gameSys->setAnimation(_s52_alienCannonSequenceIds[i], 1 - _s52_alienCannonIds[i] + 256, i + 9);
- _s52_alienCannonIds[i] = 1 - _s52_alienCannonIds[i];
- _s52_alienCannonPosY[i] += 13;
- }
- } else {
- _vm->_gameSys->setAnimation(0, 0, i + 9);
- _s52_alienCannonFired[i] = 0;
- }
- }
- }
-}
-
-void Scene52::initAliens() {
- if (!_s52_aliensInitialized) {
- initAlienSize();
- _s52_aliensInitialized = true;
- }
-
- _s52_liveAlienRows = 0;
- _s52_alienSpeed = 0;
- _s52_bottomAlienFlag = false;
- _s52_aliensCount = 0;
- _s52_alienSingle = false;
- _s52_alienRowDownCtr = 0;
-
- initShields();
-
- _s52_alienRowKind[0] = -1;
- _s52_alienRowKind[1] = -1;
- _s52_alienRowKind[2] = -1;
- _s52_alienRowKind[3] = -1;
- _s52_alienRowKind[4] = _vm->getRandom(2) != 0 ? 24 : 27;
- _s52_alienRowKind[5] = _vm->getRandom(2) != 0 ? 25 : 28;
- _s52_alienRowKind[6] = _vm->getRandom(2) != 0 ? 26 : 29;
-
- for (int i = 0; i < 7; ++i) {
- _s52_alienRowAnims[i] = i;
- _s52_alienRowXOfs[i] = 0;
- initAlienRowKind(i, _s52_alienRowKind[i]);
- insertAlienRow(i);
- }
-}
-
-void Scene52::initAlienRowKind(int rowNum, int alienKind) {
- for (int i = 0; i < 5; ++i)
- _s52_items[rowNum][i] = alienKind;
-}
-
-void Scene52::insertAlienRow(int rowNum) {
- if (_s52_alienRowKind[rowNum] >= 0) {
- insertAlienRowAliens(rowNum);
- _s52_alienRowIds[rowNum] = 256;
- _vm->_gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
- ++_s52_liveAlienRows;
- }
-}
-
-void Scene52::insertAlienRowAliens(int rowNum) {
- int xOffs = _s52_alienLeftX;
- int yOffs = _s52_alienTopY - 52 * rowNum - _s52_alienHeight + 10;
- for (int i = 0; i < 5; ++i) {
- if (_s52_items[rowNum][i] >= 0) {
- _vm->_gameSys->insertSequence(_s52_items[rowNum][i], i + 256, 0, 0, kSeqNone, 0, xOffs, yOffs);
- ++_s52_alienSpeed;
- }
- xOffs += _s52_alienWidth;
- }
-}
-
-void Scene52::updateAlienRow(int rowNum) {
- if (_s52_alienRowKind[rowNum] != -1 && !checkAlienRow(rowNum)) {
- updateAlienRowXOfs();
- _s52_alienRowIds[rowNum] = -1;
- int xOffs = _s52_alienLeftX + _s52_alienRowXOfs[rowNum];
- int yOffs = _s52_alienTopY - 52 * rowNum - _s52_alienHeight + 10;
- for (int i = 0; i < 5; ++i) {
- if (_s52_items[rowNum][i] >= 0) {
- _vm->_gameSys->insertSequence(_s52_items[rowNum][i], i + 256, _s52_items[rowNum][i], i + 256, kSeqSyncWait, 0, xOffs, yOffs);
- if (_s52_alienRowIds[rowNum] == -1)
- _s52_alienRowIds[rowNum] = i + 256;
- } else if (_s52_items[rowNum][i] == -2) {
- _vm->_gameSys->removeSequence(_s52_alienRowKind[rowNum], i + 256, true);
- _s52_items[rowNum][i] = -1;
- --_s52_alienSpeed;
- }
- xOffs += _s52_alienWidth;
- }
- if (_s52_alienRowIds[rowNum] == -1) {
- _vm->_gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
- // MessageBoxA(0, "No live aliens!", "Error 3:", 0x30u);
- } else {
- _vm->_gameSys->setAnimation(_s52_alienRowKind[rowNum], _s52_alienRowIds[rowNum], _s52_alienRowAnims[rowNum]);
- }
- if (rowNum == 1) {
- for (int j = 0; j < 3; ++j) {
- if (_s52_shieldSpriteIds[j] != -1) {
- _vm->_gameSys->fillSurface(0, _s52_shieldPosX[j], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
- _s52_shieldSpriteIds[j] = -1;
- }
- }
- }
- if (rowNum == 0 && _s52_bottomAlienFlag)
- shipExplode();
- }
-}
-
-void Scene52::moveDownAlienRow() {
- int v2[5], v3, v1, v0, v4;
-
- for (int i = 0; i < 5; ++i)
- v2[i] = _s52_items[0][i];
-
- v3 = _s52_alienRowIds[0];
- v1 = _s52_alienRowAnims[0];
- v0 = _s52_alienRowKind[0];
- v4 = _s52_alienRowXOfs[0];
-
- for (int j = 0; j < 7; ++j) {
- for (int i = 0; i < 5; ++i)
- _s52_items[j][i] = _s52_items[j + 1][i];
- _s52_alienRowIds[j] = _s52_alienRowIds[j + 1];
- _s52_alienRowAnims[j] = _s52_alienRowAnims[j + 1];
- _s52_alienRowKind[j] = _s52_alienRowKind[j + 1];
- _s52_alienRowXOfs[j] = _s52_alienRowXOfs[j + 1];
- }
-
- for (int i = 0; i < 5; ++i)
- _s52_items[6][i] = v2[i];
-
- _s52_alienRowIds[6] = v3;
- _s52_alienRowAnims[6] = v1;
- _s52_alienRowKind[6] = v0;
- _s52_alienRowXOfs[6] = v4;
-
- updateAlien(6);
- initAlienRowKind(6, _s52_alienRowKind[6]);
- insertAlienRow(6);
-
- _s52_bottomAlienFlag = _s52_alienRowKind[0] > -1;
-}
-
-int Scene52::updateHitAlien() {
- int result = 0, rowNum, ya;
-
- int y = _s52_shipCannonTopY - _s52_shipCannonPosY;
-
- if (y == 26) {
- rowNum = 1;
- ya = _s52_shipCannonPosY + 26;
- } else {
- if (y % 52)
- return 0;
- rowNum = y / 52 + 1;
- ya = _s52_shipCannonPosY;
- }
-
- if (rowNum < 7) {
- int hitAlienNum = getHitAlienNum(rowNum);
- if (hitAlienNum != -1 && _s52_items[rowNum][hitAlienNum] >= 0) {
- _s52_gameScore = ((_s52_items[rowNum][hitAlienNum] - 24) % 3 + _s52_gameScore + 1) % 1000;
- _s52_items[rowNum][hitAlienNum] = -2;
- _vm->playSound(44, false);
- _vm->_gameSys->insertSequence(0x21, 266, 0, 0,
- kSeqNone, 0, _s52_alienLeftX + hitAlienNum * _s52_alienWidth + _s52_alienRowXOfs[rowNum] - 10, ya - _s52_alienHeight);
- result = 1;
- }
- }
-
- return result;
-}
-
-int Scene52::getHitAlienNum(int rowNum) {
- int result = -1;
-
- int v3 = _s52_alienLeftX + _s52_alienRowXOfs[rowNum];
-
- if (_s52_shipCannonPosX >= v3) {
- int v8 = _s52_alienWidth / 2 - 15;
- if (v3 + 5 * _s52_alienWidth - v8 >= _s52_shipCannonPosX) {
- int v4 = v3 + _s52_alienWidth;
- if (_s52_shipCannonPosX >= v4 - v8) {
- int v5 = v4 + _s52_alienWidth;
- if (_s52_shipCannonPosX >= v5 - v8) {
- int v6 = v5 + _s52_alienWidth;
- if (_s52_shipCannonPosX >= v6 - v8) {
- int v7 = v6 + _s52_alienWidth;
- if (_s52_shipCannonPosX >= v7 - v8) {
- if (_s52_shipCannonPosX >= v7 + _s52_alienWidth - v8)
- result = -1;
- else
- result = 4;
- } else {
- result = 3;
- }
- } else {
- result = 2;
- }
- } else {
- result = 1;
- }
- } else {
- result = 0;
- }
- } else {
- result = -1;
- }
- } else {
- result = -1;
- }
- return result;
-}
-
-int Scene52::alienCannonHitShip(int cannonNum) {
- int result = 0;
-
- if (_s52_aliensCount) {
- result = 0;
- } else {
- int cannonY = _s52_alienCannonPosY[cannonNum] - 13;
- if (_s52_arcadeScreenBottom <= cannonY) {
- if (_s52_shipMidY + _s52_arcadeScreenBottom > cannonY) {
- if (_s52_alienCannonPosX[cannonNum] >= _s52_shipPosX)
- result = _s52_alienCannonPosX[cannonNum] < _s52_shipMidX + _s52_shipPosX;
- else
- result = 0;
- } else {
- result = 0;
- }
- } else {
- result = 0;
- }
- }
- return result;
-}
-
-int Scene52::alienCannonHitShield(int cannonNum) {
- int result = 0;
-
- int v3 = _s52_alienCannonPosY[cannonNum] + 39;
- if (_s52_arcadeScreenBottom - 44 > v3)
- return 0;
-
- if (_s52_arcadeScreenBottom <= v3)
- return 0;
-
- if (_s52_alienCannonPosX[cannonNum] < _s52_shieldPosX[0])
- return 0;
-
- if (_s52_alienCannonPosX[cannonNum] > _s52_shieldPosX[2] + 33)
- return 0;
-
- int shieldNum = -1;
- if (_s52_alienCannonPosX[cannonNum] < _s52_shieldPosX[0] + 33)
- shieldNum = 0;
-
- if (shieldNum < 0 && _s52_alienCannonPosX[cannonNum] < _s52_shieldPosX[1])
- return 0;
-
- if (shieldNum < 0 && _s52_alienCannonPosX[cannonNum] < _s52_shieldPosX[1] + 33)
- shieldNum = 1;
-
- if (shieldNum < 0) {
- if (_s52_alienCannonPosX[cannonNum] < _s52_shieldPosX[2])
- return 0;
- shieldNum = 2;
- }
-
- if (_s52_shieldSpriteIds[shieldNum] == -1) {
- result = 0;
- } else {
- ++_s52_shieldSpriteIds[shieldNum];
- if (_s52_shieldSpriteIds[shieldNum] <= 21) {
- _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
- } else {
- _vm->_gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
- _s52_shieldSpriteIds[shieldNum] = -1;
- }
- _vm->_gameSys->setAnimation(0, 0, cannonNum + 9);
- _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_alienCannonPosX[cannonNum] - 18, _s52_arcadeScreenBottom - 44);
- _vm->playSound(0x2C, false);
- result = 1;
- }
-
- return result;
-}
-
-bool Scene52::shipCannonHitShield(int cannonNum) {
- bool result = false;
-
- if (_s52_shipCannonPosX < _s52_shieldPosX[0])
- return result;
-
- if (_s52_shipCannonPosX > _s52_shieldPosX[2] + 33)
- return result;
-
- int shieldNum = -1;
- if (_s52_shipCannonPosX < _s52_shieldPosX[0] + 33)
- shieldNum = 0;
-
- if (shieldNum < 0 && _s52_shipCannonPosX < _s52_shieldPosX[1])
- return result;
-
- if (shieldNum < 0 && _s52_shipCannonPosX < _s52_shieldPosX[1] + 33)
- shieldNum = 1;
-
- if (shieldNum < 0) {
- if (_s52_shipCannonPosX < _s52_shieldPosX[2])
- return result;
- shieldNum = 2;
- }
-
- if (_s52_shieldSpriteIds[shieldNum] == -1) {
- result = false;
- } else {
- ++_s52_shieldSpriteIds[shieldNum];
- if (_s52_shieldSpriteIds[shieldNum] <= 21) {
- _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, _s52_shieldSpriteIds[shieldNum]);
- } else {
- _vm->_gameSys->fillSurface(0, _s52_shieldPosX[shieldNum], _s52_arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
- _s52_shieldSpriteIds[shieldNum] = -1;
- }
- _vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _s52_shipCannonPosX - 18, _s52_arcadeScreenBottom - 44);
- _vm->playSound(0x2C, false);
- result = true;
- }
-
- return result;
-}
-
-bool Scene52::shipCannonHitAlien() {
- bool result = false;
-
- if (_s52_aliensCount || checkAlienRow(0))
- return false;
-
- int alienNextX = _s52_alienLeftX + _s52_alienRowXOfs[0];
- if (_s52_shipMidX + _s52_shipPosX >= alienNextX) {
- int startX = _s52_alienWidth / 2 - 15;
- if (alienNextX + 5 * _s52_alienWidth - startX >= _s52_shipPosX) {
- int alienNextDeltaX = alienNextX + _s52_alienWidth;
- if (_s52_items[0][0] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
- alienNextDeltaX += _s52_alienWidth;
- if (_s52_items[0][1] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
- alienNextDeltaX += _s52_alienWidth;
- if (_s52_items[0][2] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
- alienNextDeltaX += _s52_alienWidth;
- if (_s52_items[0][3] <= -1 || alienNextDeltaX - startX <= _s52_shipPosX) {
- alienNextDeltaX += _s52_alienWidth;
- result = _s52_items[0][4] > -1 && alienNextDeltaX - startX > _s52_shipPosX;
- } else {
- result = true;
- }
- } else {
- result = true;
- }
- } else {
- result = true;
- }
- } else {
- result = true;
- }
- } else {
- result = false;
- }
- } else {
- result = false;
- }
-
- return result;
-}
-
-void Scene52::shipExplode() {
- if (!_s52_aliensCount) {
- _vm->_gameSys->setAnimation(0, 0, 7);
- _vm->_gameSys->removeSequence(_s52_ufoSequenceId, 256, true);
- _vm->playSound(44, false);
- _vm->_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
- _s52_aliensCount = 1;
- _vm->playSound(0x31, false);
- }
-}
-
-bool Scene52::checkAlienRow(int rowNum) {
- for (int i = 0; i < 5; ++i) {
- if (_s52_items[rowNum][i] >= 0)
- return false;
- }
-
- bool found = false;
- for (int j = 0; j < 5; ++j)
- if (_s52_items[rowNum][j] == -2) {
- _vm->_gameSys->removeSequence(_s52_alienRowKind[rowNum], j + 256, true);
- _s52_items[rowNum][j] = -1;
- --_s52_alienSpeed;
- found = true;
- }
-
- if (found) {
- _vm->_gameSys->setAnimation(0, 0, _s52_alienRowAnims[rowNum]);
- --_s52_liveAlienRows;
- }
-
- if (_s52_liveAlienRows < 0)
- _s52_liveAlienRows = 0;
-
- return true;
-}
-
-void Scene52::updateAlienRowXOfs() {
- int amount = 2 * (3 - _s52_liveAlienRows) + 1;
-
- if (_s52_alienSpeed == 2)
- amount *= 4;
- else if (_s52_alienSpeed == 1)
- amount *= 10;
-
- if (_s52_alienDirection) {
- for (int i = 0; i < 7; ++i) {
- _s52_alienRowXOfs[i] -= amount;
- if (_s52_alienRowXOfs[i] <= -100) {
- _s52_alienRowXOfs[i] = -100;
- _s52_alienDirection = 0;
- ++_s52_alienRowDownCtr;
- }
- }
- } else {
- for (int j = 0; j < 7; ++j) {
- _s52_alienRowXOfs[j] += amount;
- if (_s52_alienRowXOfs[j] >= 100) {
- _s52_alienRowXOfs[j] = 100;
- _s52_alienDirection = 1;
- ++_s52_alienRowDownCtr;
- }
- }
- }
-}
-
-void Scene52::initAlienSize() {
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(0);
- if (_vm->_gameSys->getSpriteWidthById(1) > _s52_alienWidth)
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(1);
- if (_vm->_gameSys->getSpriteWidthById(4) > _s52_alienWidth)
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(4);
- if (_vm->_gameSys->getSpriteWidthById(5) > _s52_alienWidth)
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(5);
- if (_vm->_gameSys->getSpriteWidthById(12) > _s52_alienWidth)
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(12);
- if (_vm->_gameSys->getSpriteWidthById(13) > _s52_alienWidth)
- _s52_alienWidth = _vm->_gameSys->getSpriteWidthById(13);
-
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(0);
- if (_vm->_gameSys->getSpriteHeightById(1) > _s52_alienHeight)
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(1);
- if (_vm->_gameSys->getSpriteHeightById(4) > _s52_alienHeight)
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(4);
- if (_vm->_gameSys->getSpriteHeightById(5) > _s52_alienHeight)
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(5);
- if (_vm->_gameSys->getSpriteHeightById(12) > _s52_alienHeight)
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(12);
- if (_vm->_gameSys->getSpriteHeightById(13) > _s52_alienHeight)
- _s52_alienHeight = _vm->_gameSys->getSpriteHeightById(13);
-
- _s52_alienTopY = _s52_shipCannonTopY + 52;
- _s52_alienLeftX = (800 - 5 * _s52_alienWidth) / 2;
-}
-
-void Scene52::playSound() {
- if (_s52_soundToggle) {
- _vm->playSound(0x2F, false);
- _s52_soundToggle = false;
- } else {
- _vm->playSound(0x2E, false);
- _s52_soundToggle = true;
- }
-}
-
-void Scene52::updateAliens() {
- for (int i = 0; i < 7; ++i)
- updateAlien(i);
-}
-
-void Scene52::updateAlien(int rowNum) {
- if (_s52_alienRowKind[rowNum] >= 0 && !checkAlienRow(rowNum)) {
- for (int i = 0; i < 5; ++i) {
- if (_s52_items[rowNum][i] >= 0)
- _s52_items[rowNum][i] = -2;
- }
- checkAlienRow(rowNum);
- }
-}
-
-void Scene52::loseShip() {
- --_s52_shipsLeft;
- if (_s52_shipsLeft == 2) {
- _vm->_gameSys->fillSurface(0, 120, 140, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
- } else if (_s52_shipsLeft == 1) {
- _vm->_gameSys->fillSurface(0, 120, 185, _s52_shipMidX, _s52_shipMidY, 0, 0, 0);
- }
-}
-
-void Scene52::initShields() {
- for (int i = 0; i < 3; ++i) {
- _vm->_gameSys->drawSpriteToBackground(_s52_shieldPosX[i], _s52_arcadeScreenBottom - 44, 17);
- _s52_shieldSpriteIds[i] = 17;
- }
-}
-
-void Scene52::initAnims() {
- for (int i = 0; i < 7; ++i)
- _vm->_gameSys->setAnimation(0, 0, i);
- _vm->_gameSys->setAnimation(0, 0, 7);
- for (int j = 0; j < 1; ++j)
- _vm->_gameSys->setAnimation(0, 0, j + 8);
- for (int k = 0; k < 3; ++k)
- _vm->_gameSys->setAnimation(0, 0, k + 9);
-}
-
-void Scene52::drawScore(int score) {
- char str[4];
- sprintf(str, "%03d", score);
- _vm->_gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
- _vm->_gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
-}
-
-void Scene52::run() {
- _vm->_timers[1] = 0;
-
- _vm->hideCursor();
-
- // TODO loadFont("maturasc", "Matura MT Script Capitals", 2000);
- // TODO setFontSize(24);
-
- _s52_gameScore = 0;
- _vm->_gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
- _vm->_gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
-
- drawScore(0);
-
- _s52_shipMidX = 33;
- _s52_shipMidY = _vm->_gameSys->getSpriteHeightById(15);
- _s52_shipPosX = (800 - _s52_shipMidX) / 2;
- _s52_arcadeScreenBottom = 496;
- _s52_arcadeScreenRight = 595 - _s52_shipMidX;
- _s52_arcadeScreenLeft = 210;
- _s52_shipsLeft = 3;
- _s52_alienCounter = 0;
-
- _s52_shieldPosX[0] = 247;
- _s52_shieldPosX[1] = 387;
- _s52_shieldPosX[2] = 525;
-
- for (int i = 0; i < 3; ++i)
- _s52_shieldSpriteIds[i] = -1;
-
- _vm->_gameSys->drawSpriteToBackground(120, 140, 0xF);
- _vm->_gameSys->drawSpriteToBackground(120, 185, 0xF);
-
- initShipCannon(_s52_arcadeScreenBottom);
- initAlienCannons();
- initAliens();
-
- _s52_nextUfoSequenceId = 0x22;
- _vm->_gameSys->setAnimation(0x22, 256, 7);
- _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, 0, 0, kSeqNone, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
-
- _s52_ufoSequenceId = _s52_nextUfoSequenceId;
-
- _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
- _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
- _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(Common::KEYCODE_UP);
- _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
-
- _vm->_timers[2] = 5;
- _s52_shipFlag = false;
-
- _vm->_timers[0] = 10;
- _s52_alienWave = true;
-
- while (!_vm->_sceneDone) {
- _vm->gameUpdateTick();
-
- while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT)) {
- update();
- if (_vm->_gameSys->getAnimationStatus(7) == 2) {
- if (_s52_shipPosX < _s52_arcadeScreenRight) {
- _s52_shipPosX += 15;
- if (_s52_shipPosX > _s52_arcadeScreenRight)
- _s52_shipPosX = _s52_arcadeScreenRight;
- _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
- _s52_ufoSequenceId = _s52_nextUfoSequenceId;
- if (_s52_bottomAlienFlag && shipCannonHitAlien())
- shipExplode();
- }
- break;
- }
- }
-
- while (_vm->isKeyStatus2(Common::KEYCODE_LEFT)) {
- update();
- if (_vm->_gameSys->getAnimationStatus(7) == 2) {
- if (_s52_shipPosX > _s52_arcadeScreenLeft) {
- _s52_shipPosX -= 15;
- if (_s52_shipPosX < _s52_arcadeScreenLeft)
- _s52_shipPosX = _s52_arcadeScreenLeft;
- _vm->_gameSys->setAnimation(_s52_nextUfoSequenceId, 256, 7);
- _vm->_gameSys->insertSequence(_s52_nextUfoSequenceId, 256, _s52_ufoSequenceId, 256, kSeqSyncWait, 0, _s52_shipPosX, _s52_arcadeScreenBottom);
- _s52_ufoSequenceId = _s52_nextUfoSequenceId;
- if (_s52_bottomAlienFlag && shipCannonHitAlien())
- shipExplode();
- }
- break;
- }
- }
-
- update();
-
- if (clearKeyStatus()) {
- _s52_alienWave = false;
- _vm->_gameSys->waitForUpdate();
- initAnims();
- _vm->clearKeyStatus1(30);
- _vm->_sceneDone = true;
- }
- }
-
- // TODO freeFont();
-
- _vm->_gameSys->waitForUpdate();
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene52.h b/engines/gnap/scenes/scene52.h
deleted file mode 100644
index 0fbc29c..0000000
--- a/engines/gnap/scenes/scene52.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE52_H
-#define GNAP_SCENE52_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene52: public Scene {
-public:
- Scene52(GnapEngine *vm);
- ~Scene52() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations() {};
- virtual void updateAnimationsCb() {};
-
-private:
- int _s52_liveAlienRows;
- int _s52_gameScore;
- bool _s52_soundToggle;
- int _s52_arcadeScreenLeft;
- int _s52_arcadeScreenRight;
- int _s52_arcadeScreenBottom;
- int _s52_shipsLeft;
- int _s52_shieldSpriteIds[3];
- int _s52_shieldPosX[3];
- int _s52_shipPosX;
- int _s52_shipCannonPosX, _s52_shipCannonPosY;
- bool _s52_shipCannonFiring;
- bool _s52_shipCannonFired;
- int _s52_shipCannonWidth, _s52_shipCannonHeight;
- int _s52_shipCannonTopY;
- int _s52_shipMidX, _s52_shipMidY;
- bool _s52_shipFlag;
- bool _s52_aliensInitialized;
- int _s52_alienSpeed, _s52_alienDirection;
- int _s52_alienWidth, _s52_alienHeight;
- int _s52_alienLeftX, _s52_alienTopY;
- int _s52_alienRowDownCtr;
- int _s52_alienRowKind[7];
- int _s52_alienRowAnims[7];
- int _s52_alienRowIds[7];
- int _s52_alienRowXOfs[7];
- int _s52_alienCannonFired[3];
- int _s52_alienCannonPosX[3];
- int _s52_alienCannonPosY[3];
- int _s52_alienCannonSequenceIds[3];
- int _s52_alienCannonIds[3];
- bool _s52_alienWave, _s52_alienSingle;
- int _s52_alienCounter;
- bool _s52_bottomAlienFlag;
- int _s52_aliensCount;
- int _s52_items[8][5];
- int _s52_nextUfoSequenceId, _s52_ufoSequenceId;
-
- void update();
- void initShipCannon(int bottomY);
- void initAlienCannons();
- void fireShipCannon(int posX);
- void fireAlienCannon();
- int getFreeShipCannon();
- int getFreeAlienCannon();
- void updateShipCannon();
- void updateAlienCannons();
- void initAliens();
- void initAlienRowKind(int rowNum, int alienKind);
- void insertAlienRow(int rowNum);
- void insertAlienRowAliens(int rowNum);
- void updateAlienRow(int rowNum);
- void moveDownAlienRow();
- int updateHitAlien();
- int getHitAlienNum(int rowNum);
- int alienCannonHitShip(int cannonNum);
- int alienCannonHitShield(int cannonNum);
- bool shipCannonHitShield(int cannonNum);
- bool shipCannonHitAlien();
- void shipExplode();
- bool checkAlienRow(int rowNum);
- void updateAlienRowXOfs();
- void initAlienSize();
- void playSound();
- void updateAliens();
- void updateAlien(int rowNum);
- void loseShip();
- void initShields();
- void initAnims();
- void drawScore(int score);
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE52_H
diff --git a/engines/gnap/scenes/scene53.cpp b/engines/gnap/scenes/scene53.cpp
deleted file mode 100644
index 7c46146..0000000
--- a/engines/gnap/scenes/scene53.cpp
+++ /dev/null
@@ -1,395 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "gnap/gnap.h"
-#include "gnap/gamesys.h"
-#include "gnap/resource.h"
-#include "gnap/scenes/scene53.h"
-
-namespace Gnap {
-
-enum {
- kHSPlatypus = 0,
- kHSDevice = 1,
- kHSPhoneKey1 = 2,
- kHSPhoneKey2 = 3,
- kHSPhoneKey3 = 4,
- kHSPhoneKey4 = 5,
- kHSPhoneKey5 = 6,
- kHSPhoneKey6 = 7,
- kHSPhoneKey7 = 8,
- kHSPhoneKey8 = 9,
- kHSPhoneKey9 = 10,
- kHSPhoneKey0 = 11,
- kHSPhoneKeySharp = 12,
- kHSPhoneKeyStar = 13,
- kHSPhoneExit = 14
-};
-
-Scene53::Scene53(GnapEngine *vm) : Scene(vm) {
- _s53_isGnapPhoning = false;
- _s53_currHandSequenceId = -1;
- _s53_callsMadeCtr = 0;
- _s53_callsRndUsed = 0;
-}
-
-int Scene53::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- return 0x75;
-}
-
-void Scene53::updateHotspots() {
- _vm->setHotspot(kHSPlatypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
- _vm->setHotspot(kHSPhoneKey1, 336, 238, 361, 270, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey2, 376, 243, 405, 274, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey3, 415, 248, 441, 276, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey4, 329, 276, 358, 303, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey5, 378, 282, 408, 311, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey6, 417, 286, 446, 319, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey7, 332, 311, 361, 342, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey8, 376, 318, 407, 349, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey9, 417, 320, 447, 353, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKey0, 377, 352, 405, 384, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKeySharp, 419, 358, 450, 394, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneKeyStar, 328, 346, 359, 379, SF_GRAB_CURSOR);
- _vm->setHotspot(kHSPhoneExit, 150, 585, 650, 600, SF_EXIT_D_CURSOR);
-
- _vm->setDeviceHotspot(kHSDevice, -1, -1, -1, -1);
- _vm->_hotspotsCount = 15;
-}
-
-int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
- static const int kGnapHandSequenceIds[13] = {
- 0x00,
- 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
- 0x4C, 0x4D, 0x4E, 0x50, 0x51, 0x4F
- };
-
- static const int kPlatypusHandSequenceIds[13] = {
- 0x00,
- 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
- 0x58, 0x59, 0x5A, 0x5C, 0x5D, 0x5B
- };
-
- if (_s53_isGnapPhoning) {
- _vm->_gameSys->setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
- _vm->_gameSys->insertSequence(kGnapHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s53_currHandSequenceId = kGnapHandSequenceIds[buttonNum];
- } else {
- _vm->_gameSys->setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
- _vm->_gameSys->insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s53_currHandSequenceId = kPlatypusHandSequenceIds[buttonNum];
- }
-
- _vm->_gnapActionStatus = 6;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- // checkGameAppStatus();
- _vm->updateMouseCursor();
- _vm->gameUpdateTick();
- }
- _vm->_gnapActionStatus = -1;
-
- if (buttonNum < 11)
- phoneNumber = buttonNum % 10 + 10 * phoneNumber;
-
- return phoneNumber;
-}
-
-int Scene53::getRandomCallIndex() {
- int index, tries = 0;
- if (_s53_callsRndUsed == 0x7FFF)
- _s53_callsRndUsed = 0;
- do {
- index = _vm->getRandom(16);
- if (++tries == 300)
- _s53_callsRndUsed = 0;
- } while (_s53_callsRndUsed & (1 << index));
- _s53_callsRndUsed |= (1 << index);
- return index;
-}
-
-void Scene53::runRandomCall() {
- static const int kCallSequenceIds[15] = {
- 0x60, 0x61, 0x62, 0x63, 0x64,
- 0x65, 0x66, 0x67, 0x68, 0x69,
- 0x6A, 0x6B, 0x6C, 0x6D, 0x71
- };
-
- ++_s53_callsMadeCtr;
-
- if (_s53_callsMadeCtr <= 10) {
- int index;
-
- do {
- index = getRandomCallIndex();
- } while (!_s53_isGnapPhoning && (index == 0 || index == 3 || index == 4 || index == 11));
- _vm->_gameSys->setAnimation(kCallSequenceIds[index], 1, 6);
- _vm->_gameSys->insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
- } else {
- _vm->_gameSys->setAnimation(0x74, 1, 6);
- _vm->_gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
- _s53_callsMadeCtr = 0;
- }
-
- _vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _vm->_gnapActionStatus = -1;
-}
-
-void Scene53::runChitChatLine() {
- bool flag = false;
- int sequenceId = -1;
-
- _vm->_gameSys->setAnimation(0x6E, 1, 6);
- _vm->_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
-
- _vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _vm->_gnapActionStatus = -1;
-
- if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s53_currHandSequenceId = 0x45;
- } else {
- _vm->_gameSys->insertSequence(0x45, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _s53_currHandSequenceId = 0x5E;
- }
-
- _vm->_hotspots[kHSDevice]._flags = SF_DISABLED;
-
- while (!flag) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case 2:
- sequenceId = 0x6F;
- flag = 1;
- break;
- case 3:
- sequenceId = 0x70;
- flag = 1;
- break;
- case 4:
- sequenceId = 0x71;
- flag = 1;
- break;
- case 14:
- sequenceId = -1;
- flag = 1;
- _vm->_isLeavingScene = true;
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 17;
- break;
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
- break;
- }
-
- if (flag && sequenceId != -1) {
- _vm->stopSound(0xA0);
- pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
- _vm->_gnapActionStatus = 1;
- _vm->_gameSys->setAnimation(sequenceId, 1, 6);
- _vm->_gameSys->insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
- _vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _vm->_gnapActionStatus = -1;
- _vm->_gameSys->setAnimation(0x72, 1, 6);
- _vm->_gameSys->insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
- _vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _vm->_gnapActionStatus = -1;
- }
- }
-
- updateHotspots();
-
- _vm->_gnapActionStatus = 1;
-
- if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _s53_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
- }
-}
-
-void Scene53::run() {
- int phoneNumber = 0;
- int phoneNumberLen = 0;
-
- _vm->queueInsertDeviceIcon();
-
- if (_vm->isFlag(kGFSpringTaken)) {
- _s53_currHandSequenceId = 0x45;
- _s53_isGnapPhoning = true;
- } else {
- _s53_currHandSequenceId = 0x5E;
- _s53_isGnapPhoning = false;
- }
-
- _vm->_gameSys->insertSequence(_s53_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->endSceneInit();
- _vm->setVerbCursor(GRAB_CURSOR);
- _vm->playSound(0xA0, true);
-
- while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
- _vm->updateCursorByHotspot();
-
- _vm->testWalk(0, 0, -1, -1, -1, -1);
-
- _vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
- _vm->updateGrabCursorSprite(0, 0);
-
- switch (_vm->_sceneClickedHotspot) {
- case 1:
- if (_vm->_gnapActionStatus < 0) {
- _vm->runMenu();
- updateHotspots();
- }
- break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- _vm->stopSound(0xA0);
- ++phoneNumberLen;
- phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1);
- debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
- if (phoneNumberLen == 7) {
- _vm->_gnapActionStatus = 1;
- if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _s53_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
- }
- if (phoneNumber == 7284141) {
- runChitChatLine();
- phoneNumber = 0;
- phoneNumberLen = 0;
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 17;
- } else if (phoneNumber != 5556789 || _vm->isFlag(kGFPictureTaken)) {
- runRandomCall();
- phoneNumber = 0;
- phoneNumberLen = 0;
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 17;
- } else {
- phoneNumber = 0;
- phoneNumberLen = 0;
- _vm->_sceneDone = true;
- _vm->_newSceneNum = 17;
- if (_s53_isGnapPhoning)
- _vm->setFlag(kGFUnk25);
- else
- _vm->setFlag(kGFPlatypusTalkingToAssistant);
- }
- }
- break;
- case 12:
- case 13:
- pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
- break;
- case 14:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_gnapActionStatus = 1;
- if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _s53_currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
- _vm->updateMouseCursor();
- // checkGameAppStatus();
- _vm->gameUpdateTick();
- }
- _s53_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
- }
- _vm->_isLeavingScene = true;
- _vm->_sceneDone = true;
- _vm->_gnapActionStatus = 0;
- _vm->_newSceneNum = 17;
- }
- break;
- }
-
- _vm->checkGameKeys();
-
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
- _vm->runMenu();
- updateHotspots();
- }
- _vm->gameUpdateTick();
- }
-}
-
-} // End of namespace Gnap
diff --git a/engines/gnap/scenes/scene53.h b/engines/gnap/scenes/scene53.h
deleted file mode 100644
index 7244117..0000000
--- a/engines/gnap/scenes/scene53.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef GNAP_SCENE53_H
-#define GNAP_SCENE53_H
-
-#include "gnap/debugger.h"
-#include "gnap/scenes/scenecore.h"
-
-namespace Gnap {
-
-class GnapEngine;
-
-class Scene53: public Scene {
-public:
- Scene53(GnapEngine *vm);
- ~Scene53() {}
-
- virtual int init();
- virtual void updateHotspots();
- virtual void run();
- virtual void updateAnimations() {};
- virtual void updateAnimationsCb() {};
-
-private:
- bool _s53_isGnapPhoning;
- int _s53_currHandSequenceId;
- int _s53_callsMadeCtr;
- uint _s53_callsRndUsed;
-
- int pressPhoneNumberButton(int phoneNumber, int buttonNum);
- int getRandomCallIndex();
- void runRandomCall();
- void runChitChatLine();
-};
-
-} // End of namespace Gnap
-#endif // GNAP_SCENE53_H
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 6fc51d8..2b67d59 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -25,19 +25,17 @@
#include "gnap/resource.h"
#include "gnap/scenes/scenecore.h"
+
+#include "gnap/scenes/arcade.h"
#include "gnap/scenes/groupcs.h"
#include "gnap/scenes/group0.h"
#include "gnap/scenes/group1.h"
#include "gnap/scenes/group2.h"
#include "gnap/scenes/group3.h"
#include "gnap/scenes/group4.h"
+#include "gnap/scenes/group5.h"
#include "gnap/scenes/intro.h"
-#include "gnap/scenes/scene50.h"
-#include "gnap/scenes/scene51.h"
-#include "gnap/scenes/scene52.h"
-#include "gnap/scenes/scene53.h"
-
namespace Gnap {
int GnapEngine::initSceneLogic() {
Commit: 5e950a7acf9e077aa673b3f5b0e575888c250d3c
https://github.com/scummvm/scummvm/commit/5e950a7acf9e077aa673b3f5b0e575888c250d3c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:47+02:00
Commit Message:
GNAP: Move enums to header files
Changed paths:
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group0.h
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group1.h
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group2.h
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 5e45555..2ad6d88 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -27,32 +27,6 @@
namespace Gnap {
-enum {
- kHS01Platypus = 0,
- kHS01ExitTruck = 1,
- kHS01Mud = 2,
- kHS01Pigs = 3,
- kHS01Spaceship = 4,
- kHS01Device = 5,
- kHS01WalkArea1 = 6,
- kHS01WalkArea2 = 7,
- kHS01WalkArea3 = 8,
- kHS01WalkArea4 = 9,
- kHS01WalkArea5 = 10,
- kHS01WalkArea6 = 11,
- kHS01WalkArea7 = 12,
- kHS01WalkArea8 = 13
-};
-
-enum {
- kAS01LookSpaceship = 1,
- kAS01LookSpaceshipDone = 2,
- kAS01LeaveScene = 3,
- kAS01TakeMud = 5,
- kAS01LookPigs = 6,
- kAS01UsePigs = 7
-};
-
Scene01::Scene01(GnapEngine *vm) : Scene(vm) {
_pigsIdCtr = 0;
_smokeIdCtr = 0;
@@ -382,38 +356,6 @@ void Scene01::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS02Platypus = 0,
- kHS02Chicken = 1,
- kHS02Truck1 = 2,
- kHS02Truck2 = 3,
- kHS02TruckGrill = 4,
- kHS02Device = 5,
- kHS02ExitHouse = 6,
- kHS02ExitBarn = 7,
- kHS02ExitCreek = 8,
- kHS02ExitPigpen = 9,
- kHS02WalkArea1 = 10,
- kHS02WalkArea2 = 11,
- kHS02WalkArea3 = 12,
- kHS02WalkArea4 = 13
-};
-
-enum {
- kAS02UseTruckNoKeys = 0,
- kAS02UseGasWithTruck = 1,
- kAS02UseTruckGas = 2,
- kAS02UseTruckNoGas = 3,
- kAS02GrabTruckGrill = 5,
- kAS02LeaveScene = 6,
- kAS02TalkChicken = 7,
- kAS02GrabChicken = 8,
- kAS02GrabChickenDone = 9,
- kAS02UseTruckNoKeysDone = 11,
- kAS02UseGasWithTruckDone = 12,
- kAS02UseTwigWithChicken = 16
-};
-
Scene02::Scene02(GnapEngine *vm) : Scene(vm) {
_truckGrillCtr = 0;
_nextChickenSequenceId = 0;
@@ -892,31 +834,6 @@ void Scene02::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS03Platypus = 0,
- kHS03Grass = 1,
- kHS03ExitTruck = 2,
- kHS03Creek = 3,
- kHS03TrappedPlatypus = 4,
- kHS03Device = 5,
- kHS03WalkAreas1 = 6,
- kHS03WalkAreas2 = 7,
- kHS03PlatypusWalkArea = 8,
- kHS03WalkAreas3 = 9
-};
-
-enum {
- kAS03LeaveScene = 0,
- kAS03FreePlatypus = 1,
- kAS03HypnotizePlat = 2,
- kAS03HypnotizeScaredPlat= 3,
- kAS03FreePlatypusDone = 4,
- kAS03GrabPlatypus = 5,
- kAS03GrabCreek = 6,
- kAS03GrabCreekDone = 7,
- kAS03GrabScaredPlatypus = 8
-};
-
Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
_nextPlatSequenceId = -1;
_platypusScared = false;
@@ -1382,34 +1299,6 @@ void Scene03::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS04Platypus = 0,
- kHS04Twig = 1,
- kHS04Dog = 2,
- kHS04Axe = 3,
- kHS04Door = 4,
- kHS04ExitTruck = 5,
- kHS04Device = 6,
- kHS04Window = 7,
- kHS04ExitBarn = 8,
- kHS04WalkArea1 = 9,
- kHS04WalkArea2 = 10
-};
-
-enum {
- kAS04OpenDoor = 1,
- kAS04GetKeyFirst = 2,
- kAS04GetKeyAnother = 3,
- kAS04LeaveScene = 4,
- kAS04GetKeyFirstDone = 6,
- kAS04GetKeyFirst2 = 7,
- kAS04GetKeyAnother2 = 8,
- kAS04GetKeyAnotherDone = 9,
- kAS04OpenDoorDone = 10,
- kAS04GrabDog = 12,
- kAS04GrabAxe = 13
-};
-
Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
_dogIdCtr = 0;
_triedWindow = false;
@@ -1926,31 +1815,6 @@ void Scene04::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS05Platypus = 0,
- kHS05Haystack = 1,
- kHS05Padlock = 2,
- kHS05Ladder = 3,
- kHS05ExitHouse = 4,
- kHS05Chicken = 5,
- kHS05Device = 6,
- kHS05WalkArea1 = 7,
- kHS05WalkArea2 = 8,
- kHS05WalkArea3 = 9
-};
-
-enum {
- kAS05PlatSearchHaystack = 0,
- kAS05TryPickPadlock = 1,
- kAS05PickPadlock = 2,
- kAS05TalkChicken = 3,
- kAS05GrabChicken = 4,
- kAS05GrabLadder = 5,
- kAS05EnterBarn = 6,
- kAS05UseTwigWithChicken = 11,
- kAS05LeaveScene = 12
-};
-
Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
@@ -2364,29 +2228,6 @@ void Scene05::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS06Platypus = 0,
- kHS06Gas = 1,
- kHS06Ladder = 2,
- kHS06Horse = 3,
- kHS06ExitOutsideBarn = 4,
- kHS06Device = 5,
- kHS06WalkArea1 = 6,
- kHS06WalkArea2 = 7,
- kHS06WalkArea3 = 8,
- kHS06WalkArea4 = 9,
- kHS06WalkArea5 = 10
-};
-
-enum {
- kAS06TryToGetGas = 0,
- kAS06TryToClimbLadder = 1,
- kAS06TryToClimbLadderDone = 2,
- kAS06TalkToHorse = 3,
- kAS06UseTwigOnHorse = 4,
- kAS06LeaveScene = 5
-};
-
Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
_horseTurnedBack = false;;
_nextPlatSequenceId = -1;
@@ -2782,21 +2623,6 @@ void Scene06::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS07Platypus = 0,
- kHS07ExitHouse = 1,
- kHS07Dice = 2,
- kHS07Device = 3,
- kHS07WalkArea1 = 4,
- kHS07WalkArea2 = 5,
- kHS07WalkArea3 = 6
-};
-
-enum {
- kAS07Wait = 0,
- kAS07LeaveScene = 1
-};
-
Scene07::Scene07(GnapEngine *vm) : Scene(vm) {
}
@@ -3024,31 +2850,6 @@ void Scene07::updateAnimations() {
/*****************************************************************************/
-enum {
- kH08SPlatypus = 0,
- kHS08ExitBackdoor = 1,
- kHS08ExitCrash = 2,
- kHS08Man = 3,
- kHS08Door = 4,
- kHS08Meat = 5,
- kHS08Bone = 6,
- kHS08Toy = 7,
- kHS08WalkArea1 = 8,
- kHS08Device = 9,
- kHS08WalkArea2 = 10
-};
-
-enum {
- kAS08LeaveScene = 0,
- kAS08TalkMan = 1,
- kAS08LookMan = 2,
- kAS08LookDog = 3,
- kAS08GrabDog = 4,
- kAS08TalkDog = 5,
- kAS08PlatWithMan = 6,
- kAS08PlatWithDog = 7
-};
-
Scene08::Scene08(GnapEngine *vm) : Scene(vm) {
_nextDogSequenceId = -1;
_currDogSequenceId = -1;
@@ -3523,23 +3324,6 @@ void Scene08::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS09Platypus = 0,
- kHS09ExitKitchen = 1,
- kHS09ExitHouse = 2,
- kHS09Trash = 3,
- kHS09Device = 4,
- kHS09WalkArea1 = 5,
- kHS09WalkArea2 = 6,
- kHS09WalkArea3 = 7
-};
-
-enum {
- kAS09LeaveScene = 0,
- kAS09SearchTrash = 1,
- kAS09SearchTrashDone = 2
-};
-
Scene09::Scene09(GnapEngine *vm) : Scene(vm) {
}
diff --git a/engines/gnap/scenes/group0.h b/engines/gnap/scenes/group0.h
index b8df3af..b288512 100644
--- a/engines/gnap/scenes/group0.h
+++ b/engines/gnap/scenes/group0.h
@@ -27,6 +27,224 @@
namespace Gnap {
+enum {
+ kHS01Platypus = 0,
+ kHS01ExitTruck = 1,
+ kHS01Mud = 2,
+ kHS01Pigs = 3,
+ kHS01Spaceship = 4,
+ kHS01Device = 5,
+ kHS01WalkArea1 = 6,
+ kHS01WalkArea2 = 7,
+ kHS01WalkArea3 = 8,
+ kHS01WalkArea4 = 9,
+ kHS01WalkArea5 = 10,
+ kHS01WalkArea6 = 11,
+ kHS01WalkArea7 = 12,
+ kHS01WalkArea8 = 13
+};
+
+enum {
+ kHS02Platypus = 0,
+ kHS02Chicken = 1,
+ kHS02Truck1 = 2,
+ kHS02Truck2 = 3,
+ kHS02TruckGrill = 4,
+ kHS02Device = 5,
+ kHS02ExitHouse = 6,
+ kHS02ExitBarn = 7,
+ kHS02ExitCreek = 8,
+ kHS02ExitPigpen = 9,
+ kHS02WalkArea1 = 10,
+ kHS02WalkArea2 = 11,
+ kHS02WalkArea3 = 12,
+ kHS02WalkArea4 = 13
+};
+
+enum {
+ kHS03Platypus = 0,
+ kHS03Grass = 1,
+ kHS03ExitTruck = 2,
+ kHS03Creek = 3,
+ kHS03TrappedPlatypus = 4,
+ kHS03Device = 5,
+ kHS03WalkAreas1 = 6,
+ kHS03WalkAreas2 = 7,
+ kHS03PlatypusWalkArea = 8,
+ kHS03WalkAreas3 = 9
+};
+
+enum {
+ kHS04Platypus = 0,
+ kHS04Twig = 1,
+ kHS04Dog = 2,
+ kHS04Axe = 3,
+ kHS04Door = 4,
+ kHS04ExitTruck = 5,
+ kHS04Device = 6,
+ kHS04Window = 7,
+ kHS04ExitBarn = 8,
+ kHS04WalkArea1 = 9,
+ kHS04WalkArea2 = 10
+};
+
+enum {
+ kHS05Platypus = 0,
+ kHS05Haystack = 1,
+ kHS05Padlock = 2,
+ kHS05Ladder = 3,
+ kHS05ExitHouse = 4,
+ kHS05Chicken = 5,
+ kHS05Device = 6,
+ kHS05WalkArea1 = 7,
+ kHS05WalkArea2 = 8,
+ kHS05WalkArea3 = 9
+};
+
+enum {
+ kHS06Platypus = 0,
+ kHS06Gas = 1,
+ kHS06Ladder = 2,
+ kHS06Horse = 3,
+ kHS06ExitOutsideBarn = 4,
+ kHS06Device = 5,
+ kHS06WalkArea1 = 6,
+ kHS06WalkArea2 = 7,
+ kHS06WalkArea3 = 8,
+ kHS06WalkArea4 = 9,
+ kHS06WalkArea5 = 10
+};
+
+enum {
+ kHS07Platypus = 0,
+ kHS07ExitHouse = 1,
+ kHS07Dice = 2,
+ kHS07Device = 3,
+ kHS07WalkArea1 = 4,
+ kHS07WalkArea2 = 5,
+ kHS07WalkArea3 = 6
+};
+
+enum {
+ kH08SPlatypus = 0,
+ kHS08ExitBackdoor = 1,
+ kHS08ExitCrash = 2,
+ kHS08Man = 3,
+ kHS08Door = 4,
+ kHS08Meat = 5,
+ kHS08Bone = 6,
+ kHS08Toy = 7,
+ kHS08WalkArea1 = 8,
+ kHS08Device = 9,
+ kHS08WalkArea2 = 10
+};
+
+enum {
+ kHS09Platypus = 0,
+ kHS09ExitKitchen = 1,
+ kHS09ExitHouse = 2,
+ kHS09Trash = 3,
+ kHS09Device = 4,
+ kHS09WalkArea1 = 5,
+ kHS09WalkArea2 = 6,
+ kHS09WalkArea3 = 7
+};
+
+enum {
+ kAS01LookSpaceship = 1,
+ kAS01LookSpaceshipDone = 2,
+ kAS01LeaveScene = 3,
+ kAS01TakeMud = 5,
+ kAS01LookPigs = 6,
+ kAS01UsePigs = 7
+};
+
+enum {
+ kAS02UseTruckNoKeys = 0,
+ kAS02UseGasWithTruck = 1,
+ kAS02UseTruckGas = 2,
+ kAS02UseTruckNoGas = 3,
+ kAS02GrabTruckGrill = 5,
+ kAS02LeaveScene = 6,
+ kAS02TalkChicken = 7,
+ kAS02GrabChicken = 8,
+ kAS02GrabChickenDone = 9,
+ kAS02UseTruckNoKeysDone = 11,
+ kAS02UseGasWithTruckDone = 12,
+ kAS02UseTwigWithChicken = 16
+};
+
+enum {
+ kAS03LeaveScene = 0,
+ kAS03FreePlatypus = 1,
+ kAS03HypnotizePlat = 2,
+ kAS03HypnotizeScaredPlat= 3,
+ kAS03FreePlatypusDone = 4,
+ kAS03GrabPlatypus = 5,
+ kAS03GrabCreek = 6,
+ kAS03GrabCreekDone = 7,
+ kAS03GrabScaredPlatypus = 8
+};
+
+enum {
+ kAS04OpenDoor = 1,
+ kAS04GetKeyFirst = 2,
+ kAS04GetKeyAnother = 3,
+ kAS04LeaveScene = 4,
+ kAS04GetKeyFirstDone = 6,
+ kAS04GetKeyFirst2 = 7,
+ kAS04GetKeyAnother2 = 8,
+ kAS04GetKeyAnotherDone = 9,
+ kAS04OpenDoorDone = 10,
+ kAS04GrabDog = 12,
+ kAS04GrabAxe = 13
+};
+
+enum {
+ kAS05PlatSearchHaystack = 0,
+ kAS05TryPickPadlock = 1,
+ kAS05PickPadlock = 2,
+ kAS05TalkChicken = 3,
+ kAS05GrabChicken = 4,
+ kAS05GrabLadder = 5,
+ kAS05EnterBarn = 6,
+ kAS05UseTwigWithChicken = 11,
+ kAS05LeaveScene = 12
+};
+
+enum {
+ kAS06TryToGetGas = 0,
+ kAS06TryToClimbLadder = 1,
+ kAS06TryToClimbLadderDone = 2,
+ kAS06TalkToHorse = 3,
+ kAS06UseTwigOnHorse = 4,
+ kAS06LeaveScene = 5
+};
+
+enum {
+ kAS07Wait = 0,
+ kAS07LeaveScene = 1
+};
+
+enum {
+ kAS08LeaveScene = 0,
+ kAS08TalkMan = 1,
+ kAS08LookMan = 2,
+ kAS08LookDog = 3,
+ kAS08GrabDog = 4,
+ kAS08TalkDog = 5,
+ kAS08PlatWithMan = 6,
+ kAS08PlatWithDog = 7
+};
+
+enum {
+ kAS09LeaveScene = 0,
+ kAS09SearchTrash = 1,
+ kAS09SearchTrashDone = 2
+};
+
+/*****************************************************************************/
+
class GnapEngine;
class CutScene;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index fa5b5d0..d746eb5 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -27,27 +27,6 @@
namespace Gnap {
-enum {
- kHS10Platypus = 0,
- kHS10ExitBar = 1,
- kHS10ExitBackdoor = 2,
- kHS10Cook = 3,
- kHS10Tongs = 4,
- kHS10Box = 5,
- kHS10Oven = 6,
- kHS10WalkArea1 = 7,
- kHS10Device = 8,
- kHS10WalkArea2 = 9,
- kHS10WalkArea3 = 10,
- kHS10WalkArea4 = 11
-};
-
-enum {
- kAS10LeaveScene = 0,
- kAS10AnnoyCook = 1,
- kAS10PlatWithBox = 4
-};
-
Scene10::Scene10(GnapEngine *vm) : Scene(vm) {
_nextCookSequenceId = -1;
_currCookSequenceId = -1;
@@ -499,32 +478,6 @@ void Scene10::updateAnimationsCb() {
/*****************************************************************************/
-enum {
- kHS11Platypus = 0,
- kHS11ExitKitchen = 1,
- kHS11ExitToilet = 2,
- kHS11ExitLeft = 3,
- kHS11GoggleGuy = 4,
- kHS11HookGuy = 5,
- kHS11Billard = 6,
- kHS11WalkArea1 = 7,
- kHS11Device = 8,
- kHS11WalkArea2 = 9,
- kHS11WalkArea3 = 10,
- kHS11WalkArea4 = 11,
- kHS11WalkArea5 = 12
-};
-
-enum {
- kAS11LeaveScene = 0,
- kAS11ShowMagazineToGoggleGuy = 3,
- kAS11TalkGoggleGuy = 4,
- kAS11GrabHookGuy = 6,
- kAS11ShowItemToHookGuy = 8,
- kAS11TalkHookGuy = 9,
- kAS11GrabBillardBall = 11
-};
-
Scene11::Scene11(GnapEngine *vm) : Scene(vm) {
_billardBallCtr = 0;
_nextHookGuySequenceId = -1;
@@ -958,41 +911,6 @@ void Scene11::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS12Platypus = 0,
- kHS12ExitRight = 1,
- kHS12ToothGuy = 2,
- kHS12Barkeeper = 3,
- kHS12BeardGuy = 4,
- kHS12Jukebox = 5,
- kHS12WalkArea1 = 6,
- kHS12Device = 7,
- kHS12WalkArea2 = 8,
- kHS12WalkArea3 = 9,
- kHS12WalkArea4 = 10
-};
-
-enum {
- kAS12LeaveScene = 0,
- kAS12QuarterToToothGuyDone = 1,
- kAS12TalkToothGuy = 2,
- kAS12GrabToothGuy = 4,
- kAS12ShowItemToToothGuy = 5,
- kAS12QuarterWithHoleToToothGuy = 6,
- kAS12QuarterToToothGuy = 7,
- kAS12TalkBeardGuy = 8,
- kAS12LookBeardGuy = 9,
- kAS12GrabBeardGuy = 10,
- kAS12ShowItemToBeardGuy = 11,
- kAS12TalkBarkeeper = 12,
- kAS12LookBarkeeper = 13,
- kAS12ShowItemToBarkeeper = 15,
- kAS12QuarterWithBarkeeper = 16,
- kAS12PlatWithBarkeeper = 17,
- kAS12PlatWithToothGuy = 18,
- kAS12PlatWithBeardGuy = 19
-};
-
Scene12::Scene12(GnapEngine *vm) : Scene(vm) {
_nextBeardGuySequenceId = -1;
_currBeardGuySequenceId = -1;
@@ -1497,37 +1415,6 @@ void Scene12::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS13Platypus = 0,
- kHS13ExitBar = 1,
- kHS13WalkArea1 = 2,
- kHS13BackToilet = 3,
- kHS13FrontToilet = 4,
- kHS13Urinal = 5,
- kHS13Scribble = 6,
- kHS13Sink = 7,
- kHS13WalkArea2 = 8,
- kHS13Device = 9,
- kHS13WalkArea3 = 10,
- kHS13WalkArea4 = 11,
- kHS13WalkArea5 = 12,
- kHS13WalkArea6 = 13,
- kHS13WalkArea7 = 14,
- kHS13WalkArea8 = 15,
- kHS13WalkArea9 = 16
-};
-
-enum {
- kAS13LeaveScene = 0,
- kAS13BackToilet = 1,
- kAS13FrontToilet = 2,
- kAS13LookScribble = 6,
- kAS13GrabSink = 7,
- kAS13GrabSinkDone = 8,
- kAS13Wait = 12,
- kAS13GrabUrinal = 13
-};
-
Scene13::Scene13(GnapEngine *vm) : Scene(vm) {
_backToiletCtr = -1;
}
@@ -1920,14 +1807,6 @@ void Scene13::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS14Platypus = 0,
- kHS14Exit = 1,
- kHS14Coin = 2,
- kHS14Toilet = 3,
- kHS14Device = 4
-};
-
Scene14::Scene14(GnapEngine *vm) : Scene(vm) {
}
@@ -2081,26 +1960,6 @@ void Scene14::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS15Platypus = 0,
- kHS15Exit = 1,
- kHS15Button1 = 2,
- kHS15Button2 = 3,
- kHS15Button3 = 4,
- kHS15Button4 = 5,
- kHS15Button5 = 6,
- kHS15Button6 = 7,
- kHS15ButtonA = 8,
- kHS15ButtonB = 9,
- kHS15ButtonC = 10,
- kHS15ButtonD = 11,
- kHS15ButtonE = 12,
- kHS15ButtonF = 13,
- kHS15CoinSlot = 14,
- kHS15PlayButton = 15,
- kHS15Device = 16
-};
-
Scene15::Scene15(GnapEngine *vm) : Scene(vm) {
_nextRecordSequenceId = -1;
_currRecordSequenceId = -1;
@@ -2397,37 +2256,6 @@ void Scene15::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS17Platypus = 0,
- kHS17Phone1 = 1,
- kHS17Phone2 = 2,
- kHS17ExitGrubCity = 3,
- kHS17Device = 4,
- kHS17ExitToyStore = 5,
- kHS17Wrench = 6,
- kHS17WalkArea1 = 7,
- kHS17WalkArea2 = 8,
- kHS17WalkArea3 = 9
-};
-
-enum {
- kAS17TryGetWrench = 0,
- kAS17GetWrench2 = 1,
- kAS17GetWrenchDone = 2,
- kAS17GetWrench1 = 3,
- kAS17PlatUsePhone = 4,
- kAS17PutCoinIntoPhone = 5,
- kAS17GetCoinFromPhone = 6,
- kAS17GetCoinFromPhoneDone = 7,
- kAS17PutCoinIntoPhoneDone = 8,
- kAS17GnapUsePhone = 9,
- kAS17GetWrenchGnapReady = 10,
- kAS17GnapHangUpPhone = 11,
- kAS17PlatPhoningAssistant = 12,
- kAS17PlatHangUpPhone = 14,
- kAS17LeaveScene = 15
-};
-
Scene17::Scene17(GnapEngine *vm) : Scene(vm) {
_platTryGetWrenchCtr = 0;
_wrenchCtr = 2;
@@ -3225,44 +3053,6 @@ static const int kScene18SequenceIds[] = {
0x219, 0x21A, 0x21B, 0x21C, 0x21D
};
-enum {
- kHS18Platypus = 0,
- kHS18GarbageCan = 1,
- kHS18Device = 2,
- kHS18ExitToyStore = 3,
- kHS18ExitPhoneBooth = 4,
- kHS18ExitGrubCity = 5,
- kHS18HydrantTopValve = 6,
- kHS18HydrantRightValve = 7,
- kHS18CowboyHat = 8,
- kHS18WalkArea1 = 9,
- kHS18WalkArea2 = 10
-};
-
-enum {
- kAS18OpenRightValveNoGarbageCanDone = 0,
- kAS18OpenRightValveNoGarbageCan = 1,
- kAS18CloseRightValveNoGarbageCan = 2,
- kAS18OpenTopValveDone = 3,
- kAS18OpenTopValve = 4,
- kAS18CloseTopValve = 5,
- kAS18GrabGarbageCanFromStreet = 6,
- kAS18GrabCowboyHat = 7,
- kAS18GrabGarbageCanFromHydrant = 8,
- kAS18PutGarbageCanOnRunningHydrant = 9,
- kAS18PutGarbageCanOnRunningHydrant2 = 10,
- kAS18GrabCowboyHatDone = 11,
- kAS18StandingOnHydrant = 12,
- kAS18OpenRightValveWithGarbageCan = 13,
- kAS18OpenRightValveWithGarbageCanDone = 14,
- kAS18CloseRightValveWithGarbageCan = 15,
- kAS18PutGarbageCanOnHydrant = 16,
- kAS18PutGarbageCanOnHydrantDone = 17,
- kAS18PlatComesHere = 18,
- kAS18CloseRightValveWithGarbageCanDone = 19,
- kAS18LeaveScene = 20
-};
-
Scene18::Scene18(GnapEngine *vm) : Scene(vm) {
_cowboyHatSurface = nullptr;
@@ -4227,34 +4017,6 @@ static const int kS19ShopAssistantSequenceIds[] = {
0x6F, 0x70, 0x71, 0x72, 0x73
};
-enum {
- kHS19Platypus = 0,
- kHS19ExitOutsideToyStore = 1,
- kHS19Device = 2,
- kHS19Picture = 3,
- kHS19ShopAssistant = 4,
- kHS19Toy1 = 5,
- kHS19Toy2 = 6,
- kHS19Toy3 = 7,
- kHS19Phone = 8,
- kHS19Toy4 = 9,
- kHS19Toy5 = 10,
- kHS19Toy6 = 11,
- kHS19Toy7 = 12,
- kHS19WalkArea1 = 13,
- kHS19WalkArea2 = 14,
- kHS19WalkArea3 = 15
-};
-
-enum {
- kAS19UsePhone = 0,
- kAS19GrabToy = 1,
- kAS19GrabPicture = 2,
- kAS19GrabPictureDone = 3,
- kAS19TalkShopAssistant = 4,
- kAS19LeaveScene = 5
-};
-
Scene19::Scene19(GnapEngine *vm) : Scene(vm) {
_toyGrabCtr = 0;
_pictureSurface = 0;
diff --git a/engines/gnap/scenes/group1.h b/engines/gnap/scenes/group1.h
index 451a652..a1f86e2 100644
--- a/engines/gnap/scenes/group1.h
+++ b/engines/gnap/scenes/group1.h
@@ -27,6 +27,246 @@
namespace Gnap {
+enum {
+ kHS10Platypus = 0,
+ kHS10ExitBar = 1,
+ kHS10ExitBackdoor = 2,
+ kHS10Cook = 3,
+ kHS10Tongs = 4,
+ kHS10Box = 5,
+ kHS10Oven = 6,
+ kHS10WalkArea1 = 7,
+ kHS10Device = 8,
+ kHS10WalkArea2 = 9,
+ kHS10WalkArea3 = 10,
+ kHS10WalkArea4 = 11
+};
+
+enum {
+ kHS11Platypus = 0,
+ kHS11ExitKitchen = 1,
+ kHS11ExitToilet = 2,
+ kHS11ExitLeft = 3,
+ kHS11GoggleGuy = 4,
+ kHS11HookGuy = 5,
+ kHS11Billard = 6,
+ kHS11WalkArea1 = 7,
+ kHS11Device = 8,
+ kHS11WalkArea2 = 9,
+ kHS11WalkArea3 = 10,
+ kHS11WalkArea4 = 11,
+ kHS11WalkArea5 = 12
+};
+
+enum {
+ kHS12Platypus = 0,
+ kHS12ExitRight = 1,
+ kHS12ToothGuy = 2,
+ kHS12Barkeeper = 3,
+ kHS12BeardGuy = 4,
+ kHS12Jukebox = 5,
+ kHS12WalkArea1 = 6,
+ kHS12Device = 7,
+ kHS12WalkArea2 = 8,
+ kHS12WalkArea3 = 9,
+ kHS12WalkArea4 = 10
+};
+
+enum {
+ kHS13Platypus = 0,
+ kHS13ExitBar = 1,
+ kHS13WalkArea1 = 2,
+ kHS13BackToilet = 3,
+ kHS13FrontToilet= 4,
+ kHS13Urinal = 5,
+ kHS13Scribble = 6,
+ kHS13Sink = 7,
+ kHS13WalkArea2 = 8,
+ kHS13Device = 9,
+ kHS13WalkArea3 = 10,
+ kHS13WalkArea4 = 11,
+ kHS13WalkArea5 = 12,
+ kHS13WalkArea6 = 13,
+ kHS13WalkArea7 = 14,
+ kHS13WalkArea8 = 15,
+ kHS13WalkArea9 = 16
+};
+
+enum {
+ kHS14Platypus = 0,
+ kHS14Exit = 1,
+ kHS14Coin = 2,
+ kHS14Toilet = 3,
+ kHS14Device = 4
+};
+
+enum {
+ kHS15Platypus = 0,
+ kHS15Exit = 1,
+ kHS15Button1 = 2,
+ kHS15Button2 = 3,
+ kHS15Button3 = 4,
+ kHS15Button4 = 5,
+ kHS15Button5 = 6,
+ kHS15Button6 = 7,
+ kHS15ButtonA = 8,
+ kHS15ButtonB = 9,
+ kHS15ButtonC = 10,
+ kHS15ButtonD = 11,
+ kHS15ButtonE = 12,
+ kHS15ButtonF = 13,
+ kHS15CoinSlot = 14,
+ kHS15PlayButton = 15,
+ kHS15Device = 16
+};
+
+enum {
+ kHS17Platypus = 0,
+ kHS17Phone1 = 1,
+ kHS17Phone2 = 2,
+ kHS17ExitGrubCity = 3,
+ kHS17Device = 4,
+ kHS17ExitToyStore = 5,
+ kHS17Wrench = 6,
+ kHS17WalkArea1 = 7,
+ kHS17WalkArea2 = 8,
+ kHS17WalkArea3 = 9
+};
+
+enum {
+ kHS18Platypus = 0,
+ kHS18GarbageCan = 1,
+ kHS18Device = 2,
+ kHS18ExitToyStore = 3,
+ kHS18ExitPhoneBooth = 4,
+ kHS18ExitGrubCity = 5,
+ kHS18HydrantTopValve = 6,
+ kHS18HydrantRightValve = 7,
+ kHS18CowboyHat = 8,
+ kHS18WalkArea1 = 9,
+ kHS18WalkArea2 = 10
+};
+
+enum {
+ kHS19Platypus = 0,
+ kHS19ExitOutsideToyStore= 1,
+ kHS19Device = 2,
+ kHS19Picture = 3,
+ kHS19ShopAssistant = 4,
+ kHS19Toy1 = 5,
+ kHS19Toy2 = 6,
+ kHS19Toy3 = 7,
+ kHS19Phone = 8,
+ kHS19Toy4 = 9,
+ kHS19Toy5 = 10,
+ kHS19Toy6 = 11,
+ kHS19Toy7 = 12,
+ kHS19WalkArea1 = 13,
+ kHS19WalkArea2 = 14,
+ kHS19WalkArea3 = 15
+};
+
+enum {
+ kAS10LeaveScene = 0,
+ kAS10AnnoyCook = 1,
+ kAS10PlatWithBox = 4
+};
+
+enum {
+ kAS11LeaveScene = 0,
+ kAS11ShowMagazineToGoggleGuy = 3,
+ kAS11TalkGoggleGuy = 4,
+ kAS11GrabHookGuy = 6,
+ kAS11ShowItemToHookGuy = 8,
+ kAS11TalkHookGuy = 9,
+ kAS11GrabBillardBall = 11
+};
+
+enum {
+ kAS12LeaveScene = 0,
+ kAS12QuarterToToothGuyDone = 1,
+ kAS12TalkToothGuy = 2,
+ kAS12GrabToothGuy = 4,
+ kAS12ShowItemToToothGuy = 5,
+ kAS12QuarterWithHoleToToothGuy = 6,
+ kAS12QuarterToToothGuy = 7,
+ kAS12TalkBeardGuy = 8,
+ kAS12LookBeardGuy = 9,
+ kAS12GrabBeardGuy = 10,
+ kAS12ShowItemToBeardGuy = 11,
+ kAS12TalkBarkeeper = 12,
+ kAS12LookBarkeeper = 13,
+ kAS12ShowItemToBarkeeper = 15,
+ kAS12QuarterWithBarkeeper = 16,
+ kAS12PlatWithBarkeeper = 17,
+ kAS12PlatWithToothGuy = 18,
+ kAS12PlatWithBeardGuy = 19
+};
+
+enum {
+ kAS13LeaveScene = 0,
+ kAS13BackToilet = 1,
+ kAS13FrontToilet = 2,
+ kAS13LookScribble = 6,
+ kAS13GrabSink = 7,
+ kAS13GrabSinkDone = 8,
+ kAS13Wait = 12,
+ kAS13GrabUrinal = 13
+};
+
+enum {
+ kAS17TryGetWrench = 0,
+ kAS17GetWrench2 = 1,
+ kAS17GetWrenchDone = 2,
+ kAS17GetWrench1 = 3,
+ kAS17PlatUsePhone = 4,
+ kAS17PutCoinIntoPhone = 5,
+ kAS17GetCoinFromPhone = 6,
+ kAS17GetCoinFromPhoneDone = 7,
+ kAS17PutCoinIntoPhoneDone = 8,
+ kAS17GnapUsePhone = 9,
+ kAS17GetWrenchGnapReady = 10,
+ kAS17GnapHangUpPhone = 11,
+ kAS17PlatPhoningAssistant = 12,
+ kAS17PlatHangUpPhone = 14,
+ kAS17LeaveScene = 15
+};
+
+enum {
+ kAS18OpenRightValveNoGarbageCanDone = 0,
+ kAS18OpenRightValveNoGarbageCan = 1,
+ kAS18CloseRightValveNoGarbageCan = 2,
+ kAS18OpenTopValveDone = 3,
+ kAS18OpenTopValve = 4,
+ kAS18CloseTopValve = 5,
+ kAS18GrabGarbageCanFromStreet = 6,
+ kAS18GrabCowboyHat = 7,
+ kAS18GrabGarbageCanFromHydrant = 8,
+ kAS18PutGarbageCanOnRunningHydrant = 9,
+ kAS18PutGarbageCanOnRunningHydrant2 = 10,
+ kAS18GrabCowboyHatDone = 11,
+ kAS18StandingOnHydrant = 12,
+ kAS18OpenRightValveWithGarbageCan = 13,
+ kAS18OpenRightValveWithGarbageCanDone = 14,
+ kAS18CloseRightValveWithGarbageCan = 15,
+ kAS18PutGarbageCanOnHydrant = 16,
+ kAS18PutGarbageCanOnHydrantDone = 17,
+ kAS18PlatComesHere = 18,
+ kAS18CloseRightValveWithGarbageCanDone = 19,
+ kAS18LeaveScene = 20
+};
+
+enum {
+ kAS19UsePhone = 0,
+ kAS19GrabToy = 1,
+ kAS19GrabPicture = 2,
+ kAS19GrabPictureDone = 3,
+ kAS19TalkShopAssistant = 4,
+ kAS19LeaveScene = 5
+};
+
+/*****************************************************************************/
+
class GnapEngine;
class CutScene;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 0a89b83..293d58c 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -27,35 +27,6 @@
namespace Gnap {
-enum {
- kHS20Platypus = 0,
- kHS20GroceryStoreHat = 1,
- kHS20ExitParkingLot = 2,
- kHS20StonerGuy = 3,
- kHS20GroceryStoreGuy = 4,
- kHS20Device = 5,
- kHS20ExitInsideGrubCity = 6,
- kHS20ExitOutsideCircusWorld = 7,
- kHS20ExitOutsideToyStore = 8,
- kHS20ExitPhone = 9,
- kHS20WalkArea1 = 10,
- kHS20WalkArea2 = 11
-};
-
-enum {
- kAS20LeaveScene = 0,
- kAS20TalkStonerGuyNoJoint = 2,
- kAS20TalkStonerGuyHasJoint = 3,
- kAS20GrabJoint = 4,
- kAS20ActionDone = 5,
- kAS20TalkGroceryStoreGuy = 6,
- kAS20GrabGroceryStoreGuy = 9,
- kAS20GrabGroceryStoreHat = 10,
- kAS20SwitchGroceryStoreHat = 11,
- kAS20SwitchGroceryStoreHatDone = 12,
- kAS20GrabJointDone = 13
-};
-
Scene20::Scene20(GnapEngine *vm) : Scene(vm) {
_stonerGuyCtr = 3;
_stonerGuyShowingJoint = false;
@@ -731,26 +702,6 @@ void Scene20::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS21Platypus = 0,
- kHS21Banana = 1,
- kHS21OldLady = 2,
- kHS21Device = 3,
- kHS21ExitOutsideGrubCity = 4,
- kHS21WalkArea1 = 5,
- kHS21WalkArea2 = 6
-};
-
-enum {
- kAS21TalkOldLady = 0,
- kAS21GrabBanana = 1,
- kAS21GrabBananaDone = 2,
- kAS21GrabOldLady = 3,
- kAS21UseHatWithOldLady = 4,
- kAS21UseHatWithOldLadyDone = 5,
- kAS21LeaveScene = 6
-};
-
Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
_currOldLadySequenceId = -1;
_nextOldLadySequenceId = -1;
@@ -1047,21 +998,6 @@ void Scene21::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS22Platypus = 0,
- kHS22ExitOutsideGrubCity = 1,
- kHS22ExitBackGrubCity = 2,
- kHS22Cashier = 3,
- kHS22Device = 4,
- kHS22WalkArea1 = 5,
- kHS22WalkArea2 = 6
-};
-
-enum {
- kAS22LeaveScene = 0,
- kAS22TalkCashier = 1
-};
-
Scene22::Scene22(GnapEngine *vm) : Scene(vm) {
_caughtBefore = false;
_cashierCtr = 3;
@@ -1311,22 +1247,6 @@ void Scene22::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS23Platypus = 0,
- kHS23ExitFrontGrubCity = 1,
- kHS23Device = 2,
- kHS23Cereals = 3,
- kHS23WalkArea1 = 4,
- kHS23WalkArea2 = 5
-};
-
-enum {
- kAS23LookCereals = 0,
- kAS23GrabCereals = 1,
- kAS23GrabCerealsDone = 2,
- kAS23LeaveScene = 3
-};
-
Scene23::Scene23(GnapEngine *vm) : Scene(vm) {
_currStoreClerkSequenceId = -1;
_nextStoreClerkSequenceId = -1;
@@ -1578,20 +1498,6 @@ void Scene23::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS24Platypus = 0,
- kHS24ExitCircusWorld = 1,
- kHS24ExitOutsideGrubCity = 2,
- kHS24Device = 3,
- kHS24WalkArea1 = 4,
- kHS24WalkArea2 = 5,
- kHS24WalkArea3 = 6
-};
-
-enum {
- kAS24LeaveScene = 0
-};
-
Scene24::Scene24(GnapEngine *vm) : Scene(vm) {
_currWomanSequenceId = -1;
_nextWomanSequenceId = -1;
@@ -1811,29 +1717,6 @@ void Scene24::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS25Platypus = 0,
- kHS25TicketVendor = 1,
- kHS25ExitOutsideCircusWorld = 2,
- kHS25ExitInsideCircusWorld = 3,
- kHS25Device = 4,
- kHS25Posters1 = 5,
- kHS25Posters2 = 6,
- kHS25Posters3 = 7,
- kHS25Posters4 = 8,
- kHS25WalkArea1 = 9,
- kHS25WalkArea2 = 10
-};
-
-enum {
- kAS25TalkTicketVendor = 0,
- kAS25EnterCircusWihoutTicket = 1,
- kAS25ShowTicketToVendor = 2,
- kAS25ShowTicketToVendorDone = 3,
- kAS25EnterCircusWihoutTicketDone = 4,
- kAS25LeaveScene = 5
-};
-
Scene25::Scene25(GnapEngine *vm) : Scene(vm) {
_currTicketVendorSequenceId = -1;
_nextTicketVendorSequenceId = -1;
@@ -2180,22 +2063,6 @@ void Scene25::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS26Platypus = 0,
- kHS26ExitOutsideCircusWorld = 1,
- kHS26ExitOutsideClown = 2,
- kHS26ExitArcade = 3,
- kHS26ExitElephant = 4,
- kHS26ExitBeerStand = 5,
- kHS26Device = 6,
- kHS26WalkArea1 = 7,
- kHS26WalkArea2 = 8
-};
-
-enum {
- kAS26LeaveScene = 0
-};
-
Scene26::Scene26(GnapEngine *vm) : Scene(vm) {
_currKidSequenceId = -1;
_nextKidSequenceId = -1;
@@ -2406,29 +2273,6 @@ void Scene26::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS27Platypus = 0,
- kHS27Janitor = 1,
- kHS27Device = 2,
- kHS27Bucket = 3,
- kHS27ExitCircus = 4,
- kHS27ExitArcade = 5,
- kHS27ExitBeerStand = 6,
- kHS27ExitClown = 7,
- kHS27WalkArea1 = 8
-};
-
-enum {
- kAS27TalkJanitor = 0,
- kAS27GrabBucket = 1,
- kAS27GrabBucketDone = 2,
- kAS27ShowPictureToJanitor = 3,
- kAS27TryEnterClownTent = 4,
- kAS27TryEnterClownTentDone = 5,
- kAS27EnterClownTent = 6,
- kAS27LeaveScene = 7
-};
-
Scene27::Scene27(GnapEngine *vm) : Scene(vm) {
_nextJanitorSequenceId = -1;
_currJanitorSequenceId = -1;
@@ -2799,31 +2643,6 @@ void Scene27::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS28Platypus = 0,
- kHS28Horn = 1,
- kHS28Clown = 2,
- kHS28ExitOutsideClown = 3,
- kHS28EmptyBucket = 4,
- kHS28Device = 5,
- kHS28WalkArea1 = 6,
- kHS28WalkArea2 = 7
-};
-
-enum {
- kAS28UseBeerBucketWithClown = 0,
- kAS28UsePillBucketWithClown = 1,
- kAS28GrabHornFails = 2,
- kAS28GrabEmptyBucket = 3,
- kAS28GrabHornSuccess = 4,
- kAS28GrabHornSuccessDone = 5,
- kAS28GrabEmptyBucketDone = 6,
- kAS28GrabHornFailsDone = 7,
- kAS28TalkClown = 8,
- kAS28GnapWaiting = 9,
- kAS28LeaveScene = 10
-};
-
Scene28::Scene28(GnapEngine *vm) : Scene(vm) {
_currClownSequenceId = -1;
_nextClownSequenceId = -1;
@@ -3219,21 +3038,6 @@ void Scene28::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS29Platypus = 0,
- kHS29Monkey = 1,
- kHS29Device = 2,
- kHS29ExitCircus = 3,
- kHS29ExitOutsideClown = 4,
- kHS29Aracde = 5,
- kHS29WalkArea1 = 6
-};
-
-enum {
- kAS29UseBananaWithMonkey = 0,
- kAS29LeaveScene = 2
-};
-
Scene29::Scene29(GnapEngine *vm) : Scene(vm) {
_currMonkeySequenceId = -1;
_nextMonkeySequenceId = -1;
diff --git a/engines/gnap/scenes/group2.h b/engines/gnap/scenes/group2.h
index 3e84d4d..3b74d85 100644
--- a/engines/gnap/scenes/group2.h
+++ b/engines/gnap/scenes/group2.h
@@ -27,6 +27,202 @@
namespace Gnap {
+enum {
+ kHS20Platypus = 0,
+ kHS20GroceryStoreHat = 1,
+ kHS20ExitParkingLot = 2,
+ kHS20StonerGuy = 3,
+ kHS20GroceryStoreGuy = 4,
+ kHS20Device = 5,
+ kHS20ExitInsideGrubCity = 6,
+ kHS20ExitOutsideCircusWorld = 7,
+ kHS20ExitOutsideToyStore = 8,
+ kHS20ExitPhone = 9,
+ kHS20WalkArea1 = 10,
+ kHS20WalkArea2 = 11
+};
+
+enum {
+ kHS21Platypus = 0,
+ kHS21Banana = 1,
+ kHS21OldLady = 2,
+ kHS21Device = 3,
+ kHS21ExitOutsideGrubCity = 4,
+ kHS21WalkArea1 = 5,
+ kHS21WalkArea2 = 6
+};
+
+enum {
+ kHS22Platypus = 0,
+ kHS22ExitOutsideGrubCity = 1,
+ kHS22ExitBackGrubCity = 2,
+ kHS22Cashier = 3,
+ kHS22Device = 4,
+ kHS22WalkArea1 = 5,
+ kHS22WalkArea2 = 6
+};
+
+enum {
+ kHS23Platypus = 0,
+ kHS23ExitFrontGrubCity = 1,
+ kHS23Device = 2,
+ kHS23Cereals = 3,
+ kHS23WalkArea1 = 4,
+ kHS23WalkArea2 = 5
+};
+
+enum {
+ kHS24Platypus = 0,
+ kHS24ExitCircusWorld = 1,
+ kHS24ExitOutsideGrubCity = 2,
+ kHS24Device = 3,
+ kHS24WalkArea1 = 4,
+ kHS24WalkArea2 = 5,
+ kHS24WalkArea3 = 6
+};
+
+enum {
+ kHS25Platypus = 0,
+ kHS25TicketVendor = 1,
+ kHS25ExitOutsideCircusWorld = 2,
+ kHS25ExitInsideCircusWorld = 3,
+ kHS25Device = 4,
+ kHS25Posters1 = 5,
+ kHS25Posters2 = 6,
+ kHS25Posters3 = 7,
+ kHS25Posters4 = 8,
+ kHS25WalkArea1 = 9,
+ kHS25WalkArea2 = 10
+};
+
+enum {
+ kHS26Platypus = 0,
+ kHS26ExitOutsideCircusWorld = 1,
+ kHS26ExitOutsideClown = 2,
+ kHS26ExitArcade = 3,
+ kHS26ExitElephant = 4,
+ kHS26ExitBeerStand = 5,
+ kHS26Device = 6,
+ kHS26WalkArea1 = 7,
+ kHS26WalkArea2 = 8
+};
+
+enum {
+ kHS27Platypus = 0,
+ kHS27Janitor = 1,
+ kHS27Device = 2,
+ kHS27Bucket = 3,
+ kHS27ExitCircus = 4,
+ kHS27ExitArcade = 5,
+ kHS27ExitBeerStand = 6,
+ kHS27ExitClown = 7,
+ kHS27WalkArea1 = 8
+};
+
+enum {
+ kHS28Platypus = 0,
+ kHS28Horn = 1,
+ kHS28Clown = 2,
+ kHS28ExitOutsideClown = 3,
+ kHS28EmptyBucket = 4,
+ kHS28Device = 5,
+ kHS28WalkArea1 = 6,
+ kHS28WalkArea2 = 7
+};
+
+enum {
+ kHS29Platypus = 0,
+ kHS29Monkey = 1,
+ kHS29Device = 2,
+ kHS29ExitCircus = 3,
+ kHS29ExitOutsideClown = 4,
+ kHS29Aracde = 5,
+ kHS29WalkArea1 = 6
+};
+
+enum {
+ kAS20LeaveScene = 0,
+ kAS20TalkStonerGuyNoJoint = 2,
+ kAS20TalkStonerGuyHasJoint = 3,
+ kAS20GrabJoint = 4,
+ kAS20ActionDone = 5,
+ kAS20TalkGroceryStoreGuy = 6,
+ kAS20GrabGroceryStoreGuy = 9,
+ kAS20GrabGroceryStoreHat = 10,
+ kAS20SwitchGroceryStoreHat = 11,
+ kAS20SwitchGroceryStoreHatDone = 12,
+ kAS20GrabJointDone = 13
+};
+
+enum {
+ kAS21TalkOldLady = 0,
+ kAS21GrabBanana = 1,
+ kAS21GrabBananaDone = 2,
+ kAS21GrabOldLady = 3,
+ kAS21UseHatWithOldLady = 4,
+ kAS21UseHatWithOldLadyDone = 5,
+ kAS21LeaveScene = 6
+};
+
+enum {
+ kAS22LeaveScene = 0,
+ kAS22TalkCashier = 1
+};
+
+enum {
+ kAS23LookCereals = 0,
+ kAS23GrabCereals = 1,
+ kAS23GrabCerealsDone = 2,
+ kAS23LeaveScene = 3
+};
+
+enum {
+ kAS24LeaveScene = 0
+};
+
+enum {
+ kAS25TalkTicketVendor = 0,
+ kAS25EnterCircusWihoutTicket = 1,
+ kAS25ShowTicketToVendor = 2,
+ kAS25ShowTicketToVendorDone = 3,
+ kAS25EnterCircusWihoutTicketDone = 4,
+ kAS25LeaveScene = 5
+};
+
+enum {
+ kAS26LeaveScene = 0
+};
+
+enum {
+ kAS27TalkJanitor = 0,
+ kAS27GrabBucket = 1,
+ kAS27GrabBucketDone = 2,
+ kAS27ShowPictureToJanitor = 3,
+ kAS27TryEnterClownTent = 4,
+ kAS27TryEnterClownTentDone = 5,
+ kAS27EnterClownTent = 6,
+ kAS27LeaveScene = 7
+};
+
+enum {
+ kAS28UseBeerBucketWithClown = 0,
+ kAS28UsePillBucketWithClown = 1,
+ kAS28GrabHornFails = 2,
+ kAS28GrabEmptyBucket = 3,
+ kAS28GrabHornSuccess = 4,
+ kAS28GrabHornSuccessDone = 5,
+ kAS28GrabEmptyBucketDone = 6,
+ kAS28GrabHornFailsDone = 7,
+ kAS28TalkClown = 8,
+ kAS28GnapWaiting = 9,
+ kAS28LeaveScene = 10
+};
+
+enum {
+ kAS29UseBananaWithMonkey = 0,
+ kAS29LeaveScene = 2
+};
+
class GnapEngine;
class CutScene;
Commit: e0781ea43732fba5df1031093478f8270267b521
https://github.com/scummvm/scummvm/commit/e0781ea43732fba5df1031093478f8270267b521
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:47+02:00
Commit Message:
GNAP: Move more enums to header files
Changed paths:
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group3.h
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group4.h
engines/gnap/scenes/group5.cpp
engines/gnap/scenes/group5.h
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index d61859a..a9b86b7 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -27,23 +27,6 @@
namespace Gnap {
-enum {
- kHS30Platypus = 0,
- kHS30PillMachine = 1,
- kHS30Device = 2,
- kHS30ExitCircus = 3,
- kHS30WalkArea1 = 4
-};
-
-enum {
- kAS30LeaveScene = 0,
- kAS30UsePillMachine = 1,
- kAS30UsePillMachine2 = 2,
- kAS30LookPillMachine = 3,
- kAS30UsePillMachine3 = 4,
- kAS30UsePillMachine4 = 5
-};
-
Scene30::Scene30(GnapEngine *vm) : Scene(vm) {
_kidSequenceId = -1;
}
@@ -284,25 +267,6 @@ void Scene30::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS31Platypus = 0,
- kHS31MeasuringClown = 1,
- kHS31BeerBarrel = 2,
- kHS31Device = 3,
- kHS31ExitCircus = 4,
- kHS31ExitOutsideClown = 5,
- kHS31WalkArea1 = 6
-};
-
-enum {
- kAS31UseBeerBarrel = 1,
- kAS31FillEmptyBucketWithBeer = 2,
- kAS31FillEmptyBucketWithBeerDone = 3,
- kAS31PlatMeasuringClown = 4,
- kAS31UseMeasuringClown = 5,
- kAS31LeaveScene = 6
-};
-
Scene31::Scene31(GnapEngine *vm) : Scene(vm) {
_beerGuyDistracted = false;
_currClerkSequenceId = -1;
@@ -664,27 +628,7 @@ void Scene31::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS32Platypus = 0,
- kHS32ExitTruck = 1,
- kHS32Device = 2,
- kHS32WalkArea1 = 3,
- kHS32WalkArea2 = 4,
- kHS32WalkArea3 = 5,
- kHS32WalkArea4 = 6,
- kHS32WalkArea5 = 7,
- kHS32WalkArea6 = 8,
- kHS32WalkArea7 = 9,
- kHS32WalkArea8 = 10
-};
-
-enum {
- kAS32LeaveScene = 0
-};
-
-Scene32::Scene32(GnapEngine *vm) : Scene(vm) {
-
-}
+Scene32::Scene32(GnapEngine *vm) : Scene(vm) {}
int Scene32::init() {
_vm->_gameSys->setAnimation(0, 0, 0);
@@ -835,25 +779,6 @@ void Scene32::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS33Platypus = 0,
- kHS33Chicken = 1,
- kHS33Device = 2,
- kHS33ExitHouse = 3,
- kHS33ExitBarn = 4,
- kHS33ExitCreek = 5,
- kHS33ExitPigpen = 6,
- kHS33WalkArea1 = 7,
- kHS33WalkArea2 = 8
-};
-
-enum {
- kAS33LeaveScene = 0,
- kAS33TalkChicken = 1,
- kAS33UseChicken = 2,
- kAS33UseChickenDone = 3
-};
-
Scene33::Scene33(GnapEngine *vm) : Scene(vm) {
_currChickenSequenceId = -1;
_nextChickenSequenceId = -1;
@@ -1135,32 +1060,6 @@ void Scene33::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS38Platypus = 0,
- kHS38ExitHouse = 1,
- kHS38ExitCave = 2,
- kHS38TrapDoorLid1 = 3,
- kHS38TrapDoorLid2 = 4,
- kHS38HuntingTrophy = 5,
- kHS38WalkArea1 = 6,
- kHS38Device = 7,
- kHS38WalkArea2 = 8,
- kHS38WalkArea3 = 9,
- kHS38WalkArea4 = 10,
- kHS38WalkArea5 = 11,
- kHS38WalkArea6 = 12
-};
-
-enum {
- kAS38LeaveScene = 0,
- kAS38ExitCave = 1,
- kAS38UseHuntingTrophy = 2,
- kAS38HoldingHuntingTrophy = 3,
- kAS38ReleaseHuntingTrophy = 4,
- kAS38UsePlatypusWithTrapDoor = 5,
- kAS38PlatypusHoldingTrapDoor = 6
-};
-
Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
}
@@ -1467,20 +1366,6 @@ void Scene38::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS39Platypus = 0,
- kHS39ExitInsideHouse = 1,
- kHS39ExitUfoParty = 2,
- kHS39Sign = 3,
- kHS39Device = 4,
- kHS39WalkArea1 = 5,
- kHS39WalkArea2 = 6
-};
-
-enum {
- kAS39LeaveScene = 0
-};
-
Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
_currGuySequenceId = -1;
_nextGuySequenceId = -1;
diff --git a/engines/gnap/scenes/group3.h b/engines/gnap/scenes/group3.h
index fa57f17..e80debb 100644
--- a/engines/gnap/scenes/group3.h
+++ b/engines/gnap/scenes/group3.h
@@ -27,6 +27,121 @@
namespace Gnap {
+enum {
+ kHS30Platypus = 0,
+ kHS30PillMachine = 1,
+ kHS30Device = 2,
+ kHS30ExitCircus = 3,
+ kHS30WalkArea1 = 4
+};
+
+enum {
+ kHS31Platypus = 0,
+ kHS31MeasuringClown = 1,
+ kHS31BeerBarrel = 2,
+ kHS31Device = 3,
+ kHS31ExitCircus = 4,
+ kHS31ExitOutsideClown = 5,
+ kHS31WalkArea1 = 6
+};
+
+enum {
+ kHS32Platypus = 0,
+ kHS32ExitTruck = 1,
+ kHS32Device = 2,
+ kHS32WalkArea1 = 3,
+ kHS32WalkArea2 = 4,
+ kHS32WalkArea3 = 5,
+ kHS32WalkArea4 = 6,
+ kHS32WalkArea5 = 7,
+ kHS32WalkArea6 = 8,
+ kHS32WalkArea7 = 9,
+ kHS32WalkArea8 = 10
+};
+
+enum {
+ kHS33Platypus = 0,
+ kHS33Chicken = 1,
+ kHS33Device = 2,
+ kHS33ExitHouse = 3,
+ kHS33ExitBarn = 4,
+ kHS33ExitCreek = 5,
+ kHS33ExitPigpen = 6,
+ kHS33WalkArea1 = 7,
+ kHS33WalkArea2 = 8
+};
+
+enum {
+ kHS38Platypus = 0,
+ kHS38ExitHouse = 1,
+ kHS38ExitCave = 2,
+ kHS38TrapDoorLid1 = 3,
+ kHS38TrapDoorLid2 = 4,
+ kHS38HuntingTrophy = 5,
+ kHS38WalkArea1 = 6,
+ kHS38Device = 7,
+ kHS38WalkArea2 = 8,
+ kHS38WalkArea3 = 9,
+ kHS38WalkArea4 = 10,
+ kHS38WalkArea5 = 11,
+ kHS38WalkArea6 = 12
+};
+
+enum {
+ kHS39Platypus = 0,
+ kHS39ExitInsideHouse = 1,
+ kHS39ExitUfoParty = 2,
+ kHS39Sign = 3,
+ kHS39Device = 4,
+ kHS39WalkArea1 = 5,
+ kHS39WalkArea2 = 6
+};
+
+enum {
+ kAS30LeaveScene = 0,
+ kAS30UsePillMachine = 1,
+ kAS30UsePillMachine2 = 2,
+ kAS30LookPillMachine = 3,
+ kAS30UsePillMachine3 = 4,
+ kAS30UsePillMachine4 = 5
+};
+
+enum {
+ kAS31UseBeerBarrel = 1,
+ kAS31FillEmptyBucketWithBeer = 2,
+ kAS31FillEmptyBucketWithBeerDone = 3,
+ kAS31PlatMeasuringClown = 4,
+ kAS31UseMeasuringClown = 5,
+ kAS31LeaveScene = 6
+};
+
+enum {
+ kAS32LeaveScene = 0
+};
+
+enum {
+ kAS33LeaveScene = 0,
+ kAS33TalkChicken = 1,
+ kAS33UseChicken = 2,
+ kAS33UseChickenDone = 3
+};
+
+enum {
+ kAS38LeaveScene = 0,
+ kAS38ExitCave = 1,
+ kAS38UseHuntingTrophy = 2,
+ kAS38HoldingHuntingTrophy = 3,
+ kAS38ReleaseHuntingTrophy = 4,
+ kAS38UsePlatypusWithTrapDoor = 5,
+ kAS38PlatypusHoldingTrapDoor = 6
+};
+
+enum {
+ kAS39LeaveScene = 0
+};
+
+/*****************************************************************************/
+
class GnapEngine;
class CutScene;
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 90cb91f..1550703 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -27,18 +27,6 @@
namespace Gnap {
-enum {
- kHS40Platypus = 0,
- kHS40ExitCave = 1,
- kHS40ExitToyStand = 2,
- kHS40ExitBBQ = 3,
- kHS40ExitUfo = 4,
- kHS40ExitKissinBooth = 5,
- kHS40ExitDancefloor = 6,
- kHS40ExitShoe = 7,
- kHS40Device = 8
-};
-
Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
}
@@ -192,38 +180,6 @@ void Scene40::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS41Platypus = 0,
- kHS41ExitCave = 1,
- kHS41Exit = 2,
- kHS41ExitBBQ = 3,
- kHS41ToyVendor = 4,
- kHS41Kid = 5,
- kHS41ToyUfo = 6,
- kHS41Device = 7,
- kHS41WalkArea1 = 8
-};
-
-enum {
- kHS41UfoExitLeft = 1,
- kHS41UfoExitRight = 2,
- kHS41UfoDevice = 3,
- kHS41UfoWalkArea1 = 4
-};
-
-enum {
- kAS41LeaveScene = 0,
- kAS41UseQuarterWithToyVendor = 1,
- kAS41TalkToyVendor = 2,
- kAS41UseGumWithToyUfo = 3,
- kAS41UseChickenBucketWithKid = 4,
- kAS41GrabKid = 5,
- kAS41GiveBackToyUfo = 6,
- kAS41ToyUfoLeaveScene = 7,
- kAS41ToyUfoRefresh = 8,
- kAS41UfoGumAttached = 9
-};
-
Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
_currKidSequenceId = -1;
_nextKidSequenceId = -1;
@@ -753,36 +709,6 @@ void Scene41::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS42Platypus = 0,
- kHS42ExitUfoParty = 1,
- kHS42ExitToyStand = 2,
- kHS42ExitUfo = 3,
- kHS42BBQVendor = 4,
- kHS42ChickenLeg = 5,
- kHS42Device = 6,
- kHS42WalkArea1 = 7,
- kHS42WalkArea2 = 8
-};
-
-enum {
- kHS42UfoExitLeft = 1,
- kHS42UfoExitRight = 2,
- kHS42UfoHotSauce = 3,
- kHS42UfoDevice = 4
-};
-
-enum {
- kAS42LeaveScene = 0,
- kAS42TalkBBQVendor = 1,
- kAS42UseQuarterWithBBQVendor = 2,
- kAS42UseQuarterWithBBQVendorDone = 3,
- kAS42GrabChickenLeg = 4,
- kAS42ToyUfoLeaveScene = 5,
- kAS42ToyUfoRefresh = 6,
- kAS42ToyUfoPickUpHotSauce = 7
-};
-
Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
_currBBQVendorSequenceId = -1;
_nextBBQVendorSequenceId = -1;
@@ -1228,27 +1154,6 @@ void Scene42::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS43Platypus = 0,
- kHS43Device = 1,
- kHS43ExitUfoParty = 2,
- kHS43ExitBBQ = 3,
- kHS43ExitKissinBooth = 4,
- kHS43TwoHeadedGuy = 5,
- kHS43Key = 6,
- kHS43Ufo = 7,
- kHS43WalkArea1 = 8,
- kHS43WalkArea2 = 9
-};
-
-enum {
- kHS43UfoExitLeft = 1,
- kHS43UfoExitRight = 2,
- kHS43UfoKey = 3,
- kHS43UfoBucket = 4,
- kHS43UfoDevice = 5
-};
-
Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
_currTwoHeadedGuySequenceId = -1;
_nextTwoHeadedGuySequenceId = -1;
@@ -1684,25 +1589,6 @@ void Scene43::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS44Platypus = 0,
- kHS44ExitUfoParty = 1,
- kHS44ExitUfo = 2,
- kHS44ExitShow = 3,
- kHS44KissingLady = 4,
- kHS44Spring = 5,
- kHS44SpringGuy = 6,
- kHS44Device = 7,
- kHS44WalkArea1 = 8,
- kHS44WalkArea2 = 9
-};
-
-enum {
- kHS44UfoExitLeft = 1,
- kHS44UfoExitRight = 2,
- kHS44UfoDevice = 3
-};
-
Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
_nextSpringGuySequenceId = -1;
_nextKissingLadySequenceId = -1;
@@ -2183,23 +2069,6 @@ void Scene44::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS45Platypus = 0,
- kHS45ExitUfoParty = 1,
- kHS45ExitShoe = 2,
- kHS45ExitRight = 3,
- kHS45ExitDiscoBall = 4,
- kHS45DiscoBall = 5,
- kHS45Device = 6,
- kHS45WalkArea1 = 7
-};
-
-enum {
- kHS45UfoExitLeft = 1,
- kHS45UfoExitRight = 2,
- kHS45UfoDevice = 3
-};
-
Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
_currDancerSequenceId = -1;
}
@@ -2580,23 +2449,6 @@ void Scene45::updateAnimations() {
/*****************************************************************************/
-enum {
- kHS46Platypus = 0,
- kHS46ExitUfoParty = 1,
- kHS46ExitKissinBooth = 2,
- kHS46ExitDisco = 3,
- kHS46SackGuy = 4,
- kHS46ItchyGuy = 5,
- kHS46Device = 6,
- kHS46WalkArea1 = 7
-};
-
-enum {
- kHS46UfoExitLeft = 1,
- kHS46UfoExitRight = 2,
- kHS46UfoDevice = 3
-};
-
Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
_currSackGuySequenceId = -1;
_nextItchyGuySequenceId = -1;
diff --git a/engines/gnap/scenes/group4.h b/engines/gnap/scenes/group4.h
index 28f03ee..542834d 100644
--- a/engines/gnap/scenes/group4.h
+++ b/engines/gnap/scenes/group4.h
@@ -27,6 +27,156 @@
namespace Gnap {
+enum {
+ kHS40Platypus = 0,
+ kHS40ExitCave = 1,
+ kHS40ExitToyStand = 2,
+ kHS40ExitBBQ = 3,
+ kHS40ExitUfo = 4,
+ kHS40ExitKissinBooth = 5,
+ kHS40ExitDancefloor = 6,
+ kHS40ExitShoe = 7,
+ kHS40Device = 8
+};
+
+enum {
+ kHS41Platypus = 0,
+ kHS41ExitCave = 1,
+ kHS41Exit = 2,
+ kHS41ExitBBQ = 3,
+ kHS41ToyVendor = 4,
+ kHS41Kid = 5,
+ kHS41ToyUfo = 6,
+ kHS41Device = 7,
+ kHS41WalkArea1 = 8
+};
+
+enum {
+ kHS41UfoExitLeft = 1,
+ kHS41UfoExitRight = 2,
+ kHS41UfoDevice = 3,
+ kHS41UfoWalkArea1 = 4
+};
+
+enum {
+ kHS42Platypus = 0,
+ kHS42ExitUfoParty = 1,
+ kHS42ExitToyStand = 2,
+ kHS42ExitUfo = 3,
+ kHS42BBQVendor = 4,
+ kHS42ChickenLeg = 5,
+ kHS42Device = 6,
+ kHS42WalkArea1 = 7,
+ kHS42WalkArea2 = 8
+};
+
+enum {
+ kHS42UfoExitLeft = 1,
+ kHS42UfoExitRight = 2,
+ kHS42UfoHotSauce = 3,
+ kHS42UfoDevice = 4
+};
+
+enum {
+ kHS43Platypus = 0,
+ kHS43Device = 1,
+ kHS43ExitUfoParty = 2,
+ kHS43ExitBBQ = 3,
+ kHS43ExitKissinBooth = 4,
+ kHS43TwoHeadedGuy = 5,
+ kHS43Key = 6,
+ kHS43Ufo = 7,
+ kHS43WalkArea1 = 8,
+ kHS43WalkArea2 = 9
+};
+
+enum {
+ kHS43UfoExitLeft = 1,
+ kHS43UfoExitRight = 2,
+ kHS43UfoKey = 3,
+ kHS43UfoBucket = 4,
+ kHS43UfoDevice = 5
+};
+
+enum {
+ kHS44Platypus = 0,
+ kHS44ExitUfoParty = 1,
+ kHS44ExitUfo = 2,
+ kHS44ExitShow = 3,
+ kHS44KissingLady = 4,
+ kHS44Spring = 5,
+ kHS44SpringGuy = 6,
+ kHS44Device = 7,
+ kHS44WalkArea1 = 8,
+ kHS44WalkArea2 = 9
+};
+
+enum {
+ kHS44UfoExitLeft = 1,
+ kHS44UfoExitRight = 2,
+ kHS44UfoDevice = 3
+};
+
+enum {
+ kHS45Platypus = 0,
+ kHS45ExitUfoParty = 1,
+ kHS45ExitShoe = 2,
+ kHS45ExitRight = 3,
+ kHS45ExitDiscoBall = 4,
+ kHS45DiscoBall = 5,
+ kHS45Device = 6,
+ kHS45WalkArea1 = 7
+};
+
+enum {
+ kHS45UfoExitLeft = 1,
+ kHS45UfoExitRight = 2,
+ kHS45UfoDevice = 3
+};
+
+enum {
+ kHS46Platypus = 0,
+ kHS46ExitUfoParty = 1,
+ kHS46ExitKissinBooth = 2,
+ kHS46ExitDisco = 3,
+ kHS46SackGuy = 4,
+ kHS46ItchyGuy = 5,
+ kHS46Device = 6,
+ kHS46WalkArea1 = 7
+};
+
+enum {
+ kHS46UfoExitLeft = 1,
+ kHS46UfoExitRight = 2,
+ kHS46UfoDevice = 3
+};
+
+enum {
+ kAS41LeaveScene = 0,
+ kAS41UseQuarterWithToyVendor = 1,
+ kAS41TalkToyVendor = 2,
+ kAS41UseGumWithToyUfo = 3,
+ kAS41UseChickenBucketWithKid = 4,
+ kAS41GrabKid = 5,
+ kAS41GiveBackToyUfo = 6,
+ kAS41ToyUfoLeaveScene = 7,
+ kAS41ToyUfoRefresh = 8,
+ kAS41UfoGumAttached = 9
+};
+
+enum {
+ kAS42LeaveScene = 0,
+ kAS42TalkBBQVendor = 1,
+ kAS42UseQuarterWithBBQVendor = 2,
+ kAS42UseQuarterWithBBQVendorDone = 3,
+ kAS42GrabChickenLeg = 4,
+ kAS42ToyUfoLeaveScene = 5,
+ kAS42ToyUfoRefresh = 6,
+ kAS42ToyUfoPickUpHotSauce = 7
+};
+
+/*****************************************************************************/
+
class GnapEngine;
class CutScene;
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 68b957f..3bcab4c 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -27,24 +27,6 @@
namespace Gnap {
-enum {
- kHS53Platypus = 0,
- kHS53Device = 1,
- kHS53PhoneKey1 = 2,
- kHS53PhoneKey2 = 3,
- kHS53PhoneKey3 = 4,
- kHS53PhoneKey4 = 5,
- kHS53PhoneKey5 = 6,
- kHS53PhoneKey6 = 7,
- kHS53PhoneKey7 = 8,
- kHS53PhoneKey8 = 9,
- kHS53PhoneKey9 = 10,
- kHS53PhoneKey0 = 11,
- kHS53PhoneKeySharp = 12,
- kHS53PhoneKeyStar = 13,
- kHS53PhoneExit = 14
-};
-
Scene53::Scene53(GnapEngine *vm) : Scene(vm) {
_isGnapPhoning = false;
_currHandSequenceId = -1;
diff --git a/engines/gnap/scenes/group5.h b/engines/gnap/scenes/group5.h
index d9ffc19..c7d209b 100644
--- a/engines/gnap/scenes/group5.h
+++ b/engines/gnap/scenes/group5.h
@@ -28,6 +28,26 @@
namespace Gnap {
+enum {
+ kHS53Platypus = 0,
+ kHS53Device = 1,
+ kHS53PhoneKey1 = 2,
+ kHS53PhoneKey2 = 3,
+ kHS53PhoneKey3 = 4,
+ kHS53PhoneKey4 = 5,
+ kHS53PhoneKey5 = 6,
+ kHS53PhoneKey6 = 7,
+ kHS53PhoneKey7 = 8,
+ kHS53PhoneKey8 = 9,
+ kHS53PhoneKey9 = 10,
+ kHS53PhoneKey0 = 11,
+ kHS53PhoneKeySharp = 12,
+ kHS53PhoneKeyStar = 13,
+ kHS53PhoneExit = 14
+};
+
+/*****************************************************************************/
+
class GnapEngine;
class Scene53: public Scene {
Commit: 25fc9c0a1390c51f4a35f596b4a87b315d520a25
https://github.com/scummvm/scummvm/commit/25fc9c0a1390c51f4a35f596b4a87b315d520a25
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:47+02:00
Commit Message:
GNAP: Janitorial - Remove trailing spaces and tabs
Changed paths:
engines/gnap/detection.cpp
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/arcade.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group0.h
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group1.h
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group5.cpp
engines/gnap/scenes/groupcs.cpp
engines/gnap/sound.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index cb4802c..79fafd4 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -89,9 +89,9 @@ bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
(f == kSupportsDeleteSave) ||
(f == kSavesSupportMetaInfo) ||
(f == kSavesSupportCreationDate);
-#if 0
+#if 0
(f == kSavesSupportThumbnail) ||
-#endif
+#endif
}
bool Gnap::GnapEngine::hasFeature(EngineFeature f) const {
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index e983440..e7899a2 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -147,9 +147,9 @@ void GameSys::requestRemoveSequence(int sequenceId, int id) {
_reqRemoveSequenceItem = true;
_removeSequenceItemSequenceId = sequenceId;
_removeSequenceItemValue = id;
-
+
handleReqRemoveSequenceItem(); //CHECKME?
-
+
//ResetEvent(reqClearEvent);
//ReleaseMutex(removeSequence2Mutex);
//WaitForSingleObject(reqClearEvent, INFINITE);
@@ -169,13 +169,13 @@ int GameSys::isSequenceActive(int sequenceId, int id) {
void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7) {
debugC(kDebugBasic, "GameSys::setBackgroundSurface() Setting background image");
-
+
_backgroundSurface = surface;
if (!_backgroundSurface) {
_backgroundImageError = true;
return;
}
-
+
if (!_frontSurface || _frontSurface->w != surface->w || _frontSurface->h != surface->h) {
debugC(kDebugBasic, "GameSys::setBackgroundSurface() Creating background working surface");
if (_frontSurface)
@@ -245,11 +245,11 @@ Graphics::Surface *GameSys::allocSurface(int width, int height) {
Graphics::Surface *GameSys::createSurface(int resourceId) {
debugC(kDebugBasic, "GameSys::createSurface() resourceId: %08X", resourceId);
-
+
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
Graphics::Surface *surface = allocSurface(spriteResource->_width, spriteResource->_height);
_vm->_spriteCache->release(resourceId);
-
+
drawSpriteToSurface(surface, 0, 0, resourceId);
return surface;
@@ -266,14 +266,14 @@ void GameSys::drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int
void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text) {
// NOTE Not that nice but will have to do for now
-
+
bool doDirty = false;
if (!surface) {
surface = _backgroundSurface;
doDirty = true;
}
-
+
uint32 color = surface->format.RGBToColor(r, g, b);
for (const char *cp = text; *cp != 0; ++cp) {
@@ -293,11 +293,11 @@ void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r
}
x += w + 1;
}
-
+
if (doDirty) {
insertDirtyRect(Common::Rect(x, y, x + getTextWidth(text), y + 16));
}
-
+
}
int GameSys::getTextHeight(const char *text) {
@@ -327,10 +327,10 @@ int GameSys::getTextWidth(const char *text) {
void GameSys::fillSurface(Graphics::Surface *surface, int x, int y, int width, int height, byte r, byte g, byte b) {
Common::Rect rect(x, y, x + width, y + height);
if (!surface) {
- _backgroundSurface->fillRect(rect, _backgroundSurface->format.RGBToColor(r, g, b));
+ _backgroundSurface->fillRect(rect, _backgroundSurface->format.RGBToColor(r, g, b));
insertDirtyRect(rect);
} else {
- surface->fillRect(rect, surface->format.RGBToColor(r, g, b));
+ surface->fillRect(rect, surface->format.RGBToColor(r, g, b));
}
}
@@ -400,7 +400,7 @@ void GameSys::drawBitmap(int resourceId) {
}
}
bmpSurface->free();
- delete bmpSurface;
+ delete bmpSurface;
insertDirtyRect(Common::Rect(0, 0, 800, 600));
}
@@ -436,18 +436,18 @@ int GameSys::seqLocateGfx(int sequenceId, int id, int *outGfxIndex) {
void GameSys::seqInsertGfx(int index, int duration) {
Sequence *seqItem = &_seqItems[index];
- SequenceResource *sequenceResource = _vm->_sequenceCache->get(seqItem->_sequenceId);
+ SequenceResource *sequenceResource = _vm->_sequenceCache->get(seqItem->_sequenceId);
if (sequenceResource->_animationsCount > 50 - _gfxItemsCount)
return;
int gfxIndex;
seqLocateGfx(seqItem->_sequenceId, seqItem->_id, &gfxIndex);
-
+
if (gfxIndex != _gfxItemsCount)
memcpy(&_gfxItems[gfxIndex + sequenceResource->_animationsCount], &_gfxItems[gfxIndex], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
_gfxItemsCount += sequenceResource->_animationsCount;
-
+
for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
SequenceAnimation *animation = &sequenceResource->_animations[i];
@@ -489,7 +489,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->_currFrame = animation->frames[j - 1];
if (gfxItem->_currFrame._spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
gfxItem->_currFrame._rect.translate(seqItem->_x, seqItem->_y);
- // Update sprite scaling
+ // Update sprite scaling
if ((seqItem->_flags & 1) && gfxItem->_currFrame._rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame._rect.bottom <= _backgroundImageValue3) {
int scaleValue = _backgroundImageValue2 + (gfxItem->_currFrame._rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
@@ -580,7 +580,7 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
break;
}
}
-
+
if (!foundAnimation)
return;
@@ -605,7 +605,7 @@ void GameSys::updateAnimationsStatus(int sequenceId, int id) {
}
void GameSys::restoreBackgroundRect(const Common::Rect &rect) {
- Common::Rect clipRect;
+ Common::Rect clipRect;
if (!intersectRect(clipRect, rect, _screenRect))
return;
byte *src = (byte*)_backgroundSurface->getBasePtr(clipRect.left, clipRect.top);
@@ -621,14 +621,14 @@ void GameSys::restoreBackgroundRect(const Common::Rect &rect) {
void GameSys::blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphics::Surface *sourceSurface,
Common::Rect &sourceRect, bool transparent) {
-
+
const int sourcePitch = sourceSurface->pitch;
byte *dst = (byte*)destSurface->getBasePtr(x, y);
byte *src = (byte*)sourceSurface->getBasePtr(sourceRect.left, sourceRect.top);
int width = sourceRect.width();
int height = sourceRect.height();
while (height--) {
- byte *rsrc = src;
+ byte *rsrc = src;
byte *rdst = dst;
for (int xc = 0; xc < width; ++xc) {
uint32 pixel = READ_LE_UINT32(rsrc);
@@ -644,14 +644,14 @@ void GameSys::blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphi
void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *sourcePixels,
int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette, bool transparent) {
-
+
const int sourcePitch = (sourceWidth + 3) & 0xFFFFFFFC;
byte *dst = (byte*)destSurface->getBasePtr(x, y);
byte *src = sourcePixels + sourceRect.left + sourcePitch * sourceRect.top;
int width = sourceRect.width();
int height = sourceRect.height();
while (height--) {
- byte *rdst = dst;
+ byte *rdst = dst;
for (int xc = 0; xc < width; ++xc) {
byte srcPixel = src[xc];
if (!transparent || srcPixel) {
@@ -669,7 +669,7 @@ void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *s
void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &frameRect,
Common::Rect &destRect, byte *sourcePixels, int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette) {
-
+
if (frameRect.height() <= 0 || frameRect.width() <= 0)
return;
@@ -739,17 +739,17 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect) {
debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
-
+
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
-
+
if (!intersectRect(clipRect, srcRect, _screenRect)) {
debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() Surface not inside screen");
return;
}
const int x = clipRect.left, y = clipRect.top;
-
+
clipRect.translate(-frame._rect.left, -frame._rect.top);
// TODO Save transparent flag somewhere
@@ -759,10 +759,10 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
frame._spriteId, frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
-
+
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
-
+
if (!intersectRect(clipRect, srcRect, _screenRect)) {
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
return;
@@ -772,7 +772,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
byte *sourcePixels = spriteResource->_pixels;
const int x = clipRect.left, y = clipRect.top;
-
+
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
// 32bit sprite drawing
@@ -790,7 +790,7 @@ void GameSys::drawSprites() {
// TODO Split into multiple functions for clarity
- // Restore dirty background and collect rects to be redrawn for all sprites
+ // Restore dirty background and collect rects to be redrawn for all sprites
// which aren't marked to be redrawn yet
Common::Rect intersectingRect;
for (uint i = 0; i < _dirtyRects.size(); ++i) {
@@ -798,7 +798,7 @@ void GameSys::drawSprites() {
for (int j = 0; j < _gfxItemsCount; ++j)
_gfxItems[j].testUpdRect(_dirtyRects[i]);
}
-
+
for (int k = 0; k < _gfxItemsCount; ++k) {
GfxItem *gfxItem2 = &_gfxItems[k];
@@ -846,10 +846,10 @@ void GameSys::drawSprites() {
for (int m = 0; m < _gfxItemsCount; ++m) {
GfxItem *gfxItem5 = &_gfxItems[m];
-
+
debugC(kDebugBasic, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
m, gfxItem5->_updFlag, gfxItem5->_currFrame._spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
-
+
if (gfxItem5->_updFlag) {
if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
@@ -925,9 +925,9 @@ void GameSys::updateScreen() {
updateRect(srcRect);
updateRect(rcSrc2);
}
- gfxItem->_prevFrame = gfxItem->_currFrame;
+ gfxItem->_prevFrame = gfxItem->_currFrame;
}
-
+
updateRect(Common::Rect(0, 0, 800, 600));
debugC(kDebugBasic, "GameSys::updateScreen() OK");
@@ -1002,15 +1002,15 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
void GameSys::fatUpdateFrame() {
debugC(kDebugBasic, "GameSys::fatUpdateFrame()");
-
+
int32 clockDelta = _gameSysClock - _lastUpdateClock;
_lastUpdateClock = _gameSysClock;
-
+
debugC(kDebugBasic, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
-
+
if (clockDelta <= 0)
return;
-
+
int duration, currFrameNum;
// NOTE Skipped avi code (reqAviStart)
@@ -1080,7 +1080,7 @@ void GameSys::fatUpdateFrame() {
gfxItem->_currFrame = animation->frames[currFrameNum - 1];
if (gfxItem->_currFrame._spriteId != -1 && (seqItem->_x != 0 || seqItem->_y != 0))
gfxItem->_currFrame._rect.translate(seqItem->_x, seqItem->_y);
- // Update sprite scaling
+ // Update sprite scaling
if ((seqItem->_flags & 1) && gfxItem->_currFrame._rect.bottom >= _backgroundImageValue1 && gfxItem->_currFrame._rect.bottom <= _backgroundImageValue3) {
int v17 = _backgroundImageValue2 + (gfxItem->_currFrame._rect.bottom - _backgroundImageValue1) *
(_backgroundImageValue4 - _backgroundImageValue2) /
@@ -1152,7 +1152,7 @@ void GameSys::fatUpdateFrame() {
}
_newSpriteDrawItemsCount = 0;
}
-
+
if (_grabSpriteChanged) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
@@ -1171,7 +1171,7 @@ void GameSys::fatUpdateFrame() {
}
_grabSpriteChanged = false;
}
-
+
// NOTE Skipped avi code (reqAviStart)
debugC(kDebugBasic, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
@@ -1254,12 +1254,12 @@ void GameSys::fatUpdate() {
_gfxItems[i]._updFlag = false;
_gfxItems[i]._updRectsCount = 0;
}
-
+
handleReqRemoveSequenceItem();
handleReqRemoveSequenceItems();
handleReqRemoveSpriteDrawItems();
// NOTE Skipped avi stuff (reqAviStop)
-
+
fatUpdateFrame();
}
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index a011a61..29a5f97 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -130,43 +130,43 @@ public:
void drawBitmap(int resourceId);
public:
GnapEngine *_vm;
-
+
Common::Array<Common::Rect> _dirtyRects;
- SpriteDrawItem _newSpriteDrawItems[kMaxSpriteDrawItems];
+ SpriteDrawItem _newSpriteDrawItems[kMaxSpriteDrawItems];
int _newSpriteDrawItemsCount;
RemoveSequenceItem _removeSequenceItems[kMaxSequenceItems];
int _removeSequenceItemsCount;
-
+
RemoveSpriteDrawItem _removeSpriteDrawItems[kMaxSpriteDrawItems];
int _removeSpriteDrawItemsCount;
-
+
int _grabSpriteId;
Common::Rect _grabSpriteRect;
bool _grabSpriteChanged;
Graphics::Surface *_grabSpriteSurface1, *_grabSpriteSurface2;
-
+
bool _reqRemoveSequenceItem;
int _removeSequenceItemSequenceId, _removeSequenceItemValue;
Common::Array<int> _soundIds;
-
+
////////////////////////////////////////////////////////////////////////////
-
+
Common::Array<Sequence> _seqItems;
Common::Array<Sequence> _fatSequenceItems;
-
+
GfxItem _gfxItems[kMaxGfxItems];
int _gfxItemsCount;
-
+
Animation _animations[kMaxAnimations];
int _animationsCount;
-
+
int _backgroundImageValue3, _backgroundImageValue1;
int _backgroundImageValue4, _backgroundImageValue2;
bool _backgroundImageError; // CHECKME: Unused
-
+
int32 _gameSysClock, _lastUpdateClock;
Graphics::Surface *_backgroundSurface;
@@ -179,7 +179,7 @@ public:
void seqRemoveGfx(int sequenceId, int id);
bool updateSequenceDuration(int sequenceId, int id, int *outDuration);
void updateAnimationsStatus(int sequenceId, int id);
-
+
void restoreBackgroundRect(const Common::Rect &rect);
void blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphics::Surface *sourceSurface,
@@ -195,7 +195,7 @@ public:
void drawSprites();
void updateRect(const Common::Rect &r);
void updateScreen();
-
+
void handleReqRemoveSequenceItem();
void handleReqRemoveSequenceItems();
void handleReqRemoveSpriteDrawItems();
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 6c8995a..8f86a86 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -279,11 +279,11 @@ private:
Graphics::PixelFormat _pixelFormat;
int _loadGameSlot;
-public:
+public:
Common::RandomSource *_random;
-
+
Common::PEResources *_exe;
-
+
DatManager *_dat;
SpriteCache *_spriteCache;
SoundCache *_soundCache;
@@ -294,38 +294,38 @@ public:
Scene *_scene;
int _lastUpdateClock;
-
+
int _debugLevel;
bool _gameDone;
-
+
byte _keyPressState[512];
byte _keyDownState[512];
-
+
bool _isPaused;
Graphics::Surface *_pauseSprite;
int _timers[kMaxTimers], _savedTimers[kMaxTimers];
-
+
MouseButtonState _mouseButtonState;
MouseButtonState _mouseClickState;
-
+
uint32 _keyStatus1[2];
-
+
bool _sceneSavegameLoaded, _wasSavegameLoaded;
-
+
Graphics::Surface *_backgroundSurface;
- int _prevSceneNum, _currentSceneNum, _newSceneNum;
+ int _prevSceneNum, _currentSceneNum, _newSceneNum;
bool _sceneDone, _sceneWaiting;
uint32 _inventory, _gameFlags;
-
+
Hotspot _hotspots[20];
Common::Point _hotspotsWalkPos[20];
int _hotspotsCount;
int _sceneClickedHotspot;
-
+
bool _isWaiting;
bool _isLeavingScene;
-
+
bool _isStockDatLoaded;
int _newCursorValue, _cursorValue;
@@ -333,32 +333,32 @@ public:
int _verbCursor, _cursorIndex;
int _mouseX, _mouseY;
int _leftClickMouseX, _leftClickMouseY;
-
+
Graphics::Surface *_grabCursorSprite;
int _currGrabCursorX, _currGrabCursorY;
int _grabCursorSpriteIndex, _newGrabCursorSpriteIndex;
-
+
Graphics::Surface *_fullScreenSprite;
int _fullScreenSpriteId;
-
+
int _deviceX1, _deviceY1, _deviceX2, _deviceY2;
-
+
int _soundTimerIndexA;
int _soundTimerIndexB;
int _soundTimerIndexC;
int _idleTimerIndex;
-
+
void updateEvents();
void gameUpdateTick();
void saveTimers();
void restoreTimers();
-
+
void pauseGame();
void resumeGame();
void updatePause();
-
+
int getRandom(int max);
-
+
int readSavegameDescription(int savegameNum, Common::String &description);
int loadSavegame(int savegameNum);
Common::Error saveGameState(int slot, const Common::String &desc);
@@ -367,57 +367,57 @@ public:
void synchronize(Common::Serializer &s);
void writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeader &header);
static bool readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header);
-
+
void delayTicks(int a1);
void delayTicksCursor(int a1);
-
+
void setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags = 0,
int16 walkX = -1, int16 walkY = -1);
int getHotspotIndexAtPos(int16 x, int16 y);
void updateCursorByHotspot();
int getClickedHotspotId();
-
+
int getInventoryItemSpriteNum(int index);
-
+
void updateMouseCursor();
void setVerbCursor(int verbCursor);
void setCursor(int cursorIndex);
void showCursor();
void hideCursor();
-
+
void setGrabCursorSprite(int index);
void createGrabCursorSprite(int spriteId);
void freeGrabCursorSprite();
void updateGrabCursorSprite(int x, int y);
-
+
void invClear();
void invAdd(int itemId);
void invRemove(int itemId);
bool invHas(int itemId);
-
+
void clearFlags();
void setFlag(int num);
void clearFlag(int num);
bool isFlag(int num);
-
+
Graphics::Surface *addFullScreenSprite(int resourceId, int id);
void removeFullScreenSprite();
void showFullScreenSprite(int resourceId);
-
+
void queueInsertDeviceIcon();
void insertDeviceIconActive();
void removeDeviceIconActive();
void setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int y2);
-
+
int getSequenceTotalDuration(int resourceId);
-
+
bool isSoundPlaying(int resourceId);
void playSound(int resourceId, bool looping);
void stopSound(int resourceId);
void setSoundVolume(int resourceId, int volume);
void updateTimers();
-
+
void initGameFlags(int num);
void loadStockDat();
@@ -425,12 +425,12 @@ public:
void initScene();
void endSceneInit();
void afterScene();
-
+
int initSceneLogic();
void runSceneLogic();
-
+
void checkGameKeys();
-
+
void startSoundTimerA(int timerIndex);
int playSoundA();
void startSoundTimerB(int timerIndex);
@@ -439,16 +439,16 @@ public:
int playSoundC();
void startIdleTimer(int timerIndex);
void updateIdleTimer();
-
+
void screenEffect(int dir, byte r, byte g, byte b);
-
+
bool isKeyStatus1(int key);
bool isKeyStatus2(int key);
void clearKeyStatus1(int key);
void clearAllKeyStatus1();
-
+
void deleteSurface(Graphics::Surface **surface);
-
+
// Menu
int _menuStatus;
int _menuSpritesIndex;
@@ -458,7 +458,7 @@ public:
Graphics::Surface *_largeSprite;
Graphics::Surface *_menuSaveLoadSprite;
Graphics::Surface *_menuSprite2;
- Graphics::Surface *_menuSprite1;
+ Graphics::Surface *_menuSprite1;
char _savegameFilenames[7][30];
Graphics::Surface *_savegameSprites[7];
Graphics::Surface *_spriteHandle;
@@ -474,14 +474,14 @@ public:
void initSaveLoadHotspots();
void drawInventoryFrames();
void insertInventorySprites();
- void removeInventorySprites();
+ void removeInventorySprites();
void runMenu();
void updateMenuStatusInventory();
void updateMenuStatusMainMenu();
void updateMenuStatusSaveGame();
void updateMenuStatusLoadGame();
void updateMenuStatusQueryQuit();
-
+
// Grid common
int _gnapGridX, _gnapGridY;
int _platGridX, _platGridY;
@@ -507,14 +507,14 @@ public:
bool gnapFindPath3(int gridX, int gridY);
bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void gnapWalkStep();
-
+
// Platypus walking
int _platWalkNodesCount;
GridStruct _platWalkNodes[kMaxGridStructs];
int _platX, _platY;
int _platWalkDestX, _platWalkDestY;
int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
-
+
int getPlatypusWalkSequenceId(int deltaX, int deltaY);
bool gridSub423750(int gridX, int gridY);
bool gridSub423CC1(int gridX, int gridY, int index);
@@ -556,7 +556,7 @@ public:
void gnapKissPlatypus(int callback);
void gnapUseJointOnPlatypus();
void gnapUseDisguiseOnPlatypus();
-
+
// Platypus
Facing _platypusFacing;
int _platypusActionStatus;
@@ -566,15 +566,15 @@ public:
void updatePlatypusIdleSequence();
void platypusSub426234();
void initPlatypusPos(int gridX, int gridY, Facing facing);
-
+
// Scenes
-
+
int _toyUfoNextSequenceId, _toyUfoSequenceId;
int _toyUfoId;
int _toyUfoActionStatus;
int _toyUfoX;
int _toyUfoY;
-
+
void initGlobalSceneVars();
void playSequences(int fullScreenSpriteId, int sequenceId1, int sequenceId2, int sequenceId3);
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 0e10a71..dfdc528 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -75,7 +75,7 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
if ((gridX == _gnapX && gridY == _gnapY) || (gridX == _platX && gridY == _platY))
return true;
-
+
const int x = _gridMinX + 75 * gridX;
const int y = _gridMinY + 48 * gridY;
@@ -92,7 +92,7 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
bool result = false;
-
+
_gnapWalkNodesCount = 0;
_gnapWalkDirXIncr = 0;
_gnapWalkDirYIncr = 0;
@@ -148,7 +148,7 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
}
++_gnapWalkNodesCount;
}
-
+
while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
_gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
_gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
@@ -553,7 +553,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
_gnapWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
-
+
if (animationIndex >= 0 && _gnapWalkDestX == _platX && _gnapWalkDestY == _platY)
platypusMakeRoom();
@@ -562,7 +562,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (!done && gridSub41FAD5(_gnapX, _gnapY, 0))
done = true;
-
+
if (!done && gnapFindPath3(_gnapX, _gnapY))
done = true;
@@ -749,7 +749,7 @@ int GnapEngine::getPlatypusWalkSequenceId(int deltaX, int deltaY) {
bool GnapEngine::gridSub423750(int gridX, int gridY) {
bool result = false;
-
+
_platWalkNodesCount = 0;
_platWalkDirXIncr = 0;
_platWalkDirYIncr = 0;
@@ -1195,7 +1195,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
}
bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
-
+
int datNum = flags & 3;
bool done = false;
@@ -1218,7 +1218,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (!done && gridSub42419A(_platX, _platY, 0))
done = true;
-
+
if (!done && platFindPath3(_platX, _platY))
done = true;
@@ -1349,7 +1349,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platX = _platWalkDestX;
_platY = _platWalkDestY;
-
+
return done;
}
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index d1701d7..89d14eb 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -86,7 +86,7 @@ void GnapEngine::initMenuHotspots1() {
void GnapEngine::initMenuHotspots2() {
int curId = 0;
-
+
for (int i = 0; i < 4; ++i) {
_hotspots[curId]._x1 = 312;
_hotspots[curId]._y1 = 48 * i + 85;
@@ -330,7 +330,7 @@ void GnapEngine::runMenu() {
updateMenuStatusQueryQuit();
break;
}
-
+
gameUpdateTick();
}
@@ -376,7 +376,7 @@ void GnapEngine::runMenu() {
_mouseClickState._left = false;
removeDeviceIconActive();
-
+
freeMenuSprite();//??? CHECKME
}
@@ -465,7 +465,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
_sceneClickedHotspot = -1;
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
-
+
if (_sceneClickedHotspot != 1 && _sceneClickedHotspot != 0) {
if (_sceneClickedHotspot != 2 && _hotspotsCount - 1 != _sceneClickedHotspot) {
if (_sceneClickedHotspot == 3) {
@@ -514,7 +514,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
clearKeyStatus1(29);
clearKeyStatus1(30);
}
-
+
_gameSys->removeSpriteDrawItem(_largeSprite, 300);
delayTicksCursor(5);
deleteSurface(&_largeSprite);
@@ -658,7 +658,7 @@ void GnapEngine::writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeade
out->writeByte('\0');
// TODO: Add thumbnail
-
+
// Write out the save date/time
TimeDate td;
g_system->getTimeAndDate(td);
@@ -930,7 +930,7 @@ void GnapEngine::updateMenuStatusQueryQuit() {
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
-
+
/* _sceneClickedHotspot
0 Yes
1 No
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 3b1b1b0..a857427 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -357,7 +357,7 @@ void Scene49::run() {
_truckId = 256;
_vm->_timers[3] = 35;
-
+
while (!_vm->_sceneDone) {
if (_vm->_timers[0] == 0) {
// Update background animations (clouds etc.)
@@ -503,7 +503,7 @@ void Scene49::run() {
}
_vm->gameUpdateTick();
}
- _vm->stopSound(0xE2);
+ _vm->stopSound(0xE2);
}
void Scene49::updateAnimations() {
@@ -670,7 +670,7 @@ void Scene50::playTonguesIdle() {
void Scene50::playRoundAnim(int roundNum) {
int sequenceId = 0;
-
+
switch (roundNum) {
case 1:
sequenceId = 0xAF;
@@ -736,7 +736,7 @@ int Scene50::checkInput() {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_fightDone = true;
}
-
+
return sequenceId;
}
@@ -893,7 +893,7 @@ int Scene50::getRightTongueNextId() {
void Scene50::playWinBadgeAnim(int tongueNum) {
int sequenceId;
-
+
if (tongueNum == 1) {
if (_leftTongueRoundsWon == 1)
sequenceId = 0xC3;
@@ -983,7 +983,7 @@ void Scene50::run() {
}
// freeFont();
-
+
_vm->_gameSys->setAnimation(0, 0, 7);
_vm->_gameSys->setAnimation(0, 0, 6);
_vm->_gameSys->setAnimation(0, 0, 5);
@@ -1243,10 +1243,10 @@ int Scene51::checkCollision(int sequenceId) {
bool checkFl = false;
for (int i = 0; i < 6; i++)
checkFl |= _items[i]._isCollision;
-
+
if (!checkFl)
return false;
-
+
if (isJumpingRight(sequenceId)) {
v8 = getPosRight(sequenceId);
v4 = getPosRight(sequenceId + 1);
@@ -1565,7 +1565,7 @@ void Scene51::updateGuyAnimation() {
_guyNextSequenceId = 0xC7;
break;
}
-
+
_vm->_gameSys->insertSequence(_guyNextSequenceId, 39, _guySequenceId, 39, kSeqSyncWait, 0, 0, 0);
_guySequenceId = _guyNextSequenceId;
_guyNextSequenceId = -1;
@@ -2203,7 +2203,7 @@ void Scene52::updateAlienRow(int rowNum) {
void Scene52::moveDownAlienRow() {
int v2[5], v3, v1, v0, v4;
-
+
for (int i = 0; i < 5; ++i)
v2[i] = _items[0][i];
@@ -2238,7 +2238,7 @@ void Scene52::moveDownAlienRow() {
int Scene52::updateHitAlien() {
int result = 0, rowNum, ya;
-
+
int y = _shipCannonTopY - _shipCannonPosY;
if (y == 26) {
@@ -2262,7 +2262,7 @@ int Scene52::updateHitAlien() {
result = 1;
}
}
-
+
return result;
}
@@ -2309,7 +2309,7 @@ int Scene52::getHitAlienNum(int rowNum) {
int Scene52::alienCannonHitShip(int cannonNum) {
int result = 0;
-
+
if (_aliensCount) {
result = 0;
} else {
@@ -2332,7 +2332,7 @@ int Scene52::alienCannonHitShip(int cannonNum) {
int Scene52::alienCannonHitShield(int cannonNum) {
int result = 0;
-
+
int v3 = _alienCannonPosY[cannonNum] + 39;
if (_arcadeScreenBottom - 44 > v3)
return 0;
@@ -2361,7 +2361,7 @@ int Scene52::alienCannonHitShield(int cannonNum) {
return 0;
shieldNum = 2;
}
-
+
if (_shieldSpriteIds[shieldNum] == -1) {
result = 0;
} else {
@@ -2383,7 +2383,7 @@ int Scene52::alienCannonHitShield(int cannonNum) {
bool Scene52::shipCannonHitShield(int cannonNum) {
bool result = false;
-
+
if (_shipCannonPosX < _shieldPosX[0])
return result;
@@ -2426,7 +2426,7 @@ bool Scene52::shipCannonHitShield(int cannonNum) {
bool Scene52::shipCannonHitAlien() {
bool result = false;
-
+
if (_aliensCount || checkAlienRow(0))
return false;
@@ -2621,7 +2621,7 @@ void Scene52::drawScore(int score) {
void Scene52::run() {
_vm->_timers[1] = 0;
-
+
_vm->hideCursor();
// TODO loadFont("maturasc", "Matura MT Script Capitals", 2000);
@@ -2710,9 +2710,9 @@ void Scene52::run() {
break;
}
}
-
+
update();
-
+
if (clearKeyStatus()) {
_alienWave = false;
_vm->_gameSys->waitForUpdate();
diff --git a/engines/gnap/scenes/arcade.h b/engines/gnap/scenes/arcade.h
index 4255a2d..b99d261 100644
--- a/engines/gnap/scenes/arcade.h
+++ b/engines/gnap/scenes/arcade.h
@@ -225,7 +225,7 @@ private:
int _shipPosX;
int _shipCannonPosX, _shipCannonPosY;
bool _shipCannonFiring;
- bool _shipCannonFired;
+ bool _shipCannonFired;
int _shipCannonWidth, _shipCannonHeight;
int _shipCannonTopY;
int _shipMidX, _shipMidY;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 2ad6d88..2255eda 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -68,7 +68,7 @@ void Scene01::updateHotspots() {
void Scene01::run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
-
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -109,7 +109,7 @@ void Scene01::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
-
+
case kHS01Device:
if (_vm->_gnapActionStatus < 0) {
_vm->runMenu();
@@ -277,12 +277,12 @@ void Scene01::run() {
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
-void Scene01::updateAnimations() {
+void Scene01::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
@@ -399,9 +399,9 @@ void Scene02::run() {
_nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
-
+
_vm->queueInsertDeviceIcon();
-
+
switch (_vm->_prevSceneNum) {
case 3:
_vm->initGnapPos(11, 6, kDirBottomLeft);
@@ -445,16 +445,16 @@ void Scene02::run() {
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
}
-
+
while (!_vm->_sceneDone) {
- _vm->updateMouseCursor();
+ _vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 6, 7, 6, 8, 6);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS02Device:
if (_vm->_gnapActionStatus < 0) {
@@ -657,12 +657,12 @@ void Scene02::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x1091C))
_vm->playSound(0x1091C, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
@@ -687,15 +687,15 @@ void Scene02::run() {
}
_vm->playSoundC();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -807,7 +807,7 @@ void Scene02::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x150) {
_vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
@@ -874,24 +874,24 @@ void Scene03::updateHotspots() {
void Scene03::run() {
_vm->playSound(0x10925, true);
_vm->startSoundTimerC(7);
-
+
_vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
-
+
_platypusHypnotized = false;
-
+
_vm->initGnapPos(3, 4, kDirBottomRight);
-
+
_vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currFrogSequenceId = 0x1C6;
_nextFrogSequenceId = -1;
_vm->_gameSys->setAnimation(0x1C6, 253, 2);
-
+
_vm->_timers[6] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
_vm->_timers[5] = _vm->getRandom(100) + 200;
-
+
if (_vm->isFlag(kGFPlatypus)) {
_vm->initPlatypusPos(5, 4, kDirNone);
} else {
@@ -901,27 +901,27 @@ void Scene03::run() {
_vm->_platypusSequenceId = 0x1C2;
_vm->_platypusSequenceDatNum = 0;
}
-
+
_vm->_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (!_vm->isFlag(kGFGrassTaken))
_vm->_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->endSceneInit();
-
+
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
_vm->gnapWalkTo(3, 6, -1, 0x107B9, 1);
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS03Platypus:
if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
@@ -1091,21 +1091,21 @@ void Scene03::run() {
}
}
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x10925))
_vm->playSound(0x10925, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
@@ -1140,9 +1140,9 @@ void Scene03::run() {
}
_vm->playSoundC();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -1151,7 +1151,7 @@ void Scene03::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
_vm->_timers[6] = _vm->getRandom(20) + 30;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1237,7 +1237,7 @@ void Scene03::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
_vm->_gameSys->setAnimation(0, 0, 1);
@@ -1280,14 +1280,14 @@ void Scene03::updateAnimations() {
_nextPlatSequenceId = -1;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
_vm->_gameSys->setAnimation(_nextFrogSequenceId, 253, 2);
_vm->_gameSys->insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
_currFrogSequenceId = _nextFrogSequenceId;
_nextFrogSequenceId = -1;
}
-
+
if (_vm->_gameSys->getAnimationStatus(5) == 2) {
_vm->_gameSys->setAnimation(0, 0, 5);
_vm->invAdd(kItemGrass);
@@ -1342,7 +1342,7 @@ void Scene04::run() {
_currDogSequenceId = 0x210;
_nextDogSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x210, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_vm->_timers[6] = _vm->getRandom(20) + 60;
@@ -1352,12 +1352,12 @@ void Scene04::run() {
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant) && _vm->_cursorValue == 4)
_vm->_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (!_vm->isFlag(kGFTwigTaken))
_vm->_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->isFlag(kGFPlatyPussDisguised)) {
_vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
@@ -1407,16 +1407,16 @@ void Scene04::run() {
_vm->gnapWalkTo(9, 9, -1, 0x107BA, 1);
}
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 4, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS04Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1456,7 +1456,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04Twig:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1480,7 +1480,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04Axe:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1505,7 +1505,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04Dog:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1537,7 +1537,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04Door:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1568,7 +1568,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04ExitTruck:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1582,7 +1582,7 @@ void Scene04::run() {
_vm->_newSceneNum = 33;
}
break;
-
+
case kHS04Window:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1612,7 +1612,7 @@ void Scene04::run() {
}
}
break;
-
+
case kHS04ExitBarn:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1626,27 +1626,27 @@ void Scene04::run() {
_vm->_newSceneNum = 35;
}
break;
-
+
case kHS04WalkArea1:
case kHS04WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x1091C))
_vm->playSound(0x1091C, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->platypusSub426234();
@@ -1672,15 +1672,15 @@ void Scene04::run() {
}
_vm->playSoundC();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1778,7 +1778,7 @@ void Scene04::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2) {
_vm->_gameSys->setAnimation(0, 0, 2);
_vm->invAdd(kItemTwig);
@@ -1786,7 +1786,7 @@ void Scene04::updateAnimations() {
_vm->setFlag(kGFTwigTaken);
updateHotspots();
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_nextDogSequenceId == 0x201) {
_vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
@@ -1848,11 +1848,11 @@ void Scene05::updateHotspots() {
void Scene05::run() {
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
-
+
_currChickenSequenceId = 0x142;
_vm->_gameSys->setAnimation(0x142, 100, 3);
_vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(10) + 30;
@@ -1860,9 +1860,9 @@ void Scene05::run() {
if (_vm->isFlag(kGFBarnPadlockOpen))
_vm->_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
_vm->initGnapPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
@@ -1877,16 +1877,16 @@ void Scene05::run() {
_vm->initPlatypusPos(7, 9, kDirNone);
_vm->endSceneInit();
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 12, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS05Device:
if (_vm->_gnapActionStatus < 0) {
@@ -2066,7 +2066,7 @@ void Scene05::run() {
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
case kHS05WalkArea3:
// Nothing
break;
@@ -2077,14 +2077,14 @@ void Scene05::run() {
_vm->_mouseClickState._left = false;
}
break;
-
+
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x1091C))
_vm->playSound(0x1091C, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
@@ -2105,16 +2105,16 @@ void Scene05::run() {
}
_vm->playSoundC();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(20) + 30;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -2178,7 +2178,7 @@ void Scene05::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
if (_vm->_platypusSequenceId == 0x146) {
_vm->_platX = 4;
@@ -2206,7 +2206,7 @@ void Scene05::updateAnimations() {
_vm->_timers[1] = 300;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_nextChickenSequenceId == 0x14B) {
_vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
@@ -2258,7 +2258,7 @@ void Scene06::updateHotspots() {
_vm->setHotspot(kHS06WalkArea4, 475, 469, 800, 505);
_vm->setHotspot(kHS06WalkArea5, 0, 0, 800, 504);
_vm->setDeviceHotspot(kHS06Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFGasTaken))
+ if (_vm->isFlag(kGFGasTaken))
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
if (_vm->_cursorValue == 4) {
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
@@ -2269,7 +2269,7 @@ void Scene06::updateHotspots() {
void Scene06::run() {
bool triedDeviceOnGas = false;
-
+
_vm->startSoundTimerC(7);
_horseTurnedBack = false;
@@ -2285,28 +2285,28 @@ void Scene06::run() {
_vm->_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
else
_vm->_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (!_vm->isFlag(kGFGasTaken) && _vm->_cursorValue != 4)
_vm->_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->initGnapPos(5, 12, kDirBottomRight);
_vm->initPlatypusPos(6, 12, kDirNone);
_vm->endSceneInit();
-
+
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 5, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS06Device:
if (_vm->_gnapActionStatus < 0) {
@@ -2314,7 +2314,7 @@ void Scene06::run() {
updateHotspots();
}
break;
-
+
case kHS06Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
@@ -2474,7 +2474,7 @@ void Scene06::run() {
}
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
_vm->updatePlatypusIdleSequence();
@@ -2504,15 +2504,15 @@ void Scene06::run() {
}
_vm->playSoundC();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -2555,7 +2555,7 @@ void Scene06::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
if (_vm->_platypusSequenceId == 0xFA) {
@@ -2580,7 +2580,7 @@ void Scene06::updateAnimations() {
_vm->_platypusActionStatus = 6;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
switch (_nextHorseSequenceId) {
case 0xF2:
@@ -2650,7 +2650,7 @@ void Scene07::run() {
_vm->invRemove(kItemGas);
_vm->invRemove(kItemNeedle);
-
+
if (!_vm->isFlag(kGFPlatypus))
_vm->_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
@@ -2761,7 +2761,7 @@ void Scene07::run() {
case kHS07WalkArea2:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
case kHS07WalkArea3:
// Nothing
break;
@@ -2897,52 +2897,52 @@ void Scene08::run() {
_vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currDogSequenceId = 0x135;
_nextDogSequenceId = 0x135;
-
+
_vm->_gameSys->setAnimation(0x135, 100, 3);
_vm->_gameSys->insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currManSequenceId = 0x140;
_nextManSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x140, 100, 2);
_vm->_gameSys->insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->_timers[4] = _vm->getRandom(50) + 75;
-
+
if (!_vm->isFlag(kGFBarnPadlockOpen))
_vm->_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (!_vm->isFlag(kGFTruckFilledWithGas))
_vm->_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (!_vm->isFlag(kGFTruckKeysUsed))
_vm->_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->initGnapPos(-1, 8, kDirBottomRight);
_vm->initPlatypusPos(-1, 7, kDirNone);
-
+
_vm->endSceneInit();
-
+
_vm->gnapWalkTo(1, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
-
+
_vm->_timers[5] = _vm->getRandom(40) + 50;
-
- while (!_vm->_sceneDone) {
+
+ while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x10919))
_vm->playSound(0x10919, true);
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS08Device:
if (_vm->_gnapActionStatus < 0) {
@@ -3156,7 +3156,7 @@ void Scene08::run() {
}
break;
}
-
+
updateAnimations();
if (!_vm->_isLeavingScene) {
@@ -3185,9 +3185,9 @@ void Scene08::run() {
}
playRandomSound(5);
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -3195,7 +3195,7 @@ void Scene08::run() {
_vm->_timers[4] = _vm->getRandom(50) + 75;
_vm->_timers[5] = _vm->getRandom(40) + 50;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -3236,7 +3236,7 @@ void Scene08::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
@@ -3249,14 +3249,14 @@ void Scene08::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
_vm->_gameSys->setAnimation(_nextManSequenceId, 100, 2);
_vm->_gameSys->insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currManSequenceId = _nextManSequenceId;
_nextManSequenceId = -1;
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_currDogSequenceId == 0x147)
_vm->_platypusActionStatus = -1;
@@ -3343,12 +3343,12 @@ void Scene09::updateHotspots() {
_vm->_hotspotsCount = 8;
}
-void Scene09::run() {
+void Scene09::run() {
_vm->queueInsertDeviceIcon();
-
+
_vm->_gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->_prevSceneNum == 8) {
_vm->initGnapPos(11, 8, kDirBottomLeft);
_vm->initPlatypusPos(12, 7, kDirUnk4);
@@ -3367,15 +3367,15 @@ void Scene09::run() {
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x10919))
_vm->playSound(0x10919, true);
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS09Device:
if (_vm->_gnapActionStatus < 0) {
@@ -3454,9 +3454,9 @@ void Scene09::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -3469,9 +3469,9 @@ void Scene09::run() {
}
playRandomSound(5);
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -3479,7 +3479,7 @@ void Scene09::run() {
_vm->_timers[4] = _vm->getRandom(150) + 50;
_vm->_timers[5] = _vm->getRandom(40) + 50;
}
-
+
_vm->gameUpdateTick();
}
}
diff --git a/engines/gnap/scenes/group0.h b/engines/gnap/scenes/group0.h
index b288512..38ded68 100644
--- a/engines/gnap/scenes/group0.h
+++ b/engines/gnap/scenes/group0.h
@@ -295,7 +295,7 @@ public:
virtual void updateAnimationsCb() {}
private:
- bool _platypusHypnotized;
+ bool _platypusHypnotized;
bool _platypusScared;
int _nextPlatSequenceId;
int _nextFrogSequenceId;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index d746eb5..9076750 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -57,16 +57,16 @@ void Scene10::updateHotspots() {
void Scene10::run() {
_currCookSequenceId = 0x103;
-
+
_vm->_gameSys->setAnimation(0x103, 100, 2);
_vm->_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_nextCookSequenceId = 0x106;
if (!_vm->isFlag(kGFMudTaken))
_vm->_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->_prevSceneNum == 9) {
_vm->initGnapPos(11, 8, kDirBottomLeft);
_vm->initPlatypusPos(12, 7, kDirUnk4);
@@ -87,19 +87,19 @@ void Scene10::run() {
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1091E))
_vm->playSound(0x1091E, true);
-
+
if (!_vm->isSoundPlaying(0x1091A))
_vm->playSound(0x1091A, true);
-
+
_vm->updateMouseCursor();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS10Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -289,7 +289,7 @@ void Scene10::run() {
updateHotspots();
}
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapActionIdle(0x10C);
@@ -298,9 +298,9 @@ void Scene10::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -324,15 +324,15 @@ void Scene10::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -349,7 +349,7 @@ void Scene10::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
@@ -358,9 +358,9 @@ void Scene10::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextCookSequenceId != -1) {
-
+
switch (_nextCookSequenceId) {
case 0x109:
_vm->_platX = 4;
@@ -404,7 +404,7 @@ void Scene10::updateAnimations() {
_currCookSequenceId = _nextCookSequenceId;
break;
}
-
+
switch (_currCookSequenceId) {
case 0x106: {
// TODO: Refactor into a if + a switch
@@ -516,13 +516,13 @@ void Scene11::updateHotspots() {
void Scene11::run() {
bool flag = true;
-
+
_vm->_timers[7] = 50;
_vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
-
+
_currGoggleGuySequenceId = 0x1F9;
_currHookGuySequenceId = 0x201;
-
+
switch (_vm->_prevSceneNum) {
case 13:
_vm->initGnapPos(8, 5, kDirBottomLeft);
@@ -544,41 +544,41 @@ void Scene11::run() {
_vm->initPlatypusPos(6, 5, kDirUnk4);
break;
}
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->_gameSys->insertSequence(_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
-
+
_nextHookGuySequenceId = -1;
-
+
_vm->_gameSys->setAnimation(_currHookGuySequenceId, 120, 3);
_vm->_gameSys->insertSequence(_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
-
+
_nextGoggleGuySequenceId = -1;
-
+
_vm->_gameSys->setAnimation(_currGoggleGuySequenceId, 121, 2);
-
+
_vm->_timers[5] = _vm->getRandom(100) + 75;
_vm->_timers[4] = _vm->getRandom(40) + 20;
_vm->_timers[6] = _vm->getRandom(100) + 100;
_vm->endSceneInit();
-
+
if (_vm->_prevSceneNum == 12) {
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
_vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
-
+
while (!_vm->_sceneDone) {
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS11Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -718,18 +718,18 @@ void Scene11::run() {
updateHotspots();
}
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
if (flag && !_vm->_timers[7]) {
flag = false;
@@ -786,9 +786,9 @@ void Scene11::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -796,7 +796,7 @@ void Scene11::run() {
_vm->_timers[5] = _vm->getRandom(50) + 75;
_vm->_timers[4] = _vm->getRandom(40) + 20;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -867,7 +867,7 @@ void Scene11::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextGoggleGuySequenceId != -1) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
_vm->_gameSys->insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
@@ -877,7 +877,7 @@ void Scene11::updateAnimations() {
if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
_vm->_gnapActionStatus = -1;
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_nextHookGuySequenceId == 0x204) {
_vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
@@ -902,7 +902,7 @@ void Scene11::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(4) == 2) {
_vm->_gameSys->setAnimation(0, 0, 4);
_vm->_hotspots[kHS11Billard]._flags &= ~SF_DISABLED;
@@ -946,29 +946,29 @@ void Scene12::run() {
_vm->_gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currToothGuySequenceId = 0x200;
_nextToothGuySequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x200, 50, 2);
_vm->_gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currBeardGuySequenceId = 0x202;
_nextBeardGuySequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x202, 50, 4);
_vm->_gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currBarkeeperSequenceId = 0x203;
_nextBarkeeperSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x203, 50, 3);
-
+
_vm->_timers[4] = 30;
_vm->_timers[6] = _vm->getRandom(30) + 20;
_vm->_timers[5] = _vm->getRandom(30) + 20;
_vm->_timers[7] = _vm->getRandom(100) + 100;
-
+
if (_vm->_prevSceneNum == 15) {
_vm->initGnapPos(5, 6, kDirBottomRight);
_vm->initPlatypusPos(3, 7, kDirNone);
@@ -983,14 +983,14 @@ void Scene12::run() {
while (!_vm->_sceneDone) {
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->updateGrabCursorSprite(0, 0);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS12Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1160,9 +1160,9 @@ void Scene12::run() {
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -1218,9 +1218,9 @@ void Scene12::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -1229,7 +1229,7 @@ void Scene12::run() {
_vm->_timers[5] = _vm->getRandom(30) + 20;
_vm->_timers[6] = _vm->getRandom(30) + 20;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1326,7 +1326,7 @@ void Scene12::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
@@ -1338,7 +1338,7 @@ void Scene12::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(2) == 2) {
if (_currToothGuySequenceId == 0x1E9) {
_vm->_gameSys->setAnimation(0, 0, 2);
@@ -1381,7 +1381,7 @@ void Scene12::updateAnimations() {
_vm->_platypusActionStatus = -1;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_vm->_gnapActionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
_vm->_gnapActionStatus = -1;
@@ -1399,7 +1399,7 @@ void Scene12::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextBeardGuySequenceId != -1) {
_vm->_gameSys->insertSequence(_nextBeardGuySequenceId, 50, _currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
_vm->_gameSys->setAnimation(_nextBeardGuySequenceId, 50, 4);
@@ -1465,9 +1465,9 @@ void Scene13::run() {
int currSoundId = 0;
_vm->queueInsertDeviceIcon();
-
+
_vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->_prevSceneNum == 14) {
_vm->initGnapPos(6, 6, kDirBottomLeft);
_vm->initPlatypusPos(9, 8, kDirNone);
@@ -1484,15 +1484,15 @@ void Scene13::run() {
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1091A))
_vm->playSound(0x1091A, true);
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS13Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1663,7 +1663,7 @@ void Scene13::run() {
case kHS13WalkArea1:
// Nothing
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1671,9 +1671,9 @@ void Scene13::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
if (_vm->_platY == 5 || _vm->_platY == 6)
@@ -1726,9 +1726,9 @@ void Scene13::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -1736,7 +1736,7 @@ void Scene13::run() {
_vm->_timers[4] = _vm->getRandom(20) + 20;
_vm->_timers[5] = _vm->getRandom(50) + 50;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1798,7 +1798,7 @@ void Scene13::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_platypusActionStatus = -1;
@@ -1831,12 +1831,12 @@ void Scene14::run() {
_vm->_largeSprite = nullptr;
_vm->queueInsertDeviceIcon();
-
+
if (!_vm->isFlag(kGFNeedleTaken))
_vm->_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->endSceneInit();
-
+
if (!_vm->isFlag(kGFNeedleTaken) && _vm->invHas(kItemTongs))
_vm->_largeSprite = _vm->_gameSys->createSurface(1);
@@ -1845,14 +1845,14 @@ void Scene14::run() {
_vm->_gnapSequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
-
- while (!_vm->_sceneDone) {
+
+ while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS14Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1919,37 +1919,37 @@ void Scene14::run() {
_vm->_mouseClickState._left = false;
break;
}
-
+
updateAnimations();
_vm->checkGameKeys();
-
+
if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
_vm->_gameSys->insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
-
+
if (_vm->_largeSprite)
_vm->deleteSurface(&_vm->_largeSprite);
}
-void Scene14::updateAnimations() {
+void Scene14::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
_vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
_vm->_gameSys->setAnimation(0x10843, 301, 1);
_vm->_gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
}
-
+
if (_vm->_gameSys->getAnimationStatus(1) == 2) {
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_sceneDone = true;
@@ -2008,23 +2008,23 @@ void Scene15::run() {
_vm->_gameSys->setAnimation(0xD5, 1, 0);
_vm->_gameSys->insertSequence(_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->endSceneInit();
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_hotspots[kHS15Platypus]._x1 = 0;
_vm->_hotspots[kHS15Platypus]._y1 = 0;
_vm->_hotspots[kHS15Platypus]._x2 = 0;
_vm->_hotspots[kHS15Platypus]._y2 = 0;
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS15Device:
if (_vm->_gnapActionStatus < 0) {
@@ -2145,21 +2145,21 @@ void Scene15::run() {
break;
}
-
+
updateAnimations();
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
-void Scene15::updateAnimations() {
+void Scene15::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
if (_vm->_isLeavingScene) {
_vm->_sceneDone = true;
@@ -2491,7 +2491,7 @@ void Scene17::run() {
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS17Device:
if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) {
@@ -2565,7 +2565,7 @@ void Scene17::run() {
}
}
break;
-
+
case kHS17Phone1:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
@@ -2650,7 +2650,7 @@ void Scene17::run() {
}
}
break;
-
+
case kHS17ExitToyStore:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -2662,7 +2662,7 @@ void Scene17::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS17ExitGrubCity:
if (_vm->_gnapActionStatus < 0) {
platHangUpPhone();
@@ -2674,14 +2674,14 @@ void Scene17::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS17WalkArea1:
case kHS17WalkArea2:
case kHS17WalkArea3:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -2689,12 +2689,12 @@ void Scene17::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x10940))
_vm->playSound(0x10940, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
_vm->platypusSub426234();
@@ -2777,15 +2777,15 @@ void Scene17::run() {
}
_vm->playSoundA();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -3126,11 +3126,11 @@ void Scene18::updateHotspots() {
void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
// CHECKME: (x, y) is always set to (-1, -1)
- // TODO Cleanup
+ // TODO Cleanup
static const int kSequenceIds[] = {
0x203, 0x204
};
-
+
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
int clippedX, v12, v5, v10, v11, direction;
@@ -3152,7 +3152,7 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
v12 = _vm->_gridMaxX - 1;
if (_vm->_gridMaxX - 1 >= v11)
v12 = v11;
-
+
if (v12 == _vm->_gnapX) {
gnapSeqId = _vm->_gnapSequenceId;
gnapId = _vm->_gnapId;
@@ -3195,7 +3195,7 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
gnapGridX += direction;
} while (v12 != gnapGridX);
}
-
+
if (argC >= 0) {
_vm->_gnapSequenceId = ridToEntryIndex(argC);
_vm->_gnapSequenceDatNum = ridToDatIndex(argC);
@@ -3206,17 +3206,17 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
_vm->_gnapSequenceId = 0x209;
_vm->_gnapSequenceDatNum = 0;
}
-
+
if (direction == 1)
_vm->_gnapIdleFacing = kDirBottomRight;
else
_vm->_gnapIdleFacing = kDirBottomLeft;
-
+
_vm->_gnapId = 20 * _vm->_gnapY + 1;
-
+
if (animationIndex >= 0)
_vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
-
+
_vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
@@ -3311,13 +3311,13 @@ void Scene18::run() {
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(4);
-
+
_vm->_timers[5] = _vm->getRandom(100) + 100;
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->clearFlag(kGFPlatyPussDisguised);
-
+
if (!_vm->isFlag(kGFUnk14))
_vm->_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
@@ -3341,7 +3341,7 @@ void Scene18::run() {
_vm->playSound(0x22B, true);
}
}
-
+
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
if (_vm->_prevSceneNum == 17)
_vm->initGnapPos(4, 11, kDirBottomRight);
@@ -3398,12 +3398,12 @@ void Scene18::run() {
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 20, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS18Device:
if (_vm->_gnapActionStatus < 0) {
@@ -3708,18 +3708,18 @@ void Scene18::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x10940))
_vm->playSound(0x10940, true);
-
+
if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
_vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCan &&
_vm->_gnapActionStatus != kAS18OpenTopValve && _vm->_gnapActionStatus != kAS18OpenTopValveDone &&
_vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCanDone)
_vm->playSound(0x22B, true);
-
+
if (!_vm->_isLeavingScene) {
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
if (_vm->_platypusActionStatus == kAS18PlatComesHere) {
@@ -3751,15 +3751,15 @@ void Scene18::run() {
if (!_vm->isFlag(kGFPlatyPussDisguised))
_vm->updateGnapIdleSequence();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
@@ -3994,7 +3994,7 @@ void Scene18::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
_vm->_gameSys->setAnimation(0, 0, 3);
++_platPhoneIter;
@@ -4101,7 +4101,7 @@ void Scene19::run() {
_vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
@@ -4274,7 +4274,7 @@ void Scene19::run() {
}
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updateGnapIdleSequence();
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
@@ -4293,13 +4293,13 @@ void Scene19::run() {
}
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
diff --git a/engines/gnap/scenes/group1.h b/engines/gnap/scenes/group1.h
index a1f86e2..2a9fe8c 100644
--- a/engines/gnap/scenes/group1.h
+++ b/engines/gnap/scenes/group1.h
@@ -373,7 +373,7 @@ private:
int _nextUpperButtonSequenceId;
int _currUpperButtonSequenceId;
int _nextLowerButtonSequenceId;
- int _currLowerButtonSequenceId;
+ int _currLowerButtonSequenceId;
};
class Scene17: public Scene {
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 293d58c..98b6752 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -173,26 +173,26 @@ void Scene20::run() {
_currStonerGuySequenceId = 0x173;
break;
}
-
+
_nextStonerGuySequenceId = -1;
_vm->_gameSys->setAnimation(_currStonerGuySequenceId, 21, 2);
_vm->_gameSys->insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->_timers[6] = _vm->getRandom(20) + 30;
-
+
_currGroceryStoreGuySequenceId = 0x17C;
_nextGroceryStoreGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
+ _vm->_gameSys->setAnimation(0x17C, 20, 3);
_vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->isFlag(kGFGroceryStoreHatTaken))
_vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
else
_vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->isFlag(kGFSceneFlag1)) {
_vm->clearFlag(kGFSceneFlag1);
_vm->endSceneInit();
@@ -247,17 +247,17 @@ void Scene20::run() {
break;
}
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
_vm->testWalk(0, 1, 7, 9, 8, 9);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS20Device:
if (_vm->_gnapActionStatus < 0) {
@@ -304,7 +304,7 @@ void Scene20::run() {
_vm->_platypusFacing = kDirUnk4;
}
break;
-
+
case kHS20ExitPhone:
if (_vm->_gnapActionStatus < 0) {
if (_stonerGuyShowingJoint)
@@ -316,7 +316,7 @@ void Scene20::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS20ExitOutsideToyStore:
if (_vm->_gnapActionStatus < 0) {
if (_stonerGuyShowingJoint)
@@ -330,7 +330,7 @@ void Scene20::run() {
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
-
+
case kHS20ExitInsideGrubCity:
if (_vm->_gnapActionStatus < 0) {
if (_stonerGuyShowingJoint)
@@ -343,7 +343,7 @@ void Scene20::run() {
_vm->_platypusFacing = kDirUnk4;
}
break;
-
+
case kHS20ExitOutsideCircusWorld:
if (_vm->_gnapActionStatus < 0) {
if (_stonerGuyShowingJoint)
@@ -355,7 +355,7 @@ void Scene20::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS20StonerGuy:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -388,7 +388,7 @@ void Scene20::run() {
}
}
break;
-
+
case kHS20GroceryStoreGuy:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -416,7 +416,7 @@ void Scene20::run() {
}
}
break;
-
+
case kHS20GroceryStoreHat:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
@@ -444,26 +444,26 @@ void Scene20::run() {
}
}
break;
-
+
case kHS20WalkArea1:
case kHS20WalkArea2:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
updateAnimations();
if (!_vm->isSoundPlaying(0x10940))
_vm->playSound(0x10940, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0) {
_vm->_hotspots[kHS20WalkArea1]._y2 += 48;
@@ -497,9 +497,9 @@ void Scene20::run() {
}
_vm->playSoundA();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -628,7 +628,7 @@ void Scene20::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
switch (_nextGroceryStoreGuySequenceId) {
case 0x176:
@@ -730,11 +730,11 @@ void Scene21::updateHotspots() {
void Scene21::run() {
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(6);
-
+
_vm->_timers[5] = _vm->getRandom(100) + 100;
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
_vm->initGnapPos(5, 8, kDirBottomRight);
@@ -765,14 +765,14 @@ void Scene21::run() {
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS21Device:
if (_vm->_gnapActionStatus < 0) {
@@ -862,7 +862,7 @@ void Scene21::run() {
}
}
break;
-
+
case kHS21ExitOutsideGrubCity:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -872,26 +872,26 @@ void Scene21::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS21WalkArea1:
case kHS21WalkArea2:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x10940))
_vm->playSound(0x10940, true);
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -915,15 +915,15 @@ void Scene21::run() {
}
_vm->playSoundA();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -970,7 +970,7 @@ void Scene21::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
if (_nextOldLadySequenceId == 0x87) {
_vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
@@ -1020,17 +1020,17 @@ void Scene22::updateHotspots() {
void Scene22::run() {
_vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currCashierSequenceId = 0x59;
_nextCashierSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x59, 1, 3);
_vm->_gameSys->insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->_timers[6] = _vm->getRandom(30) + 20;
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->_prevSceneNum == 20) {
_vm->initGnapPos(2, 8, kDirBottomRight);
_vm->initPlatypusPos(1, 8, kDirNone);
@@ -1042,7 +1042,7 @@ void Scene22::run() {
_vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
}
-
+
if (_vm->isFlag(kGFSceneFlag1)) {
int storeDetectiveSeqId;
_vm->setGrabCursorSprite(-1);
@@ -1075,16 +1075,16 @@ void Scene22::run() {
_vm->_newSceneNum = 20;
_caughtBefore = true;
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS22Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1138,7 +1138,7 @@ void Scene22::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1);
}
break;
-
+
case kHS22Cashier:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1164,12 +1164,12 @@ void Scene22::run() {
}
}
break;
-
+
case kHS22WalkArea1:
case kHS22WalkArea2:
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1177,9 +1177,9 @@ void Scene22::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -1206,9 +1206,9 @@ void Scene22::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -1218,7 +1218,7 @@ void Scene22::run() {
_vm->_timers[1] = _vm->getRandom(20) + 30;
_vm->_timers[0] = _vm->getRandom(75) + 75;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1236,7 +1236,7 @@ void Scene22::updateAnimations() {
}
_vm->_gnapActionStatus = -1;
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
_vm->_gameSys->setAnimation(_nextCashierSequenceId, 1, 3);
_vm->_gameSys->insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
@@ -1269,21 +1269,21 @@ void Scene23::updateHotspots() {
void Scene23::run() {
_vm->_timers[4] = _vm->getRandom(100) + 200;
_vm->_timers[5] = _vm->getRandom(100) + 200;
-
+
_currStoreClerkSequenceId = 0xB4;
_nextStoreClerkSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0xB4, 1, 4);
_vm->_gameSys->insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->queueInsertDeviceIcon();
-
+
_vm->initGnapPos(-1, 7, kDirBottomRight);
_vm->initPlatypusPos(-2, 7, kDirNone);
_vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
-
+
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
@@ -1295,16 +1295,16 @@ void Scene23::run() {
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
_vm->setFlag(kGFUnk24);
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 3, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS23Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1312,7 +1312,7 @@ void Scene23::run() {
updateHotspots();
}
break;
-
+
case kHS23Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
@@ -1338,7 +1338,7 @@ void Scene23::run() {
}
}
break;
-
+
case kHS23Cereals:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1374,7 +1374,7 @@ void Scene23::run() {
}
}
break;
-
+
case kHS23ExitFrontGrubCity:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1384,13 +1384,13 @@ void Scene23::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
}
break;
-
+
case kHS23WalkArea1:
case kHS23WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1398,9 +1398,9 @@ void Scene23::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -1434,15 +1434,15 @@ void Scene23::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1472,7 +1472,7 @@ void Scene23::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
@@ -1522,31 +1522,31 @@ void Scene24::updateHotspots() {
void Scene24::run() {
int counter = 0;
-
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(9);
-
+
_vm->_timers[7] = _vm->getRandom(100) + 100;
-
+
_vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
-
+
_vm->_timers[4] = _vm->getRandom(20) + 50;
_vm->_timers[5] = _vm->getRandom(20) + 40;
_vm->_timers[6] = _vm->getRandom(50) + 30;
-
+
_vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currWomanSequenceId = 0x35;
_girlSequenceId = 0x36;
_boySequenceId = 0x30;
-
+
if (_vm->_debugLevel == 4)
_vm->startIdleTimer(8);
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->_prevSceneNum == 20) {
_vm->initGnapPos(1, 8, kDirBottomRight);
_vm->initPlatypusPos(2, 8, kDirNone);
@@ -1560,16 +1560,16 @@ void Scene24::run() {
_vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS24Device:
@@ -1578,7 +1578,7 @@ void Scene24::run() {
updateHotspots();
}
break;
-
+
case kHS24Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
@@ -1604,7 +1604,7 @@ void Scene24::run() {
}
}
break;
-
+
case kHS24ExitCircusWorld:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1614,7 +1614,7 @@ void Scene24::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS24ExitOutsideGrubCity:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1625,14 +1625,14 @@ void Scene24::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS24WalkArea1:
case kHS24WalkArea2:
case kHS24WalkArea3:
if (_vm->_gnapActionStatus == -1)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1640,12 +1640,12 @@ void Scene24::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x10940))
_vm->playSound(0x10940, true);
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -1694,9 +1694,9 @@ void Scene24::run() {
_vm->updateIdleTimer();
_vm->playSoundA();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -1780,16 +1780,16 @@ void Scene25::playAnims(int index) {
void Scene25::run() {
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(5);
-
+
_currTicketVendorSequenceId = 0x52;
_vm->_gameSys->setAnimation(0x52, 39, 3);
_vm->_gameSys->insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
-
+
_nextTicketVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 20;
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->_prevSceneNum == 24) {
_vm->initGnapPos(5, 11, kDirUpLeft);
_vm->initPlatypusPos(6, 11, kDirUnk4);
@@ -1803,14 +1803,14 @@ void Scene25::run() {
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS25Device:
if (_vm->_gnapActionStatus < 0) {
@@ -1818,7 +1818,7 @@ void Scene25::run() {
updateHotspots();
}
break;
-
+
case kHS25Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
@@ -1844,7 +1844,7 @@ void Scene25::run() {
}
}
break;
-
+
case kHS25TicketVendor:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
@@ -1875,7 +1875,7 @@ void Scene25::run() {
}
}
break;
-
+
case kHS25ExitOutsideCircusWorld:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1885,7 +1885,7 @@ void Scene25::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
-
+
case kHS25ExitInsideCircusWorld:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFNeedleTaken)) {
@@ -1904,7 +1904,7 @@ void Scene25::run() {
}
}
break;
-
+
case kHS25Posters1:
case kHS25Posters2:
case kHS25Posters3:
@@ -1934,13 +1934,13 @@ void Scene25::run() {
}
}
break;
-
+
case kHS25WalkArea1:
case kHS25WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1948,9 +1948,9 @@ void Scene25::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
@@ -1991,15 +1991,15 @@ void Scene25::run() {
}
_vm->playSoundA();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -2045,7 +2045,7 @@ void Scene25::updateAnimations() {
break;
}
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2) {
if (_nextTicketVendorSequenceId == 0x53) {
_vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
@@ -2104,7 +2104,7 @@ void Scene26::run() {
_vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
-
+
if (_vm->_prevSceneNum == 25) {
_vm->initGnapPos(-1, 8, kDirBottomRight);
_vm->initPlatypusPos(-2, 8, kDirNone);
@@ -2208,7 +2208,7 @@ void Scene26::run() {
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -2244,13 +2244,13 @@ void Scene26::run() {
}
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -2310,10 +2310,10 @@ void Scene27::run() {
_vm->startIdleTimer(6);
_vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currJanitorSequenceId = 0xCB;
_nextJanitorSequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0xCB, 39, 3);
_vm->_timers[5] = _vm->getRandom(20) + 60;
@@ -2489,16 +2489,16 @@ void Scene27::run() {
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
-
+
}
-
+
updateAnimations();
if (!_vm->isSoundPlaying(0x1093B))
@@ -2869,7 +2869,7 @@ void Scene28::run() {
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -2900,7 +2900,7 @@ void Scene28::run() {
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -3083,7 +3083,7 @@ void Scene29::run() {
_vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gameSys->setAnimation(0, 0, 3);
}
-
+
_vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
_vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
@@ -3104,10 +3104,10 @@ void Scene29::run() {
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS29Device:
if (_vm->_gnapActionStatus < 0) {
@@ -3220,7 +3220,7 @@ void Scene29::run() {
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -3228,7 +3228,7 @@ void Scene29::run() {
}
break;
}
-
+
updateAnimations();
if (!_vm->isSoundPlaying(0x1093B))
@@ -3265,7 +3265,7 @@ void Scene29::run() {
}
_vm->playSoundB();
}
-
+
_vm->checkGameKeys();
if (_vm->isKeyStatus1(8)) {
@@ -3273,7 +3273,7 @@ void Scene29::run() {
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index a9b86b7..6d31df8 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -196,20 +196,20 @@ void Scene30::run() {
}
_vm->playSoundB();
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
-void Scene30::updateAnimations() {
+void Scene30::updateAnimations() {
if (_vm->_gameSys->getAnimationStatus(0) == 2) {
_vm->_gameSys->setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
@@ -474,12 +474,12 @@ void Scene31::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->isSoundPlaying(0x1093B))
_vm->playSound(0x1093B, true);
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
_vm->updatePlatypusIdleSequence();
@@ -523,7 +523,7 @@ void Scene31::run() {
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1391,7 +1391,7 @@ void Scene39::updateHotspots() {
void Scene39::run() {
// Bug in the original? Timer was never initialized.
_vm->_timers[5] = 0;
-
+
_vm->queueInsertDeviceIcon();
_currGuySequenceId = 0x33;
@@ -1409,16 +1409,16 @@ void Scene39::run() {
_vm->initPlatypusPos(5, 7, kDirNone);
_vm->endSceneInit();
}
-
+
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094B)) {
_vm->playSound(0x1094B, true);
_vm->setSoundVolume(0x1094B, 60);
}
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
@@ -1430,7 +1430,7 @@ void Scene39::run() {
updateHotspots();
_vm->_timers[5] = _vm->getRandom(20) + 50;
break;
-
+
case kHS39Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1454,7 +1454,7 @@ void Scene39::run() {
}
}
break;
-
+
case kHS39ExitUfoParty:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1464,7 +1464,7 @@ void Scene39::run() {
_vm->_newSceneNum = 40;
}
break;
-
+
case kHS39Sign:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1485,7 +1485,7 @@ void Scene39::run() {
}
}
break;
-
+
case kHS39ExitInsideHouse:
if (_vm->_gnapActionStatus < 0) {
_vm->_sceneDone = true;
@@ -1493,13 +1493,13 @@ void Scene39::run() {
_vm->_newSceneNum = 38;
}
break;
-
+
case kHS39WalkArea1:
case kHS39WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -1507,9 +1507,9 @@ void Scene39::run() {
}
break;
}
-
+
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
_vm->updatePlatypusIdleSequence();
@@ -1533,16 +1533,16 @@ void Scene39::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(20) + 50;
}
-
+
_vm->gameUpdateTick();
}
}
@@ -1555,7 +1555,7 @@ void Scene39::updateAnimations() {
else
_vm->_gnapActionStatus = -1;
}
-
+
if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
_vm->_gameSys->setAnimation(_nextGuySequenceId, 21, 3);
_vm->_gameSys->insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 1550703..d84717e 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -61,18 +61,18 @@ void Scene40::run() {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case kHS40Device:
_vm->runMenu();
updateHotspots();
break;
-
+
case kHS40Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -96,72 +96,72 @@ void Scene40::run() {
}
}
break;
-
+
case kHS40ExitCave:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 39;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitToyStand:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 41;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitBBQ:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 42;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitUfo:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 43;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitKissinBooth:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 44;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitDancefloor:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 45;
_vm->_sceneDone = true;
}
break;
-
+
case kHS40ExitShoe:
if (_vm->_gnapActionStatus < 0) {
_vm->_newSceneNum = 46;
_vm->_sceneDone = true;
}
break;
-
+
default:
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0)
_vm->_mouseClickState._left = false;
break;
-
+
}
-
+
updateAnimations();
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -244,24 +244,24 @@ void Scene41::run() {
gameSys.setAnimation(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 2);
gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
gameSys.insertSequence(0x128, 0, 0, 0, kSeqLoop, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO))
_currKidSequenceId = 0x11B;
else
_currKidSequenceId = 0x11D;
-
+
_nextKidSequenceId = -1;
-
+
gameSys.setAnimation(_currKidSequenceId, 1, 4);
gameSys.insertSequence(_currKidSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currToyVendorSequenceId = 0x118;
_nextToyVendorSequenceId = -1;
-
+
gameSys.setAnimation(0x118, 1, 3);
gameSys.insertSequence(_currToyVendorSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x127, 2, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_gnapSequenceId = 0x120;
_vm->_gnapSequenceDatNum = 0;
@@ -297,22 +297,22 @@ void Scene41::run() {
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094B))
_vm->playSound(0x1094B, true);
-
+
if (!_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_hotspots[kHS41ToyUfo]._x1 = _vm->_toyUfoX - 25;
_vm->_hotspots[kHS41ToyUfo]._y1 = _vm->_toyUfoY - 20;
_vm->_hotspots[kHS41ToyUfo]._x2 = _vm->_toyUfoX + 25;
_vm->_hotspots[kHS41ToyUfo]._y2 = _vm->_toyUfoY + 20;
}
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
switch (_vm->_sceneClickedHotspot) {
case kHS41UfoExitLeft:
@@ -323,7 +323,7 @@ void Scene41::run() {
_vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 2);
}
break;
-
+
case kHS41UfoExitRight:
if (_vm->_toyUfoActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -332,7 +332,7 @@ void Scene41::run() {
_vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 2);
}
break;
-
+
case kHS41UfoDevice:
_vm->runMenu();
updateHotspots();
@@ -348,7 +348,7 @@ void Scene41::run() {
_vm->_timers[4] = _vm->getRandom(100) + 100;
_vm->_timers[5] = _vm->getRandom(30) + 20;
break;
-
+
case kHS41Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -372,14 +372,14 @@ void Scene41::run() {
}
}
break;
-
+
case kHS41ExitCave:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave].x, _vm->_hotspotsWalkPos[kHS41ExitCave].y, 0, 0x107AE, 1);
_vm->_gnapActionStatus = kAS41LeaveScene;
_vm->_newSceneNum = 40;
break;
-
+
case kHS41Exit:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, 0, 0x107AF, 1);
@@ -387,7 +387,7 @@ void Scene41::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
break;
-
+
case kHS41ExitBBQ:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, 0, 0x107AB, 1);
@@ -395,7 +395,7 @@ void Scene41::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
break;
-
+
case kHS41ToyVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->_gnapActionStatus = kAS41UseQuarterWithToyVendor;
@@ -422,7 +422,7 @@ void Scene41::run() {
}
}
break;
-
+
case kHS41Kid:
if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
@@ -450,7 +450,7 @@ void Scene41::run() {
}
}
break;
-
+
case kHS41ToyUfo:
if (_vm->_grabCursorSpriteIndex == kItemGum) {
_vm->playGnapPullOutDevice(9, 0);
@@ -458,14 +458,14 @@ void Scene41::run() {
_vm->_gnapActionStatus = kAS41UseGumWithToyUfo;
}
break;
-
+
case kHS41WalkArea1:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
_vm->_gnapActionStatus = kAS41GiveBackToyUfo;
@@ -477,7 +477,7 @@ void Scene41::run() {
}
}
}
-
+
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -509,7 +509,7 @@ void Scene41::run() {
}
updateAnimations();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
_vm->updatePlatypusIdleSequence();
@@ -545,9 +545,9 @@ void Scene41::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
@@ -660,7 +660,7 @@ void Scene41::updateAnimations() {
break;
}
}
-
+
if (gameSys.getAnimationStatus(2) == 2) {
switch (_vm->_toyUfoActionStatus) {
case kAS41ToyUfoLeaveScene:
@@ -685,7 +685,7 @@ void Scene41::updateAnimations() {
}
_vm->_toyUfoActionStatus = -1;
}
-
+
if (gameSys.getAnimationStatus(3) == 2 && _nextToyVendorSequenceId != -1) {
gameSys.insertSequence(_nextToyVendorSequenceId, 1, _currToyVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextToyVendorSequenceId, 1, 3);
@@ -693,7 +693,7 @@ void Scene41::updateAnimations() {
_nextToyVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
}
-
+
if (gameSys.getAnimationStatus(4) == 2 && _nextKidSequenceId != -1) {
gameSys.insertSequence(_nextKidSequenceId, 1, _currKidSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextKidSequenceId, 1, 4);
@@ -1193,7 +1193,7 @@ void Scene43::updateHotspots() {
_vm->setHotspot(kHS43WalkArea1, 0, 0, 800, 445);
_vm->setHotspot(kHS43WalkArea2, 465, 0, 800, 493);
_vm->setDeviceHotspot(kHS43Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFUnk14))
+ if (_vm->isFlag(kGFUnk14))
_vm->_hotspots[kHS43Key]._flags = SF_DISABLED;
_vm->_hotspotsCount = 10;
}
@@ -1206,13 +1206,13 @@ void Scene43::run() {
if (!_vm->isFlag(kGFUnk14))
gameSys.insertSequence(0x1086F, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currTwoHeadedGuySequenceId = 0x13C;
_nextTwoHeadedGuySequenceId = -1;
-
+
gameSys.setAnimation(0x13C, 1, 2);
gameSys.insertSequence(_currTwoHeadedGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
_vm->_toyUfoActionStatus = -1;
@@ -1256,19 +1256,19 @@ void Scene43::run() {
break;
}
}
-
+
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094B))
_vm->playSound(0x1094B, true);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
switch (_vm->_sceneClickedHotspot) {
case kHS43UfoDevice:
@@ -1276,7 +1276,7 @@ void Scene43::run() {
updateHotspots();
_vm->_timers[4] = _vm->getRandom(100) + 100;
break;
-
+
case kHS43UfoExitLeft:
if (_vm->_toyUfoActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1285,7 +1285,7 @@ void Scene43::run() {
_vm->toyUfoFlyTo(-35, -1, -35, 799, 0, 300, 3);
}
break;
-
+
case kHS43UfoExitRight:
if (_vm->_toyUfoActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -1294,7 +1294,7 @@ void Scene43::run() {
_vm->toyUfoFlyTo(835, -1, 0, 835, 0, 300, 3);
}
break;
-
+
case kHS43UfoKey:
if (_vm->isFlag(kGFJointTaken)) {
_vm->_toyUfoActionStatus = 6;
@@ -1304,7 +1304,7 @@ void Scene43::run() {
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
}
break;
-
+
case kHS43UfoBucket:
_vm->_toyUfoActionStatus = 7;
_vm->toyUfoFlyTo(497, 143, 0, 799, 0, 300, 3);
@@ -1417,7 +1417,7 @@ void Scene43::run() {
break;
}
}
-
+
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) {
@@ -1427,11 +1427,11 @@ void Scene43::run() {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
-
+
updateAnimations();
-
+
_vm->toyUfoCheckTimer();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updatePlatypusIdleSequence();
@@ -1462,19 +1462,19 @@ void Scene43::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(100) + 100;
}
-
+
_vm->gameUpdateTick();
}
-
+
if (_vm->_newSceneNum == 54)
_vm->clearFlag(kGFGnapControlsToyUFO);
}
@@ -1513,7 +1513,7 @@ void Scene43::updateAnimations() {
break;
}
}
-
+
if (gameSys.getAnimationStatus(2) == 2) {
if (_currTwoHeadedGuySequenceId == 0x13A) {
if (_vm->isFlag(kGFGroceryStoreHatTaken)) {
@@ -1536,7 +1536,7 @@ void Scene43::updateAnimations() {
_vm->_timers[4] = _vm->getRandom(100) + 100;
}
}
-
+
if (gameSys.getAnimationStatus(3) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 4:
@@ -1644,7 +1644,7 @@ void Scene44::run() {
_currSpringGuySequenceId = 0xF8;
else
_currSpringGuySequenceId = 0xF9;
-
+
_nextSpringGuySequenceId = -1;
gameSys.setAnimation(_currSpringGuySequenceId, 1, 4);
gameSys.insertSequence(_currSpringGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
@@ -1664,9 +1664,9 @@ void Scene44::run() {
_nextKissingLadySequenceId = -1;
gameSys.setAnimation(0xEC, 1, 2);
}
-
+
gameSys.insertSequence(_currKissingLadySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
_vm->_toyUfoActionStatus = -1;
@@ -1721,19 +1721,19 @@ void Scene44::run() {
break;
}
}
-
+
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094B))
_vm->playSound(0x1094B, true);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
switch (_vm->_sceneClickedHotspot) {
case kHS44UfoExitLeft:
@@ -1767,7 +1767,7 @@ void Scene44::run() {
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
break;
-
+
case kHS44Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1798,7 +1798,7 @@ void Scene44::run() {
_vm->_gnapActionStatus = 0;
_vm->_newSceneNum = 40;
break;
-
+
case kHS44ExitUfo:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnapY, 0, 0x107AF, 1);
@@ -1806,14 +1806,14 @@ void Scene44::run() {
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
-
+
case kHS44ExitShow:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow].x, _vm->_hotspotsWalkPos[kHS44ExitShow].y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
_vm->_newSceneNum = 46;
break;
-
+
case kHS44KissingLady:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnapActionStatus = 2;
@@ -1843,7 +1843,7 @@ void Scene44::run() {
}
}
break;
-
+
case kHS44Spring:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring].x, _vm->_hotspotsWalkPos[kHS44Spring].y, 8, 0);
@@ -1869,7 +1869,7 @@ void Scene44::run() {
}
}
break;
-
+
case kHS44SpringGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, 8, 0);
@@ -1892,16 +1892,16 @@ void Scene44::run() {
}
}
break;
-
+
case kHS44WalkArea1:
case kHS44WalkArea2:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
-
+
}
}
-
+
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -1911,10 +1911,10 @@ void Scene44::run() {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
-
+
updateAnimations();
_vm->toyUfoCheckTimer();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
_vm->updatePlatypusIdleSequence();
@@ -1962,17 +1962,17 @@ void Scene44::run() {
}
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
}
-
- _vm->gameUpdateTick();
+
+ _vm->gameUpdateTick();
}
}
@@ -1994,7 +1994,7 @@ void Scene44::updateAnimations() {
}
_vm->_gnapActionStatus = -1;
}
-
+
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
@@ -2017,7 +2017,7 @@ void Scene44::updateAnimations() {
break;
}
}
-
+
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextKissingLadySequenceId == 0xF6) {
gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
@@ -2033,7 +2033,7 @@ void Scene44::updateAnimations() {
_vm->_timers[4] = _vm->getRandom(20) + 20;
}
}
-
+
if (gameSys.getAnimationStatus(4) == 2) {
if (_currSpringGuySequenceId == 0xFB) {
_vm->setGrabCursorSprite(kItemSpring);
@@ -2047,7 +2047,7 @@ void Scene44::updateAnimations() {
_vm->_timers[5] = _vm->getRandom(20) + 20;
}
}
-
+
if (gameSys.getAnimationStatus(3) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 6:
@@ -2119,7 +2119,7 @@ void Scene45::run() {
if (!_vm->isSoundPlaying(0x1094A))
_vm->playSound(0x1094A, true);
-
+
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x96, 1, 0, 0, kSeqNone, 0, 0, 0);
@@ -2129,7 +2129,7 @@ void Scene45::run() {
_currDancerSequenceId = 0x8F;
gameSys.setAnimation(_currDancerSequenceId, 1, 2);
gameSys.insertSequence(_currDancerSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
_vm->_toyUfoActionStatus = -1;
@@ -2170,7 +2170,7 @@ void Scene45::run() {
_vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
}
-
+
if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->setFlag(kGFUnk21);
_vm->setGrabCursorSprite(-1);
@@ -2209,22 +2209,22 @@ void Scene45::run() {
_vm->_gnapSequenceId = 0x7BD;
_vm->_gnapSequenceDatNum = 1;
}
-
+
_vm->playPlatypusSequence(0x9A);
gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
-
+
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094A))
_vm->playSound(0x1094A, true);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
switch (_vm->_sceneClickedHotspot) {
case kHS45UfoExitLeft:
@@ -2256,7 +2256,7 @@ void Scene45::run() {
_vm->runMenu();
updateHotspots();
break;
-
+
case kHS45Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2291,7 +2291,7 @@ void Scene45::run() {
_vm->_newSceneNum = 40;
}
break;
-
+
case kHS45ExitShoe:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -2301,7 +2301,7 @@ void Scene45::run() {
_vm->_newSceneNum = 46;
}
break;
-
+
case kHS45ExitRight:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
@@ -2342,7 +2342,7 @@ void Scene45::run() {
}
}
break;
-
+
case kHS45WalkArea1:
if (_vm->_gnapActionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -2359,21 +2359,21 @@ void Scene45::run() {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
-
+
updateAnimations();
_vm->toyUfoCheckTimer();
-
+
if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
@@ -2403,7 +2403,7 @@ void Scene45::updateAnimations() {
break;
}
}
-
+
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
if (_vm->getRandom(2) != 0)
@@ -2412,7 +2412,7 @@ void Scene45::updateAnimations() {
_vm->playPlatypusSequence(0x9C);
gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
}
-
+
if (gameSys.getAnimationStatus(2) == 2) {
gameSys.setAnimation(0, 0, 2);
int newSeqId = _vm->getRandom(7) + 0x8F;
@@ -2420,14 +2420,14 @@ void Scene45::updateAnimations() {
gameSys.setAnimation(newSeqId, 1, 2);
_currDancerSequenceId = newSeqId;
}
-
+
if (gameSys.getAnimationStatus(3) == 2 && gameSys.getAnimationStatus(4) == 2) {
gameSys.insertSequence(0x96, 1, 0x96, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x96, 1, 3);
gameSys.insertSequence(0x99, 1, 0x99, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x99, 1, 4);
}
-
+
if (gameSys.getAnimationStatus(5) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 2:
@@ -2492,17 +2492,17 @@ void Scene46::run() {
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
-
+
_currSackGuySequenceId = 0x4B;
_nextSackGuySequenceId = -1;
gameSys.setAnimation(0x4B, 1, 3);
gameSys.insertSequence(_currSackGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
_currItchyGuySequenceId = 0x47;
_nextItchyGuySequenceId = -1;
gameSys.setAnimation(0x47, 1, 4);
gameSys.insertSequence(_currItchyGuySequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoId = 0;
_vm->_toyUfoActionStatus = -1;
@@ -2541,15 +2541,15 @@ void Scene46::run() {
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094B))
_vm->playSound(0x1094B, true);
-
+
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
switch (_vm->_sceneClickedHotspot) {
case kHS46UfoExitLeft:
@@ -2677,7 +2677,7 @@ void Scene46::run() {
break;
}
}
-
+
if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -2687,10 +2687,10 @@ void Scene46::run() {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
}
}
-
+
updateAnimations();
_vm->toyUfoCheckTimer();
-
+
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updatePlatypusIdleSequence();
@@ -2711,15 +2711,15 @@ void Scene46::run() {
_nextSackGuySequenceId = 0x4C;
}
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
updateHotspots();
}
-
+
_vm->gameUpdateTick();
}
}
@@ -2742,7 +2742,7 @@ void Scene46::updateAnimations() {
}
_vm->_gnapActionStatus = -1;
}
-
+
if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) {
gameSys.insertSequence(_nextSackGuySequenceId, 1, _currSackGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextSackGuySequenceId, 1, 3);
@@ -2750,7 +2750,7 @@ void Scene46::updateAnimations() {
_nextSackGuySequenceId = -1;
_vm->_timers[5] = _vm->getRandom(50) + 80;
}
-
+
if (gameSys.getAnimationStatus(4) == 2 && _nextItchyGuySequenceId != -1) {
gameSys.insertSequence(_nextItchyGuySequenceId, 1, _currItchyGuySequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextItchyGuySequenceId, 1, 4);
@@ -2758,7 +2758,7 @@ void Scene46::updateAnimations() {
_nextItchyGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(50) + 80;
}
-
+
if (gameSys.getAnimationStatus(2) == 2) {
switch (_vm->_toyUfoActionStatus) {
case 3:
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 3bcab4c..98b26ec 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -62,7 +62,7 @@ void Scene53::updateHotspots() {
int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
static const int kGnapHandSequenceIds[13] = {
- 0x00,
+ 0x00,
0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
0x4C, 0x4D, 0x4E, 0x50, 0x51, 0x4F
};
@@ -132,7 +132,7 @@ void Scene53::runRandomCall() {
_vm->_gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
_callsMadeCtr = 0;
}
-
+
_vm->_gnapActionStatus = 1;
while (_vm->_gameSys->getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
@@ -145,7 +145,7 @@ void Scene53::runRandomCall() {
void Scene53::runChitChatLine() {
bool flag = false;
int sequenceId = -1;
-
+
_vm->_gameSys->setAnimation(0x6E, 1, 6);
_vm->_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
@@ -164,17 +164,17 @@ void Scene53::runChitChatLine() {
_vm->_gameSys->insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currHandSequenceId = 0x5E;
}
-
+
_vm->_hotspots[kHS53Device]._flags = SF_DISABLED;
-
+
while (!flag) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case 2:
sequenceId = 0x6F;
@@ -208,7 +208,7 @@ void Scene53::runChitChatLine() {
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
break;
}
-
+
if (flag && sequenceId != -1) {
_vm->stopSound(0xA0);
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
@@ -233,11 +233,11 @@ void Scene53::runChitChatLine() {
_vm->_gnapActionStatus = -1;
}
}
-
+
updateHotspots();
-
+
_vm->_gnapActionStatus = 1;
-
+
if (_vm->isFlag(kGFSpringTaken)) {
_vm->_gameSys->setAnimation(0x73, 40, 6);
_vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -254,9 +254,9 @@ void Scene53::runChitChatLine() {
void Scene53::run() {
int phoneNumber = 0;
int phoneNumberLen = 0;
-
+
_vm->queueInsertDeviceIcon();
-
+
if (_vm->isFlag(kGFSpringTaken)) {
_currHandSequenceId = 0x45;
_isGnapPhoning = true;
@@ -264,21 +264,21 @@ void Scene53::run() {
_currHandSequenceId = 0x5E;
_isGnapPhoning = false;
}
-
+
_vm->_gameSys->insertSequence(_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->setVerbCursor(GRAB_CURSOR);
_vm->playSound(0xA0, true);
-
+
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
-
+
_vm->testWalk(0, 0, -1, -1, -1, -1);
-
+
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
-
+
switch (_vm->_sceneClickedHotspot) {
case 1:
if (_vm->_gnapActionStatus < 0) {
@@ -319,7 +319,7 @@ void Scene53::run() {
phoneNumberLen = 0;
_vm->_sceneDone = true;
_vm->_newSceneNum = 17;
- } else if (phoneNumber != 5556789 || _vm->isFlag(kGFPictureTaken)) {
+ } else if (phoneNumber != 5556789 || _vm->isFlag(kGFPictureTaken)) {
runRandomCall();
phoneNumber = 0;
phoneNumberLen = 0;
@@ -362,9 +362,9 @@ void Scene53::run() {
}
break;
}
-
+
_vm->checkGameKeys();
-
+
if (_vm->isKeyStatus1(8)) {
_vm->clearKeyStatus1(8);
_vm->runMenu();
diff --git a/engines/gnap/scenes/groupcs.cpp b/engines/gnap/scenes/groupcs.cpp
index 92491a3..c096eae 100644
--- a/engines/gnap/scenes/groupcs.cpp
+++ b/engines/gnap/scenes/groupcs.cpp
@@ -211,7 +211,7 @@ Scene477::Scene477(GnapEngine *vm) : CutScene(vm) {}
int Scene477::init() {
int v0, v4, v2, v3;
-
+
_sequenceIdArr[0] = 0x316;
_sequenceIdArr[1] = 0x31A;
_sequenceIdArr[2] = 0x314;
diff --git a/engines/gnap/sound.cpp b/engines/gnap/sound.cpp
index 8fc216a..a3e0e1c 100644
--- a/engines/gnap/sound.cpp
+++ b/engines/gnap/sound.cpp
@@ -36,15 +36,15 @@ SoundMan::~SoundMan() {
void SoundMan::playSound(int resourceId, bool looping) {
SoundItem soundItem;
soundItem._resourceId = resourceId;
-
+
SoundResource *soundResource = _vm->_soundCache->get(resourceId);
Common::MemoryReadStream *stream = new Common::MemoryReadStream(soundResource->_data, soundResource->_size, DisposeAfterUse::NO);
Audio::AudioStream *audioStream = Audio::makeLoopingAudioStream(Audio::makeWAVStream(stream, DisposeAfterUse::YES), looping ? 0 : 1);
_vm->_mixer->playStream(Audio::Mixer::kPlainSoundType, &soundItem._handle, audioStream);
-
+
_items.push_back(soundItem);
-
+
}
void SoundMan::stopSound(int resourceId) {
Commit: 33b27b8db3b86fac77ef12a6cbda92050c5d3bd3
https://github.com/scummvm/scummvm/commit/33b27b8db3b86fac77ef12a6cbda92050c5d3bd3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:48+02:00
Commit Message:
GNAP: Fix regression
Changed paths:
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index a857427..f16fc6d 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -62,7 +62,7 @@ Scene49::Scene49(GnapEngine *vm) : Scene(vm) {
}
int Scene49::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -158,9 +158,9 @@ void Scene49::checkObstacles() {
}
void Scene49::updateObstacle(int id) {
- GameSys gameSys = *_vm->_gameSys;
- Scene49Obstacle &obstacle = _obstacles[id];
+ GameSys& gameSys = *_vm->_gameSys;
+ Scene49Obstacle &obstacle = _obstacles[id];
obstacle._currId = obstacle._prevId;
switch (obstacle._laneNum) {
@@ -283,7 +283,7 @@ void Scene49::clearObstacle(int index) {
}
void Scene49::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
bool animToggle6 = false;
bool animToggle5 = false;
@@ -507,7 +507,7 @@ void Scene49::run() {
}
void Scene49::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
for (int i = 0; i < 5; ++i) {
if (gameSys.getAnimationStatus(i + 2) == 2) {
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index d84717e..c42119c 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -31,7 +31,7 @@ Scene40::Scene40(GnapEngine *vm) : Scene(vm) {
}
int Scene40::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -167,7 +167,7 @@ void Scene40::run() {
}
void Scene40::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -188,7 +188,7 @@ Scene41::Scene41(GnapEngine *vm) : Scene(vm) {
}
int Scene41::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -219,7 +219,7 @@ void Scene41::updateHotspots() {
}
void Scene41::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
_vm->queueInsertDeviceIcon();
@@ -560,7 +560,7 @@ void Scene41::run() {
}
void Scene41::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
@@ -715,7 +715,7 @@ Scene42::Scene42(GnapEngine *vm) : Scene(vm) {
}
int Scene42::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -750,7 +750,7 @@ void Scene42::updateHotspots() {
}
void Scene42::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
_vm->queueInsertDeviceIcon();
@@ -1024,7 +1024,7 @@ void Scene42::run() {
}
void Scene42::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
@@ -1160,7 +1160,7 @@ Scene43::Scene43(GnapEngine *vm) : Scene(vm) {
}
int Scene43::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -1200,7 +1200,7 @@ void Scene43::updateHotspots() {
}
void Scene43::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
_vm->queueInsertDeviceIcon();
@@ -1480,7 +1480,7 @@ void Scene43::run() {
}
void Scene43::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
@@ -1597,7 +1597,7 @@ Scene44::Scene44(GnapEngine *vm) : Scene(vm) {
}
int Scene44::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -1633,7 +1633,7 @@ void Scene44::updateHotspots() {
}
void Scene44::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
_vm->queueInsertDeviceIcon();
@@ -1977,7 +1977,7 @@ void Scene44::run() {
}
void Scene44::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2074,7 +2074,7 @@ Scene45::Scene45(GnapEngine *vm) : Scene(vm) {
}
int Scene45::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -2115,7 +2115,7 @@ void Scene45::updateHotspots() {
}
void Scene45::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (!_vm->isSoundPlaying(0x1094A))
_vm->playSound(0x1094A, true);
@@ -2381,7 +2381,7 @@ void Scene45::run() {
}
void Scene45::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2457,7 +2457,7 @@ Scene46::Scene46(GnapEngine *vm) : Scene(vm) {
}
int Scene46::init() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
gameSys.setAnimation(0, 0, 0);
gameSys.setAnimation(0, 0, 1);
@@ -2488,7 +2488,7 @@ void Scene46::updateHotspots() {
}
void Scene46::run() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
@@ -2725,7 +2725,7 @@ void Scene46::run() {
}
void Scene46::updateAnimations() {
- GameSys gameSys = *_vm->_gameSys;
+ GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
Commit: ce8e3281d4578d3f0833e8ce449fe6a9e6b4791e
https://github.com/scummvm/scummvm/commit/ce8e3281d4578d3f0833e8ce449fe6a9e6b4791e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:48+02:00
Commit Message:
GNAP: Reduce dereferencing of _gameSys
Changed paths:
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group5.cpp
engines/gnap/scenes/intro.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 2255eda..68c962b 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -38,8 +38,10 @@ Scene01::~Scene01() {
}
int Scene01::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 3);
return 0x88;
}
@@ -68,20 +70,21 @@ void Scene01::updateHotspots() {
void Scene01::run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
+ GameSys& gameSys = *_vm->_gameSys;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
- _vm->_gameSys->setAnimation(134, 20, 4);
- _vm->_gameSys->insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(134, 20, 4);
+ gameSys.insertSequence(134, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x7F, 40, 2);
- _vm->_gameSys->insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x7F, 40, 2);
+ gameSys.insertSequence(0x7F, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (!_vm->isFlag(kGFMudTaken))
- _vm->_gameSys->insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(129, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -264,9 +267,9 @@ void Scene01::run() {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(1) == 0)
- _vm->_gameSys->insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x84, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x83, 180, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
}
@@ -283,20 +286,22 @@ void Scene01::run() {
}
void Scene01::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS01LookSpaceship:
- _spaceshipSurface = _vm->_gameSys->createSurface(47);
- _vm->_gameSys->insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
- _vm->_gameSys->setAnimation(133, 256, 0);
- _vm->_gameSys->insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
+ _spaceshipSurface = gameSys.createSurface(47);
+ gameSys.insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
+ gameSys.setAnimation(133, 256, 0);
+ gameSys.insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = kAS01LookSpaceshipDone;
break;
case kAS01LookSpaceshipDone:
- _vm->_gameSys->removeSequence(133, 256, true);
- _vm->_gameSys->removeSpriteDrawItem(_spaceshipSurface, 255);
+ gameSys.removeSequence(133, 256, true);
+ gameSys.removeSpriteDrawItem(_spaceshipSurface, 255);
_vm->deleteSurface(&_spaceshipSurface);
_vm->_gnapActionStatus = -1;
break;
@@ -308,8 +313,8 @@ void Scene01::updateAnimations() {
case kAS01TakeMud:
_vm->playGnapPullOutDevice(2, 3);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(128, 40, 3);
+ gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(128, 40, 3);
_vm->_gnapActionStatus = -1;
break;
@@ -323,32 +328,32 @@ void Scene01::updateAnimations() {
case kAS01UsePigs:
_vm->playGnapPullOutDevice(7, 2);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
+ gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
_vm->_gnapActionStatus = -1;
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 3);
+ if (gameSys.getAnimationStatus(3) == 2) {
+ gameSys.setAnimation(0, 0, 3);
_vm->invAdd(kItemMud);
_vm->setGrabCursorSprite(kItemMud);
_vm->setFlag(kGFMudTaken);
updateHotspots();
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(4) == 2) {
_smokeIdCtr = (_smokeIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x86, _smokeIdCtr + 20, 4);
- _vm->_gameSys->insertSequence(0x86, _smokeIdCtr + 20,
+ gameSys.setAnimation(0x86, _smokeIdCtr + 20, 4);
+ gameSys.insertSequence(0x86, _smokeIdCtr + 20,
0x86, (_smokeIdCtr + 1) % 2 + 20,
kSeqSyncWait, 0, 0, 0);
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
_pigsIdCtr = (_pigsIdCtr + 1) % 2;
- _vm->_gameSys->setAnimation(0x7F, _pigsIdCtr + 40, 2);
- _vm->_gameSys->insertSequence(0x7F, _pigsIdCtr + 40,
+ gameSys.setAnimation(0x7F, _pigsIdCtr + 40, 2);
+ gameSys.insertSequence(0x7F, _pigsIdCtr + 40,
0x7F, (_pigsIdCtr + 1) % 2 + 40,
kSeqSyncWait, 0, 0, 0);
}
@@ -389,12 +394,14 @@ void Scene02::updateHotspots() {
}
void Scene02::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
_currChickenSequenceId = 0x14B;
- _vm->_gameSys->setAnimation(0x14B, 179, 2);
- _vm->_gameSys->insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x14B, 179, 2);
+ gameSys.insertSequence(0x14B, 179, 0, 0, kSeqNone, 0, 0, 0);
_nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -421,7 +428,7 @@ void Scene02::run() {
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
updateHotspots();
- _vm->_gameSys->waitForUpdate();
+ gameSys.waitForUpdate();
break;
case 47:
_vm->clearFlag(kGFUnk25);
@@ -672,9 +679,9 @@ void Scene02::run() {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x156, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
if (_vm->getRandom(6) != 0) {
@@ -701,18 +708,20 @@ void Scene02::run() {
}
void Scene02::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case kAS02UseTruckNoKeys:
- _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x14E, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = kAS02UseTruckNoKeysDone;
break;
case kAS02UseGasWithTruck:
- _vm->_gameSys->insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x151, _vm->_gnapId, 0);
+ 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;
_vm->invRemove(kItemGas);
@@ -726,8 +735,8 @@ void Scene02::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->waitForUpdate();
+ gameSys.insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
_vm->_gnapSequenceId = 0x14F;
_vm->_gnapSequenceDatNum = 0;
@@ -742,8 +751,8 @@ void Scene02::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->_timers[4] = 250;
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->waitForUpdate();
+ gameSys.insertSequence(0x14F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
_vm->_gnapSequenceId = 0x14F;
_vm->_gnapSequenceDatNum = 0;
@@ -767,8 +776,8 @@ void Scene02::updateAnimations() {
break;
}
_truckGrillCtr = (_truckGrillCtr + 1) % 3;
- _vm->_gameSys->insertSequence(_gnapTruckSequenceId, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = -1;
@@ -784,18 +793,18 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_currChickenSequenceId = 0x14B;
- _vm->_gameSys->setAnimation(0x14B, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x14B, 179, 2);
+ gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->_timers[5] = 30;
break;
case kAS02UseTwigWithChicken:
_vm->playGnapShowItem(5, 0, 0);
- _vm->_gameSys->insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_currChickenSequenceId = 0x155;
_nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
@@ -808,24 +817,24 @@ void Scene02::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x150) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
_vm->_gnapActionStatus = kAS02GrabChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x14C) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
}
@@ -843,9 +852,11 @@ Scene03::Scene03(GnapEngine *vm) : Scene(vm) {
}
int Scene03::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 5);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 5);
return 0x1CC;
}
@@ -872,21 +883,22 @@ void Scene03::updateHotspots() {
}
void Scene03::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10925, true);
_vm->startSoundTimerC(7);
- _vm->_gameSys->insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x1CA, 251, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
_platypusHypnotized = false;
-
_vm->initGnapPos(3, 4, kDirBottomRight);
- _vm->_gameSys->insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
_currFrogSequenceId = 0x1C6;
_nextFrogSequenceId = -1;
- _vm->_gameSys->setAnimation(0x1C6, 253, 2);
+ gameSys.setAnimation(0x1C6, 253, 2);
_vm->_timers[6] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -896,16 +908,16 @@ void Scene03::run() {
_vm->initPlatypusPos(5, 4, kDirNone);
} else {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- _vm->_gameSys->setAnimation(0x1C2, 99, 1);
- _vm->_gameSys->insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x1C2, 99, 1);
+ gameSys.insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
_vm->_platypusSequenceId = 0x1C2;
_vm->_platypusSequenceDatNum = 0;
}
- _vm->_gameSys->insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFGrassTaken))
- _vm->_gameSys->insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1B2, 253, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -966,8 +978,8 @@ void Scene03::run() {
case GRAB_CURSOR:
_vm->playGnapPullOutDevice(9, 6);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1B3, 253, 5);
+ gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1B3, 253, 5);
_vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
@@ -1129,13 +1141,13 @@ void Scene03::run() {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
- _vm->_gameSys->insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 200;
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- _vm->_gameSys->setAnimation(0x1C5, 253, 4);
- _vm->_gameSys->insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x1C5, 253, 4);
+ gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundC();
@@ -1157,8 +1169,10 @@ void Scene03::run() {
}
void Scene03::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS03LeaveScene:
_vm->_sceneDone = true;
@@ -1172,9 +1186,9 @@ void Scene03::updateAnimations() {
_vm->_platY = 6;
_vm->_platypusFacing = kDirUnk4;
_vm->_platypusId = 120;
- _vm->_gameSys->insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
+ gameSys.insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
_vm->_platypusSequenceDatNum = 1;
_vm->_platypusSequenceId = 0x7CA;
_vm->setFlag(kGFPlatypus);
@@ -1184,13 +1198,13 @@ void Scene03::updateAnimations() {
case kAS03HypnotizePlat:
_vm->playGnapBrainPulsating(0, 0);
_vm->addFullScreenSprite(0x106, 255);
- _vm->_gameSys->setAnimation(0x1C9, 256, 1);
- _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ gameSys.setAnimation(0x1C9, 256, 1);
+ gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
- _vm->_gameSys->setAnimation(0x1BA, 99, 1);
- _vm->_gameSys->insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ 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;
_vm->_gnapActionStatus = -1;
@@ -1199,18 +1213,18 @@ void Scene03::updateAnimations() {
break;
case kAS03HypnotizeScaredPlat:
_vm->playGnapBrainPulsating(0, 0);
- _vm->_gameSys->insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1BF, 99, 1);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ gameSys.insertSequence(0x1BF, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x1BF, 99, 1);
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
_vm->addFullScreenSprite(0x106, 255);
- _vm->_gameSys->setAnimation(0x1C9, 256, 1);
- _vm->_gameSys->insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ gameSys.setAnimation(0x1C9, 256, 1);
+ gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
- _vm->_gameSys->setAnimation(0x1BA, 99, 1);
- _vm->_gameSys->insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1BA, 99, 1);
+ gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x1BA;
_vm->_gnapActionStatus = -1;
@@ -1226,8 +1240,8 @@ void Scene03::updateAnimations() {
_platypusHypnotized = false;
break;
case kAS03GrabCreek:
- _vm->_gameSys->insertSequence(0x1B4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1B4, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = kAS03GrabCreekDone;
@@ -1238,26 +1252,26 @@ void Scene03::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (gameSys.getAnimationStatus(1) == 2) {
if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 1);
_platypusScared = true;
- _vm->_gameSys->insertSequence(0x1B5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_gnapIdleFacing = kDirNone;
_vm->_platypusSequenceId = _nextPlatSequenceId;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_nextPlatSequenceId, 99, 1);
+ gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
_vm->_gnapX = 3;
_vm->_gnapY = 6;
- _vm->_gameSys->insertSequence(0x1B6, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1BC, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1BC, 99, 0);
+ 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.setAnimation(0x1BC, 99, 0);
_vm->_gnapId = 20 * _vm->_gnapY;
_vm->_gnapSequenceId = 0x1B6;
_vm->_gnapSequenceDatNum = 0;
@@ -1265,31 +1279,31 @@ void Scene03::updateAnimations() {
_vm->_gnapActionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->insertSequence(0x1C2, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ 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;
- _vm->_gameSys->setAnimation(0x1C2, 99, 1);
+ gameSys.setAnimation(0x1C2, 99, 1);
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == -1 && _platypusScared && !_platypusHypnotized) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0x1BE, 99, 1);
- _vm->_gameSys->insertSequence(0x1BE, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ 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;
_nextPlatSequenceId = -1;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextFrogSequenceId, 253, 2);
- _vm->_gameSys->insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(2) == 2 && _nextFrogSequenceId != -1) {
+ gameSys.setAnimation(_nextFrogSequenceId, 253, 2);
+ gameSys.insertSequence(_nextFrogSequenceId, 253, _currFrogSequenceId, 253, kSeqSyncWait, 0, 0, 0);
_currFrogSequenceId = _nextFrogSequenceId;
_nextFrogSequenceId = -1;
}
- if (_vm->_gameSys->getAnimationStatus(5) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 5);
+ if (gameSys.getAnimationStatus(5) == 2) {
+ gameSys.setAnimation(0, 0, 5);
_vm->invAdd(kItemGrass);
_vm->setGrabCursorSprite(kItemGrass);
_vm->setFlag(kGFGrassTaken);
@@ -1307,9 +1321,11 @@ Scene04::Scene04(GnapEngine *vm) : Scene(vm) {
}
int Scene04::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
return 0x214;
}
@@ -1335,15 +1351,17 @@ void Scene04::updateHotspots() {
}
void Scene04::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(4);
- _vm->_gameSys->insertSequence(0x210, 139 - _dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x210, 139 - _dogIdCtr, 0, 0, kSeqNone, 0, 0, 0);
_currDogSequenceId = 0x210;
_nextDogSequenceId = -1;
- _vm->_gameSys->setAnimation(0x210, 139 - _dogIdCtr, 3);
+ gameSys.setAnimation(0x210, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_vm->_timers[5] = _vm->getRandom(150) + 300;
@@ -1351,10 +1369,10 @@ void Scene04::run() {
_vm->_timers[8] = _vm->getRandom(150) + 400;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant) && _vm->_cursorValue == 4)
- _vm->_gameSys->insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x212, 100, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFTwigTaken))
- _vm->_gameSys->insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1FE, 100, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -1368,10 +1386,10 @@ void Scene04::run() {
_vm->_platX = 6;
_vm->_platY = 7;
_vm->_platypusId = 141;
- _vm->_gameSys->insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
- _vm->_gameSys->insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
+ 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);
+ gameSys.insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
_vm->endSceneInit();
_vm->invRemove(kItemDisguise);
_vm->invAdd(kItemKeys);
@@ -1382,9 +1400,9 @@ void Scene04::run() {
_vm->_platypusFacing = kDirBottomRight;
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->waitForUpdate();
+ gameSys.waitForUpdate();
} else {
- _vm->_gameSys->insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 2) {
_vm->initGnapPos(5, 11, kDirUpRight);
if (_vm->isFlag(kGFPlatypus))
@@ -1469,8 +1487,8 @@ void Scene04::run() {
case GRAB_CURSOR:
_vm->playGnapPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
_vm->playGnapUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->_gameSys->insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x1FD, 100, 2);
+ gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1FD, 100, 2);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -1655,11 +1673,11 @@ void Scene04::run() {
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(150) + 300;
if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(150) + 200;
- _vm->_gameSys->insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1FC, 59, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 60;
@@ -1668,7 +1686,7 @@ void Scene04::run() {
}
if (!_vm->_timers[8]) {
_vm->_timers[8] = _vm->getRandom(150) + 400;
- _vm->_gameSys->insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x213, 20, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
}
@@ -1686,49 +1704,51 @@ void Scene04::run() {
}
void Scene04::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS04LeaveScene:
_vm->_sceneDone = true;
break;
case kAS04OpenDoor:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
_vm->_gnapX = 6;
_vm->_gnapY = 7;
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
- _vm->_gameSys->setAnimation(0x107B5, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x107B5, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_vm->_gnapActionStatus = kAS04OpenDoorDone;
break;
case kAS04OpenDoorDone:
- _vm->_gameSys->insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
case kAS04GetKeyFirst:
- _vm->_gameSys->insertSequence(0x204, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x204, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = kAS04GetKeyFirst2;
break;
case kAS04GetKeyFirst2:
- _vm->_gameSys->insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20B, 256, 0);
+ gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 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->_gnapActionStatus = kAS04GetKeyFirstDone;
break;
case kAS04GetKeyFirstDone:
- _vm->_gameSys->requestRemoveSequence(0x1FF, 256);
- _vm->_gameSys->requestRemoveSequence(0x20B, 256);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ gameSys.requestRemoveSequence(0x1FF, 256);
+ gameSys.requestRemoveSequence(0x20B, 256);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapIdleFacing = kDirBottomRight;
@@ -1737,25 +1757,25 @@ void Scene04::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS04GetKeyAnother:
- _vm->_gameSys->insertSequence(0x202, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x202, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = kAS04GetKeyAnother2;
break;
case kAS04GetKeyAnother2:
- _vm->_gameSys->insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20A, 256, 0);
+ gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 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->_gnapActionStatus = kAS04GetKeyAnotherDone;
break;
case kAS04GetKeyAnotherDone:
- _vm->_gameSys->removeSequence(0x1FF, 256, true);
- _vm->_gameSys->removeSequence(0x20A, 256, true);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId,
+ gameSys.removeSequence(0x1FF, 256, true);
+ gameSys.removeSequence(0x20A, 256, true);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
@@ -1767,8 +1787,8 @@ void Scene04::updateAnimations() {
_nextDogSequenceId = 0x201;
break;
case kAS04GrabAxe:
- _vm->_gameSys->insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0x212, 100);
+ gameSys.insertSequence(0x211, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.requestRemoveSequence(0x212, 100);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x211;
_vm->_gnapActionStatus = -1;
@@ -1779,21 +1799,21 @@ void Scene04::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
_vm->invAdd(kItemTwig);
_vm->setGrabCursorSprite(kItemTwig);
_vm->setFlag(kGFTwigTaken);
updateHotspots();
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_nextDogSequenceId == 0x201) {
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ gameSys.insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
_currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ gameSys.insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_currDogSequenceId = 0x201;
_vm->_gnapSequenceId = 0x200;
@@ -1802,10 +1822,10 @@ void Scene04::updateAnimations() {
_vm->_timers[6] = _vm->getRandom(20) + 60;
_nextDogSequenceId = -1;
} else if (_nextDogSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
+ gameSys.insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
_currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
+ gameSys.setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = -1;
@@ -1821,9 +1841,11 @@ Scene05::Scene05(GnapEngine *vm) : Scene(vm) {
}
int Scene05::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 3);
return _vm->isFlag(kGFBarnPadlockOpen) ? 0x151 : 0x150;
}
@@ -1846,12 +1868,14 @@ void Scene05::updateHotspots() {
}
void Scene05::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
_currChickenSequenceId = 0x142;
- _vm->_gameSys->setAnimation(0x142, 100, 3);
- _vm->_gameSys->insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x142, 100, 3);
+ gameSys.insertSequence(0x142, 100, 0, 0, kSeqNone, 0, 0, 0);
_nextChickenSequenceId = -1;
@@ -1859,7 +1883,7 @@ void Scene05::run() {
_vm->_timers[6] = _vm->getRandom(150) + 300;
if (_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_gameSys->insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x14A, 141, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -2101,7 +2125,7 @@ void Scene05::run() {
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(150) + 300;
if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
}
@@ -2120,22 +2144,24 @@ void Scene05::run() {
}
void Scene05::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS05LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
case kAS05TryPickPadlock:
- _vm->_gameSys->insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x148, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x148;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
break;
case kAS05PickPadlock:
- _vm->_gameSys->setAnimation(0x147, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x147, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->setFlag(kGFBarnPadlockOpen);
@@ -2154,10 +2180,10 @@ void Scene05::updateAnimations() {
_nextChickenSequenceId = 0x14B;
break;
case kAS05GrabLadder:
- while (_vm->_gameSys->isSequenceActive(0x149, 39))
+ while (gameSys.isSequenceActive(0x149, 39))
_vm->gameUpdateTick();
- _vm->_gameSys->insertSequence(0x14E, _vm->_gnapId + 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_timers[2] = 200;
@@ -2165,10 +2191,10 @@ void Scene05::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS05EnterBarn:
- _vm->_gameSys->insertSequence(0x107B1, 1,
+ gameSys.insertSequence(0x107B1, 1,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gameSys->setAnimation(0x107B1, 1, 0);
+ gameSys.setAnimation(0x107B1, 1, 0);
_vm->_gnapActionStatus = kAS05LeaveScene;
break;
case kAS05UseTwigWithChicken:
@@ -2179,11 +2205,11 @@ void Scene05::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
+ if (gameSys.getAnimationStatus(1) == 2) {
if (_vm->_platypusSequenceId == 0x146) {
_vm->_platX = 4;
_vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
+ gameSys.insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_platGridX, 384 - _vm->_platGridY);
_vm->_platypusSequenceId = 0x7C1;
_vm->_platypusSequenceDatNum = 1;
_vm->_platypusId = 20 * _vm->_platY;
@@ -2195,31 +2221,31 @@ void Scene05::updateAnimations() {
_vm->_platypusActionStatus = -1;
}
if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) {
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->insertSequence(0x145, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x146, 256, 0x145, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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);
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->_platypusSequenceId = 0x146;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x146, 256, 1);
+ gameSys.setAnimation(0x146, 256, 1);
_vm->_timers[1] = 300;
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_nextChickenSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
+ gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
}
@@ -2236,9 +2262,11 @@ Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
}
int Scene06::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
if (_vm->isFlag(kGFSceneFlag1)) {
_vm->playSound(0x11B, false);
_vm->clearFlag(kGFSceneFlag1);
@@ -2268,26 +2296,27 @@ void Scene06::updateHotspots() {
}
void Scene06::run() {
+ GameSys& gameSys = *_vm->_gameSys;
bool triedDeviceOnGas = false;
_vm->startSoundTimerC(7);
_horseTurnedBack = false;
- _vm->_gameSys->insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF1, 120, 0, 0, kSeqNone, 0, 0, 0);
_currHorseSequenceId = 0xF1;
_nextHorseSequenceId = -1;
- _vm->_gameSys->setAnimation(0xF1, 120, 2);
+ gameSys.setAnimation(0xF1, 120, 2);
_vm->_timers[4] = _vm->getRandom(40) + 25;
if (_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF7, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF8, 20, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFGasTaken) && _vm->_cursorValue != 4)
- _vm->_gameSys->insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFE, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -2518,23 +2547,25 @@ void Scene06::run() {
}
void Scene06::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS06LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
case kAS06TryToGetGas:
- _vm->_gameSys->insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFC, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xFC;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
break;
case kAS06TryToClimbLadder:
- _vm->_gameSys->insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xFD, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
@@ -2556,10 +2587,10 @@ void Scene06::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->_platypusSequenceId == 0xFA) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 1);
_vm->invAdd(kItemGas);
_vm->setFlag(kGFGasTaken);
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
@@ -2567,7 +2598,7 @@ void Scene06::updateAnimations() {
_vm->_platypusActionStatus = -1;
_vm->_platX = 6;
_vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
+ gameSys.insertSequence(0x107C1, _vm->_platypusId, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
_vm->_platypusSequenceId = 0x7C1;
_vm->_platypusSequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
@@ -2575,26 +2606,26 @@ void Scene06::updateAnimations() {
_vm->showCursor();
}
if (_nextPlatSequenceId == 0xFB) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 1);
_nextHorseSequenceId = 0xF2;
_vm->_platypusActionStatus = 6;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
+ if (gameSys.getAnimationStatus(2) == 2 && _nextHorseSequenceId != -1) {
switch (_nextHorseSequenceId) {
case 0xF2:
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
- _vm->_gameSys->setAnimation(0xFA, 256, 1);
- _vm->_gameSys->insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x100, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFB, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFA, 256, 0xFB, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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(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;
- _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
+ gameSys.insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B7;
_vm->_gnapSequenceDatNum = 1;
@@ -2604,16 +2635,16 @@ void Scene06::updateAnimations() {
_vm->invRemove(kItemTwig);
break;
case 0xF6:
- _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(0xF6, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextHorseSequenceId, 120, 2);
+ gameSys.insertSequence(0xF6, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_horseTurnedBack = true;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
default:
- _vm->_gameSys->setAnimation(_nextHorseSequenceId, 120, 2);
- _vm->_gameSys->insertSequence(_nextHorseSequenceId, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextHorseSequenceId, 120, 2);
+ gameSys.insertSequence(_nextHorseSequenceId, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
break;
@@ -2644,15 +2675,17 @@ void Scene07::updateHotspots() {
}
void Scene07::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x90, 1, 0, 0, kSeqLoop, 0, 0, 0);
_vm->invRemove(kItemGas);
_vm->invRemove(kItemNeedle);
if (!_vm->isFlag(kGFPlatypus))
- _vm->_gameSys->insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
_vm->initGnapPos(7, 7, kDirBottomLeft);
@@ -2665,8 +2698,8 @@ void Scene07::run() {
_vm->_gnapSequenceId = 0x8F;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS07Wait;
_vm->_platX = 3;
_vm->_platY = 8;
@@ -2674,7 +2707,7 @@ void Scene07::run() {
_vm->_platypusSequenceId = 0x91;
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusFacing = kDirNone;
- _vm->_gameSys->insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
}
@@ -2733,9 +2766,9 @@ void Scene07::run() {
_vm->invAdd(kItemDice);
updateHotspots();
_vm->playGnapPullOutDevice(3, 3);
- _vm->_gameSys->setAnimation(0x8E, 1, 2);
- _vm->_gameSys->insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_vm->getGnapSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnapId,
+ 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,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = _vm->getGnapSequenceId(gskUseDevice, 0, 0);
@@ -2805,7 +2838,7 @@ void Scene07::run() {
} else {
_vm->playPlatypusSequence(0x107CB);
}
- _vm->_gameSys->setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
+ gameSys.setAnimation(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, 1);
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
@@ -2831,8 +2864,10 @@ void Scene07::run() {
}
void Scene07::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS07LeaveScene:
_vm->_newSceneNum = 8;
@@ -2842,8 +2877,8 @@ void Scene07::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(0, 0, 2);
_vm->setGrabCursorSprite(kItemDice);
}
}
@@ -2883,9 +2918,11 @@ void Scene08::updateHotspots() {
}
void Scene08::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(3) == 2) {
+ gameSys.setAnimation(_nextDogSequenceId, 100, 3);
+ gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currDogSequenceId = _nextDogSequenceId;
if ( _nextDogSequenceId != 0x135 )
_nextDogSequenceId = 0x134;
@@ -2893,33 +2930,35 @@ void Scene08::updateAnimationsCb() {
}
void Scene08::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x14F, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x14E, 256, 0, 0, kSeqNone, 0, 0, 0);
_currDogSequenceId = 0x135;
_nextDogSequenceId = 0x135;
- _vm->_gameSys->setAnimation(0x135, 100, 3);
- _vm->_gameSys->insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x135, 100, 3);
+ gameSys.insertSequence(_currDogSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
_currManSequenceId = 0x140;
_nextManSequenceId = -1;
- _vm->_gameSys->setAnimation(0x140, 100, 2);
- _vm->_gameSys->insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x140, 100, 2);
+ gameSys.insertSequence(_currManSequenceId, 100, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(50) + 75;
if (!_vm->isFlag(kGFBarnPadlockOpen))
- _vm->_gameSys->insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x144, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gameSys->insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x145, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gameSys->insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->initGnapPos(-1, 8, kDirBottomRight);
_vm->initPlatypusPos(-1, 7, kDirNone);
@@ -3031,13 +3070,13 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapScratchingHead(6, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
@@ -3201,8 +3240,10 @@ void Scene08::run() {
}
void Scene08::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS08LeaveScene:
_vm->_sceneDone = true;
@@ -3237,8 +3278,8 @@ void Scene08::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
case kAS08PlatWithDog:
_nextDogSequenceId = 0x147;
@@ -3250,14 +3291,14 @@ void Scene08::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextManSequenceId, 100, 2);
- _vm->_gameSys->insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(2) == 2 && _nextManSequenceId != -1) {
+ gameSys.setAnimation(_nextManSequenceId, 100, 2);
+ gameSys.insertSequence(_nextManSequenceId, 100, _currManSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currManSequenceId = _nextManSequenceId;
_nextManSequenceId = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_currDogSequenceId == 0x147)
_vm->_platypusActionStatus = -1;
if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
@@ -3268,31 +3309,31 @@ void Scene08::updateAnimations() {
} else if (_currDogSequenceId == 0x133)
_nextManSequenceId = 0x139;
if (_nextDogSequenceId == 0x149 || _nextDogSequenceId == 0x14A || _nextDogSequenceId == 0x14B) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextDogSequenceId, 100, 3);
+ gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
switch (_nextDogSequenceId) {
case 0x149:
_vm->setFlag(kGFBarnPadlockOpen);
_vm->_hotspots[kHS08Meat]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x144, 1, true);
+ gameSys.removeSequence(0x144, 1, true);
break;
case 0x14A:
_vm->setFlag(kGFTruckFilledWithGas);
_vm->_hotspots[kHS08Bone]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x145, 1, true);
+ gameSys.removeSequence(0x145, 1, true);
break;
case 0x14B:
_vm->setFlag(kGFTruckKeysUsed);
_vm->_hotspots[kHS08Toy]._flags = SF_DISABLED | SF_WALKABLE;
- _vm->_gameSys->removeSequence(0x146, 1, true);
+ gameSys.removeSequence(0x146, 1, true);
break;
}
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = 0x134;
} else if (_nextDogSequenceId == 0x147) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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);
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = 0x134;
_vm->_platX = 1;
@@ -3304,15 +3345,15 @@ void Scene08::updateAnimations() {
if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
_vm->gnapWalkStep();
} else if (_nextDogSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextDogSequenceId, 100, 3);
- _vm->_gameSys->insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextDogSequenceId, 100, 3);
+ gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currDogSequenceId = _nextDogSequenceId;
if (_nextDogSequenceId != 0x135)
_nextDogSequenceId = 0x134;
if (_currDogSequenceId == 0x133) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x14D;
_vm->_gnapIdleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
@@ -3344,10 +3385,12 @@ void Scene09::updateHotspots() {
}
void Scene09::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x4D, 1, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
_vm->initGnapPos(11, 8, kDirBottomLeft);
@@ -3463,9 +3506,9 @@ void Scene09::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(150) + 100;
if (_vm->_timers[4] & 1)
- _vm->_gameSys->insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x49, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x4A, 1, 0, 0, kSeqNone, 0, 0, 0);
}
playRandomSound(5);
}
@@ -3485,17 +3528,19 @@ void Scene09::run() {
}
void Scene09::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS09LeaveScene:
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
break;
case kAS09SearchTrash:
- _vm->_gameSys->setAnimation(0x4C, 120, 0);
- _vm->_gameSys->insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x4B, 2, true);
+ gameSys.setAnimation(0x4C, 120, 0);
+ gameSys.insertSequence(0x4C, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x4B, 2, true);
_vm->_gnapSequenceId = 0x4C;
_vm->_gnapId = 120;
_vm->_gnapIdleFacing = kDirUpLeft;
@@ -3505,7 +3550,7 @@ void Scene09::updateAnimations() {
_vm->_gnapActionStatus = kAS09SearchTrashDone;
break;
case kAS09SearchTrashDone:
- _vm->_gameSys->insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[2] = 360;
_vm->_timers[4] = _vm->getRandom(150) + 100;
_vm->_gnapActionStatus = -1;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 9076750..70742fe 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -33,9 +33,11 @@ Scene10::Scene10(GnapEngine *vm) : Scene(vm) {
}
int Scene10::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
+ gameSys.setAnimation(0, 0, 2);
return 0x10F;
}
@@ -56,14 +58,16 @@ void Scene10::updateHotspots() {
}
void Scene10::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_currCookSequenceId = 0x103;
- _vm->_gameSys->setAnimation(0x103, 100, 2);
- _vm->_gameSys->insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x103, 100, 2);
+ gameSys.insertSequence(0x103, 100, 0, 0, kSeqNone, 0, 0, 0);
_nextCookSequenceId = 0x106;
if (!_vm->isFlag(kGFMudTaken))
- _vm->_gameSys->insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x107, 100, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -146,7 +150,7 @@ void Scene10::run() {
case kHS10Cook:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 8, 6, 0);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
@@ -239,7 +243,7 @@ void Scene10::run() {
_vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
_vm->_platypusActionStatus = kAS10PlatWithBox;
_vm->_platypusFacing = kDirUnk4;
- _vm->_largeSprite = _vm->_gameSys->createSurface(0xC3);
+ _vm->_largeSprite = gameSys.createSurface(0xC3);
_vm->playGnapIdle(7, 6);
}
break;
@@ -258,7 +262,7 @@ void Scene10::run() {
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
- _vm->_gameSys->insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x10E;
_vm->_gnapId = 120;
_vm->_gnapIdleFacing = kDirUpRight;
@@ -320,7 +324,7 @@ void Scene10::run() {
} else {
sequenceId = 0x8A7;
}
- _vm->_gameSys->insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(sequenceId | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
}
}
}
@@ -338,8 +342,10 @@ void Scene10::run() {
}
void Scene10::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS10LeaveScene:
_vm->_sceneDone = true;
@@ -350,8 +356,8 @@ void Scene10::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
case kAS10PlatWithBox:
_nextCookSequenceId = 0x109;
@@ -359,18 +365,18 @@ void Scene10::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextCookSequenceId != -1) {
+ if (gameSys.getAnimationStatus(2) == 2 && _nextCookSequenceId != -1) {
switch (_nextCookSequenceId) {
case 0x109:
_vm->_platX = 4;
_vm->_platY = 8;
- _vm->_gameSys->insertSequence(0x109, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107C9, 160,
+ gameSys.insertSequence(0x109, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x107C9, 160,
_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->removeSequence(0x107, 100, true);
+ gameSys.removeSequence(0x107, 100, true);
_currCookSequenceId = 0x109;
_nextCookSequenceId = 0x843;
_vm->_platypusSequenceId = 0x7C9;
@@ -380,17 +386,17 @@ void Scene10::updateAnimations() {
break;
case 0x843:
_vm->hideCursor();
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->insertSequence(0x10843, 301, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ gameSys.insertSequence(0x10843, 301, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currCookSequenceId = 0x843;
_nextCookSequenceId = 0x10A;
break;
case 0x10A:
- _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextCookSequenceId, 100, 0x10843, 301, kSeqSyncWait, 0, 0, 0);
_currCookSequenceId = _nextCookSequenceId;
_nextCookSequenceId = 0x104;
_vm->showCursor();
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->delayTicksCursor(5);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->setGrabCursorSprite(kItemTongs);
@@ -400,7 +406,7 @@ void Scene10::updateAnimations() {
_vm->gnapWalkStep();
break;
default:
- _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currCookSequenceId = _nextCookSequenceId;
break;
}
@@ -417,7 +423,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x103;
else if (rnd == 2) {
_nextCookSequenceId = 0x106;
- _vm->_gameSys->insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
} else
_nextCookSequenceId = 0x106;
}
@@ -451,7 +457,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = 300;
- _vm->_gameSys->insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x10C;
_vm->_gnapIdleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
@@ -461,16 +467,18 @@ void Scene10::updateAnimations() {
break;
}
if (_currCookSequenceId == 0x843)
- _vm->_gameSys->setAnimation(_currCookSequenceId | 0x10000, 301, 2);
+ gameSys.setAnimation(_currCookSequenceId | 0x10000, 301, 2);
else
- _vm->_gameSys->setAnimation(_currCookSequenceId, 100, 2);
+ gameSys.setAnimation(_currCookSequenceId, 100, 2);
}
}
void Scene10::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
- _vm->_gameSys->setAnimation(_nextCookSequenceId, 100, 2);
- _vm->_gameSys->insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(2) == 2) {
+ gameSys.setAnimation(_nextCookSequenceId, 100, 2);
+ gameSys.insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
_currCookSequenceId = _nextCookSequenceId;
_nextCookSequenceId = 0x106;
}
@@ -487,9 +495,11 @@ Scene11::Scene11(GnapEngine *vm) : Scene(vm) {
}
int Scene11::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
- _vm->_gameSys->setAnimation(0, 0, 2);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 2);
if (_vm->_prevSceneNum == 10 || _vm->_prevSceneNum == 13) {
_vm->playSound(0x108EC, false);
_vm->playSound(0x10928, false);
@@ -515,6 +525,7 @@ void Scene11::updateHotspots() {
}
void Scene11::run() {
+ GameSys& gameSys = *_vm->_gameSys;
bool flag = true;
_vm->_timers[7] = 50;
@@ -547,16 +558,16 @@ void Scene11::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_currHookGuySequenceId, 120, 0, 0, kSeqNone, 0, 0, 0);
_nextHookGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_currHookGuySequenceId, 120, 3);
- _vm->_gameSys->insertSequence(_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currHookGuySequenceId, 120, 3);
+ gameSys.insertSequence(_currGoggleGuySequenceId, 121, 0, 0, kSeqNone, 0, 0, 0);
_nextGoggleGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_currGoggleGuySequenceId, 121, 2);
+ gameSys.setAnimation(_currGoggleGuySequenceId, 121, 2);
_vm->_timers[5] = _vm->getRandom(100) + 75;
_vm->_timers[4] = _vm->getRandom(40) + 20;
@@ -568,7 +579,7 @@ void Scene11::run() {
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
- _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
+ gameSys.insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
while (!_vm->_sceneDone) {
_vm->testWalk(0, 0, -1, -1, -1, -1);
@@ -733,8 +744,8 @@ void Scene11::run() {
if (!_vm->_isLeavingScene) {
if (flag && !_vm->_timers[7]) {
flag = false;
- _vm->_gameSys->setAnimation(0x207, 257, 4);
- _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x207, 257, 4);
+ gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->platypusSub426234();
_vm->updateGnapIdleSequence2();
@@ -775,13 +786,13 @@ void Scene11::run() {
int _gnapRandomValue = _vm->getRandom(3);
switch (_gnapRandomValue) {
case 0:
- _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -802,9 +813,11 @@ void Scene11::run() {
}
void Scene11::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
if (_vm->_gnapActionStatus != kAS11GrabBillardBall)
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS11LeaveScene:
_vm->_sceneDone = true;
@@ -825,20 +838,20 @@ void Scene11::updateAnimations() {
_nextHookGuySequenceId = 0x206;
break;
case kAS11GrabBillardBall:
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ if (gameSys.getAnimationStatus(2) == 2 && gameSys.getAnimationStatus(3) == 2) {
+ gameSys.setAnimation(0, 0, 0);
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- _vm->_gameSys->insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1F4, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x1F4;
_vm->_gnapId = 255;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->removeSequence(0x207, 257, true);
- _vm->_gameSys->removeSequence(0x208, 256, true);
+ gameSys.removeSequence(0x207, 257, true);
+ gameSys.removeSequence(0x208, 256, true);
_nextGoggleGuySequenceId = 0x1F8;
_vm->_timers[5] = _vm->getRandom(100) + 75;
- _vm->_gameSys->insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextGoggleGuySequenceId, 121, 2);
+ gameSys.insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGoggleGuySequenceId, 121, 2);
_currGoggleGuySequenceId = _nextGoggleGuySequenceId;
_nextGoggleGuySequenceId = -1;
switch (_billardBallCtr) {
@@ -853,36 +866,36 @@ void Scene11::updateAnimations() {
break;
}
++_billardBallCtr;
- _vm->_gameSys->insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
+ gameSys.insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
_currHookGuySequenceId = _nextHookGuySequenceId;
_nextHookGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(40) + 20;
- _vm->_gameSys->insertSequence(0x208, 256, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1F4) - 5, 0, 0);
+ gameSys.insertSequence(0x208, 256, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1F4) - 5, 0, 0);
_vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
- _vm->_gameSys->setAnimation(0x207, 257, 4);
- _vm->_gameSys->insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
+ gameSys.setAnimation(0x207, 257, 4);
+ gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
_vm->_gnapActionStatus = -1;
}
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2 && _nextGoggleGuySequenceId != -1) {
+ if (gameSys.getAnimationStatus(2) == 2 && _nextGoggleGuySequenceId != -1) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
- _vm->_gameSys->insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextGoggleGuySequenceId, 121, 2);
+ gameSys.insertSequence(_nextGoggleGuySequenceId, 121, _currGoggleGuySequenceId, 121, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGoggleGuySequenceId, 121, 2);
_currGoggleGuySequenceId = _nextGoggleGuySequenceId;
_nextGoggleGuySequenceId = -1;
if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_nextHookGuySequenceId == 0x204) {
- _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
- _vm->_gameSys->insertSequence(0x204, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x1F5, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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);
_currHookGuySequenceId = 0x204;
_nextHookGuySequenceId = -1;
_vm->_gnapSequenceId = 0x1F5;
@@ -893,8 +906,8 @@ void Scene11::updateAnimations() {
if (_vm->_gnapActionStatus == kAS11GrabHookGuy)
_vm->_gnapActionStatus = -1;
} else if (_nextHookGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextHookGuySequenceId, 120, 3);
+ gameSys.insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
_currHookGuySequenceId = _nextHookGuySequenceId;
_nextHookGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(40) + 20;
@@ -903,8 +916,8 @@ void Scene11::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 4);
+ if (gameSys.getAnimationStatus(4) == 2) {
+ gameSys.setAnimation(0, 0, 4);
_vm->_hotspots[kHS11Billard]._flags &= ~SF_DISABLED;
}
}
@@ -940,29 +953,30 @@ void Scene12::updateHotspots() {
}
void Scene12::run() {
+ GameSys& gameSys = *_vm->_gameSys;
int v18 = 1;
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x207, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x200, 50, 0, 0, kSeqNone, 0, 0, 0);
_currToothGuySequenceId = 0x200;
_nextToothGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x200, 50, 2);
- _vm->_gameSys->insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x200, 50, 2);
+ gameSys.insertSequence(0x202, 50, 0, 0, kSeqNone, 0, 0, 0);
_currBeardGuySequenceId = 0x202;
_nextBeardGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x202, 50, 4);
- _vm->_gameSys->insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x202, 50, 4);
+ gameSys.insertSequence(0x203, 50, 0, 0, kSeqNone, 0, 0, 0);
_currBarkeeperSequenceId = 0x203;
_nextBarkeeperSequenceId = -1;
- _vm->_gameSys->setAnimation(0x203, 50, 3);
+ gameSys.setAnimation(0x203, 50, 3);
_vm->_timers[4] = 30;
_vm->_timers[6] = _vm->getRandom(30) + 20;
@@ -1026,7 +1040,7 @@ void Scene12::run() {
case kHS12ToothGuy:
if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x141);
+ _vm->_largeSprite = gameSys.createSurface(0x141);
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
_vm->_gnapIdleFacing = kDirUpLeft;
_vm->_gnapActionStatus = kAS12QuarterToToothGuy;
@@ -1095,7 +1109,7 @@ void Scene12::run() {
break;
case PLAT_CURSOR:
_vm->playGnapPullOutDevice(_vm->_platX, _vm->_platY);
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS12PlatWithBarkeeper;
break;
}
@@ -1207,13 +1221,13 @@ void Scene12::run() {
int _gnapRandomValue = _vm->getRandom(3);
switch (_gnapRandomValue) {
case 0:
- _vm->_gameSys->insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A5 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A7 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8A6 | 0x10000, 179, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -1235,8 +1249,10 @@ void Scene12::run() {
}
void Scene12::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS12LeaveScene:
_vm->_sceneDone = true;
@@ -1287,7 +1303,7 @@ void Scene12::updateAnimations() {
case kAS12QuarterToToothGuyDone:
_vm->_gnapActionStatus = -1;
_vm->showCursor();
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->setGrabCursorSprite(kItemQuarterWithHole);
break;
@@ -1327,8 +1343,8 @@ void Scene12::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
case kAS12PlatWithToothGuy:
_nextToothGuySequenceId = 0x1EB;
@@ -1339,15 +1355,15 @@ void Scene12::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
if (_currToothGuySequenceId == 0x1E9) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 2);
_vm->hideCursor();
- _vm->_gameSys->setAnimation(0x10843, 301, 0);
+ gameSys.setAnimation(0x10843, 301, 0);
_vm->_gnapActionStatus = kAS12QuarterToToothGuyDone;
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->insertSequence(0x10843, 301, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107B7, _vm->_gnapId, 0x10843, 301,
+ 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,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B7;
_vm->_gnapSequenceDatNum = 1;
@@ -1356,9 +1372,9 @@ void Scene12::updateAnimations() {
_vm->invRemove(kItemQuarter);
}
if (_nextToothGuySequenceId == 0x1EF) {
- _vm->_gameSys->setAnimation(_nextToothGuySequenceId, 50, 2);
- _vm->_gameSys->insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
_vm->_gnapSequenceId = 0x205;
@@ -1369,8 +1385,8 @@ void Scene12::updateAnimations() {
if (_vm->_gnapActionStatus == kAS12GrabToothGuy)
_vm->_gnapActionStatus = -1;
} else if (_nextToothGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextToothGuySequenceId, 50, 2);
+ gameSys.insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextToothGuySequenceId, 50, 2);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
_vm->_timers[4] = 50;
@@ -1382,15 +1398,15 @@ void Scene12::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_vm->_gnapActionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
_vm->_gnapActionStatus = -1;
_vm->playGnapIdle(7, 6);
_vm->_timers[5] = 0;
}
if (_nextBarkeeperSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextBarkeeperSequenceId, 50, _currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextBarkeeperSequenceId, 50, 3);
+ gameSys.insertSequence(_nextBarkeeperSequenceId, 50, _currBarkeeperSequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBarkeeperSequenceId, 50, 3);
_currBarkeeperSequenceId = _nextBarkeeperSequenceId;
_nextBarkeeperSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
@@ -1400,9 +1416,9 @@ void Scene12::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextBeardGuySequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextBeardGuySequenceId, 50, _currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextBeardGuySequenceId, 50, 4);
+ if (gameSys.getAnimationStatus(4) == 2 && _nextBeardGuySequenceId != -1) {
+ gameSys.insertSequence(_nextBeardGuySequenceId, 50, _currBeardGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextBeardGuySequenceId, 50, 4);
_currBeardGuySequenceId = _nextBeardGuySequenceId;
_nextBeardGuySequenceId = -1;
_vm->_timers[6] = _vm->getRandom(30) + 20;
@@ -1446,9 +1462,11 @@ void Scene13::updateHotspots() {
}
void Scene13::showScribble() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->hideCursor();
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x6F);
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ _vm->_largeSprite = gameSys.createSurface(0x6F);
+ gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
!_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29))
_vm->gameUpdateTick();
@@ -1456,17 +1474,18 @@ void Scene13::showScribble() {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(29);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->showCursor();
}
void Scene13::run() {
+ GameSys& gameSys = *_vm->_gameSys;
int currSoundId = 0;
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 14) {
_vm->initGnapPos(6, 6, kDirBottomLeft);
@@ -1543,8 +1562,8 @@ void Scene13::run() {
case TALK_CURSOR:
if (_vm->_gnapX == 5 && _vm->_gnapY == 5) {
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- _vm->_gameSys->setAnimation(_backToiletCtr + 0xA3, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId,
+ gameSys.setAnimation(_backToiletCtr + 0xA3, _vm->_gnapId, 0);
+ gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqScale | kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS13Wait;
@@ -1742,8 +1761,10 @@ void Scene13::run() {
}
void Scene13::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS13LeaveScene:
_vm->_sceneDone = true;
@@ -1751,7 +1772,7 @@ void Scene13::updateAnimations() {
break;
case kAS13BackToilet:
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- _vm->_gameSys->insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
+ gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 9, 0, 0, 0);
_vm->_gnapSequenceId = _backToiletCtr + 0xA3;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
@@ -1765,9 +1786,9 @@ void Scene13::updateAnimations() {
showScribble();
break;
case kAS13GrabSink:
- _vm->_gameSys->setAnimation(0xAB, 160, 0);
- _vm->_gameSys->insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0xAA, 256, true);
+ gameSys.setAnimation(0xAB, 160, 0);
+ gameSys.insertSequence(0xAB, 160, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0xAA, 256, true);
_vm->_gnapSequenceId = 0xAB;
_vm->_gnapId = 160;
_vm->_gnapIdleFacing = kDirBottomRight;
@@ -1778,15 +1799,15 @@ void Scene13::updateAnimations() {
_vm->_gnapActionStatus = kAS13GrabSinkDone;
break;
case kAS13GrabSinkDone:
- _vm->_gameSys->insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
case kAS13Wait:
_vm->_gnapActionStatus = -1;
break;
case kAS13GrabUrinal:
- _vm->_gameSys->setAnimation(0xA2, 120, 0);
- _vm->_gameSys->insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_gnapIdleFacing = kDirBottomLeft;
@@ -1799,8 +1820,8 @@ void Scene13::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
_vm->_platypusActionStatus = -1;
}
}
@@ -1811,8 +1832,10 @@ Scene14::Scene14(GnapEngine *vm) : Scene(vm) {
}
int Scene14::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0x27;
}
@@ -1828,20 +1851,21 @@ void Scene14::updateHotspots() {
}
void Scene14::run() {
- _vm->_largeSprite = nullptr;
+ GameSys& gameSys = *_vm->_gameSys;
+ _vm->_largeSprite = nullptr;
_vm->queueInsertDeviceIcon();
if (!_vm->isFlag(kGFNeedleTaken))
- _vm->_gameSys->insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x23, 10, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
if (!_vm->isFlag(kGFNeedleTaken) && _vm->invHas(kItemTongs))
- _vm->_largeSprite = _vm->_gameSys->createSurface(1);
+ _vm->_largeSprite = gameSys.createSurface(1);
if (!_vm->isFlag(kGFNeedleTaken)) {
- _vm->_gameSys->insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -1872,8 +1896,8 @@ void Scene14::run() {
_vm->setFlag(kGFNeedleTaken);
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
- _vm->_gameSys->setAnimation(0x26, 10, 0);
- _vm->_gameSys->insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x26, 10, 0);
+ gameSys.insertSequence(0x26, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playSound(0x108E9, false);
} else {
@@ -1882,15 +1906,15 @@ void Scene14::run() {
_vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- _vm->_gameSys->insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x25, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x23;
break;
case TALK_CURSOR:
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -1898,7 +1922,7 @@ void Scene14::run() {
case kHS14Toilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1909,7 +1933,7 @@ void Scene14::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -1924,7 +1948,7 @@ void Scene14::run() {
_vm->checkGameKeys();
if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
- _vm->_gameSys->insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x24, 10, _vm->_gnapSequenceId, 10, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -1943,15 +1967,17 @@ void Scene14::run() {
}
void Scene14::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- _vm->_gameSys->setAnimation(0x10843, 301, 1);
- _vm->_gameSys->insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ gameSys.setAnimation(0x10843, 301, 1);
+ gameSys.insertSequence(0x10843, 301, 0x26, 10, kSeqSyncWait, 0, 0, 0);
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
_vm->_sceneDone = true;
_vm->_newSceneNum = 13;
_vm->_grabCursorSpriteIndex = kItemQuarter;
@@ -1997,6 +2023,8 @@ void Scene15::updateHotspots() {
}
void Scene15::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_currSlotSequenceId = -1;
_currUpperButtonSequenceId = -1;
_currLowerButtonSequenceId = -1;
@@ -2006,8 +2034,8 @@ void Scene15::run() {
_currRecordSequenceId = 0xD5;
_nextRecordSequenceId = -1;
- _vm->_gameSys->setAnimation(0xD5, 1, 0);
- _vm->_gameSys->insertSequence(_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0xD5, 1, 0);
+ gameSys.insertSequence(_currRecordSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -2044,7 +2072,7 @@ void Scene15::run() {
} else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_nextSlotSequenceId = 0xDB;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2055,7 +2083,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -2063,7 +2091,7 @@ void Scene15::run() {
case kHS15PlayButton:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2082,7 +2110,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -2095,7 +2123,7 @@ void Scene15::run() {
case kHS15Button5:
case kHS15Button6:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2108,7 +2136,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -2121,7 +2149,7 @@ void Scene15::run() {
case kHS15ButtonE:
case kHS15ButtonF:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2134,7 +2162,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- _vm->_gameSys->insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
break;
}
}
@@ -2160,12 +2188,14 @@ void Scene15::run() {
}
void Scene15::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
if (_vm->_isLeavingScene) {
_vm->_sceneDone = true;
} else if (_nextSlotSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextSlotSequenceId, 1, 0);
- _vm->_gameSys->insertSequence(_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_nextSlotSequenceId, 1, 0);
+ gameSys.insertSequence(_nextSlotSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_currSlotSequenceId = _nextSlotSequenceId;
_nextSlotSequenceId = -1;
switch (_currSlotSequenceId) {
@@ -2199,18 +2229,18 @@ void Scene15::updateAnimations() {
case 0xD8:
case 0xDA:
if (_currUpperButtonSequenceId != -1) {
- _vm->_gameSys->removeSequence(_currUpperButtonSequenceId, 1, true);
+ gameSys.removeSequence(_currUpperButtonSequenceId, 1, true);
_currUpperButtonSequenceId = -1;
}
if (_currLowerButtonSequenceId != -1) {
- _vm->_gameSys->removeSequence(_currLowerButtonSequenceId, 1, true);
+ gameSys.removeSequence(_currLowerButtonSequenceId, 1, true);
_currLowerButtonSequenceId = -1;
}
break;
}
} else if (_nextRecordSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextRecordSequenceId, 1, 0);
- _vm->_gameSys->insertSequence(_nextRecordSequenceId, 1, _currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextRecordSequenceId, 1, 0);
+ gameSys.insertSequence(_nextRecordSequenceId, 1, _currRecordSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currRecordSequenceId = _nextRecordSequenceId;
_nextRecordSequenceId = -1;
if (_currRecordSequenceId == 0xD3) {
@@ -2218,16 +2248,16 @@ void Scene15::updateAnimations() {
_vm->_newSceneNum = 16;
_vm->_isLeavingScene = true;
}
- _vm->_gameSys->removeSequence(_currUpperButtonSequenceId, 1, true);
+ gameSys.removeSequence(_currUpperButtonSequenceId, 1, true);
_currUpperButtonSequenceId = -1;
- _vm->_gameSys->removeSequence(_currLowerButtonSequenceId, 1, true);
+ gameSys.removeSequence(_currLowerButtonSequenceId, 1, true);
_currLowerButtonSequenceId = -1;
} else if (_nextUpperButtonSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextUpperButtonSequenceId, 1, 0);
+ gameSys.setAnimation(_nextUpperButtonSequenceId, 1, 0);
if (_currUpperButtonSequenceId == -1)
- _vm->_gameSys->insertSequence(_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_nextUpperButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(_nextUpperButtonSequenceId, 1, _currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextUpperButtonSequenceId, 1, _currUpperButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currUpperButtonSequenceId = _nextUpperButtonSequenceId;
_nextUpperButtonSequenceId = -1;
if (_currLowerButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
@@ -2237,11 +2267,11 @@ void Scene15::updateAnimations() {
_nextRecordSequenceId = 0xD4;
}
} else if (_nextLowerButtonSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextLowerButtonSequenceId, 1, 0);
+ gameSys.setAnimation(_nextLowerButtonSequenceId, 1, 0);
if (_currLowerButtonSequenceId == -1)
- _vm->_gameSys->insertSequence(_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_nextLowerButtonSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(_nextLowerButtonSequenceId, 1, _currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextLowerButtonSequenceId, 1, _currLowerButtonSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currLowerButtonSequenceId = _nextLowerButtonSequenceId;
_nextLowerButtonSequenceId = -1;
if (_currUpperButtonSequenceId != -1 && _vm->isFlag(kGFUnk14)) {
@@ -2302,6 +2332,7 @@ void Scene17::update() {
}
void Scene17::platHangUpPhone() {
+ GameSys& gameSys = *_vm->_gameSys;
int savedGnapActionStatus = _vm->_gnapActionStatus;
if (_vm->_platypusActionStatus == kAS17PlatPhoningAssistant) {
@@ -2309,18 +2340,18 @@ void Scene17::platHangUpPhone() {
_vm->updateMouseCursor();
_platPhoneCtr = 0;
_vm->_platypusActionStatus = -1;
- _vm->_gameSys->setAnimation(0x257, 254, 4);
- _vm->_gameSys->insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ gameSys.setAnimation(0x257, 254, 4);
+ gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (gameSys.getAnimationStatus(4) != 2)
_vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x25B, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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;
_currPhoneSequenceId = -1;
_nextPhoneSequenceId = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
_vm->_gnapActionStatus = savedGnapActionStatus;
_vm->updateMouseCursor();
@@ -2329,6 +2360,8 @@ void Scene17::platHangUpPhone() {
}
void Scene17::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
_vm->_sceneWaiting = false;
@@ -2339,23 +2372,23 @@ void Scene17::run() {
_vm->_timers[7] = _vm->getRandom(100) + 100;
if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gameSys->insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x25F, 20, 0, 0, kSeqNone, 0, 0, 0);
} else {
if (_vm->_s18GarbageCanPos >= 8) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
+ gameSys.insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 97, 1);
} else if (_vm->_s18GarbageCanPos >= 6) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
+ gameSys.insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 68, 2);
} else if (_vm->_s18GarbageCanPos >= 5) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
+ gameSys.insertSequence(0x260, 20, 0, 0, kSeqNone, 0, 23, -1);
} else if (_vm->_s18GarbageCanPos >= 4) {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
+ gameSys.insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -11, -5);
} else {
- _vm->_gameSys->insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
+ gameSys.insertSequence(0x260, 20, 0, 0, kSeqNone, 0, -54, -8);
}
}
if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_gameSys->insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x262, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
@@ -2367,22 +2400,22 @@ void Scene17::run() {
_currCarWindowSequenceId = 0x244;
if (_vm->isFlag(kGFUnk14))
- _vm->_gameSys->insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x261, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(_currWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currWrenchSequenceId, 40, 2);
+ gameSys.insertSequence(_currWrenchSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 3);
} else {
- _vm->_gameSys->setAnimation(_currCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currCarWindowSequenceId, 40, 3);
+ gameSys.insertSequence(_currCarWindowSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
}
_canTryGetWrench = true;
if (_vm->isFlag(kGFUnk18))
- _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
if (_vm->_prevSceneNum == 20) {
@@ -2396,8 +2429,8 @@ void Scene17::run() {
_vm->_platX = _vm->_hotspotsWalkPos[2].x;
_vm->_platY = _vm->_hotspotsWalkPos[2].y;
_vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
- _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x257, 254, 0, 0, kSeqNone, 0, 0, 0);
+ 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->endSceneInit();
@@ -2405,7 +2438,7 @@ void Scene17::run() {
_vm->clearFlag(kGFUnk16);
_vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
platHangUpPhone();
- _vm->_gameSys->setAnimation(0, 0, 4);
+ gameSys.setAnimation(0, 0, 4);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
_vm->clearFlag(kGFUnk27);
updateHotspots();
@@ -2416,15 +2449,15 @@ void Scene17::run() {
_vm->_gnapX = _vm->_hotspotsWalkPos[2].x;
_vm->_gnapY = _vm->_hotspotsWalkPos[2].y;
_vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
- _vm->_gameSys->insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 601;
_vm->_gnapActionStatus = kAS17GnapHangUpPhone;
_vm->clearFlag(kGFUnk25);
- _vm->_gameSys->insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->_gameSys->setAnimation(0x257, 254, 0);
- _vm->_gameSys->insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x257, 254, 0);
+ gameSys.insertSequence(0x257, 254, 0x251, 254, kSeqSyncWait, 0, 0, 0);
} else if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
@@ -2434,12 +2467,12 @@ void Scene17::run() {
_vm->_platY = _vm->_hotspotsWalkPos[2].y;
_vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
_currPhoneSequenceId = 0x251;
- _vm->_gameSys->insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ 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->endSceneInit();
- _vm->_gameSys->setAnimation(_currPhoneSequenceId, 254, 1);
+ gameSys.setAnimation(_currPhoneSequenceId, 254, 1);
_vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
@@ -2469,14 +2502,14 @@ void Scene17::run() {
_vm->_gnapSequenceId = 0x23D;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->_platX = -1;
_vm->_platY = 8;
_vm->_platypusId = 160;
- _vm->_gameSys->insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
+ gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
kSeqScale | kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
- _vm->_gameSys->insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
_vm->endSceneInit();
_vm->_platypusSequenceId = 0x7C1;
@@ -2702,20 +2735,20 @@ void Scene17::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
- _vm->_gameSys->insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
- _vm->_gameSys->insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x25D, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x25E, 255, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -2795,8 +2828,10 @@ void Scene17::updateAnimations() {
0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257
};
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS17GetWrench1:
_vm->_gnapActionStatus = kAS17GetWrenchGnapReady;
@@ -2804,8 +2839,8 @@ void Scene17::updateAnimations() {
case kAS17GetCoinFromPhone:
_vm->playGnapPullOutDevice(1, 3);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x250, 100, 0);
- _vm->_gameSys->insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x250, 100, 0);
+ gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemDiceQuarterHole);
_vm->clearFlag(kGFUnk18);
_vm->_gnapActionStatus = kAS17GetCoinFromPhoneDone;
@@ -2815,8 +2850,8 @@ void Scene17::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS17PutCoinIntoPhone:
- _vm->_gameSys->setAnimation(0x24C, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x24C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->invRemove(kItemDiceQuarterHole);
@@ -2825,17 +2860,17 @@ void Scene17::updateAnimations() {
_vm->_gnapActionStatus = kAS17PutCoinIntoPhoneDone;
break;
case kAS17PutCoinIntoPhoneDone:
- _vm->_gameSys->insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
break;
case kAS17GnapUsePhone:
- _vm->_gameSys->setAnimation(0x24D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x24D, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x24D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
case kAS17GnapHangUpPhone:
- _vm->_gameSys->insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x258, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x258;
_vm->_gnapActionStatus = -1;
@@ -2846,8 +2881,8 @@ void Scene17::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
switch (_vm->_platypusActionStatus) {
case kAS17TryGetWrench:
_vm->_platypusActionStatus = -1;
@@ -2870,8 +2905,8 @@ void Scene17::updateAnimations() {
_vm->setGrabCursorSprite(kItemWrench);
break;
case kAS17PlatUsePhone:
- _vm->_gameSys->setAnimation(0x24E, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_platypusActionStatus = kAS17LeaveScene;
@@ -2883,7 +2918,7 @@ void Scene17::updateAnimations() {
_platPhoneCtr = 0;
_nextPhoneSequenceId = -1;
_currPhoneSequenceId = -1;
- _vm->_gameSys->insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x25B;
_vm->_platypusActionStatus = -1;
@@ -2892,9 +2927,9 @@ void Scene17::updateAnimations() {
updateHotspots();
} else {
_nextPhoneSequenceId = kPlatPhoneSequenceIds[_platPhoneCtr];
- _vm->_gameSys->setAnimation(_nextPhoneSequenceId, 254, 1);
- _vm->_gameSys->insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x25A, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ 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;
_currPhoneSequenceId = _nextPhoneSequenceId;
@@ -2906,42 +2941,42 @@ void Scene17::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextWrenchSequenceId) {
case 0x233:
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(0x243, _vm->_platypusId,
+ gameSys.insertSequence(0x243, _vm->_platypusId,
_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
_vm->_platypusSequenceId = 0x243;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x243, _vm->_platypusId, 1);
+ gameSys.setAnimation(0x243, _vm->_platypusId, 1);
break;
case 0x234:
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(0x242, _vm->_platypusId,
+ gameSys.insertSequence(0x242, _vm->_platypusId,
_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
_vm->_platypusSequenceId = 0x242;
_vm->_platypusSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x242, _vm->_platypusId, 1);
+ gameSys.setAnimation(0x242, _vm->_platypusId, 1);
break;
case 0x231:
if (_vm->getRandom(2) != 0)
_nextCarWindowSequenceId = 0x245;
else
_nextCarWindowSequenceId = 0x248;
- _vm->_gameSys->setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 2);
break;
case 0x232:
_nextCarWindowSequenceId = 0x247;
- _vm->_gameSys->setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 2);
break;
case 0x22E:
case 0x235:
@@ -2950,22 +2985,22 @@ void Scene17::updateAnimations() {
else
_vm->_hotspots[kHS17Wrench]._flags |= SF_DISABLED;
_canTryGetWrench = !_canTryGetWrench;
- _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextWrenchSequenceId, 40, 2);
+ gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
break;
case 0x230:
if (_vm->_gnapActionStatus == kAS17GetWrenchGnapReady) {
- _vm->_gameSys->setAnimation(0, 0, 2);
+ gameSys.setAnimation(0, 0, 2);
if (_canTryGetWrench) {
- _vm->_gameSys->insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = 0x22E;
_canTryGetWrench = false;
}
- _vm->_gameSys->setAnimation(0x23F, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x10875, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x23F, _vm->_platypusId,
+ 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,
kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 1;
@@ -2978,8 +3013,8 @@ void Scene17::updateAnimations() {
break;
default:
if (_nextWrenchSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextWrenchSequenceId, 40, 2);
+ gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
}
@@ -2987,51 +3022,51 @@ void Scene17::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextCarWindowSequenceId) {
case 0x246:
- _vm->_gameSys->setAnimation(_nextCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextCarWindowSequenceId, 40, 3);
+ gameSys.insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currCarWindowSequenceId = _nextCarWindowSequenceId;
_nextCarWindowSequenceId = -1;
break;
case 0x245:
case 0x247:
case 0x248:
- _vm->_gameSys->setAnimation(_nextWrenchSequenceId, 40, 2);
- _vm->_gameSys->insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(2) != 2)
+ gameSys.setAnimation(_nextWrenchSequenceId, 40, 2);
+ gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(2) != 2)
update();
- _vm->_gameSys->setAnimation(_nextCarWindowSequenceId, 40, 3);
- _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextCarWindowSequenceId, 40, 3);
+ gameSys.insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currCarWindowSequenceId = _nextCarWindowSequenceId;
_nextCarWindowSequenceId = -1;
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
break;
case 0x249:
- _vm->_gameSys->setAnimation(0x230, 40, 2);
- _vm->_gameSys->setAnimation(0x240, _vm->_platypusId, 1);
- _vm->_gameSys->insertSequence(0x230, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x240, _vm->_platypusId, _vm->_platypusSequenceId, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x23E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x230, 40, 2);
+ gameSys.setAnimation(0x240, _vm->_platypusId, 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;
- _vm->_gameSys->setAnimation(0x24A, 40, 3);
- _vm->_gameSys->insertSequence(0x24A, 40, _nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(2) != 2) {
+ gameSys.setAnimation(0x24A, 40, 3);
+ gameSys.insertSequence(0x24A, 40, _nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(2) != 2) {
update();
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0x24A, 40, 3);
- _vm->_gameSys->insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(3) == 2) {
+ gameSys.setAnimation(0x24A, 40, 3);
+ gameSys.insertSequence(0x24A, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
}
}
- _vm->_gameSys->insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x24B, 40, 3);
- _vm->_gameSys->insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x22D, 40, 560, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x24B, 40, 3);
+ gameSys.insertSequence(0x24B, 40, 586, 40, kSeqSyncWait, 0, 0, 0);
_currCarWindowSequenceId = 0x24B;
_nextCarWindowSequenceId = -1;
_currWrenchSequenceId = 0x22D;
@@ -3131,6 +3166,8 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
0x203, 0x204
};
+ GameSys& gameSys = *_vm->_gameSys;
+
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
int clippedX, v12, v5, v10, v11, direction;
@@ -3186,7 +3223,7 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
break;
a2 += direction;
- _vm->_gameSys->insertSequence(kSequenceIds[seqId], a2,
+ gameSys.insertSequence(kSequenceIds[seqId], a2,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
gnapSeqId = kSequenceIds[seqId];
@@ -3215,9 +3252,9 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
_vm->_gnapId = 20 * _vm->_gnapY + 1;
if (animationIndex >= 0)
- _vm->_gameSys->setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
- _vm->_gameSys->insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
+ gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
@@ -3226,8 +3263,10 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
}
void Scene18::putDownGarbageCan(int animationIndex) {
+ GameSys& gameSys = *_vm->_gameSys;
+
if (animationIndex >= 0) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2)
+ while (gameSys.getAnimationStatus(animationIndex) != 2)
_vm->gameUpdateTick();
}
if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight)
@@ -3237,37 +3276,39 @@ void Scene18::putDownGarbageCan(int animationIndex) {
_vm->clearFlag(kGFPlatyPussDisguised);
updateHotspots();
if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
- _vm->_gameSys->insertSequence(0x107BA, _vm->_gnapId,
+ gameSys.insertSequence(0x107BA, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7BA;
} else {
- _vm->_gameSys->insertSequence(0x107B9, _vm->_gnapId,
+ gameSys.insertSequence(0x107B9, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B9;
}
_vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->insertSequence(0x1FB, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
- _vm->_gameSys->setAnimation(0x1FA, 19, 4);
- _vm->_gameSys->insertSequence(0x1FA, 19, 507, 19, kSeqSyncWait, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2)
+ 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);
+ while (gameSys.getAnimationStatus(4) != 2)
_vm->gameUpdateTick();
}
void Scene18::platEndPhoning(bool platFl) {
+ GameSys& gameSys = *_vm->_gameSys;
+
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_platPhoneIter = 0;
_platPhoneCtr = 0;
_vm->_platypusActionStatus = -1;
if (_currPhoneSequenceId != -1) {
- _vm->_gameSys->setAnimation(0x21E, 254, 3);
- _vm->_gameSys->insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(3) != 2)
+ gameSys.setAnimation(0x21E, 254, 3);
+ gameSys.insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
+ while (gameSys.getAnimationStatus(3) != 2)
_vm->gameUpdateTick();
}
- _vm->_gameSys->removeSequence(0x21F, 254, true);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.removeSequence(0x21F, 254, true);
+ gameSys.setAnimation(0, 0, 3);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
_vm->_platypusActionStatus = kAS18PlatComesHere;
@@ -3307,37 +3348,36 @@ void Scene18::waitForGnapAction() {
}
void Scene18::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_cowboyHatSurface = nullptr;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(4);
-
_vm->_timers[5] = _vm->getRandom(100) + 100;
-
_vm->queueInsertDeviceIcon();
-
_vm->clearFlag(kGFPlatyPussDisguised);
if (!_vm->isFlag(kGFUnk14))
- _vm->_gameSys->insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFTruckKeysUsed)) {
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gameSys->insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x214, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
_vm->playSound(0x22B, true);
} else {
- _vm->_gameSys->insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1F9, 19, 0, 0, kSeqNone, 0, 0, 0);
}
} else {
- _vm->_gameSys->insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
+ gameSys.insertSequence(0x1FA, 19, 0, 0, kSeqNone, 0, 15 * (5 * _vm->_s18GarbageCanPos - 40), 0);
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gameSys->insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x212, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x20D, 39, 0, 0, kSeqLoop, 0, 0, 0);
_vm->playSound(0x22B, true);
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x20E, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x217, 39, 0, 0, kSeqLoop, 0, 0, 0);
_vm->playSound(0x22B, true);
}
}
@@ -3349,7 +3389,7 @@ void Scene18::run() {
_vm->initGnapPos(4, 7, kDirBottomRight);
_platPhoneCtr = _vm->getRandom(5);
if (_vm->isFlag(kGFUnk27)) {
- _vm->_gameSys->insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_currPhoneSequenceId = -1;
platEndPhoning(true);
@@ -3357,15 +3397,15 @@ void Scene18::run() {
} else {
_currPhoneSequenceId = kScene18SequenceIds[_platPhoneCtr];
_platPhoneIter = 0;
- _vm->_gameSys->insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x21F, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_currPhoneSequenceId, 254, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
}
if (_vm->isFlag(kGFUnk27)) {
platEndPhoning(true);
_vm->clearFlag(kGFUnk27);
} else {
- _vm->_gameSys->setAnimation(_currPhoneSequenceId, 254, 3);
+ gameSys.setAnimation(_currPhoneSequenceId, 254, 3);
}
_vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
@@ -3741,9 +3781,9 @@ void Scene18::run() {
_vm->_timers[5] = _vm->getRandom(100) + 100;
if (_vm->_gnapActionStatus < 0) {
if (_vm->getRandom(2) == 1)
- _vm->_gameSys->insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x221, 255, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundA();
@@ -3768,31 +3808,33 @@ void Scene18::run() {
}
void Scene18::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS18GrabGarbageCanFromStreet:
if (_vm->_gnapIdleFacing != kDirUpRight && _vm->_gnapIdleFacing != kDirBottomRight) {
- _vm->_gameSys->insertSequence(0x1FC, _vm->_gnapId,
+ gameSys.insertSequence(0x1FC, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - 675, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FC;
} else {
- _vm->_gameSys->insertSequence(0x1FD, _vm->_gnapId,
+ gameSys.insertSequence(0x1FD, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnapX - 525, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FD;
}
- _vm->_gameSys->removeSequence(0x1FA, 19, true);
+ gameSys.removeSequence(0x1FA, 19, true);
_vm->setFlag(kGFPlatyPussDisguised);
updateHotspots();
_vm->_gnapActionStatus = -1;
break;
case kAS18GrabGarbageCanFromHydrant:
- _vm->_gameSys->insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x1F9, 19, true);
+ gameSys.insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x1F9, 19, true);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FE;
_vm->clearFlag(kGFTruckKeysUsed);
@@ -3801,10 +3843,10 @@ void Scene18::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS18CloseRightValveNoGarbageCan:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20D, 39, true);
- _vm->_gameSys->removeSequence(0x212, 39, true);
- _vm->_gameSys->removeSequence(0x211, 39, true);
+ gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 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;
@@ -3819,7 +3861,7 @@ void Scene18::updateAnimations() {
updateHotspots();
_vm->playGnapPullOutDevice(2, 7);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BB, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
@@ -3827,15 +3869,15 @@ void Scene18::updateAnimations() {
break;
case kAS18OpenTopValveDone:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->removeSequence(0x20C, 19, true);
- _vm->_gameSys->setAnimation(0x217, 39, 5);
- _vm->_gameSys->insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ gameSys.insertSequence(0x208, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x216, 39, 0, 0, kSeqNone, 21, 0, 0);
+ gameSys.removeSequence(0x20C, 19, true);
+ gameSys.setAnimation(0x217, 39, 5);
+ gameSys.insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(5) != 2)
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
- _vm->_gameSys->insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x208;
_vm->invRemove(kItemWrench);
@@ -3843,10 +3885,10 @@ void Scene18::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS18CloseTopValve:
- _vm->_gameSys->insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20E, 39, true);
- _vm->_gameSys->removeSequence(0x216, 39, true);
- _vm->_gameSys->removeSequence(0x217, 39, true);
+ gameSys.insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 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;
@@ -3857,8 +3899,8 @@ void Scene18::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS18GrabCowboyHat:
- _vm->_gameSys->setAnimation(0x200, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x200, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_gnapActionStatus = kAS18GrabCowboyHatDone;
@@ -3867,9 +3909,9 @@ void Scene18::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_cowboyHatSurface = _vm->addFullScreenSprite(0x1D2, 255);
- _vm->_gameSys->setAnimation(0x218, 256, 0);
- _vm->_gameSys->insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x218, 256, 0);
+ gameSys.insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->_newSceneNum = 18;
_vm->invAdd(kItemCowboyHat);
@@ -3889,27 +3931,27 @@ void Scene18::updateAnimations() {
case kAS18PutGarbageCanOnRunningHydrant:
_vm->setFlag(kGFTruckKeysUsed);
_vm->clearFlag(kGFPlatyPussDisguised);
- _vm->_gameSys->requestRemoveSequence(0x211, 39);
- _vm->_gameSys->requestRemoveSequence(0x212, 39);
- _vm->_gameSys->insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.requestRemoveSequence(0x211, 39);
+ gameSys.requestRemoveSequence(0x212, 39);
+ gameSys.insertSequence(0x210, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
- _vm->_gameSys->setAnimation(0x210, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x210, _vm->_gnapId, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x210;
_vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant2;
break;
case kAS18PutGarbageCanOnRunningHydrant2:
_vm->playSound(0x22B, true);
- _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ 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;
_vm->_sceneWaiting = true;
_vm->_gnapActionStatus = kAS18StandingOnHydrant;
break;
case kAS18StandingOnHydrant:
- _vm->_gameSys->setAnimation(0x1FF, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1FF, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x1FF, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
break;
case kAS18OpenRightValveNoGarbageCan:
case kAS18OpenRightValveWithGarbageCan:
@@ -3917,7 +3959,7 @@ void Scene18::updateAnimations() {
updateHotspots();
_vm->playGnapPullOutDevice(2, 7);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
@@ -3928,16 +3970,16 @@ void Scene18::updateAnimations() {
break;
case kAS18OpenRightValveWithGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0x1F9, 19);
- _vm->_gameSys->removeSequence(0x20B, 19, true);
- _vm->_gameSys->setAnimation(0x213, 39, 5);
- _vm->_gameSys->insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ gameSys.insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x213, 39, 0, 0, kSeqNone, 21, 0, 0);
+ gameSys.requestRemoveSequence(0x1F9, 19);
+ gameSys.removeSequence(0x20B, 19, true);
+ gameSys.setAnimation(0x213, 39, 5);
+ gameSys.insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(5) != 2)
_vm->gameUpdateTick();
_vm->playSound(555, true);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x207;
_vm->invRemove(kItemWrench);
@@ -3945,31 +3987,31 @@ void Scene18::updateAnimations() {
break;
case kAS18OpenRightValveNoGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
- _vm->_gameSys->removeSequence(0x20B, 19, true);
- _vm->_gameSys->setAnimation(0x211, 39, 5);
- _vm->_gameSys->insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(5) != 2)
+ gameSys.insertSequence(0x207, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x211, 39, 0, 0, kSeqNone, 21, 0, 0);
+ gameSys.removeSequence(0x20B, 19, true);
+ gameSys.setAnimation(0x211, 39, 5);
+ gameSys.insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(5) != 2)
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
- _vm->_gameSys->insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x207;
_vm->invRemove(kItemWrench);
_vm->_gnapActionStatus = -1;
break;
case kAS18CloseRightValveWithGarbageCan:
- _vm->_gameSys->insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(0x20D, 39, true);
- _vm->_gameSys->insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x20D, 39, true);
+ gameSys.insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
- _vm->_gameSys->setAnimation(0x1F9, 19, 0);
- _vm->_gameSys->insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1F9, 19, 0);
+ gameSys.insertSequence(0x1F9, 19, 0x215, 39, kSeqSyncWait, 0, 0, 0);
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
updateHotspots();
_vm->_gnapSequenceDatNum = 1;
_vm->_gnapSequenceId = 0x7B5;
@@ -3981,29 +4023,29 @@ void Scene18::updateAnimations() {
case kAS18PutGarbageCanOnHydrant:
_vm->setFlag(kGFTruckKeysUsed);
_vm->clearFlag(kGFPlatyPussDisguised);
- _vm->_gameSys->insertSequence(0x20F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x20F, _vm->_gnapId, 0);
+ 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;
_vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrantDone;
break;
case kAS18PutGarbageCanOnHydrantDone:
- _vm->_gameSys->insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
updateHotspots();
_vm->_gnapActionStatus = -1;
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 3);
+ if (gameSys.getAnimationStatus(3) == 2) {
+ gameSys.setAnimation(0, 0, 3);
++_platPhoneIter;
if (_platPhoneIter <= 4) {
++_platPhoneCtr;
_nextPhoneSequenceId = kScene18SequenceIds[_platPhoneCtr % 5];
- _vm->_gameSys->setAnimation(_nextPhoneSequenceId, 254, 3);
- _vm->_gameSys->insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextPhoneSequenceId, 254, 3);
+ gameSys.insertSequence(_nextPhoneSequenceId, 254, _currPhoneSequenceId, 254, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x21F, 254, 0x21F, 254, kSeqSyncWait, 0, 0, 0);
_currPhoneSequenceId = _nextPhoneSequenceId;
} else {
platEndPhoning(true);
@@ -4067,24 +4109,25 @@ void Scene19::updateHotspots() {
}
void Scene19::run() {
- _vm->queueInsertDeviceIcon();
+ GameSys& gameSys = *_vm->_gameSys;
+ _vm->queueInsertDeviceIcon();
_toyGrabCtr = 0;
- _pictureSurface = 0;
+ _pictureSurface = nullptr;
- _vm->_gameSys->insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x74, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x75, 254, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFPictureTaken))
- _vm->_gameSys->insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_vm->initGnapPos(3, 6, kDirBottomRight);
_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_vm->getRandom(5)];
_nextShopAssistantSequenceId = _currShopAssistantSequenceId;
- _vm->_gameSys->setAnimation(_currShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(0x6E, 254, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(0x6E, 254, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_shopAssistantCtr = 0;
_vm->endSceneInit();
_vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
@@ -4092,8 +4135,8 @@ void Scene19::run() {
} else {
_currShopAssistantSequenceId = 0x6D;
_nextShopAssistantSequenceId = -1;
- _vm->_gameSys->setAnimation(0x6D, 20, 4);
- _vm->_gameSys->insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x6D, 20, 4);
+ gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(40) + 50;
_vm->initGnapPos(3, 6, kDirBottomRight);
_vm->initPlatypusPos(4, 6, kDirNone);
@@ -4308,8 +4351,10 @@ void Scene19::run() {
}
void Scene19::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS19UsePhone:
_nextShopAssistantSequenceId = 0x67;
@@ -4334,8 +4379,8 @@ void Scene19::updateAnimations() {
case kAS19GrabPicture:
_vm->playGnapPullOutDevice(6, 2);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x68, 19, 0);
- _vm->_gameSys->insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x68, 19, 0);
+ gameSys.insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemPicture);
_vm->setFlag(kGFPictureTaken);
updateHotspots();
@@ -4345,9 +4390,9 @@ void Scene19::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
_pictureSurface = _vm->addFullScreenSprite(0xF, 255);
- _vm->_gameSys->setAnimation(0x61, 256, 0);
- _vm->_gameSys->insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ gameSys.setAnimation(0x61, 256, 0);
+ gameSys.insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2) {
// checkGameAppStatus();
_vm->gameUpdateTick();
}
@@ -4368,7 +4413,7 @@ void Scene19::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(4) == 2) {
switch (_nextShopAssistantSequenceId) {
case 0x6F:
case 0x70:
@@ -4377,16 +4422,16 @@ void Scene19::updateAnimations() {
case 0x73:
_shopAssistantCtr = (_shopAssistantCtr + 1) % 5;
_nextShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_shopAssistantCtr];
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x6E, 254, 0x6E, 254, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x6E, 254, 0x6E, 254, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
break;
case 0x62:
case 0x66:
case 0x6B:
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_timers[5] = 10;
@@ -4397,32 +4442,32 @@ void Scene19::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case 0x67:
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
case 0x65:
_vm->playGnapIdle(6, 2);
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 0);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 0);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_newSceneNum = 18;
_vm->_gnapActionStatus = kAS19LeaveScene;
break;
case 0x6D:
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x69, 19, 0x69, 19, kSeqSyncWait, _vm->getSequenceTotalDuration(_nextShopAssistantSequenceId), 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x69, 19, 0x69, 19, kSeqSyncWait, _vm->getSequenceTotalDuration(_nextShopAssistantSequenceId), 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
break;
case 0x64:
case 0x6C:
- _vm->_gameSys->setAnimation(_nextShopAssistantSequenceId, 20, 4);
- _vm->_gameSys->insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
+ gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
break;
@@ -4430,5 +4475,4 @@ void Scene19::updateAnimations() {
}
}
-
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 98b6752..df3fbf4 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -54,12 +54,14 @@ void Scene20::updateHotspots() {
}
void Scene20::updateAnimationsCb() {
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextStonerGuySequenceId) {
case 0x16B:
if (!_vm->_timers[4]) {
_stonerGuyShowingJoint = false;
- _vm->_gameSys->insertSequence(0x16B, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x16B, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16B;
_nextStonerGuySequenceId = -1;
}
@@ -68,8 +70,8 @@ void Scene20::updateAnimationsCb() {
// Grab joint
_vm->playGnapPullOutDevice(4, 4);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x16A, 21, 0);
- _vm->_gameSys->insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16A, 21, 0);
+ gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16A;
_nextStonerGuySequenceId = -1;
_vm->invAdd(kItemJoint);
@@ -78,25 +80,25 @@ void Scene20::updateAnimationsCb() {
_vm->_gnapActionStatus = kAS20GrabJointDone;
break;
case 0x16E:
- _vm->_gameSys->setAnimation(0x16E, 21, 2);
- _vm->_gameSys->insertSequence(0x16E, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16E, 21, 2);
+ gameSys.insertSequence(0x16E, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16E;
_nextStonerGuySequenceId = -1;
_nextGroceryStoreGuySequenceId = 0x175;
break;
case 0x16D:
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 0);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 0);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
_vm->_gnapActionStatus = kAS20ActionDone;
break;
case 0x16F:
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
- _vm->_gameSys->setAnimation(0x17A, 20, 3);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17A, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.setAnimation(0x17A, 20, 3);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17A, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x17A;
_nextGroceryStoreGuySequenceId = -1;
_currStonerGuySequenceId = _nextStonerGuySequenceId;
@@ -118,10 +120,10 @@ void Scene20::updateAnimationsCb() {
_nextStonerGuySequenceId = 0x171;
break;
}
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17C, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->setAnimation(_nextStonerGuySequenceId, 21, 2);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17C, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x17C, 20, 3);
+ gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
_currGroceryStoreGuySequenceId = 0x17C;
_nextGroceryStoreGuySequenceId = -1;
_currStonerGuySequenceId = _nextStonerGuySequenceId;
@@ -129,8 +131,8 @@ void Scene20::updateAnimationsCb() {
break;
default:
_nextStonerGuySequenceId = 0x16C;
- _vm->_gameSys->setAnimation(0x16C, 21, 2);
- _vm->_gameSys->insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16C, 21, 2);
+ gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
break;
@@ -155,6 +157,8 @@ void Scene20::stopSounds() {
}
void Scene20::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -175,30 +179,30 @@ void Scene20::run() {
}
_nextStonerGuySequenceId = -1;
- _vm->_gameSys->setAnimation(_currStonerGuySequenceId, 21, 2);
- _vm->_gameSys->insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_currStonerGuySequenceId, 21, 2);
+ gameSys.insertSequence(_currStonerGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(20) + 30;
_currGroceryStoreGuySequenceId = 0x17C;
_nextGroceryStoreGuySequenceId = -1;
- _vm->_gameSys->setAnimation(0x17C, 20, 3);
- _vm->_gameSys->insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x17C, 20, 3);
+ gameSys.insertSequence(0x17C, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->isFlag(kGFGroceryStoreHatTaken))
- _vm->_gameSys->insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x17F, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x174, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFSceneFlag1)) {
_vm->clearFlag(kGFSceneFlag1);
_vm->endSceneInit();
- _vm->_gameSys->setAnimation(0x182, 140, 0);
- _vm->_gameSys->insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ gameSys.setAnimation(0x182, 140, 0);
+ gameSys.insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2) {
// checkGameAppStatus();
_vm->gameUpdateTick();
}
@@ -484,13 +488,13 @@ void Scene20::run() {
if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
- _vm->_gameSys->insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x184, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x185, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -510,17 +514,19 @@ void Scene20::run() {
}
void Scene20::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS20LeaveScene:
_vm->_sceneDone = true;
break;
case kAS20TalkStonerGuyNoJoint:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -531,11 +537,11 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 100;
break;
case kAS20TalkStonerGuyHasJoint:
- _vm->_gameSys->setAnimation(0x168, 21, 2);
- _vm->_gameSys->setAnimation(379, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x168, 21, 2);
+ gameSys.setAnimation(379, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x168, 21, 0x170, 21, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -555,10 +561,10 @@ void Scene20::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS20TalkGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -572,10 +578,10 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 100;
break;
case kAS20GrabGroceryStoreGuy:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -585,10 +591,10 @@ void Scene20::updateAnimations() {
_nextGroceryStoreGuySequenceId = 0x178;
break;
case kAS20GrabGroceryStoreHat:
- _vm->_gameSys->setAnimation(0x170, 21, 2);
- _vm->_gameSys->setAnimation(0x17B, 20, 3);
- _vm->_gameSys->insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(0x170, 21, 2);
+ gameSys.setAnimation(0x17B, 20, 3);
+ gameSys.insertSequence(0x17B, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x170, 21, _currStonerGuySequenceId, 21, kSeqSyncExists, 0, 0, 0);
_vm->stopSound(0x1A1);
stopSounds();
_currGroceryStoreGuySequenceId = 0x17B;
@@ -597,8 +603,8 @@ void Scene20::updateAnimations() {
break;
case kAS20SwitchGroceryStoreHat:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x180, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x180, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x180, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x180;
_vm->_gnapSequenceDatNum = 0;
_vm->invRemove(kItemCowboyHat);
@@ -606,14 +612,14 @@ void Scene20::updateAnimations() {
_vm->_gnapActionStatus = kAS20SwitchGroceryStoreHatDone;
break;
case kAS20SwitchGroceryStoreHatDone:
- _vm->_gameSys->insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
_vm->setFlag(kGFGroceryStoreHatTaken);
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x12C, 255);
- _vm->_gameSys->setAnimation(0x181, 256, 0);
- _vm->_gameSys->insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x181, 256, 0);
+ gameSys.insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -629,41 +635,41 @@ void Scene20::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextGroceryStoreGuySequenceId) {
case 0x176:
case 0x177:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = 0x16D;
break;
case 0x178:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x17D, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.setAnimation(0x17D, _vm->_gnapId, 0);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17D;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS20ActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16D, 21, 2);
+ gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
_currGroceryStoreGuySequenceId = 0x178;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = -1;
break;
case 0x179:
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->setAnimation(0x16D, 21, 0);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.setAnimation(0x16D, 21, 0);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17E;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS20ActionDone;
- _vm->_gameSys->setAnimation(0x16D, 21, 2);
- _vm->_gameSys->insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x16D, 21, 2);
+ gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
_currGroceryStoreGuySequenceId = 377;
_nextGroceryStoreGuySequenceId = -1;
@@ -671,25 +677,25 @@ void Scene20::updateAnimations() {
_vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
break;
case 0x17C:
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 3);
_nextStonerGuySequenceId = 0x171;
break;
case 0x17A:
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.setAnimation(0, 0, 3);
_nextStonerGuySequenceId = 0x16F;
break;
case 0x175:
- _vm->_gameSys->setAnimation(0x175, 20, 0);
- _vm->_gameSys->setAnimation(0x175, 20, 3);
- _vm->_gameSys->insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x175, 20, 0);
+ gameSys.setAnimation(0x175, 20, 3);
+ gameSys.insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x175;
_nextGroceryStoreGuySequenceId = -1;
_vm->_gnapActionStatus = kAS20ActionDone;
break;
default:
if (_nextGroceryStoreGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- _vm->_gameSys->insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
+ gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = _nextGroceryStoreGuySequenceId;
_nextGroceryStoreGuySequenceId = -1;
}
@@ -709,6 +715,7 @@ Scene21::Scene21(GnapEngine *vm) : Scene(vm) {
int Scene21::init() {
_vm->_gameSys->setAnimation(0, 0, 3);
+
return _vm->isFlag(kGFTwigTaken) ? 0x94 : 0x93;
}
@@ -728,27 +735,27 @@ void Scene21::updateHotspots() {
}
void Scene21::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(6);
-
_vm->_timers[5] = _vm->getRandom(100) + 100;
-
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
_vm->initGnapPos(5, 8, kDirBottomRight);
_vm->initPlatypusPos(6, 8, kDirNone);
- _vm->_gameSys->insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->clearFlag(kGFKeysTaken);
} else {
_vm->initGnapPos(5, 11, kDirBottomRight);
_vm->initPlatypusPos(6, 11, kDirNone);
if (!_vm->isFlag(kGFUnk04))
- _vm->_gameSys->insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -757,8 +764,8 @@ void Scene21::run() {
_vm->initGnapPos(5, 11, kDirBottomRight);
_vm->initPlatypusPos(6, 11, kDirNone);
_currOldLadySequenceId = 0x89;
- _vm->_gameSys->setAnimation(0x89, 79, 3);
- _vm->_gameSys->insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x89, 79, 3);
+ gameSys.insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
_nextOldLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
@@ -911,7 +918,7 @@ void Scene21::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 100;
- _vm->_gameSys->insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x92, 255, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundA();
}
@@ -929,16 +936,18 @@ void Scene21::run() {
}
void Scene21::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS21TalkOldLady:
_nextOldLadySequenceId = 0x8B;
_vm->_gnapActionStatus = -1;
break;
case kAS21GrabBanana:
- _vm->_gameSys->setAnimation(0x8C, 59, 0);
- _vm->_gameSys->insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x8C, 59, 0);
+ gameSys.insertSequence(0x8C, 59, 141, 59, kSeqSyncWait, 0, 0, 0);
_vm->setFlag(kGFUnk04);
_vm->invAdd(kItemBanana);
updateHotspots();
@@ -953,8 +962,8 @@ void Scene21::updateAnimations() {
_nextOldLadySequenceId = 0x87;
break;
case kAS21UseHatWithOldLady:
- _vm->_gameSys->setAnimation(0x8F, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x8F, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x8F;
_vm->_gnapActionStatus = kAS21UseHatWithOldLadyDone;
@@ -971,25 +980,25 @@ void Scene21::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
+ if (gameSys.getAnimationStatus(3) == 2 && _nextOldLadySequenceId != -1) {
if (_nextOldLadySequenceId == 0x87) {
- _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextOldLadySequenceId, 79, 3);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x86;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else if (_nextOldLadySequenceId == 0x91) {
- _vm->_gameSys->setAnimation(0x91, 79, 0);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x91, 79, 0);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS21LeaveScene;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else {
- _vm->_gameSys->setAnimation(_nextOldLadySequenceId, 79, 3);
- _vm->_gameSys->insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextOldLadySequenceId, 79, 3);
+ gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
}
@@ -1019,13 +1028,15 @@ void Scene22::updateHotspots() {
}
void Scene22::run() {
- _vm->_gameSys->insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
_currCashierSequenceId = 0x59;
_nextCashierSequenceId = -1;
- _vm->_gameSys->setAnimation(0x59, 1, 3);
- _vm->_gameSys->insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x59, 1, 3);
+ gameSys.insertSequence(_currCashierSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(30) + 20;
@@ -1063,12 +1074,12 @@ void Scene22::run() {
_caughtBefore = true;
storeDetectiveSeqId = 0x54;
}
- _vm->_gameSys->waitForUpdate();
- _vm->_gameSys->requestClear1();
- _vm->_gameSys->drawSpriteToBackground(0, 0, 0x44);
- _vm->_gameSys->setAnimation(storeDetectiveSeqId, 256, 4);
- _vm->_gameSys->insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(4) != 2) {
+ gameSys.waitForUpdate();
+ gameSys.requestClear1();
+ gameSys.drawSpriteToBackground(0, 0, 0x44);
+ gameSys.setAnimation(storeDetectiveSeqId, 256, 4);
+ gameSys.insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(4) != 2) {
_vm->gameUpdateTick();
}
_vm->_sceneDone = true;
@@ -1224,8 +1235,10 @@ void Scene22::run() {
}
void Scene22::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS22LeaveScene:
_vm->_sceneDone = true;
@@ -1237,9 +1250,9 @@ void Scene22::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextCashierSequenceId, 1, 3);
- _vm->_gameSys->insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
+ gameSys.setAnimation(_nextCashierSequenceId, 1, 3);
+ gameSys.insertSequence(_nextCashierSequenceId, 1, _currCashierSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currCashierSequenceId = _nextCashierSequenceId;
_nextCashierSequenceId = -1;
}
@@ -1267,21 +1280,23 @@ void Scene23::updateHotspots() {
}
void Scene23::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->_timers[4] = _vm->getRandom(100) + 200;
_vm->_timers[5] = _vm->getRandom(100) + 200;
_currStoreClerkSequenceId = 0xB4;
_nextStoreClerkSequenceId = -1;
- _vm->_gameSys->setAnimation(0xB4, 1, 4);
- _vm->_gameSys->insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0xB4, 1, 4);
+ gameSys.insertSequence(_currStoreClerkSequenceId, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->queueInsertDeviceIcon();
_vm->initGnapPos(-1, 7, kDirBottomRight);
_vm->initPlatypusPos(-2, 7, kDirNone);
- _vm->_gameSys->insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
@@ -1290,7 +1305,7 @@ void Scene23::run() {
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else {
_vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
_vm->setFlag(kGFUnk24);
@@ -1408,14 +1423,14 @@ void Scene23::run() {
_vm->_timers[4] = _vm->getRandom(100) + 200;
switch (_vm->getRandom(4)) {
case 0:
- _vm->_gameSys->insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB7, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB8, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
case 3:
- _vm->_gameSys->insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xB9, 256, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -1448,17 +1463,19 @@ void Scene23::run() {
}
void Scene23::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS23LookCereals:
_vm->showFullScreenSprite(0x48);
_vm->_gnapActionStatus = -1;
break;
case kAS23GrabCereals:
- _vm->_gameSys->setAnimation(0xBE, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->requestRemoveSequence(0xBF, 2);
+ gameSys.setAnimation(0xBE, _vm->_gnapId, 0);
+ gameSys.insertSequence(0xBE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.requestRemoveSequence(0xBF, 2);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xBE;
_vm->_gnapActionStatus = kAS23GrabCerealsDone;
@@ -1473,7 +1490,7 @@ void Scene23::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
+ if (gameSys.getAnimationStatus(4) == 2 && _nextStoreClerkSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
case 1:
@@ -1489,8 +1506,8 @@ void Scene23::updateAnimations() {
_nextStoreClerkSequenceId = 0xB6;
break;
}
- _vm->_gameSys->setAnimation(_nextStoreClerkSequenceId, 1, 4);
- _vm->_gameSys->insertSequence(_nextStoreClerkSequenceId, 1, _currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextStoreClerkSequenceId, 1, 4);
+ gameSys.insertSequence(_nextStoreClerkSequenceId, 1, _currStoreClerkSequenceId, 1, kSeqSyncWait, 0, 0, 0);
_currStoreClerkSequenceId = _nextStoreClerkSequenceId;
_nextStoreClerkSequenceId = -1;
}
@@ -1521,6 +1538,7 @@ void Scene24::updateHotspots() {
}
void Scene24::run() {
+ GameSys& gameSys = *_vm->_gameSys;
int counter = 0;
_vm->playSound(0x10940, true);
@@ -1528,15 +1546,15 @@ void Scene24::run() {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- _vm->_gameSys->insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x2F, 256, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 50;
_vm->_timers[5] = _vm->getRandom(20) + 40;
_vm->_timers[6] = _vm->getRandom(50) + 30;
- _vm->_gameSys->insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x36, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x30, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x35, 20, 0, 0, kSeqNone, 0, 0, 0);
_currWomanSequenceId = 0x35;
_girlSequenceId = 0x36;
@@ -1651,12 +1669,12 @@ void Scene24::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 50;
- _vm->_gameSys->insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_girlSequenceId = 0x37;
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 40;
- _vm->_gameSys->insertSequence(0x31, 20, _boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x31, 20, _boySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_boySequenceId = 0x31;
}
if (!_vm->_timers[6]) {
@@ -1673,20 +1691,20 @@ void Scene24::run() {
_nextWomanSequenceId = 0x34;
break;
}
- _vm->_gameSys->insertSequence(_nextWomanSequenceId, 20, _currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextWomanSequenceId, 20, _currWomanSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currWomanSequenceId = _nextWomanSequenceId;
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
switch (_vm->getRandom(3)) {
case 0:
- _vm->_gameSys->insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x38, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 1:
- _vm->_gameSys->insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x39, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
case 2:
- _vm->_gameSys->insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x3A, 253, 0, 0, kSeqNone, 0, 0, 0);
break;
}
}
@@ -1707,8 +1725,10 @@ void Scene24::run() {
}
void Scene24::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS24LeaveScene)
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
@@ -1745,23 +1765,25 @@ void Scene25::playAnims(int index) {
if (index > 4)
return;
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
switch (index) {
case 1:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x25);
+ _vm->_largeSprite = gameSys.createSurface(0x25);
break;
case 2:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x26);
+ _vm->_largeSprite = gameSys.createSurface(0x26);
break;
case 3:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x27);
+ _vm->_largeSprite = gameSys.createSurface(0x27);
break;
case 4:
- _vm->_largeSprite = _vm->_gameSys->createSurface(0x28);
+ _vm->_largeSprite = gameSys.createSurface(0x28);
break;
}
- _vm->_gameSys->insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
+ gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
_vm->delayTicksCursor(5);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
!_vm->isKeyStatus1(29)) {
@@ -1771,19 +1793,21 @@ void Scene25::playAnims(int index) {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(29);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->_gameSys->removeSpriteDrawItem(_vm->_largeSprite, 300);
+ gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->delayTicksCursor(5);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->showCursor();
}
void Scene25::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(5);
_currTicketVendorSequenceId = 0x52;
- _vm->_gameSys->setAnimation(0x52, 39, 3);
- _vm->_gameSys->insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x52, 39, 3);
+ gameSys.insertSequence(_currTicketVendorSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_nextTicketVendorSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -2005,8 +2029,10 @@ void Scene25::run() {
}
void Scene25::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS25TalkTicketVendor:
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
@@ -2014,10 +2040,10 @@ void Scene25::updateAnimations() {
break;
case kAS25EnterCircusWihoutTicket:
_nextTicketVendorSequenceId = 0x5E;
- _vm->_gameSys->setAnimation(0x5E, 39, 0);
- _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x5E, 39, 0);
+ gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x60, 2, 0, 0, kSeqNone, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
@@ -2033,8 +2059,8 @@ void Scene25::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemTickets);
_vm->setFlag(kGFNeedleTaken);
- _vm->_gameSys->setAnimation(0x61, 40, 0);
- _vm->_gameSys->insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x61, 40, 0);
+ gameSys.insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = kAS25ShowTicketToVendorDone;
break;
case kAS25ShowTicketToVendorDone:
@@ -2046,15 +2072,15 @@ void Scene25::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
if (_nextTicketVendorSequenceId == 0x53) {
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextTicketVendorSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextTicketVendorSequenceId, 39, 3);
- _vm->_gameSys->insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
}
@@ -2086,13 +2112,15 @@ void Scene26::updateHotspots() {
}
void Scene26::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->startSoundTimerB(7);
_vm->playSound(0x1093B, true);
_currKidSequenceId = 0x5B;
_nextKidSequenceId = -1;
- _vm->_gameSys->setAnimation(0x5B, 160, 3);
- _vm->_gameSys->insertSequence(_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x5B, 160, 3);
+ gameSys.insertSequence(_currKidSequenceId, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(20) + 50;
_vm->_timers[4] = _vm->getRandom(20) + 50;
@@ -2100,10 +2128,10 @@ void Scene26::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x58, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5C, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5D, 40, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 25) {
_vm->initGnapPos(-1, 8, kDirBottomRight);
@@ -2234,11 +2262,11 @@ void Scene26::run() {
}
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 130;
- _vm->_gameSys->insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x59, 40, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(50) + 100;
- _vm->_gameSys->insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x5F, 40, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
}
@@ -2256,16 +2284,18 @@ void Scene26::run() {
}
void Scene26::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS26LeaveScene)
_vm->_sceneDone = true;
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextKidSequenceId, 160, _currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextKidSequenceId, 160, 3);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
+ gameSys.insertSequence(_nextKidSequenceId, 160, _currKidSequenceId, 160, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextKidSequenceId, 160, 3);
_currKidSequenceId = _nextKidSequenceId;
_nextKidSequenceId = -1;
}
@@ -2298,23 +2328,25 @@ void Scene27::updateHotspots() {
}
void Scene27::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(4);
_vm->_timers[7] = _vm->getRandom(100) + 300;
_vm->queueInsertDeviceIcon();
if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_debugLevel == 4)
_vm->startIdleTimer(6);
- _vm->_gameSys->insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
_currJanitorSequenceId = 0xCB;
_nextJanitorSequenceId = -1;
- _vm->_gameSys->setAnimation(0xCB, 39, 3);
+ gameSys.setAnimation(0xCB, 39, 3);
_vm->_timers[5] = _vm->getRandom(20) + 60;
switch (_vm->_prevSceneNum) {
@@ -2522,7 +2554,7 @@ void Scene27::run() {
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 300;
if (_vm->_gnapActionStatus < 0)
- _vm->_gameSys->insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
}
@@ -2540,8 +2572,10 @@ void Scene27::run() {
}
void Scene27::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS27TalkJanitor:
switch (_vm->getRandom(3)) {
@@ -2562,8 +2596,8 @@ void Scene27::updateAnimations() {
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
_vm->setFlag(kGFUnk13);
- _vm->_gameSys->setAnimation(0xD2, 39, 0);
- _vm->_gameSys->insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xD2, 39, 0);
+ gameSys.insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS27GrabBucketDone;
break;
case kAS27GrabBucketDone:
@@ -2575,9 +2609,9 @@ void Scene27::updateAnimations() {
break;
case kAS27TryEnterClownTent:
_nextJanitorSequenceId = 0xD1;
- _vm->_gameSys->insertSequence(0xD1, 39, _currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(0xD1, 39, _currJanitorSequenceId, 39, kSeqSyncExists, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
_vm->_gnapActionStatus = kAS27TryEnterClownTentDone;
@@ -2598,12 +2632,12 @@ void Scene27::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextJanitorSequenceId) {
case -1:
_nextJanitorSequenceId = 0xCB;
- _vm->_gameSys->insertSequence(0xCB, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.insertSequence(0xCB, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2611,9 +2645,9 @@ void Scene27::updateAnimations() {
case 0xCD:
case 0xCE:
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2621,8 +2655,8 @@ void Scene27::updateAnimations() {
// Show picture to janitor
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 0);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_vm->_gnapActionStatus = kAS27EnterClownTent;
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
@@ -2632,8 +2666,8 @@ void Scene27::updateAnimations() {
_vm->_newSceneNum = 28;
break;
default:
- _vm->_gameSys->insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextJanitorSequenceId, 39, 3);
+ gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
break;
@@ -2670,44 +2704,46 @@ void Scene28::updateHotspots() {
}
void Scene28::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093C, true);
_nextClownSequenceId = -1;
_vm->queueInsertDeviceIcon();
- _vm->_gameSys->insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x124, 255, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFUnk22))
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFMudTaken)) {
if (_vm->isFlag(kGFUnk21)) {
- _vm->_gameSys->setAnimation(0x11C, 39, 3);
- _vm->_gameSys->insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x11C, 39, 3);
+ gameSys.insertSequence(0x11C, 39, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->invHas(kItemHorn))
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11C;
} else {
_currClownSequenceId = 0x11B;
- _vm->_gameSys->setAnimation(0x11B, 39, 3);
- _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x11B, 39, 3);
+ gameSys.insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
_vm->initGnapPos(8, 8, kDirBottomLeft);
_vm->initPlatypusPos(9, 8, kDirUnk4);
_vm->endSceneInit();
} else {
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->initGnapPos(8, 8, kDirBottomLeft);
_vm->initPlatypusPos(9, 8, kDirUnk4);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_currClownSequenceId = 0x115;
_vm->setFlag(kGFMudTaken);
- _vm->_gameSys->setAnimation(0x115, 39, 3);
- _vm->_gameSys->insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x115, 39, 3);
+ gameSys.insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_nextClownSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 80;
_vm->_gnapActionStatus = kAS28GnapWaiting;
- while (_vm->_gameSys->getAnimationStatus(3) != 2) {
+ while (gameSys.getAnimationStatus(3) != 2) {
_vm->gameUpdateTick();
_vm->updateMouseCursor();
}
@@ -2906,8 +2942,10 @@ void Scene28::run() {
}
void Scene28::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS28UseBeerBucketWithClown:
_vm->setFlag(kGFUnk22);
@@ -2928,17 +2966,17 @@ void Scene28::updateAnimations() {
case kAS28GrabHornSuccess:
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x117, 59, 0);
- _vm->_gameSys->insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x117, 59, 0);
+ gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS28GrabHornSuccessDone;
break;
case kAS28GrabHornSuccessDone:
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0xF6, 255);
- _vm->_gameSys->setAnimation(0x120, 256, 0);
- _vm->_gameSys->insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.setAnimation(0x120, 256, 0);
+ gameSys.insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -2950,8 +2988,8 @@ void Scene28::updateAnimations() {
case kAS28GrabEmptyBucket:
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->setAnimation(0x111, 99, 0);
- _vm->_gameSys->insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x111, 99, 0);
+ gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS28GrabEmptyBucketDone;
break;
case kAS28GrabEmptyBucketDone:
@@ -2962,10 +3000,10 @@ void Scene28::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gameSys->insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = -1;
@@ -2989,25 +3027,25 @@ void Scene28::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextClownSequenceId) {
case 0x113:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = kAS28GnapWaiting;
break;
case 0x116:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x11C, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.insertSequence(0x112, 99, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x11C, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
_vm->_gnapActionStatus = kAS28GnapWaiting;
@@ -3018,9 +3056,9 @@ void Scene28::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case 0x119:
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 0);
- _vm->_gameSys->removeSequence(_currClownSequenceId, 39, true);
+ gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 0);
+ gameSys.removeSequence(_currClownSequenceId, 39, true);
_vm->_gnapActionStatus = kAS28GrabHornFailsDone;
_vm->_gnapSequenceId = _nextClownSequenceId;
_vm->_gnapSequenceDatNum = 0;
@@ -3028,8 +3066,8 @@ void Scene28::updateAnimations() {
break;
}
if (_nextClownSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClownSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClownSequenceId, 39, _currClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClownSequenceId, 39, 3);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
}
@@ -3063,6 +3101,8 @@ void Scene29::updateHotspots() {
}
void Scene29::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
_vm->queueInsertDeviceIcon();
@@ -3070,22 +3110,22 @@ void Scene29::run() {
if (_vm->invHas(kItemHorn)) {
_currMonkeySequenceId = 0xE8;
_nextMonkeySequenceId = -1;
- _vm->_gameSys->setAnimation(0xE8, 159, 4);
- _vm->_gameSys->insertSequence(_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0xE8, 159, 4);
+ gameSys.insertSequence(_currMonkeySequenceId, 159, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
_currManSequenceId = 0xED;
_nextManSequenceId = -1;
- _vm->_gameSys->setAnimation(0xED, 39, 3);
+ gameSys.setAnimation(0xED, 39, 3);
_vm->_timers[4] = _vm->getRandom(20) + 60;
} else {
- _vm->_gameSys->insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 4);
- _vm->_gameSys->insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 3);
+ gameSys.insertSequence(0xF4, 19, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0, 0, 4);
+ gameSys.insertSequence(0xED, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0, 0, 3);
}
- _vm->_gameSys->insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xF3, 39, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 27) {
_vm->initGnapPos(12, 7, kDirBottomRight);
@@ -3279,8 +3319,10 @@ void Scene29::run() {
}
void Scene29::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS29UseBananaWithMonkey:
_nextMonkeySequenceId = 0xE5;
@@ -3291,22 +3333,22 @@ void Scene29::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextManSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextManSequenceId, 39, _currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextManSequenceId, 39, 3);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextManSequenceId != -1) {
+ gameSys.insertSequence(_nextManSequenceId, 39, _currManSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextManSequenceId, 39, 3);
_currManSequenceId = _nextManSequenceId;
_nextManSequenceId = -1;
}
- if (_vm->_gameSys->getAnimationStatus(4) == 2) {
+ if (gameSys.getAnimationStatus(4) == 2) {
if (_nextMonkeySequenceId == 0xE5) {
- _vm->_gameSys->insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xF2, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xF2;
- _vm->_gameSys->setAnimation(0xE6, 159, 0);
- _vm->_gameSys->setAnimation(0, 159, 4);
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xE6, 159, 0);
+ gameSys.setAnimation(0, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS29LeaveScene;
_currMonkeySequenceId = 0xE6;
_nextMonkeySequenceId = -1;
@@ -3314,7 +3356,7 @@ void Scene29::updateAnimations() {
while (_vm->_timers[5])
_vm->gameUpdateTick();
_vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
- while (_vm->_gameSys->getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
} else if (_nextMonkeySequenceId == -1) {
switch (_vm->getRandom(6)) {
@@ -3337,13 +3379,13 @@ void Scene29::updateAnimations() {
_nextMonkeySequenceId = 0xE7;
break;
}
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextMonkeySequenceId, 159, 4);
_currMonkeySequenceId = _nextMonkeySequenceId;
_nextMonkeySequenceId = -1;
} else {
- _vm->_gameSys->insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextMonkeySequenceId, 159, 4);
+ gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextMonkeySequenceId, 159, 4);
_currMonkeySequenceId = _nextMonkeySequenceId;
_nextMonkeySequenceId = -1;
}
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 6d31df8..7526a9d 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -45,6 +45,7 @@ void Scene30::updateHotspots() {
}
void Scene30::run() {
+ GameSys& gameSys = *_vm->_gameSys;
bool hasTakenPill = false;
_vm->playSound(0x1093B, true);
@@ -53,13 +54,13 @@ void Scene30::run() {
_vm->queueInsertDeviceIcon();
if (_vm->isFlag(kGFUnk23))
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk13))
- _vm->_gameSys->insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x107, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[5] = _vm->getRandom(50) + 180;
- _vm->_gameSys->insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x101, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(100) + 300;
_kidSequenceId = 0x101;
@@ -177,11 +178,11 @@ void Scene30::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_gnapActionStatus < 0) {
if (_vm->getRandom(5) == 1) {
- _vm->_gameSys->insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_kidSequenceId = 0x100;
} else {
- _vm->_gameSys->insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFE, 40, 0, 0, kSeqNone, 0, 0, 0);
}
}
}
@@ -189,9 +190,9 @@ void Scene30::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_gnapActionStatus < 0) {
if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
- _vm->_gameSys->insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x108, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundB();
@@ -210,16 +211,18 @@ void Scene30::run() {
}
void Scene30::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS30LeaveScene:
_vm->_sceneDone = true;
break;
case kAS30UsePillMachine:
_vm->setGrabCursorSprite(-1);
- _vm->_gameSys->setAnimation(0x105, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x105, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x105;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS30UsePillMachine2;
@@ -228,13 +231,13 @@ void Scene30::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x3F, 255);
- _vm->_gameSys->removeSequence(0x105, _vm->_gnapId, true);
- _vm->_gameSys->setAnimation(0x102, 256, 0);
- _vm->_gameSys->insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ gameSys.removeSequence(0x105, _vm->_gnapId, true);
+ gameSys.setAnimation(0x102, 256, 0);
+ gameSys.insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
+ while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
- _vm->_gameSys->setAnimation(0x103, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x103, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->_gnapActionStatus = kAS30UsePillMachine3;
@@ -242,15 +245,15 @@ void Scene30::updateAnimations() {
_vm->setFlag(kGFUnk23);
break;
case kAS30UsePillMachine3:
- _vm->_gameSys->setAnimation(0x104, _vm->_gnapId, 0);
- _vm->_gameSys->insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x104, _vm->_gnapId, 0);
+ gameSys.insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x104;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = kAS30UsePillMachine4;
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
case kAS30UsePillMachine4:
- _vm->_gameSys->insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1);
_vm->_gnapActionStatus = -1;
break;
@@ -291,18 +294,19 @@ void Scene31::updateHotspots() {
}
void Scene31::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
-
_vm->queueInsertDeviceIcon();
_beerGuyDistracted = false;
- _vm->_gameSys->insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xFB, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClerkSequenceId = 0xFB;
_nextClerkSequenceId = -1;
- _vm->_gameSys->setAnimation(0xFB, 39, 3);
+ gameSys.setAnimation(0xFB, 39, 3);
_vm->_timers[4] = _vm->getRandom(20) + 60;
_vm->_timers[5] = _vm->getRandom(50) + 180;
@@ -411,7 +415,7 @@ void Scene31::run() {
_vm->setGrabCursorSprite(-1);
_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
- _vm->_gameSys->insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->playGnapPullOutDevice(6, 8);
_vm->playGnapUseDevice(0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
@@ -508,9 +512,9 @@ void Scene31::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_gnapActionStatus < 0) {
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x103, 20, 0, 0, kSeqNone, 0, 0, 0);
}
}
_vm->playSoundB();
@@ -529,15 +533,17 @@ void Scene31::run() {
}
void Scene31::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS31UseBeerBarrel:
_nextClerkSequenceId = 0xFE;
break;
case kAS31FillEmptyBucketWithBeer:
- _vm->_gameSys->setAnimation(0x102, 59, 0);
- _vm->_gameSys->insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x102, 59, 0);
+ gameSys.insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapX = 5;
_vm->_gnapY = 7;
_vm->_gnapSequenceDatNum = 0;
@@ -549,7 +555,7 @@ void Scene31::updateAnimations() {
_vm->_gnapIdleFacing = kDirBottomLeft;
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gameSys->insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
_vm->invRemove(kItemEmptyBucket);
@@ -566,8 +572,8 @@ void Scene31::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->_platypusActionStatus == kAS31PlatMeasuringClown) {
_vm->_sceneWaiting = true;
_beerGuyDistracted = true;
@@ -575,12 +581,12 @@ void Scene31::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2) {
+ if (gameSys.getAnimationStatus(3) == 2) {
switch (_nextClerkSequenceId) {
case 0xFA:
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->insertSequence(0xFC, 39, _nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFC, 39, _nextClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0xFC, 39, 3);
_currClerkSequenceId = 0xFC;
_nextClerkSequenceId = 0xFC;
_clerkMeasureCtr = 0;
@@ -591,33 +597,33 @@ void Scene31::updateAnimations() {
if (_vm->_gnapActionStatus != 5)
_vm->_platypusActionStatus = -1;
_vm->_timers[0] = 40;
- _vm->_gameSys->insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
_nextClerkSequenceId = -1;
if (_vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeer)
_vm->_gnapActionStatus = -1;
_beerGuyDistracted = false;
_clerkMeasureMaxCtr = 3;
- _vm->_gameSys->setAnimation(0xFD, 39, 3);
+ gameSys.setAnimation(0xFD, 39, 3);
_vm->_sceneWaiting = false;
} else {
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = 0xFC;
- _vm->_gameSys->setAnimation(0xFC, 39, 3);
+ gameSys.setAnimation(0xFC, 39, 3);
}
break;
case 0xFE:
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
_vm->_gnapActionStatus = -1;
break;
default:
if (_nextClerkSequenceId != -1) {
- _vm->_gameSys->insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->setAnimation(_nextClerkSequenceId, 39, 3);
+ gameSys.insertSequence(_nextClerkSequenceId, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
}
@@ -651,6 +657,8 @@ void Scene32::updateHotspots() {
}
void Scene32::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
_vm->queueInsertDeviceIcon();
@@ -751,9 +759,9 @@ void Scene32::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x0E, 180, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x0D, 180, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
}
@@ -770,8 +778,10 @@ void Scene32::run() {
}
void Scene32::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS32LeaveScene)
_vm->_sceneDone = true;
}
@@ -802,13 +812,15 @@ void Scene33::updateHotspots() {
}
void Scene33::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
_vm->queueInsertDeviceIcon();
_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x7E, 179, 2);
+ gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_nextChickenSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(20) + 30;
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -978,9 +990,9 @@ void Scene33::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
- _vm->_gameSys->insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x83, 256, 0, 0, kSeqNone, 0, 0, 0);
else
- _vm->_gameSys->insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kAS33TalkChicken && _vm->_gnapActionStatus != kAS33UseChicken) {
if (_vm->getRandom(6) != 0) {
@@ -1006,7 +1018,9 @@ void Scene33::run() {
}
void Scene33::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
switch (_vm->_gnapActionStatus) {
case kAS33LeaveScene:
_vm->_sceneDone = true;
@@ -1019,12 +1033,12 @@ void Scene33::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS33UseChickenDone:
- _vm->_gameSys->insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_currChickenSequenceId = 0x7E;
- _vm->_gameSys->setAnimation(0x7E, 179, 2);
- _vm->_gameSys->insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x7E, 179, 2);
+ gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
_vm->_timers[5] = 30;
break;
@@ -1034,24 +1048,24 @@ void Scene33::updateAnimations() {
}
}
- if (_vm->_gameSys->getAnimationStatus(2) == 2) {
+ if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x81) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 0);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gameSys->removeSequence(_currChickenSequenceId, 179, true);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
_vm->_gnapActionStatus = kAS33UseChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x7F) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextChickenSequenceId, 179, 2);
- _vm->_gameSys->insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
}
@@ -1064,8 +1078,10 @@ Scene38::Scene38(GnapEngine *vm) : Scene(vm) {
}
int Scene38::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0xA5;
}
@@ -1262,26 +1278,28 @@ void Scene38::run() {
}
void Scene38::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS38LeaveScene:
_vm->_sceneDone = true;
break;
case kAS38ExitCave:
- _vm->_gameSys->removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
- _vm->_gameSys->insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, true);
+ gameSys.insertSequence(0xA3, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA3;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0xA3, _vm->_gnapId, 0);
+ gameSys.setAnimation(0xA3, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38LeaveScene;
break;
case kAS38UseHuntingTrophy:
- _vm->_gameSys->removeSequence(0x9B, 0, true);
- _vm->_gameSys->insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.removeSequence(0x9B, 0, true);
+ gameSys.insertSequence(0x9C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9C;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9C, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9C, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
updateHotspots();
break;
@@ -1289,21 +1307,21 @@ void Scene38::updateAnimations() {
if (_vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
_vm->_sceneWaiting = true;
if (_vm->_gnapSequenceId == 0xA4) {
- _vm->_gameSys->insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9D;
} else {
- _vm->_gameSys->insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA4, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA4;
}
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
+ gameSys.setAnimation(_vm->_gnapSequenceId, _vm->_gnapId, 0);
break;
case kAS38ReleaseHuntingTrophy:
if (_vm->_gnapSequenceId == 0x9E) {
- _vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapActionStatus = -1;
} else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA0;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapX = 3;
@@ -1318,44 +1336,44 @@ void Scene38::updateAnimations() {
_vm->_gnapActionStatus = -1;
}
} else {
- _vm->_gameSys->insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9E;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapX = 3;
_vm->_gnapY = 6;
_vm->_gnapIdleFacing = kDirBottomRight;
- _vm->_gameSys->setAnimation(0x9E, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
_vm->_sceneWaiting = false;
updateHotspots();
}
break;
case kAS38UsePlatypusWithTrapDoor:
_vm->_sceneWaiting = false;
- _vm->_gameSys->insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x9F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9F;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gameSys->setAnimation(0x9F, _vm->_gnapId, 0);
+ gameSys.setAnimation(0x9F, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
if (_vm->_platypusFacing != kDirNone)
_vm->playPlatypusSequence(0x107D5);
else
_vm->playPlatypusSequence(0x107D4);
_vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
- _vm->_gameSys->insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA1, _vm->_gnapId + 1, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0xA1;
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusId = _vm->_gnapId + 1;
- _vm->_gameSys->setAnimation(0xA1, _vm->_gnapId + 1, 1);
+ gameSys.setAnimation(0xA1, _vm->_gnapId + 1, 1);
_vm->_platypusActionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
}
}
- if (_vm->_gameSys->getAnimationStatus(1) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 1);
+ if (gameSys.getAnimationStatus(1) == 2) {
+ gameSys.setAnimation(0, 0, 1);
if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
- _vm->_gameSys->insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xA2, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceId = 0xA2;
_vm->_platypusSequenceDatNum = 0;
updateHotspots();
@@ -1372,8 +1390,10 @@ Scene39::Scene39(GnapEngine *vm) : Scene(vm) {
}
int Scene39::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0x35;
}
@@ -1389,15 +1409,17 @@ void Scene39::updateHotspots() {
}
void Scene39::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
// Bug in the original? Timer was never initialized.
_vm->_timers[5] = 0;
_vm->queueInsertDeviceIcon();
_currGuySequenceId = 0x33;
- _vm->_gameSys->setAnimation(0x33, 21, 3);
- _vm->_gameSys->insertSequence(_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
+ gameSys.setAnimation(0x33, 21, 3);
+ gameSys.insertSequence(_currGuySequenceId, 21, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x34, 21, 0, 0, kSeqLoop, 0, 0, 0);
_nextGuySequenceId = -1;
if (_vm->_prevSceneNum == 38) {
@@ -1548,17 +1570,19 @@ void Scene39::run() {
}
void Scene39::updateAnimations() {
- if (_vm->_gameSys->getAnimationStatus(0) == 2) {
- _vm->_gameSys->setAnimation(0, 0, 0);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ if (gameSys.getAnimationStatus(0) == 2) {
+ gameSys.setAnimation(0, 0, 0);
if (_vm->_gnapActionStatus == kAS39LeaveScene)
_vm->_sceneDone = true;
else
_vm->_gnapActionStatus = -1;
}
- if (_vm->_gameSys->getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
- _vm->_gameSys->setAnimation(_nextGuySequenceId, 21, 3);
- _vm->_gameSys->insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
+ if (gameSys.getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
+ gameSys.setAnimation(_nextGuySequenceId, 21, 3);
+ gameSys.insertSequence(_nextGuySequenceId, 21, _currGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currGuySequenceId = _nextGuySequenceId;
_nextGuySequenceId = -1;
}
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 98b26ec..3ae2003 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -35,8 +35,10 @@ Scene53::Scene53(GnapEngine *vm) : Scene(vm) {
}
int Scene53::init() {
- _vm->_gameSys->setAnimation(0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 1);
+ GameSys& gameSys = *_vm->_gameSys;
+
+ gameSys.setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 1);
return 0x75;
}
@@ -73,18 +75,19 @@ int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
0x58, 0x59, 0x5A, 0x5C, 0x5D, 0x5B
};
+ GameSys& gameSys = *_vm->_gameSys;
if (_isGnapPhoning) {
- _vm->_gameSys->setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
- _vm->_gameSys->insertSequence(kGnapHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(kGnapHandSequenceIds[buttonNum], 40, 6);
+ gameSys.insertSequence(kGnapHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currHandSequenceId = kGnapHandSequenceIds[buttonNum];
} else {
- _vm->_gameSys->setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
- _vm->_gameSys->insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(kPlatypusHandSequenceIds[buttonNum], 40, 6);
+ gameSys.insertSequence(kPlatypusHandSequenceIds[buttonNum], 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currHandSequenceId = kPlatypusHandSequenceIds[buttonNum];
}
_vm->_gnapActionStatus = 6;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2) {
// checkGameAppStatus();
_vm->updateMouseCursor();
_vm->gameUpdateTick();
@@ -117,6 +120,7 @@ void Scene53::runRandomCall() {
0x6A, 0x6B, 0x6C, 0x6D, 0x71
};
+ GameSys& gameSys = *_vm->_gameSys;
++_callsMadeCtr;
if (_callsMadeCtr <= 10) {
@@ -125,16 +129,16 @@ void Scene53::runRandomCall() {
do {
index = getRandomCallIndex();
} while (!_isGnapPhoning && (index == 0 || index == 3 || index == 4 || index == 11));
- _vm->_gameSys->setAnimation(kCallSequenceIds[index], 1, 6);
- _vm->_gameSys->insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
+ gameSys.setAnimation(kCallSequenceIds[index], 1, 6);
+ gameSys.insertSequence(kCallSequenceIds[index], 1, 0, 0, kSeqNone, 16, 0, 0);
} else {
- _vm->_gameSys->setAnimation(0x74, 1, 6);
- _vm->_gameSys->insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
+ gameSys.setAnimation(0x74, 1, 6);
+ gameSys.insertSequence(0x74, 1, 0, 0, kSeqNone, 16, 0, 0);
_callsMadeCtr = 0;
}
_vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
@@ -143,14 +147,15 @@ void Scene53::runRandomCall() {
}
void Scene53::runChitChatLine() {
+ GameSys& gameSys = *_vm->_gameSys;
bool flag = false;
int sequenceId = -1;
- _vm->_gameSys->setAnimation(0x6E, 1, 6);
- _vm->_gameSys->insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
+ gameSys.setAnimation(0x6E, 1, 6);
+ gameSys.insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
_vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
@@ -158,10 +163,10 @@ void Scene53::runChitChatLine() {
_vm->_gnapActionStatus = -1;
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currHandSequenceId = 0x45;
} else {
- _vm->_gameSys->insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currHandSequenceId = 0x5E;
}
@@ -213,19 +218,19 @@ void Scene53::runChitChatLine() {
_vm->stopSound(0xA0);
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
_vm->_gnapActionStatus = 1;
- _vm->_gameSys->setAnimation(sequenceId, 1, 6);
- _vm->_gameSys->insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
+ gameSys.setAnimation(sequenceId, 1, 6);
+ gameSys.insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
_vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
}
_vm->_gnapActionStatus = -1;
- _vm->_gameSys->setAnimation(0x72, 1, 6);
- _vm->_gameSys->insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
+ gameSys.setAnimation(0x72, 1, 6);
+ gameSys.insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
_vm->_gnapActionStatus = 1;
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
@@ -239,9 +244,9 @@ void Scene53::runChitChatLine() {
_vm->_gnapActionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ gameSys.setAnimation(0x73, 40, 6);
+ gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
@@ -252,6 +257,7 @@ void Scene53::runChitChatLine() {
}
void Scene53::run() {
+ GameSys& gameSys = *_vm->_gameSys;
int phoneNumber = 0;
int phoneNumberLen = 0;
@@ -265,7 +271,7 @@ void Scene53::run() {
_isGnapPhoning = false;
}
- _vm->_gameSys->insertSequence(_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(_currHandSequenceId, 40, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->setVerbCursor(GRAB_CURSOR);
_vm->playSound(0xA0, true);
@@ -303,9 +309,9 @@ void Scene53::run() {
if (phoneNumberLen == 7) {
_vm->_gnapActionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ gameSys.setAnimation(0x73, 40, 6);
+ gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
@@ -345,9 +351,9 @@ void Scene53::run() {
if (_vm->_gnapActionStatus < 0) {
_vm->_gnapActionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gameSys->setAnimation(0x73, 40, 6);
- _vm->_gameSys->insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (_vm->_gameSys->getAnimationStatus(6) != 2) {
+ gameSys.setAnimation(0x73, 40, 6);
+ gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
+ while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
diff --git a/engines/gnap/scenes/intro.cpp b/engines/gnap/scenes/intro.cpp
index 0463f12..fa23d6a 100644
--- a/engines/gnap/scenes/intro.cpp
+++ b/engines/gnap/scenes/intro.cpp
@@ -55,6 +55,7 @@ void SceneIntro::run() {
0x1A, 0x14, 0x15, 0x16, 0x14,
0x19, 0};
+ GameSys& gameSys = *_vm->_gameSys;
int index = 0;
bool skip = false;
@@ -121,35 +122,35 @@ void SceneIntro::run() {
delete videoDecoder;
- _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _vm->_gameSys->insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(0x356, 2, 0);
+ gameSys.drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ gameSys.insertSequence(0x356, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x356, 2, 0);
while (!_vm->_sceneDone) {
_vm->gameUpdateTick();
- if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip ) {
+ if (gameSys.getAnimationStatus(0) == 2 || skip ) {
skip = false;
- _vm->_gameSys->requestClear2(false);
- _vm->_gameSys->requestClear1();
+ gameSys.requestClear2(false);
+ gameSys.requestClear1();
if ( index == 11 || index == 1 )
_vm->screenEffect(0, 0, 0, 0);
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.setAnimation(0, 0, 0);
if (++index >= 31)
_vm->_sceneDone = true;
else {
- _vm->_gameSys->insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(animIdArr[index], 2, 0, 0, kSeqNone, 0, 0, 0);
if (index == 2) {
_vm->playSound(0x10000, false);
- _vm->_gameSys->insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
+ gameSys.insertSequence(0x359, 2, 0, 0, 0, 0, 0, 0);
} else if (index == 3)
- _vm->_gameSys->insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x35B, 2, 0, 0, kSeqNone, 0, 0, 0);
else if (index == 12)
- _vm->_gameSys->insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x36A, 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->drawSpriteToBackground(0, 0, backgroundIdArr[index]);
- _vm->_gameSys->setAnimation(animIdArr[index], 2, 0);
+ gameSys.drawSpriteToBackground(0, 0, backgroundIdArr[index]);
+ gameSys.setAnimation(animIdArr[index], 2, 0);
if (index == 11)
_vm->stopSound(0x10000);
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index 2b67d59..eb83632 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -650,6 +650,8 @@ bool Scene::clearKeyStatus() {
}
void CutScene::run() {
+ GameSys& gameSys = *_vm->_gameSys;
+
int itemIndex = 0;
int soundId = -1;
int volume = 100;
@@ -667,11 +669,11 @@ void CutScene::run() {
_vm->hideCursor();
- _vm->_gameSys->drawSpriteToBackground(0, 0, _resourceIdArr[0]);
+ gameSys.drawSpriteToBackground(0, 0, _resourceIdArr[0]);
for (int j = 0; j < _sequenceCountArr[0]; ++j)
- _vm->_gameSys->insertSequence(_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->setAnimation(_sequenceIdArr[0], 2, 0);
+ gameSys.insertSequence(_sequenceIdArr[j], j + 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(_sequenceIdArr[0], 2, 0);
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
@@ -683,19 +685,19 @@ void CutScene::run() {
while (!_vm->_sceneDone) {
_vm->gameUpdateTick();
- if (_vm->_gameSys->getAnimationStatus(0) == 2 || skip) {
+ if (gameSys.getAnimationStatus(0) == 2 || skip) {
skip = false;
- _vm->_gameSys->requestClear2(false);
- _vm->_gameSys->requestClear1();
- _vm->_gameSys->setAnimation(0, 0, 0);
+ gameSys.requestClear2(false);
+ gameSys.requestClear1();
+ gameSys.setAnimation(0, 0, 0);
firstSequenceIndex += _sequenceCountArr[itemIndex++];
if (itemIndex >= _itemsCount) {
_vm->_sceneDone = true;
} else {
for (int m = 0; m < _sequenceCountArr[itemIndex]; ++m)
- _vm->_gameSys->insertSequence(_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gameSys->drawSpriteToBackground(0, 0, _resourceIdArr[itemIndex]);
- _vm->_gameSys->setAnimation(_sequenceIdArr[firstSequenceIndex], 2, 0);
+ gameSys.insertSequence(_sequenceIdArr[firstSequenceIndex + m], m + 2, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.drawSpriteToBackground(0, 0, _resourceIdArr[itemIndex]);
+ gameSys.setAnimation(_sequenceIdArr[firstSequenceIndex], 2, 0);
}
}
Commit: 087492b15ffae0a3dd5c897c262427ba5a489dc6
https://github.com/scummvm/scummvm/commit/087492b15ffae0a3dd5c897c262427ba5a489dc6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:48+02:00
Commit Message:
GNAP: Remove useless parameters in gnapCarryGarbageCanTo
Changed paths:
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group1.h
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 70742fe..4dc410c 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -3158,9 +3158,7 @@ void Scene18::updateHotspots() {
_vm->_hotspotsCount = 11;
}
-void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5) {
- // CHECKME: (x, y) is always set to (-1, -1)
-
+void Scene18::gnapCarryGarbageCanTo(int a5) {
// TODO Cleanup
static const int kSequenceIds[] = {
0x203, 0x204
@@ -3169,12 +3167,10 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
GameSys& gameSys = *_vm->_gameSys;
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
- int clippedX, v12, v5, v10, v11, direction;
+ int v12, v5, v10, v11, direction;
+
+ int clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
- if (x >= 0)
- clippedX = x;
- else
- clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
if (clippedX >= _vm->_gnapX)
v10 = clippedX - 1;
else
@@ -3233,16 +3229,11 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
} while (v12 != gnapGridX);
}
- if (argC >= 0) {
- _vm->_gnapSequenceId = ridToEntryIndex(argC);
- _vm->_gnapSequenceDatNum = ridToDatIndex(argC);
- } else {
- if (direction == 1)
- _vm->_gnapSequenceId = 0x20A;
- else
- _vm->_gnapSequenceId = 0x209;
- _vm->_gnapSequenceDatNum = 0;
- }
+ if (direction == 1)
+ _vm->_gnapSequenceId = 0x20A;
+ else
+ _vm->_gnapSequenceId = 0x209;
+ _vm->_gnapSequenceDatNum = 0;
if (direction == 1)
_vm->_gnapIdleFacing = kDirBottomRight;
@@ -3251,9 +3242,7 @@ void Scene18::gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC,
_vm->_gnapId = 20 * _vm->_gnapY + 1;
- if (animationIndex >= 0)
- gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, animationIndex);
-
+ gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
@@ -3455,7 +3444,7 @@ void Scene18::run() {
case kHS18Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
@@ -3488,7 +3477,7 @@ void Scene18::run() {
_vm->_sceneWaiting = false;
} else if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -3560,32 +3549,32 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
// While carrying garbage can
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
_vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ gnapCarryGarbageCanTo(2);
_vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant;
} else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, 2);
+ gnapCarryGarbageCanTo(2);
_vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrant;
} else {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
_vm->playGnapImpossible(0, 0);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
_vm->playGnapImpossible(0, 0);
break;
@@ -3631,7 +3620,7 @@ void Scene18::run() {
}
} else {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
@@ -3669,7 +3658,7 @@ void Scene18::run() {
case kHS18ExitToyStore:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->isFlag(kGFPictureTaken)) {
@@ -3688,7 +3677,7 @@ void Scene18::run() {
case kHS18ExitPhoneBooth:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
closeHydrantValve();
@@ -3706,7 +3695,7 @@ void Scene18::run() {
case kHS18ExitGrubCity:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
closeHydrantValve();
@@ -3727,7 +3716,7 @@ void Scene18::run() {
case kHS18WalkArea2:
if (_vm->_gnapActionStatus < 0) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
@@ -3739,7 +3728,7 @@ void Scene18::run() {
default:
if (_vm->_gnapActionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
if (_vm->isFlag(kGFPlatyPussDisguised)) {
- gnapCarryGarbageCanTo(-1, -1, 0, -1, -1);
+ gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
diff --git a/engines/gnap/scenes/group1.h b/engines/gnap/scenes/group1.h
index 2a9fe8c..568099d 100644
--- a/engines/gnap/scenes/group1.h
+++ b/engines/gnap/scenes/group1.h
@@ -422,7 +422,7 @@ private:
int _nextPhoneSequenceId;
int _currPhoneSequenceId;
- void gnapCarryGarbageCanTo(int x, int y, int animationIndex, int argC, int a5);
+ void gnapCarryGarbageCanTo(int a5);
void putDownGarbageCan(int animationIndex);
void platEndPhoning(bool platFl);
void closeHydrantValve();
Commit: f50891f9906ddcfbe91c0b506872fa03c111737e
https://github.com/scummvm/scummvm/commit/f50891f9906ddcfbe91c0b506872fa03c111737e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:48+02:00
Commit Message:
GNAP: rework gnapCarryGarbageCanTo
Changed paths:
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 4dc410c..9a5542c 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -3158,49 +3158,44 @@ void Scene18::updateHotspots() {
_vm->_hotspotsCount = 11;
}
-void Scene18::gnapCarryGarbageCanTo(int a5) {
- // TODO Cleanup
- static const int kSequenceIds[] = {
- 0x203, 0x204
- };
-
+void Scene18::gnapCarryGarbageCanTo(int gridX) {
GameSys& gameSys = *_vm->_gameSys;
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
- int v12, v5, v10, v11, direction;
+ int destGridX, direction;
- int clippedX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
+ int curGridX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
- if (clippedX >= _vm->_gnapX)
- v10 = clippedX - 1;
+ if (curGridX >= _vm->_gnapX)
+ destGridX = curGridX - 1;
else
- v10 = clippedX + 1;
-
- if (a5 < 0)
- a5 = 4;
- v5 = v10;
- if (v10 <= a5)
- v5 = a5;
- v11 = v5;
- v12 = _vm->_gridMaxX - 1;
- if (_vm->_gridMaxX - 1 >= v11)
- v12 = v11;
-
- if (v12 == _vm->_gnapX) {
+ destGridX = curGridX + 1;
+
+ if (gridX < 0)
+ gridX = 4;
+
+ if (destGridX <= gridX)
+ destGridX = gridX;
+
+ int nextGridX = _vm->_gridMaxX - 1;
+ if (nextGridX >= destGridX)
+ nextGridX = destGridX;
+
+ if (nextGridX == _vm->_gnapX) {
gnapSeqId = _vm->_gnapSequenceId;
gnapId = _vm->_gnapId;
gnapDatNum = _vm->_gnapSequenceDatNum;
gnapGridX = _vm->_gnapX;
- if (_vm->_gnapX <= clippedX)
+ if (_vm->_gnapX <= curGridX)
direction = 1;
else
direction = -1;
} else {
if (_vm->_gnapY == _vm->_platY) {
- if (v12 >= _vm->_gnapX) {
- if (v12 >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
+ if (nextGridX >= _vm->_gnapX) {
+ if (nextGridX >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
_vm->platypusMakeRoom();
- } else if (v12 <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
+ } else if (nextGridX <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
_vm->platypusMakeRoom();
}
}
@@ -3208,25 +3203,28 @@ void Scene18::gnapCarryGarbageCanTo(int a5) {
gnapId = _vm->_gnapId;
gnapDatNum = _vm->_gnapSequenceDatNum;
gnapGridX = _vm->_gnapX;
- int seqId = 0;
- if (v12 < _vm->_gnapX) {
+ int seqId;
+ if (nextGridX < _vm->_gnapX) {
direction = -1;
- seqId = 1;
- } else
+ seqId = 0x204;
+ } else {
direction = 1;
- int a2 = 20 * _vm->_gnapY + 1;
+ seqId = 0x203;
+ }
+
+ int seqId2 = 20 * _vm->_gnapY + 1;
do {
if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
break;
- a2 += direction;
- gameSys.insertSequence(kSequenceIds[seqId], a2,
+ seqId2 += direction;
+ gameSys.insertSequence(seqId, seqId2,
gnapSeqId | (gnapDatNum << 16), gnapId,
kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- gnapSeqId = kSequenceIds[seqId];
- gnapId = a2;
+ gnapSeqId = seqId;
+ gnapId = seqId2;
gnapDatNum = 0;
gnapGridX += direction;
- } while (v12 != gnapGridX);
+ } while (nextGridX != gnapGridX);
}
if (direction == 1)
@@ -3248,7 +3246,6 @@ void Scene18::gnapCarryGarbageCanTo(int a5) {
kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
_vm->_gnapX = gnapGridX;
-
}
void Scene18::putDownGarbageCan(int animationIndex) {
Commit: a2d45c70e9419cedb2e71a46d408cb19c720b6c2
https://github.com/scummvm/scummvm/commit/a2d45c70e9419cedb2e71a46d408cb19c720b6c2
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:48+02:00
Commit Message:
GNAP: For consistancy, use hex values for playSound calls
Changed paths:
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index f16fc6d..196d99a 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -189,7 +189,7 @@ void Scene49::updateObstacle(int id) {
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
+ _vm->playSound(0xE0, false);
increaseScore(30);
} else if ((obstacle._laneNum == 1 && _truckSequenceId == 0xB0) ||
(obstacle._laneNum == 2 && (_truckSequenceId == 0xB1 || _truckSequenceId == 0xB2)) ||
@@ -211,7 +211,7 @@ void Scene49::updateObstacle(int id) {
_truckSequenceId = obstacle._collisionSequenceId;
_truckId = 256;
obstacle._currSequenceId = obstacle._passedSequenceId;
- _vm->playSound(225, false);
+ _vm->playSound(0xE1, false);
decreaseScore(30);
}
} else {
@@ -229,7 +229,7 @@ void Scene49::updateObstacle(int id) {
obstacle._currSequenceId, obstacle._currId,
kSeqSyncWait, 0, 0, -50);
obstacle._currSequenceId = obstacle._collisionSequenceId;
- _vm->playSound(224, false);
+ _vm->playSound(0xE0, false);
increaseScore(30);
}
} else if (obstacle._splashSequenceId) {
@@ -1323,7 +1323,7 @@ void Scene51::updateItemAnimation(Scene51Item *item, int index) {
} else {
_vm->_gameSys->removeSequence(item->_currSequenceId, item->_id, true);
_vm->_gameSys->setAnimation(0, 0, index + 1);
- _vm->playSound(218, false);
+ _vm->playSound(0xDA, false);
if (incCashAmount(item->_currSequenceId) == 1995) {
winMinigame();
_vm->_sceneDone = true;
@@ -1520,7 +1520,7 @@ void Scene51::playIntroAnim() {
_platypusSequenceId = _platypusNextSequenceId;
++soundCtr;
if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
+ _vm->playSound(0xD6, false);
}
_platypusNextSequenceId = 0x75;
@@ -1538,7 +1538,7 @@ void Scene51::playIntroAnim() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
+ _vm->playSound(0xD6, false);
}
}
waitForAnim(0);
@@ -1596,7 +1596,7 @@ int Scene51::incCashAmount(int sequenceId) {
void Scene51::winMinigame() {
updateCash(1995);
- _vm->playSound(218, false);
+ _vm->playSound(0xDA, false);
// TODO delayTicksA(1, 5);
_vm->_newSceneNum = 48;
_vm->invRemove(kItemBanana);
@@ -1769,7 +1769,7 @@ void Scene51::run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
+ _vm->playSound(0xD6, false);
}
}
} else {
@@ -1821,7 +1821,7 @@ void Scene51::run() {
} else {
++soundCtr;
if (soundCtr % 4 == 0)
- _vm->playSound(214, false);
+ _vm->playSound(0xD6, false);
}
}
} else {
@@ -1890,7 +1890,7 @@ void Scene52::update() {
if (_liveAlienRows == 0 && !_alienSingle) {
_alienWave = false;
- _vm->playSound(48, false);
+ _vm->playSound(0x30, false);
++_alienCounter;
if (_alienCounter != 3) {
_vm->_timers[0] = 50;
@@ -2256,7 +2256,7 @@ int Scene52::updateHitAlien() {
if (hitAlienNum != -1 && _items[rowNum][hitAlienNum] >= 0) {
_gameScore = ((_items[rowNum][hitAlienNum] - 24) % 3 + _gameScore + 1) % 1000;
_items[rowNum][hitAlienNum] = -2;
- _vm->playSound(44, false);
+ _vm->playSound(0x2C, false);
_vm->_gameSys->insertSequence(0x21, 266, 0, 0,
kSeqNone, 0, _alienLeftX + hitAlienNum * _alienWidth + _alienRowXOfs[rowNum] - 10, ya - _alienHeight);
result = 1;
@@ -2470,7 +2470,7 @@ void Scene52::shipExplode() {
if (!_aliensCount) {
_vm->_gameSys->setAnimation(0, 0, 7);
_vm->_gameSys->removeSequence(_ufoSequenceId, 256, true);
- _vm->playSound(44, false);
+ _vm->playSound(0x2C, false);
_vm->_gameSys->insertSequence(0x21, 266, 0, 0, kSeqNone, 0, _shipPosX, _arcadeScreenBottom);
_aliensCount = 1;
_vm->playSound(0x31, false);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 68c962b..d7f8aec 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -319,9 +319,9 @@ void Scene01::updateAnimations() {
break;
case kAS01LookPigs:
- _vm->playSound(138, false);
- _vm->playSound(139, false);
- _vm->playSound(140, false);
+ _vm->playSound(0x8A, false);
+ _vm->playSound(0x8B, false);
+ _vm->playSound(0x8C, false);
_vm->_gnapActionStatus = -1;
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 9a5542c..f9789e1 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -3964,7 +3964,7 @@ void Scene18::updateAnimations() {
gameSys.insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
while (gameSys.getAnimationStatus(5) != 2)
_vm->gameUpdateTick();
- _vm->playSound(555, true);
+ _vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x207;
Commit: 99580a1b088c9e199a50116dc3dca915142b7547
https://github.com/scummvm/scummvm/commit/99580a1b088c9e199a50116dc3dca915142b7547
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:49+02:00
Commit Message:
GNAP: Remove 3 CHECKMEs
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index e7899a2..ad9d0da 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -52,7 +52,6 @@ GameSys::GameSys(GnapEngine *vm) : _vm(vm) {
_backgroundImageValue1 = 0;
_backgroundImageValue4 = 1000;
_backgroundImageValue2 = 1000;
- _backgroundImageError = true;
_gameSysClock = 0;
_lastUpdateClock = 0;
_backgroundSurface = nullptr;
@@ -172,7 +171,6 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
_backgroundSurface = surface;
if (!_backgroundSurface) {
- _backgroundImageError = true;
return;
}
@@ -189,7 +187,6 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
_vm->_system->copyRectToScreen(_frontSurface->getPixels(), _frontSurface->pitch, 0, 0, _frontSurface->w, _frontSurface->h);
- _backgroundImageError = false;
_backgroundImageValue1 = a4;
_backgroundImageValue3 = a6;
_backgroundImageValue2 = a5;
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 29a5f97..a63b32d 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -165,7 +165,6 @@ public:
int _backgroundImageValue3, _backgroundImageValue1;
int _backgroundImageValue4, _backgroundImageValue2;
- bool _backgroundImageError; // CHECKME: Unused
int32 _gameSysClock, _lastUpdateClock;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index f9789e1..22fa7a1 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -3906,7 +3906,7 @@ void Scene18::updateAnimations() {
_vm->setFlag(kGFUnk14);
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->setFlag(kGFTruckKeysUsed);
- _vm->setFlag(kGFUnk14); // CHECKME - Set 2 times?
+ _vm->setFlag(kGFUnk14); // Useless, already set
updateHotspots();
_vm->_gnapActionStatus = kAS18LeaveScene;
break;
Commit: aee38421631479b6025585649172491f3251ce5e
https://github.com/scummvm/scummvm/commit/aee38421631479b6025585649172491f3251ce5e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:49+02:00
Commit Message:
GNAP: Some renaming
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index ad9d0da..6a9cc0f 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -184,7 +184,6 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
}
memcpy(_frontSurface->getPixels(), surface->getPixels(), surface->pitch * surface->h);
-
_vm->_system->copyRectToScreen(_frontSurface->getPixels(), _frontSurface->pitch, 0, 0, _frontSurface->w, _frontSurface->h);
_backgroundImageValue1 = a4;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index c17790f..e5169e4 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1672,7 +1672,7 @@ void GnapEngine::gnapInitBrainPulseRndValue() {
_gnapBrainPulseRndValue = 2 * getRandom(10);
}
-void GnapEngine::gnapUseDeviceOnPlatypuss() {
+void GnapEngine::gnapUseDeviceOnPlatypus() {
playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
if (_platypusFacing != kDirNone) {
@@ -1805,7 +1805,7 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
_newSceneNum = 47;
_isLeavingScene = true;
_sceneDone = true;
- setFlag(kGFPlatyPussDisguised);
+ setFlag(kGFPlatypusDisguised);
}
int GnapEngine::getPlatypusSequenceId() {
@@ -1868,7 +1868,7 @@ void GnapEngine::updatePlatypusIdleSequence() {
}
}
-void GnapEngine::platypusSub426234() {
+void GnapEngine::updatePlatypusIdleSequence2() {
if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
if (_timers[0]) {
if (!_timers[1]) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 8f86a86..b388022 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -183,7 +183,7 @@ enum {
kGFBarnPadlockOpen = 7,
kGFTruckFilledWithGas = 8,
kGFTruckKeysUsed = 9,
- kGFPlatyPussDisguised = 10,
+ kGFPlatypusDisguised = 10,
kGFSceneFlag1 = 11,
kGFGnapControlsToyUFO = 12,
kGFUnk13 = 13, // Tongue Fight Won?
@@ -550,7 +550,7 @@ public:
void updateGnapIdleSequence2();
void initGnapPos(int gridX, int gridY, Facing facing);
void gnapInitBrainPulseRndValue();
- void gnapUseDeviceOnPlatypuss();
+ void gnapUseDeviceOnPlatypus();
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
void gnapKissPlatypus(int callback);
@@ -564,11 +564,10 @@ public:
int getPlatypusSequenceId();
void playPlatypusSequence(int sequenceId);
void updatePlatypusIdleSequence();
- void platypusSub426234();
+ void updatePlatypusIdleSequence2();
void initPlatypusPos(int gridX, int gridY, Facing facing);
// Scenes
-
int _toyUfoNextSequenceId, _toyUfoSequenceId;
int _toyUfoId;
int _toyUfoActionStatus;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index d7f8aec..4ec0d88 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -1376,7 +1376,7 @@ void Scene04::run() {
_vm->queueInsertDeviceIcon();
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
_vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
@@ -1394,7 +1394,7 @@ void Scene04::run() {
_vm->invRemove(kItemDisguise);
_vm->invAdd(kItemKeys);
_vm->setFlag(kGFKeysTaken);
- _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->clearFlag(kGFPlatypusDisguised);
_vm->_platypusSequenceId = 0x20C;
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusFacing = kDirBottomRight;
@@ -1667,7 +1667,7 @@ void Scene04::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->platypusSub426234();
+ _vm->updatePlatypusIdleSequence2();
if (_vm->_gnapActionStatus < 0)
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[5]) {
@@ -1965,7 +1965,7 @@ void Scene05::run() {
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
_vm->_platypusActionStatus = kAS05PlatSearchHaystack;
_vm->_platypusFacing = kDirUnk4;
@@ -3057,7 +3057,7 @@ void Scene08::run() {
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS08PlatWithMan;
_vm->_platypusFacing = kDirNone;
@@ -3093,7 +3093,7 @@ void Scene08::run() {
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
_vm->gnapActionIdle(0x14D);
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS08PlatWithDog;
_vm->_platypusFacing = kDirNone;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 22fa7a1..bd77c3c 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -169,7 +169,7 @@ void Scene10::run() {
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(4, 6, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS10AnnoyCook;
@@ -206,7 +206,7 @@ void Scene10::run() {
_vm->playGnapMoan2(-1, -1);
else {
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS10AnnoyCook;
@@ -239,7 +239,7 @@ void Scene10::run() {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
_vm->gnapActionIdle(0x10C);
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
_vm->_platypusActionStatus = kAS10PlatWithBox;
_vm->_platypusFacing = kDirUnk4;
@@ -747,7 +747,7 @@ void Scene11::run() {
gameSys.setAnimation(0x207, 257, 4);
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
- _vm->platypusSub426234();
+ _vm->updatePlatypusIdleSequence2();
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
@@ -1071,7 +1071,7 @@ void Scene12::run() {
_vm->_gnapActionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
_vm->_platypusActionStatus = kAS12PlatWithToothGuy;
_vm->_platypusFacing = kDirUnk4;
@@ -1141,7 +1141,7 @@ void Scene12::run() {
_vm->_gnapActionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS12PlatWithBeardGuy;
_vm->_platypusFacing = kDirNone;
@@ -2539,7 +2539,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->gnapUseJointOnPlatypus();
} else {
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_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->_platypusActionStatus = kAS17GetWrench1;
@@ -2586,7 +2586,7 @@ void Scene17::run() {
case PLAT_CURSOR:
if (_canTryGetWrench) {
platHangUpPhone();
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS17TryGetWrench;
_vm->_gnapActionStatus = kAS17TryGetWrench;
@@ -2626,7 +2626,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->_platypusFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
@@ -2670,7 +2670,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->_platypusFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
@@ -2730,7 +2730,7 @@ void Scene17::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_platypusActionStatus < 0)
- _vm->platypusSub426234();
+ _vm->updatePlatypusIdleSequence2();
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
@@ -3143,7 +3143,7 @@ void Scene18::updateHotspots() {
_vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
_vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
}
- if (_vm->isFlag(kGFPlatyPussDisguised))
+ if (_vm->isFlag(kGFPlatypusDisguised))
_vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_vm->_hotspots[kHS18Device]._flags = SF_DISABLED;
@@ -3259,7 +3259,7 @@ void Scene18::putDownGarbageCan(int animationIndex) {
_vm->_s18GarbageCanPos = _vm->_gnapX - 1;
else
_vm->_s18GarbageCanPos = _vm->_gnapX + 1;
- _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->clearFlag(kGFPlatypusDisguised);
updateHotspots();
if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
gameSys.insertSequence(0x107BA, _vm->_gnapId,
@@ -3342,7 +3342,7 @@ void Scene18::run() {
_vm->startSoundTimerA(4);
_vm->_timers[5] = _vm->getRandom(100) + 100;
_vm->queueInsertDeviceIcon();
- _vm->clearFlag(kGFPlatyPussDisguised);
+ _vm->clearFlag(kGFPlatypusDisguised);
if (!_vm->isFlag(kGFUnk14))
gameSys.insertSequence(0x1F8, 19, 0, 0, kSeqNone, 0, 0, 0);
@@ -3440,7 +3440,7 @@ void Scene18::run() {
case kHS18Platypus:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3473,7 +3473,7 @@ void Scene18::run() {
_vm->_gnapActionStatus = kAS18GrabCowboyHat;
_vm->_sceneWaiting = false;
} else if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3543,7 +3543,7 @@ void Scene18::run() {
case kHS18HydrantTopValve:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
// While carrying garbage can
if (_vm->_grabCursorSpriteIndex >= 0) {
gnapCarryGarbageCanTo(-1);
@@ -3616,7 +3616,7 @@ void Scene18::run() {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
}
} else {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3654,7 +3654,7 @@ void Scene18::run() {
case kHS18ExitToyStore:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3673,7 +3673,7 @@ void Scene18::run() {
case kHS18ExitPhoneBooth:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3691,7 +3691,7 @@ void Scene18::run() {
case kHS18ExitGrubCity:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
@@ -3712,7 +3712,7 @@ void Scene18::run() {
case kHS18WalkArea1:
case kHS18WalkArea2:
if (_vm->_gnapActionStatus < 0) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
@@ -3724,7 +3724,7 @@ void Scene18::run() {
default:
if (_vm->_gnapActionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
- if (_vm->isFlag(kGFPlatyPussDisguised)) {
+ if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
@@ -3774,7 +3774,7 @@ void Scene18::run() {
}
_vm->playSoundA();
}
- if (!_vm->isFlag(kGFPlatyPussDisguised))
+ if (!_vm->isFlag(kGFPlatypusDisguised))
_vm->updateGnapIdleSequence();
}
@@ -3814,7 +3814,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceId = 0x1FD;
}
gameSys.removeSequence(0x1FA, 19, true);
- _vm->setFlag(kGFPlatyPussDisguised);
+ _vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
_vm->_gnapActionStatus = -1;
break;
@@ -3824,7 +3824,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FE;
_vm->clearFlag(kGFTruckKeysUsed);
- _vm->setFlag(kGFPlatyPussDisguised);
+ _vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
_vm->_gnapActionStatus = -1;
break;
@@ -3916,7 +3916,7 @@ void Scene18::updateAnimations() {
break;
case kAS18PutGarbageCanOnRunningHydrant:
_vm->setFlag(kGFTruckKeysUsed);
- _vm->clearFlag(kGFPlatyPussDisguised);
+ _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);
@@ -4008,7 +4008,7 @@ void Scene18::updateAnimations() {
break;
case kAS18PutGarbageCanOnHydrant:
_vm->setFlag(kGFTruckKeysUsed);
- _vm->clearFlag(kGFPlatyPussDisguised);
+ _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;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index df3fbf4..eeffa16 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -1169,7 +1169,7 @@ void Scene22::run() {
_vm->_gnapActionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
break;
}
}
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 7526a9d..20f798c 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -393,7 +393,7 @@ void Scene31::run() {
break;
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_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);
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index c42119c..b9119b7 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -1833,7 +1833,7 @@ void Scene44::run() {
_vm->_gnapActionStatus = 1;
break;
case PLAT_CURSOR:
- _vm->gnapUseDeviceOnPlatypuss();
+ _vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
if (_vm->_gnapX == 7 && _vm->_gnapY == 7)
_vm->gnapWalkStep();
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index eb83632..c6e32e0 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -530,7 +530,7 @@ void GnapEngine::runSceneLogic() {
_scene = new Scene472(this);
_scene->init();
_newSceneNum = 11;
- } else if (!isFlag(kGFPlatyPussDisguised) && _prevSceneNum == 2) {//CHECKME
+ } else if (!isFlag(kGFPlatypusDisguised) && _prevSceneNum == 2) {//CHECKME
if (isFlag(kGFUnk25)) {
_scene = new Scene473(this);
_scene->init();
@@ -550,7 +550,7 @@ void GnapEngine::runSceneLogic() {
_scene = new Scene476(this);
_scene->init();
_newSceneNum = 26;
- } else if (isFlag(kGFPlatyPussDisguised) && _cursorValue == 1) {
+ } else if (isFlag(kGFPlatypusDisguised) && _cursorValue == 1) {
_scene = new Scene477(this);
_scene->init();
_newSceneNum = 4;
Commit: 2e50019c05dbff0bbb559b72a201630605505c87
https://github.com/scummvm/scummvm/commit/2e50019c05dbff0bbb559b72a201630605505c87
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:49+02:00
Commit Message:
GNAP: Introduce Character class - WIP
Changed paths:
A engines/gnap/character.cpp
A engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/module.mk
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
new file mode 100644
index 0000000..6e4ade3
--- /dev/null
+++ b/engines/gnap/character.cpp
@@ -0,0 +1,37 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gnap/gnap.h"
+#include "gnap/character.h"
+
+namespace Gnap {
+
+Character::Character(GnapEngine *vm) : _vm(vm) {
+ _pos = Common::Point(0, 0);
+ _idleFacing = kDirNone;
+}
+
+Character::~Character() {}
+
+PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
new file mode 100644
index 0000000..5949b7a
--- /dev/null
+++ b/engines/gnap/character.h
@@ -0,0 +1,58 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GNAP_CHARACTER_H
+#define GNAP_CHARACTER_H
+
+namespace Gnap {
+
+class GnapEngine;
+
+enum Facing {
+ kDirNone = 0,
+ kDirBottomRight = 1,
+ kDirBottomLeft = 3,
+ kDirUnk4 = 4,
+ kDirUpLeft = 5,
+ kDirUpRight = 7
+};
+
+class Character {
+public:
+ Character(GnapEngine *vm);
+ ~Character();
+
+ Common::Point _pos;
+ Facing _idleFacing;
+
+protected:
+ GnapEngine *_vm;
+};
+
+class PlayerGnap : public Character {
+public:
+ PlayerGnap(GnapEngine *vm);
+};
+
+} // End of namespace Gnap
+
+#endif // GNAP_CHARACTER_H
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e5169e4..ff9c79e 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -148,12 +148,14 @@ Common::Error GnapEngine::run() {
_gameSys = new GameSys(this);
_soundMan = new SoundMan(this);
_debugger = new Debugger(this);
+ _gnap = new PlayerGnap(this);
_menuBackgroundSurface = nullptr;
initGlobalSceneVars();
mainLoop();
+ delete _gnap;
delete _soundMan;
delete _gameSys;
delete _sequenceCache;
@@ -943,25 +945,25 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
switch (kind) {
case gskPullOutDevice:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x83F;
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
} else {
sequenceId = 0x83D;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x83B;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x839;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x839;
break;
@@ -980,25 +982,25 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskPullOutDeviceNonWorking:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x829;
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
} else {
sequenceId = 0x828;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x827;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x826;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x826;
break;
@@ -1017,40 +1019,40 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskScratchingHead:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x834;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x885;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x834;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x833;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x833;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
break;
case kDirBottomLeft:
sequenceId = 0x834;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
break;
case kDirUpRight:
sequenceId = 0x885;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
break;
default:
sequenceId = 0x834;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
break;
}
}
@@ -1058,25 +1060,25 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskIdle:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x7BC;
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
} else {
sequenceId = 0x7BB;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x7BA;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7B9;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x7B9;
break;
@@ -1096,25 +1098,25 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskBrainPulsating:
_gnapBrainPulseNum = (_gnapBrainPulseNum + 1) & 1;
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
} else {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
break;
@@ -1133,59 +1135,59 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskImpossible:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x831;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7A8;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x831;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
- if (_gnapX % 2)
+ if (_gnap->_pos.x % 2)
sequenceId = 0x7A8;
else
sequenceId = 0x89A;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
+ } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
sequenceId = 0x831;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
if (_currentSceneNum % 2)
sequenceId = 0x7A8;
else
sequenceId = 0x89A;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
break;
case gskDeflect:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x830;
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
} else {
sequenceId = 0x82F;
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x82E;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7A7;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
} else {
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x7A7;
break;
@@ -1206,7 +1208,7 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
break;
case gskUseDevice:
- switch (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
sequenceId = 0x83A;
break;
@@ -1227,57 +1229,57 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
case gskMoan1:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
+ } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
break;
case gskMoan2:
if (gridX > 0 && gridY > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
} else {
- if (_gnapX > gridX) {
+ if (_gnap->_pos.x > gridX) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
}
- } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
+ } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
sequenceId = 0x832;
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
} else {
sequenceId = 0x7AA;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
break;
}
@@ -1287,120 +1289,120 @@ int GnapEngine::getGnapSequenceId(int kind, int gridX, int gridY) {
int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
int sequenceId;
- Facing facing = _gnapIdleFacing;
+ Facing facing = _gnap->_idleFacing;
if (gridY > 0 && gridX > 0) {
- if (_gnapY > gridY) {
- if (_gnapX > gridX)
- _gnapIdleFacing = kDirUpLeft;
+ if (_gnap->_pos.y > gridY) {
+ if (_gnap->_pos.x > gridX)
+ _gnap->_idleFacing = kDirUpLeft;
else
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
} else {
- if (_gnapX > gridX)
- _gnapIdleFacing = kDirUpLeft;
+ if (_gnap->_pos.x > gridX)
+ _gnap->_idleFacing = kDirUpLeft;
else
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
- } else if (_gnapIdleFacing != kDirBottomRight && _gnapIdleFacing != kDirUpRight) {
- _gnapIdleFacing = kDirUpLeft;
+ } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
+ _gnap->_idleFacing = kDirUpLeft;
} else {
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
}
switch (index) {
case 0:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x8A0;
else
sequenceId = 0x8A1;
break;
case 1:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x880;
else
sequenceId = 0x895;
break;
case 2:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x884;
else
sequenceId = 0x899;
break;
//Skip 3
case 4:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x881;
else
sequenceId = 0x896;
break;
case 5:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x883;
else
sequenceId = 0x898;
break;
case 6:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87E;
else
sequenceId = 0x893;
break;
case 7:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x848;
else
sequenceId = 0x890;
break;
case 8:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87D;
else
sequenceId = 0x892;
break;
case 9:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x882;
else
sequenceId = 0x897;
break;
case 10:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87C;
else
sequenceId = 0x891;
break;
case 11:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87C;
else
sequenceId = 0x891;
break;
case 12:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87D;
else
sequenceId = 0x892;
break;
case 13:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x888;
else
sequenceId = 0x89D;
break;
case 14:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87F;
else
sequenceId = 0x894;
break;
case 15:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87B;
else
sequenceId = 0x8A3;
break;
case 16:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x877;
else
sequenceId = 0x88C;
@@ -1410,43 +1412,43 @@ int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
sequenceId = 0x887;
break;
case 19:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87A;
else
sequenceId = 0x88F;
break;
case 20:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x878;
else
sequenceId = 0x88D;
break;
case 21:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x879;
else
sequenceId = 0x88E;
break;
case 22:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x88A;
else
sequenceId = 0x89F;
break;
case 23:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x889;
else
sequenceId = 0x89E;
break;
case 24:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x886;
else
sequenceId = 0x89B;
break;
case 25:
- if (_gnapIdleFacing == kDirUpRight)
+ if (_gnap->_idleFacing == kDirUpRight)
sequenceId = 0x87A;
else
sequenceId = 0x88F;
@@ -1456,7 +1458,7 @@ int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
//Skip 28
//Skip 29
default:
- _gnapIdleFacing = facing;
+ _gnap->_idleFacing = facing;
sequenceId = getGnapSequenceId(gskImpossible, 0, 0);
break;
}
@@ -1473,7 +1475,7 @@ void GnapEngine::gnapIdle() {
_gnapSequenceId == 0x831 || _gnapSequenceId == 0x89A)) {
_gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncExists, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
_gnapSequenceDatNum = 1;
}
@@ -1484,7 +1486,7 @@ void GnapEngine::gnapActionIdle(int sequenceId) {
ridToEntryIndex(sequenceId) == _gnapSequenceId) {
_gameSys->insertSequence(getGnapSequenceId(gskIdle, 0, 0) | 0x10000, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncExists, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = getGnapSequenceId(gskIdle, 0, 0);
_gnapSequenceDatNum = 1;
}
@@ -1496,7 +1498,7 @@ void GnapEngine::playGnapSequence(int sequenceId) {
gnapIdle();
_gameSys->insertSequence(sequenceId, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = ridToEntryIndex(sequenceId);
_gnapSequenceDatNum = ridToDatIndex(sequenceId);
}
@@ -1554,7 +1556,7 @@ void GnapEngine::updateGnapIdleSequence() {
if (_timers[3] == 0) {
_timers[2] = 60;
_timers[3] = 300;
- if (_gnapIdleFacing == kDirBottomRight) {
+ if (_gnap->_idleFacing == kDirBottomRight) {
switch (getRandom(5)) {
case 0:
playGnapSequence(0x107A6);
@@ -1569,7 +1571,7 @@ void GnapEngine::updateGnapIdleSequence() {
playGnapSequence(0x108A2);
break;
}
- } else if (_gnapIdleFacing == kDirBottomLeft) {
+ } else if (_gnap->_idleFacing == kDirBottomLeft) {
if (getRandom(5) > 2)
playGnapSequence(0x10832);
else
@@ -1578,16 +1580,16 @@ void GnapEngine::updateGnapIdleSequence() {
}
} else {
_timers[2] = getRandom(30) + 20;
- if (_gnapIdleFacing == kDirBottomRight) {
+ if (_gnap->_idleFacing == kDirBottomRight) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
- } else if (_gnapIdleFacing == kDirBottomLeft) {
+ } else if (_gnap->_idleFacing == kDirBottomLeft) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = 0x7BE;
_gnapSequenceDatNum = 1;
}
@@ -1604,24 +1606,24 @@ void GnapEngine::updateGnapIdleSequence2() {
if (_timers[3] == 0) {
_timers[2] = 60;
_timers[3] = 300;
- if (_gnapIdleFacing == kDirBottomRight) {
+ if (_gnap->_idleFacing == kDirBottomRight) {
playGnapSequence(0x107AA);
- } else if (_gnapIdleFacing == kDirBottomLeft) {
+ } else if (_gnap->_idleFacing == kDirBottomLeft) {
playGnapSequence(0x10832);
}
}
} else {
_timers[2] = getRandom(30) + 20;
- if (_gnapIdleFacing == kDirBottomRight) {
+ if (_gnap->_idleFacing == kDirBottomRight) {
_gameSys->insertSequence(0x107BD, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = 0x7BD;
_gnapSequenceDatNum = 1;
- } else if (_gnapIdleFacing == kDirBottomLeft) {
+ } else if (_gnap->_idleFacing == kDirBottomLeft) {
_gameSys->insertSequence(0x107BE, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = 0x7BE;
_gnapSequenceDatNum = 1;
}
@@ -1649,23 +1651,22 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
void GnapEngine::initGnapPos(int gridX, int gridY, Facing facing) {
_timers[2] = 30;
_timers[3] = 300;
- _gnapX = gridX;
- _gnapY = gridY;
+ _gnap->_pos = Common::Point(gridX, gridY);
if (facing == kDirNone)
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
else
- _gnapIdleFacing = facing;
- if (_gnapIdleFacing == kDirBottomLeft) {
+ _gnap->_idleFacing = facing;
+ if (_gnap->_idleFacing == kDirBottomLeft) {
_gnapSequenceId = 0x7B8;
} else {
_gnapSequenceId = 0x7B5;
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
}
- _gnapId = 20 * _gnapY;
+ _gnapId = 20 * _gnap->_pos.y;
_gnapSequenceDatNum = 1;
- _gameSys->insertSequence(makeRid(1, _gnapSequenceId), 20 * _gnapY,
+ _gameSys->insertSequence(makeRid(1, _gnapSequenceId), 20 * _gnap->_pos.y,
0, 0,
- kSeqScale, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqScale, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
}
void GnapEngine::gnapInitBrainPulseRndValue() {
@@ -1692,7 +1693,7 @@ void GnapEngine::gnapUseDeviceOnPlatypus() {
int newSequenceId = getGnapSequenceId(gskUseDevice, 0, 0);
_gameSys->insertSequence(makeRid(1, newSequenceId), _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 75 * _gnapX - _gnapGridX, 48 * _gnapY - _gnapGridY);
+ kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
_gnapSequenceId = newSequenceId;
_gnapSequenceDatNum = 1;
}
@@ -1712,9 +1713,9 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
if (_gnapActionStatus <= -1 && _platypusActionStatus <= -1) {
_gnapActionStatus = 100;
- if (isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY))
+ if (isPointBlocked(_platX + gridX, _platY + gridY) && (_gnap->_pos != Common::Point(_platX + gridX, _platY + gridY)))
platypusWalkStep();
- if (!isPointBlocked(_platX + gridX, _platY + gridY) && (_platX + gridX != _gnapX || _platY + gridY != _gnapY)) {
+ if (!isPointBlocked(_platX + gridX, _platY + gridY) && (_gnap->_pos != Common::Point(_platX + gridX, _platY + gridY))) {
gnapWalkTo(_platX + gridX, _platY + gridY, 0, 0x107B9, 1);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
@@ -1722,7 +1723,7 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
gameUpdateTick();
}
_gameSys->setAnimation(0, 0, 0);
- if (_platX + gridX == _gnapX && _platY + gridY == _gnapY) {
+ if (_gnap->_pos == Common::Point(_platX + gridX, _platY + gridY)) {
_gameSys->setAnimation(platSequenceId, _platypusId, 1);
playPlatypusSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
@@ -1745,7 +1746,7 @@ void GnapEngine::gnapKissPlatypus(int callback) {
_gameSys->setAnimation(0x10847, _gnapId, 0);
_gameSys->insertSequence(0x10847, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnapX - 20) - (21 - _gridMinX), 48 * (_gnapY - 6) - (146 - _gridMinY));
+ 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,
@@ -1775,7 +1776,7 @@ void GnapEngine::gnapUseJointOnPlatypus() {
_gameSys->setAnimation(0x10876, _platypusId, 0);
_gameSys->insertSequence(0x10875, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnapX - 30), 48 * (_gnapY - 7));
+ kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 30), 48 * (_gnap->_pos.y - 7));
_gnapSequenceDatNum = 1;
_gnapSequenceId = 0x875;
_gameSys->insertSequence(0x10876, _platypusId,
@@ -1936,7 +1937,7 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gameSys->setAnimation(sequenceId2, _gnapId, 0);
_gameSys->insertSequence(sequenceId2, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 25), 48 * (_gnap->_pos.y - 8));
_gnapSequenceId = sequenceId2;
_gnapSequenceDatNum = 0;
while (_gameSys->getAnimationStatus(0) != 2)
@@ -1950,7 +1951,7 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
_gameSys->setAnimation(sequenceId3, _gnapId, 0);
_gameSys->insertSequence(sequenceId3, _gnapId,
makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId,
- kSeqSyncWait, 0, 15 * (5 * _gnapX - 25), 48 * (_gnapY - 8));
+ kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 25), 48 * (_gnap->_pos.y - 8));
removeFullScreenSprite();
showCursor();
_gnapSequenceId = sequenceId3;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index b388022..d16ba24 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -42,6 +42,7 @@
#include "gnap/debugger.h"
#include "gnap/resource.h"
#include "gnap/scenes/scenecore.h"
+#include "gnap/character.h"
struct ADGameDescription;
@@ -250,15 +251,6 @@ enum {
// 0x7AF Gnap walks to the left 1
// 0x7B0 Gnap walks to the left 2
-enum Facing {
- kDirNone = 0,
- kDirBottomRight = 1,
- kDirBottomLeft = 3,
- kDirUnk4 = 4,
- kDirUpLeft = 5,
- kDirUpRight = 7
-};
-
struct GnapSavegameHeader {
uint8 _version;
Common::String _saveName;
@@ -292,6 +284,7 @@ public:
SoundMan *_soundMan;
Debugger *_debugger;
Scene *_scene;
+ PlayerGnap *_gnap;
int _lastUpdateClock;
@@ -494,7 +487,6 @@ public:
// Gnap walking
int _gnapWalkNodesCount;
GridStruct _gnapWalkNodes[kMaxGridStructs];
- int _gnapX, _gnapY;
int _gnapWalkDestX, _gnapWalkDestY;
int _gnapWalkDeltaX, _gnapWalkDeltaY, _gnapWalkDirX, _gnapWalkDirY, _gnapWalkDirXIncr, _gnapWalkDirYIncr;
@@ -505,6 +497,7 @@ public:
bool gridSub41F5FC(int gridX, int gridY, int index);
bool gridSub41FAD5(int gridX, int gridY, int index);
bool gnapFindPath3(int gridX, int gridY);
+ bool gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void gnapWalkStep();
@@ -525,7 +518,6 @@ public:
void platypusMakeRoom();
// Gnap
- Facing _gnapIdleFacing;
int _gnapActionStatus;
int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index dfdc528..ec90cf1 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -73,7 +73,7 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
if (gridX < 0 || gridX >= _gridMaxX || gridY < 0 || gridY >= _gridMaxY)
return true;
- if ((gridX == _gnapX && gridY == _gnapY) || (gridX == _platX && gridY == _platY))
+ if ((_gnap->_pos == Common::Point(gridX, gridY)) || (gridX == _platX && gridY == _platY))
return true;
const int x = _gridMinX + 75 * gridX;
@@ -537,8 +537,11 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
return done;
}
-bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
+bool GnapEngine::gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
+ return gnapWalkTo(gridPos.x, gridPos.y, animationIndex, sequenceId, flags);
+}
+bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
bool done = false;
@@ -557,16 +560,17 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (animationIndex >= 0 && _gnapWalkDestX == _platX && _gnapWalkDestY == _platY)
platypusMakeRoom();
- if (gridSub41F5FC(_gnapX, _gnapY, 0))
+ // TODO: Simplify the cascade of Ifs
+ if (gridSub41F5FC(_gnap->_pos.x, _gnap->_pos.y, 0))
done = true;
- if (!done && gridSub41FAD5(_gnapX, _gnapY, 0))
+ if (!done && gridSub41FAD5(_gnap->_pos.x, _gnap->_pos.y, 0))
done = true;
- if (!done && gnapFindPath3(_gnapX, _gnapY))
+ if (!done && gnapFindPath3(_gnap->_pos.x, _gnap->_pos.y))
done = true;
- if (!done && gridSub41F08B(_gnapX, _gnapY))
+ if (!done && gridSub41F08B(_gnap->_pos.x, _gnap->_pos.y))
done = true;
gnapIdle();
@@ -627,7 +631,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (_gnapWalkNodesCount > 0) {
_gnapSequenceId = gnapSequenceId;
_gnapId = gnapId;
- _gnapIdleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
+ _gnap->_idleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
_gnapSequenceDatNum = datNum;
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_gnapSequenceDatNum, _gnapSequenceId), _gnapId, animationIndex);
@@ -640,26 +644,26 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapSequenceId = ridToEntryIndex(sequenceId);
_gnapSequenceDatNum = ridToDatIndex(sequenceId);
if (_gnapSequenceId == 0x7B9) {
- _gnapIdleFacing = kDirBottomRight;
+ _gnap->_idleFacing = kDirBottomRight;
} else {
switch (_gnapSequenceId) {
case 0x7BA:
- _gnapIdleFacing = kDirBottomLeft;
+ _gnap->_idleFacing = kDirBottomLeft;
break;
case 0x7BB:
- _gnapIdleFacing = kDirUpRight;
+ _gnap->_idleFacing = kDirUpRight;
break;
case 0x7BC:
- _gnapIdleFacing = kDirUpLeft;
+ _gnap->_idleFacing = kDirUpLeft;
break;
}
}
} else {
if (_gnapWalkNodesCount > 0) {
_gnapSequenceId = getGnapWalkStopSequenceId(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
- _gnapIdleFacing = getGnapWalkFacing(_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 (_gnapIdleFacing) {
+ switch (_gnap->_idleFacing) {
case kDirBottomRight:
_gnapSequenceId = 0x7B9;
break;
@@ -674,14 +678,15 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
break;
}
} else {
- int v10 = _leftClickMouseX - (_gridMinX + 75 * _gnapX);
- int v11 = _leftClickMouseY - (_gridMinY + 48 * _gnapY);
- if (_leftClickMouseX == _gridMinX + 75 * _gnapX)
+ //TODO: simplify the checks by using v10 and v11
+ int v10 = _leftClickMouseX - (_gridMinX + 75 * _gnap->_pos.x);
+ int v11 = _leftClickMouseY - (_gridMinY + 48 * _gnap->_pos.y);
+ if (_leftClickMouseX == _gridMinX + 75 * _gnap->_pos.x)
++v10;
- if (_leftClickMouseY == _gridMinY + 48 * _gnapY)
+ if (_leftClickMouseY == _gridMinY + 48 * _gnap->_pos.y)
v11 = 1;
_gnapSequenceId = getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
- _gnapIdleFacing = getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
+ _gnap->_idleFacing = getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
}
_gnapSequenceDatNum = datNum;
}
@@ -704,8 +709,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
}
- _gnapX = _gnapWalkDestX;
- _gnapY = _gnapWalkDestY;
+ _gnap->_pos = Common::Point(_gnapWalkDestX, _gnapWalkDestY);
return done;
}
@@ -714,22 +718,22 @@ void GnapEngine::gnapWalkStep() {
bool done = false;
for (int i = 1; i < _gridMaxX && !done; ++i) {
done = true;
- if (!isPointBlocked(_gnapX + i, _gnapY))
- gnapWalkTo(_gnapX + i, _gnapY, -1, -1, 1);
- else if (!isPointBlocked(_gnapX - i, _gnapY))
- gnapWalkTo(_gnapX - i, _gnapY, -1, -1, 1);
- else if (!isPointBlocked(_gnapX, _gnapY + 1))
- gnapWalkTo(_gnapX, _gnapY + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnapX, _gnapY - 1))
- gnapWalkTo(_gnapX, _gnapY - 1, -1, -1, 1);
- else if (!isPointBlocked(_gnapX + 1, _gnapY + 1))
- gnapWalkTo(_gnapX + 1, _gnapY + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnapX - 1, _gnapY + 1))
- gnapWalkTo(_gnapX - 1, _gnapY + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnapX + 1, _gnapY - 1))
- gnapWalkTo(_gnapX + 1, _gnapY - 1, -1, -1, 1);
- else if (!isPointBlocked(_gnapX - 1, _gnapY - 1))
- gnapWalkTo(_gnapX - 1, _gnapY - 1, -1, -1, 1);
+ if (!isPointBlocked(_gnap->_pos.x + i, _gnap->_pos.y))
+ gnapWalkTo(_gnap->_pos.x + i, _gnap->_pos.y, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x - i, _gnap->_pos.y))
+ gnapWalkTo(_gnap->_pos.x - i, _gnap->_pos.y, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x, _gnap->_pos.y + 1))
+ gnapWalkTo(_gnap->_pos.x, _gnap->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x, _gnap->_pos.y - 1))
+ gnapWalkTo(_gnap->_pos.x, _gnap->_pos.y - 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x + 1, _gnap->_pos.y + 1))
+ gnapWalkTo(_gnap->_pos.x + 1, _gnap->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x - 1, _gnap->_pos.y + 1))
+ gnapWalkTo(_gnap->_pos.x - 1, _gnap->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x + 1, _gnap->_pos.y - 1))
+ gnapWalkTo(_gnap->_pos.x + 1, _gnap->_pos.y - 1, -1, -1, 1);
+ else if (!isPointBlocked(_gnap->_pos.x - 1, _gnap->_pos.y - 1))
+ gnapWalkTo(_gnap->_pos.x - 1, _gnap->_pos.y - 1, -1, -1, 1);
else
done = false;
}
@@ -1210,7 +1214,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
_platWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
- if (animationIndex >= 0 && _platWalkDestX == _gnapX && _platWalkDestY == _gnapY)
+ if (animationIndex >= 0 && _gnap->_pos == Common::Point(_platWalkDestX, _platWalkDestY))
gnapWalkStep();
if (gridSub423CC1(_platX, _platY, 0))
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 79849cf..5305299 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -1,6 +1,7 @@
MODULE := engines/gnap
MODULE_OBJS := \
+ character.o \
datarchive.o \
debugger.o \
detection.o \
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 4ec0d88..019678d 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -21,6 +21,7 @@
*/
#include "gnap/gnap.h"
+#include "gnap/character.h"
#include "gnap/gamesys.h"
#include "gnap/resource.h"
#include "gnap/scenes/group0.h"
@@ -156,7 +157,7 @@ void Scene01::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnapActionStatus = kAS01LookSpaceship;
break;
@@ -199,17 +200,17 @@ void Scene01::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_vm->_gnapActionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 7, 2) | 0x10000, 1);
_vm->_gnapActionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
_vm->_gnapActionStatus = kAS01LookPigs;
break;
@@ -502,7 +503,7 @@ void Scene02::run() {
case kHS02Chicken:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnapIdleFacing = kDirUpRight;
+ _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);
_vm->_gnapActionStatus = kAS02UseTwigWithChicken;
@@ -514,14 +515,14 @@ void Scene02::run() {
_vm->playGnapMoan2(9, 8);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnapActionStatus = kAS02GrabChicken;
else
_vm->_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS02TalkChicken;
break;
@@ -566,7 +567,7 @@ void Scene02::run() {
_vm->_gnapActionStatus = kAS02UseTruckNoGas;
}
} else {
- _vm->_gnapIdleFacing = kDirUnk4;
+ _vm->_gnap->_idleFacing = kDirUnk4;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
_vm->_gnapActionStatus = kAS02UseTruckNoKeys;
}
@@ -590,7 +591,7 @@ void Scene02::run() {
_vm->playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS02GrabTruckGrill;
break;
@@ -793,7 +794,7 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ 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;
_currChickenSequenceId = 0x14B;
@@ -1060,7 +1061,7 @@ void Scene03::run() {
if (_platypusHypnotized) {
_vm->playGnapBrainPulsating(8, 4);
} else {
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
_vm->_gnapActionStatus = kAS03HypnotizeScaredPlat;
@@ -1260,22 +1261,21 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x1B5;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirNone;
+ _vm->_gnap->_idleFacing = kDirNone;
_vm->_platypusSequenceId = _nextPlatSequenceId;
_vm->_platypusSequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
_vm->_gnapActionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
+ _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.setAnimation(0x1BC, 99, 0);
- _vm->_gnapId = 20 * _vm->_gnapY;
+ _vm->_gnapId = 20 * _vm->_gnap->_pos.y;
_vm->_gnapSequenceId = 0x1B6;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirNone;
+ _vm->_gnap->_idleFacing = kDirNone;
_vm->_gnapActionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
@@ -1380,8 +1380,7 @@ void Scene04::run() {
_vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
- _vm->_gnapX = 4;
- _vm->_gnapY = 7;
+ _vm->_gnap->_pos = Common::Point(4, 7);
_vm->_gnapId = 140;
_vm->_platX = 6;
_vm->_platY = 7;
@@ -1509,7 +1508,7 @@ void Scene04::run() {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
@@ -1531,19 +1530,19 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ if (_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1)) {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnapActionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1)) {
+ _vm->_gnap->_idleFacing = kDirBottomRight;
+ if (_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1)) {
_vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20E;
}
@@ -1571,7 +1570,7 @@ void Scene04::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
_vm->_gnapActionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
@@ -1715,8 +1714,7 @@ void Scene04::updateAnimations() {
case kAS04OpenDoor:
gameSys.insertSequence(0x205, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
+ _vm->_gnap->_pos = Common::Point(6, 7);
gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
@@ -1750,8 +1748,8 @@ void Scene04::updateAnimations() {
gameSys.requestRemoveSequence(0x20B, 256);
gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
- _vm->_gnapIdleFacing = kDirBottomRight;
+ 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->_gnapActionStatus = -1;
@@ -1777,10 +1775,10 @@ void Scene04::updateAnimations() {
gameSys.removeSequence(0x20A, 256, true);
gameSys.insertSequence(0x107B5, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnapActionStatus = -1;
break;
case kAS04GrabDog:
@@ -1970,7 +1968,7 @@ void Scene05::run() {
_vm->_platypusActionStatus = kAS05PlatSearchHaystack;
_vm->_platypusFacing = kDirUnk4;
}
- if (_vm->_gnapX == 4 && (_vm->_gnapY == 8 || _vm->_gnapY == 7))
+ if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
_vm->gnapWalkStep();
_vm->playGnapIdle(_vm->_platX, _vm->_platY);
}
@@ -1983,7 +1981,7 @@ void Scene05::run() {
case kHS05Chicken:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnapIdleFacing = kDirUpRight;
+ _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);
_vm->_gnapActionStatus = kAS05UseTwigWithChicken;
@@ -1995,12 +1993,12 @@ void Scene05::run() {
_vm->playGnapMoan2(9, 7);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS05TalkChicken;
break;
@@ -2022,7 +2020,7 @@ void Scene05::run() {
_vm->playGnapMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS05GrabLadder;
break;
@@ -2057,7 +2055,7 @@ void Scene05::run() {
_vm->playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS05TryPickPadlock;
@@ -2193,7 +2191,7 @@ void Scene05::updateAnimations() {
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
gameSys.setAnimation(0x107B1, 1, 0);
_vm->_gnapActionStatus = kAS05LeaveScene;
break;
@@ -2440,7 +2438,7 @@ void Scene06::run() {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
_vm->_platypusFacing = kDirNone;
_vm->_gnapActionStatus = kAS06UseTwigOnHorse;
@@ -2456,7 +2454,7 @@ void Scene06::run() {
if (_horseTurnedBack) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
} else {
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _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->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
@@ -2571,8 +2569,7 @@ void Scene06::updateAnimations() {
_vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
break;
case kAS06TryToClimbLadderDone:
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
+ _vm->_gnap->_pos = Common::Point(6, 7);
_vm->_gnapActionStatus = -1;
break;
case kAS06TalkToHorse:
@@ -2626,7 +2623,7 @@ void Scene06::updateAnimations() {
_vm->_platypusSequenceId = 0xFA;
_vm->_platypusSequenceDatNum = 0;
gameSys.insertSequence(0x107B7, _vm->_gnapId, 0x100, _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B7;
_vm->_gnapSequenceDatNum = 1;
_currHorseSequenceId = _nextHorseSequenceId;
@@ -2692,12 +2689,11 @@ void Scene07::run() {
_vm->initPlatypusPos(9, 7, kDirUnk4);
_vm->endSceneInit();
} else {
- _vm->_gnapX = 6;
- _vm->_gnapY = 7;
+ _vm->_gnap->_pos = Common::Point(6, 7);
_vm->_gnapId = 140;
_vm->_gnapSequenceId = 0x8F;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS07Wait;
@@ -2747,8 +2743,8 @@ void Scene07::run() {
case kHS07ExitHouse:
_vm->_isLeavingScene = true;
- if (_vm->_gnapX > 8)
- _vm->gnapWalkTo(_vm->_gnapX, 7, 0, 0x107AD, 1);
+ if (_vm->_gnap->_pos.x > 8)
+ _vm->gnapWalkTo(_vm->_gnap->_pos.x, 7, 0, 0x107AD, 1);
else
_vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
_vm->_gnapActionStatus = kAS07LeaveScene;
@@ -2770,7 +2766,7 @@ void Scene07::run() {
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,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ 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;
break;
@@ -3044,13 +3040,13 @@ void Scene08::run() {
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS08LookMan;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS08TalkMan;
@@ -3082,10 +3078,10 @@ void Scene08::run() {
case GRAB_CURSOR:
_vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS08GrabDog;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS08TalkDog;
@@ -3342,7 +3338,7 @@ void Scene08::updateAnimations() {
_vm->_platypusSequenceId = 0x148;
_vm->_platypusFacing = kDirUnk4;
_vm->_platypusSequenceDatNum = 0;
- if (_vm->_gnapX == 1 && _vm->_gnapY == 8)
+ if (_vm->_gnap->_pos == Common::Point(1, 8))
_vm->gnapWalkStep();
} else if (_nextDogSequenceId != -1) {
gameSys.setAnimation(_nextDogSequenceId, 100, 3);
@@ -3355,7 +3351,7 @@ void Scene08::updateAnimations() {
_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;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
}
@@ -3543,10 +3539,9 @@ void Scene09::updateAnimations() {
gameSys.removeSequence(0x4B, 2, true);
_vm->_gnapSequenceId = 0x4C;
_vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 9;
- _vm->_gnapY = 6;
+ _vm->_gnap->_pos = Common::Point(9, 6);
_vm->_gnapActionStatus = kAS09SearchTrashDone;
break;
case kAS09SearchTrashDone:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index bd77c3c..017858b 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -159,10 +159,10 @@ void Scene10::run() {
break;
case GRAB_CURSOR:
_vm->playGnapImpossible(0, 0);
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS10AnnoyCook;
@@ -265,10 +265,9 @@ void Scene10::run() {
gameSys.insertSequence(0x10E, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x10E;
_vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 9;
- _vm->_gnapY = 6;
+ _vm->_gnap->_pos = Common::Point(9, 6);
_vm->_timers[2] = 360;
break;
case TALK_CURSOR:
@@ -402,7 +401,7 @@ void Scene10::updateAnimations() {
_vm->setGrabCursorSprite(kItemTongs);
if (_vm->_platypusActionStatus == kAS10PlatWithBox)
_vm->_platypusActionStatus = -1;
- if (_vm->_gnapX == 4 && _vm->_gnapY == 8)
+ if (_vm->_gnap->_pos == Common::Point(4, 8))
_vm->gnapWalkStep();
break;
default:
@@ -459,7 +458,7 @@ void Scene10::updateAnimations() {
_vm->_timers[3] = 300;
gameSys.insertSequence(0x10C, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x10C;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapActionStatus = -1;
_vm->_platypusActionStatus = -1;
@@ -654,7 +653,7 @@ void Scene11::run() {
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS11TalkGoggleGuy;
break;
@@ -665,7 +664,7 @@ void Scene11::run() {
case kHS11HookGuy:
if (_vm->_gnapActionStatus < 0) {
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
_vm->_gnapActionStatus = kAS11ShowItemToHookGuy;
@@ -680,7 +679,7 @@ void Scene11::run() {
_vm->_gnapActionStatus = kAS11GrabHookGuy;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS11TalkHookGuy;
break;
@@ -1042,18 +1041,18 @@ void Scene12::run() {
if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
_vm->_largeSprite = gameSys.createSurface(0x141);
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnapActionStatus = kAS12QuarterToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnapActionStatus = kAS12QuarterWithHoleToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnapActionStatus = kAS12ShowItemToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else {
@@ -1066,7 +1065,7 @@ void Scene12::run() {
_vm->_gnapActionStatus = kAS12GrabToothGuy;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS12TalkToothGuy;
break;
@@ -1084,26 +1083,26 @@ void Scene12::run() {
case kHS12Barkeeper:
if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12QuarterWithBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12ShowItemToBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12LookBarkeeper;
break;
case GRAB_CURSOR:
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS12TalkBarkeeper;
break;
@@ -1119,24 +1118,24 @@ void Scene12::run() {
case kHS12BeardGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12ShowItemToBeardGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12LookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS12GrabBeardGuy;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS12TalkBeardGuy;
break;
@@ -1364,7 +1363,7 @@ void Scene12::updateAnimations() {
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,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B7;
_vm->_gnapSequenceDatNum = 1;
_vm->setFlag(kGFTwigTaken);
@@ -1560,7 +1559,7 @@ void Scene13::run() {
case LOOK_CURSOR:
case GRAB_CURSOR:
case TALK_CURSOR:
- if (_vm->_gnapX == 5 && _vm->_gnapY == 5) {
+ 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,
@@ -1568,12 +1567,12 @@ void Scene13::run() {
kSeqScale | kSeqSyncWait, 0, 0, 0);
_vm->_gnapActionStatus = kAS13Wait;
_vm->_gnapSequenceId = _backToiletCtr + 0xA3;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
} else {
_vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS13BackToilet;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
}
break;
case PLAT_CURSOR:
@@ -1594,7 +1593,7 @@ void Scene13::run() {
case PLAT_CURSOR:
_vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
_vm->_gnapActionStatus = kAS13FrontToilet;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
break;
}
}
@@ -1608,13 +1607,13 @@ void Scene13::run() {
case LOOK_CURSOR:
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS13LookScribble;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
_vm->playGnapScratchingHead(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(7, 7, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
@@ -1631,7 +1630,7 @@ void Scene13::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnapActionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
@@ -1653,7 +1652,7 @@ void Scene13::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnapActionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
@@ -1791,10 +1790,9 @@ void Scene13::updateAnimations() {
gameSys.removeSequence(0xAA, 256, true);
_vm->_gnapSequenceId = 0xAB;
_vm->_gnapId = 160;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 4;
- _vm->_gnapY = 8;
+ _vm->_gnap->_pos = Common::Point(4, 8);
_vm->_timers[2] = 360;
_vm->_gnapActionStatus = kAS13GrabSinkDone;
break;
@@ -1810,10 +1808,9 @@ void Scene13::updateAnimations() {
gameSys.insertSequence(0xA2, 120, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA2;
_vm->_gnapId = 120;
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 4;
- _vm->_gnapY = 6;
+ _vm->_gnap->_pos = Common::Point(4, 6);
_vm->_timers[2] = 360;
_vm->_gnapActionStatus = kAS13Wait;
break;
@@ -2446,8 +2443,7 @@ void Scene17::run() {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
_vm->initPlatypusPos(7, 9, kDirNone);
- _vm->_gnapX = _vm->_hotspotsWalkPos[2].x;
- _vm->_gnapY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_gnap->_pos = _vm->_hotspotsWalkPos[2];
_vm->_gnapId = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
@@ -2496,12 +2492,11 @@ void Scene17::run() {
_vm->endSceneInit();
}
} else {
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
+ _vm->_gnap->_pos = Common::Point(3, 6);
_vm->_gnapId = 120;
_vm->_gnapSequenceId = 0x23D;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->_platX = -1;
_vm->_platY = 8;
@@ -2614,7 +2609,7 @@ void Scene17::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS17GetCoinFromPhone;
} else
_vm->playGnapImpossible(0, 0);
@@ -2656,7 +2651,7 @@ void Scene17::run() {
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
@@ -2688,7 +2683,7 @@ void Scene17::run() {
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS17LeaveScene;
if (_vm->_platypusActionStatus != kAS17PlatPhoningAssistant)
@@ -2701,7 +2696,7 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
_vm->_gnapActionStatus = kAS17LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
@@ -3166,7 +3161,7 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
int curGridX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
- if (curGridX >= _vm->_gnapX)
+ if (curGridX >= _vm->_gnap->_pos.x)
destGridX = curGridX - 1;
else
destGridX = curGridX + 1;
@@ -3181,30 +3176,30 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
if (nextGridX >= destGridX)
nextGridX = destGridX;
- if (nextGridX == _vm->_gnapX) {
+ if (nextGridX == _vm->_gnap->_pos.x) {
gnapSeqId = _vm->_gnapSequenceId;
gnapId = _vm->_gnapId;
gnapDatNum = _vm->_gnapSequenceDatNum;
- gnapGridX = _vm->_gnapX;
- if (_vm->_gnapX <= curGridX)
+ gnapGridX = _vm->_gnap->_pos.x;
+ if (_vm->_gnap->_pos.x <= curGridX)
direction = 1;
else
direction = -1;
} else {
- if (_vm->_gnapY == _vm->_platY) {
- if (nextGridX >= _vm->_gnapX) {
- if (nextGridX >= _vm->_platX && _vm->_gnapX <= _vm->_platX)
+ if (_vm->_gnap->_pos.y == _vm->_platY) {
+ if (nextGridX >= _vm->_gnap->_pos.x) {
+ if (nextGridX >= _vm->_platX && _vm->_gnap->_pos.x <= _vm->_platX)
_vm->platypusMakeRoom();
- } else if (nextGridX <= _vm->_platX && _vm->_gnapX >= _vm->_platX) {
+ } else if (nextGridX <= _vm->_platX && _vm->_gnap->_pos.x >= _vm->_platX) {
_vm->platypusMakeRoom();
}
}
gnapSeqId = _vm->_gnapSequenceId;
gnapId = _vm->_gnapId;
gnapDatNum = _vm->_gnapSequenceDatNum;
- gnapGridX = _vm->_gnapX;
+ gnapGridX = _vm->_gnap->_pos.x;
int seqId;
- if (nextGridX < _vm->_gnapX) {
+ if (nextGridX < _vm->_gnap->_pos.x) {
direction = -1;
seqId = 0x204;
} else {
@@ -3212,14 +3207,14 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
seqId = 0x203;
}
- int seqId2 = 20 * _vm->_gnapY + 1;
+ int seqId2 = 20 * _vm->_gnap->_pos.y + 1;
do {
- if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnapY))
+ if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnap->_pos.y))
break;
seqId2 += direction;
gameSys.insertSequence(seqId, seqId2,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
gnapSeqId = seqId;
gnapId = seqId2;
gnapDatNum = 0;
@@ -3234,18 +3229,18 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
_vm->_gnapSequenceDatNum = 0;
if (direction == 1)
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
else
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnapId = 20 * _vm->_gnapY + 1;
+ _vm->_gnapId = 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,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
- _vm->_gnapX = gnapGridX;
+ _vm->_gnap->_pos.x = gnapGridX;
}
void Scene18::putDownGarbageCan(int animationIndex) {
@@ -3255,21 +3250,21 @@ void Scene18::putDownGarbageCan(int animationIndex) {
while (gameSys.getAnimationStatus(animationIndex) != 2)
_vm->gameUpdateTick();
}
- if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight)
- _vm->_s18GarbageCanPos = _vm->_gnapX - 1;
+ if (_vm->_gnap->_idleFacing != kDirNone && _vm->_gnap->_idleFacing != kDirBottomRight && _vm->_gnap->_idleFacing != kDirUpRight)
+ _vm->_s18GarbageCanPos = _vm->_gnap->_pos.x - 1;
else
- _vm->_s18GarbageCanPos = _vm->_gnapX + 1;
+ _vm->_s18GarbageCanPos = _vm->_gnap->_pos.x + 1;
_vm->clearFlag(kGFPlatypusDisguised);
updateHotspots();
- if (_vm->_gnapIdleFacing != kDirNone && _vm->_gnapIdleFacing != kDirBottomRight && _vm->_gnapIdleFacing != kDirUpRight) {
+ 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,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7BA;
} else {
gameSys.insertSequence(0x107B9, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B9;
}
_vm->_gnapSequenceDatNum = 1;
@@ -3508,7 +3503,7 @@ void Scene18::run() {
platEndPhoning(true);
if (_vm->_grabCursorSpriteIndex >= 0) {
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1),
+ _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
_vm->_hotspotsWalkPos[kHS18GarbageCan].y, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
@@ -3516,15 +3511,15 @@ void Scene18::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else if (!_vm->isFlag(kGFTruckFilledWithGas))
_vm->playGnapScratchingHead(2, 4);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnapX < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y,
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y,
-1, -1, 1);
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnapY) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 0, -1, 1))
@@ -3579,7 +3574,7 @@ void Scene18::run() {
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
_vm->_gnapActionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
@@ -3621,7 +3616,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCan;
else
@@ -3800,16 +3795,16 @@ void Scene18::updateAnimations() {
gameSys.setAnimation(0, 0, 0);
switch (_vm->_gnapActionStatus) {
case kAS18GrabGarbageCanFromStreet:
- if (_vm->_gnapIdleFacing != kDirUpRight && _vm->_gnapIdleFacing != kDirBottomRight) {
+ if (_vm->_gnap->_idleFacing != kDirUpRight && _vm->_gnap->_idleFacing != kDirBottomRight) {
gameSys.insertSequence(0x1FC, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - 675, 0);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - 675, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FC;
} else {
gameSys.insertSequence(0x1FD, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - 525, 0);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - 525, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FD;
}
@@ -3997,7 +3992,7 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 517, _vm->_gnapId, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
updateHotspots();
_vm->_gnapSequenceDatNum = 1;
_vm->_gnapSequenceId = 0x7B5;
@@ -4200,7 +4195,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS19GrabPicture;
}
break;
@@ -4223,7 +4218,7 @@ void Scene19::run() {
_vm->playGnapScratchingHead(6, 2);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _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->_gnapActionStatus = kAS19TalkShopAssistant;
break;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index eeffa16..543b4fe 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -370,7 +370,7 @@ void Scene20::run() {
_vm->playGnapMoan2(5, 4);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_stonerGuyShowingJoint)
_vm->_gnapActionStatus = kAS20GrabJoint;
@@ -378,7 +378,7 @@ void Scene20::run() {
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
if (_vm->isFlag(kGFJointTaken))
_vm->_gnapActionStatus = kAS20TalkStonerGuyNoJoint;
@@ -404,12 +404,12 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS20GrabGroceryStoreGuy;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS20TalkGroceryStoreGuy;
break;
@@ -424,7 +424,7 @@ void Scene20::run() {
case kHS20GroceryStoreHat:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -436,7 +436,7 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS20GrabGroceryStoreHat;
break;
@@ -624,7 +624,7 @@ void Scene20::updateAnimations() {
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = -1;
break;
@@ -824,7 +824,7 @@ void Scene21::run() {
_vm->playGnapScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
_vm->playGnapPullOutDevice(2, 5);
_vm->playGnapUseDevice(0, 0);
_vm->_gnapActionStatus = kAS21GrabBanana;
@@ -851,14 +851,14 @@ void Scene21::run() {
_vm->playGnapScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS21GrabOldLady;
_vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady].x, _vm->_hotspotsWalkPos[kHS21OldLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS21TalkOldLady;
break;
@@ -1163,7 +1163,7 @@ void Scene22::run() {
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y,
0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS22TalkCashier;
@@ -1373,7 +1373,7 @@ void Scene23::run() {
if (_vm->isFlag(kGFSceneFlag1))
_vm->playGnapImpossible(0, 0);
else {
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
@@ -1637,7 +1637,7 @@ void Scene24::run() {
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS24LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1);
@@ -1887,7 +1887,7 @@ void Scene25::run() {
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS25TalkTicketVendor;
break;
@@ -1941,11 +1941,11 @@ void Scene25::run() {
case LOOK_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, -1, -1, 1);
if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
else if (_vm->_sceneClickedHotspot == 8)
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
else
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->playGnapIdle(0, 0);
playAnims(8 - _vm->_sceneClickedHotspot + 1);
break;
@@ -2423,7 +2423,7 @@ void Scene27::run() {
case kHS27Janitor:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemPicture) {
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, 0x107BC, 1))
_vm->_gnapActionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2434,7 +2434,7 @@ void Scene27::run() {
_vm->playGnapScratchingHead(6, 3);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS27TalkJanitor;
break;
@@ -2457,8 +2457,8 @@ void Scene27::run() {
_vm->playGnapScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
+ _vm->_gnap->_idleFacing = kDirUpLeft;
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
@@ -2623,7 +2623,7 @@ void Scene27::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS27EnterClownTent:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107B2, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107B2, 1);
_vm->_gnapActionStatus = kAS27LeaveScene;
break;
case kAS27LeaveScene:
@@ -2803,11 +2803,11 @@ void Scene28::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS28GrabHornSuccess;
}
} else {
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(2, 8, 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y, 0, 0x107BB, 1);
@@ -2832,13 +2832,13 @@ void Scene28::run() {
else
_vm->playGnapImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
_vm->_gnapActionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
@@ -2851,7 +2851,7 @@ void Scene28::run() {
_vm->playGnapScratchingHead(5, 2);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS28TalkClown;
break;
@@ -2888,7 +2888,7 @@ void Scene28::run() {
_vm->playGnapScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
_vm->_gnapActionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
@@ -3000,7 +3000,7 @@ void Scene28::updateAnimations() {
_vm->_gnapActionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -3185,7 +3185,7 @@ void Scene29::run() {
case kHS29Monkey:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 20f798c..adec63a 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -413,7 +413,7 @@ void Scene31::run() {
if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) {
_vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, -1, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, -1, _vm->getGnapSequenceId(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);
@@ -434,7 +434,7 @@ void Scene31::run() {
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
_vm->_gnapActionStatus = kAS31UseBeerBarrel;
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
}
break;
case TALK_CURSOR:
@@ -544,15 +544,14 @@ void Scene31::updateAnimations() {
case kAS31FillEmptyBucketWithBeer:
gameSys.setAnimation(0x102, 59, 0);
gameSys.insertSequence(0x102, 59, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapX = 5;
- _vm->_gnapY = 7;
+ _vm->_gnap->_pos = Common::Point(5, 7);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x102;
_vm->_gnapId = 59;
_vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeerDone;
break;
case kAS31FillEmptyBucketWithBeerDone:
- _vm->_gnapIdleFacing = kDirBottomLeft;
+ _vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
@@ -899,14 +898,14 @@ void Scene33::run() {
} else {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnapActionStatus = kAS33UseChicken;
else
_vm->_gnapActionStatus = -1;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken].x, _vm->_hotspotsWalkPos[kHS33Chicken].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS33TalkChicken;
break;
@@ -924,8 +923,8 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
_vm->_gnapActionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 37;
- if (_vm->_gnapX > 6)
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
+ if (_vm->_gnap->_pos.x > 6)
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
_vm->gnapWalkTo(6, 7, 0, 0x107B1, 1);
}
@@ -936,8 +935,8 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
_vm->_gnapActionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 35;
- if (_vm->_gnapX > 7)
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AD, 1);
+ if (_vm->_gnap->_pos.x > 7)
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
_vm->gnapWalkTo(7, 7, 0, 0x107B1, 1);
}
@@ -1033,7 +1032,7 @@ void Scene33::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS33UseChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnapId, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_currChickenSequenceId = 0x7E;
@@ -1324,9 +1323,8 @@ void Scene38::updateAnimations() {
gameSys.insertSequence(0xA0, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xA0;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_pos = Common::Point(3, 6);
+ _vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->_isLeavingScene) {
_vm->_sceneWaiting = false;
_vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
@@ -1339,9 +1337,8 @@ void Scene38::updateAnimations() {
gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x9E;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapX = 3;
- _vm->_gnapY = 6;
- _vm->_gnapIdleFacing = kDirBottomRight;
+ _vm->_gnap->_pos = Common::Point(3, 6);
+ _vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
_vm->_sceneWaiting = false;
updateHotspots();
@@ -1481,7 +1478,7 @@ void Scene39::run() {
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AB, 1);
_vm->_gnapActionStatus = kAS39LeaveScene;
_vm->_newSceneNum = 40;
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index b9119b7..008246a 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -265,9 +265,8 @@ void Scene41::run() {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_gnapSequenceId = 0x120;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapIdleFacing = kDirUpRight;
- _vm->_gnapX = 7;
- _vm->_gnapY = 7;
+ _vm->_gnap->_idleFacing = kDirUpRight;
+ _vm->_gnap->_pos = Common::Point(7, 7);
_vm->_gnapId = 140;
gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
@@ -412,7 +411,7 @@ void Scene41::run() {
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS41TalkToyVendor;
break;
@@ -426,7 +425,7 @@ void Scene41::run() {
case kHS41Kid:
if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(7, 7, 8, 0);
@@ -437,11 +436,11 @@ void Scene41::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapActionStatus = kAS41GrabKid;
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(7, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
@@ -887,7 +886,7 @@ void Scene42::run() {
case kHS42ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
_vm->_gnapActionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_platX, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
@@ -895,7 +894,7 @@ void Scene42::run() {
case kHS42ExitToyStand:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
@@ -903,7 +902,7 @@ void Scene42::run() {
case kHS42ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
@@ -923,7 +922,7 @@ void Scene42::run() {
_vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = kAS42TalkBBQVendor;
break;
@@ -1066,7 +1065,7 @@ void Scene42::updateAnimations() {
gameSys.insertSequence(0x107B7, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, _vm->getSequenceTotalDuration(_nextBBQVendorSequenceId),
- 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->_gnapSequenceDatNum = 1;
} else {
gameSys.insertSequence(sequenceId, _vm->_gnapId,
@@ -1353,7 +1352,7 @@ void Scene43::run() {
case kHS43ExitBBQ:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
@@ -1361,7 +1360,7 @@ void Scene43::run() {
case kHS43ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
@@ -1376,7 +1375,7 @@ void Scene43::run() {
_vm->playGnapScratchingHead(7, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = 2;
break;
@@ -1398,7 +1397,7 @@ void Scene43::run() {
_vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(3, 7, 0, 67515, 1);
_vm->_gnapActionStatus = 1;
break;
@@ -1801,7 +1800,7 @@ void Scene44::run() {
case kHS44ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
@@ -1828,14 +1827,14 @@ void Scene44::run() {
_vm->playGnapImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = 1;
break;
case PLAT_CURSOR:
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
- if (_vm->_gnapX == 7 && _vm->_gnapY == 7)
+ if (_vm->_gnap->_pos == Common::Point(7, 7))
_vm->gnapWalkStep();
_vm->playGnapIdle(5, 7);
_vm->_platypusActionStatus = 4;
@@ -1882,7 +1881,7 @@ void Scene44::run() {
_vm->playGnapScratchingHead(8, 7);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, -1, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
@@ -2203,7 +2202,7 @@ void Scene45::run() {
gameSys.setAnimation(0x107BD, _vm->_gnapId, 0);
gameSys.insertSequence(0x107BD, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
- kSeqSyncWait, 0, 75 * _vm->_gnapX - _vm->_gnapGridX, 48 * _vm->_gnapY - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->_gnapSequenceId = 0x7BD;
@@ -2286,7 +2285,7 @@ void Scene45::run() {
case kHS45ExitUfoParty:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1);
_vm->_gnapActionStatus = 0;
_vm->_newSceneNum = 40;
}
@@ -2295,7 +2294,7 @@ void Scene45::run() {
case kHS45ExitShoe:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_platY, -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
@@ -2305,7 +2304,7 @@ void Scene45::run() {
case kHS45ExitRight:
if (_vm->_gnapActionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_platY, -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
@@ -2615,7 +2614,7 @@ void Scene46::run() {
_vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpLeft;
+ _vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = 2;
break;
@@ -2636,7 +2635,7 @@ void Scene46::run() {
_vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0);
break;
case TALK_CURSOR:
- _vm->_gnapIdleFacing = kDirUpRight;
+ _vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnapActionStatus = 1;
break;
@@ -2650,14 +2649,14 @@ void Scene46::run() {
case kHS46ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnapX, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1);
_vm->_gnapActionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS46ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnapY, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_platY, -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
@@ -2665,7 +2664,7 @@ void Scene46::run() {
case kHS46ExitDisco:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnapY, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_platY, -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
Commit: 45bc40166f3d256312327a7c67e055505649705e
https://github.com/scummvm/scummvm/commit/45bc40166f3d256312327a7c67e055505649705e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:49+02:00
Commit Message:
GNAP: Use a Character for Platypus (WIP)
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 6e4ade3..e0110ee 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -34,4 +34,6 @@ Character::~Character() {}
PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {}
+PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
+
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 5949b7a..8012ab6 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -53,6 +53,10 @@ public:
PlayerGnap(GnapEngine *vm);
};
+class PlayerPlat : public Character {
+public:
+ PlayerPlat(GnapEngine *vm);
+};
} // End of namespace Gnap
#endif // GNAP_CHARACTER_H
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index ff9c79e..76184fc 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -149,12 +149,14 @@ Common::Error GnapEngine::run() {
_soundMan = new SoundMan(this);
_debugger = new Debugger(this);
_gnap = new PlayerGnap(this);
+ _plat = new PlayerPlat(this);
_menuBackgroundSurface = nullptr;
initGlobalSceneVars();
mainLoop();
+ delete _plat;
delete _gnap;
delete _soundMan;
delete _gameSys;
@@ -373,10 +375,10 @@ void GnapEngine::updateCursorByHotspot() {
setCursor(kDisabledCursors[_verbCursor]);
}
// Update platypus hotspot
- _hotspots[0]._x1 = _gridMinX + 75 * _platX - 30;
- _hotspots[0]._y1 = _gridMinY + 48 * _platY - 100;
- _hotspots[0]._x2 = _gridMinX + 75 * _platX + 30;
- _hotspots[0]._y2 = _gridMinY + 48 * _platY;
+ _hotspots[0]._x1 = _gridMinX + 75 * _plat->_pos.x - 30;
+ _hotspots[0]._y1 = _gridMinY + 48 * _plat->_pos.y - 100;
+ _hotspots[0]._x2 = _gridMinX + 75 * _plat->_pos.x + 30;
+ _hotspots[0]._y2 = _gridMinY + 48 * _plat->_pos.y;
}
int GnapEngine::getClickedHotspotId() {
@@ -1544,7 +1546,7 @@ void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
}
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
- if (_platX == gridX && _platY == gridY)
+ if (_plat->_pos.x == gridX && _plat->_pos.y == gridY)
platypusMakeRoom();
gnapWalkTo(gridX, gridY, -1, -1, 1);
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
@@ -1674,18 +1676,18 @@ void GnapEngine::gnapInitBrainPulseRndValue() {
}
void GnapEngine::gnapUseDeviceOnPlatypus() {
- playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _platX, _platY)));
+ playGnapSequence(makeRid(1, getGnapSequenceId(gskPullOutDevice, _plat->_pos.x, _plat->_pos.y)));
- if (_platypusFacing != kDirNone) {
+ if (_plat->_idleFacing != kDirNone) {
_gameSys->insertSequence(makeRid(1, 0x7D5), _platypusId,
makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ 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 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqSyncWait, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
_platypusSequenceId = 0x7D4;
_platypusSequenceDatNum = 1;
}
@@ -1713,17 +1715,17 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
if (_gnapActionStatus <= -1 && _platypusActionStatus <= -1) {
_gnapActionStatus = 100;
- if (isPointBlocked(_platX + gridX, _platY + gridY) && (_gnap->_pos != Common::Point(_platX + gridX, _platY + gridY)))
+ if (isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)))
platypusWalkStep();
- if (!isPointBlocked(_platX + gridX, _platY + gridY) && (_gnap->_pos != Common::Point(_platX + gridX, _platY + gridY))) {
- gnapWalkTo(_platX + gridX, _platY + gridY, 0, 0x107B9, 1);
+ if (!isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY))) {
+ gnapWalkTo(_plat->_pos.x + gridX, _plat->_pos.y + gridY, 0, 0x107B9, 1);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
doCallback(callback);
gameUpdateTick();
}
_gameSys->setAnimation(0, 0, 0);
- if (_gnap->_pos == Common::Point(_platX + gridX, _platY + gridY)) {
+ if (_gnap->_pos == Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)) {
_gameSys->setAnimation(platSequenceId, _platypusId, 1);
playPlatypusSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
@@ -1751,10 +1753,10 @@ void GnapEngine::gnapKissPlatypus(int callback) {
_gnapSequenceId = 0x847;
_gameSys->insertSequence(0x107CB, _platypusId,
makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqSyncWait, getSequenceTotalDuration(0x10847), 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
_platypusSequenceDatNum = 1;
_platypusSequenceId = 0x7CB;
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
playGnapSequence(0x107B5);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
@@ -1764,7 +1766,7 @@ void GnapEngine::gnapKissPlatypus(int callback) {
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
} else {
- playGnapSequence(getGnapSequenceId(gskScratchingHead, _platX, _platY) | 0x10000);
+ playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
}
}
@@ -1781,10 +1783,10 @@ void GnapEngine::gnapUseJointOnPlatypus() {
_gnapSequenceId = 0x875;
_gameSys->insertSequence(0x10876, _platypusId,
_platypusSequenceId | (_platypusSequenceDatNum << 16), _platypusId,
- kSeqSyncWait, 0, 15 * (5 * _platX - 25), 48 * (_platY - 7));
+ kSeqSyncWait, 0, 15 * (5 * _plat->_pos.x - 25), 48 * (_plat->_pos.y - 7));
_platypusSequenceDatNum = 1;
_platypusSequenceId = 0x876;
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
playGnapSequence(0x107B5);
gnapWalkStep();
while (_gameSys->getAnimationStatus(0) != 2) {
@@ -1794,7 +1796,7 @@ void GnapEngine::gnapUseJointOnPlatypus() {
_gameSys->setAnimation(0, 0, 0);
_gnapActionStatus = -1;
} else {
- playGnapSequence(getGnapSequenceId(gskScratchingHead, _platX, _platY) | 0x10000);
+ playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
}
}
@@ -1815,9 +1817,9 @@ int GnapEngine::getPlatypusSequenceId() {
int sequenceId = 0x7CB;
- if (_platypusFacing != kDirNone) {
+ if (_plat->_idleFacing != kDirNone) {
sequenceId = 0x7CC;
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
}
return sequenceId | 0x10000;
@@ -1826,7 +1828,7 @@ int GnapEngine::getPlatypusSequenceId() {
void GnapEngine::playPlatypusSequence(int sequenceId) {
_gameSys->insertSequence(sequenceId, _platypusId,
makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
_platypusSequenceId = ridToEntryIndex(sequenceId);
_platypusSequenceDatNum = ridToDatIndex(sequenceId);
}
@@ -1837,7 +1839,7 @@ void GnapEngine::updatePlatypusIdleSequence() {
if (_timers[1] == 0) {
_timers[1] = getRandom(20) + 30;
int rnd = getRandom(10);
- if (_platypusFacing != kDirNone) {
+ if (_plat->_idleFacing != kDirNone) {
if (rnd != 0 || _platypusSequenceId != 0x7CA) {
if (rnd != 1 || _platypusSequenceId != 0x7CA)
playPlatypusSequence(0x107CA);
@@ -1874,7 +1876,7 @@ void GnapEngine::updatePlatypusIdleSequence2() {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
- if (_platypusFacing != kDirNone) {
+ if (_plat->_idleFacing != kDirNone) {
if (getRandom(10) >= 2 || _platypusSequenceId != 0x7CA)
playPlatypusSequence(0x107CA);
else
@@ -1900,23 +1902,22 @@ void GnapEngine::updatePlatypusIdleSequence2() {
void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
_timers[0] = 50;
_timers[1] = 20;
- _platX = gridX;
- _platY = gridY;
+ _plat->_pos = Common::Point(gridX, gridY);
if (facing == kDirNone)
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
else
- _platypusFacing = facing;
- if (_platypusFacing == kDirUnk4) {
+ _plat->_idleFacing = facing;
+ if (_plat->_idleFacing == kDirUnk4) {
_platypusSequenceId = 0x7D1;
} else {
_platypusSequenceId = 0x7C1;
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
}
- _platypusId = 20 * _platY;
+ _platypusId = 20 * _plat->_pos.y;
_platypusSequenceDatNum = 1;
- _gameSys->insertSequence(makeRid(1, _platypusSequenceId), 20 * _platY,
+ _gameSys->insertSequence(makeRid(1, _platypusSequenceId), 20 * _plat->_pos.y,
0, 0,
- kSeqScale, 0, 75 * _platX - _platGridX, 48 * _platY - _platGridY);
+ kSeqScale, 0, 75 * _plat->_pos.x - _platGridX, 48 * _plat->_pos.y - _platGridY);
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d16ba24..ce631a3 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -242,8 +242,6 @@ enum {
29 0x20000000 Gas taken
30 0x40000000
31 0x80000000
-
-
*/
// 0x7AB Gnap walks to the right 1
@@ -285,6 +283,7 @@ public:
Debugger *_debugger;
Scene *_scene;
PlayerGnap *_gnap;
+ PlayerPlat *_plat;
int _lastUpdateClock;
@@ -504,7 +503,6 @@ public:
// Platypus walking
int _platWalkNodesCount;
GridStruct _platWalkNodes[kMaxGridStructs];
- int _platX, _platY;
int _platWalkDestX, _platWalkDestY;
int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
@@ -550,7 +548,6 @@ public:
void gnapUseDisguiseOnPlatypus();
// Platypus
- Facing _platypusFacing;
int _platypusActionStatus;
int _platypusSequenceId, _platypusSequenceDatNum, _platypusId;
int getPlatypusSequenceId();
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index ec90cf1..31b7934 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -73,7 +73,7 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
if (gridX < 0 || gridX >= _gridMaxX || gridY < 0 || gridY >= _gridMaxY)
return true;
- if ((_gnap->_pos == Common::Point(gridX, gridY)) || (gridX == _platX && gridY == _platY))
+ if ((_gnap->_pos == Common::Point(gridX, gridY)) || (gridX == _plat->_pos.x && gridY == _plat->_pos.y))
return true;
const int x = _gridMinX + 75 * gridX;
@@ -557,7 +557,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
_gnapWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
- if (animationIndex >= 0 && _gnapWalkDestX == _platX && _gnapWalkDestY == _platY)
+ if (animationIndex >= 0 && _gnapWalkDestX == _plat->_pos.x && _gnapWalkDestY == _plat->_pos.y)
platypusMakeRoom();
// TODO: Simplify the cascade of Ifs
@@ -1032,160 +1032,160 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
bool done = false;
while (!done && gridIncr < _gridMaxX) {
- if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub423CC1(_platX + gridIncr, _platY, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub423CC1(_platX - gridIncr, _platY, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub423CC1(_platX, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = 0;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub423CC1(_platX, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = 0;
_platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub423CC1(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub423CC1(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub423CC1(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub423CC1(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX + gridIncr, _platY) && gridSub42419A(_platX + gridIncr, _platY, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY) && gridSub42419A(_platX - gridIncr, _platY, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_platX, _platY + gridIncr) && gridSub42419A(_platX, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = 0;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX, _platY - gridIncr) && gridSub42419A(_platX, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = 0;
_platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX + gridIncr, _platY + gridIncr) && gridSub42419A(_platX + gridIncr, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY + gridIncr) && gridSub42419A(_platX - gridIncr, _platY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY + i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX + gridIncr, _platY - gridIncr) && gridSub42419A(_platX + gridIncr, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX + i;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = 1;
_platWalkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_platX - gridIncr, _platY - gridIncr) && gridSub42419A(_platX - gridIncr, _platY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _platX - i;
- _platWalkNodes[i]._gridY1 = _platY - i;
+ _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
+ _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
_platWalkNodes[i]._deltaX = -1;
_platWalkNodes[i]._deltaY = -1;
}
@@ -1217,17 +1217,17 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (animationIndex >= 0 && _gnap->_pos == Common::Point(_platWalkDestX, _platWalkDestY))
gnapWalkStep();
- if (gridSub423CC1(_platX, _platY, 0))
+ if (gridSub423CC1(_plat->_pos.x, _plat->_pos.y, 0))
done = true;
- if (!done && gridSub42419A(_platX, _platY, 0))
+ if (!done && gridSub42419A(_plat->_pos.x, _plat->_pos.y, 0))
done = true;
- if (!done && platFindPath3(_platX, _platY))
+ if (!done && platFindPath3(_plat->_pos.x, _plat->_pos.y))
done = true;
if (!done)
- gridSub423750(_platX, _platY);
+ gridSub423750(_plat->_pos.x, _plat->_pos.y);
int platSequenceId = _platypusSequenceId;
int platId = _platypusId;
@@ -1286,13 +1286,13 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platypusSequenceDatNum = datNum;
// CHECKME Not sure if this is correct...
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0)
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0)
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
else if (_platWalkNodes[_platWalkNodesCount - 1]._gridX1 % 2)
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
else
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
if (animationIndex >= 0)
_gameSys->setAnimation(makeRid(_platypusSequenceDatNum, _platypusSequenceId), _platypusId, animationIndex);
} else if (animationIndex >= 0) {
@@ -1304,29 +1304,29 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platypusSequenceId = ridToEntryIndex(sequenceId);
_platypusSequenceDatNum = ridToDatIndex(sequenceId);
if (_platypusSequenceId == 0x7C2) {
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
} else if (_platypusSequenceId == 0x7D2) {
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
}
} else {
if (_platWalkNodesCount > 0) {
if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0) {
_platypusSequenceId = 0x7C2;
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
} else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0) {
_platypusSequenceId = 0x7D2;
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
} else if (_platWalkNodes[0]._deltaX > 0) {
_platypusSequenceId = 0x7C2;
- _platypusFacing = kDirNone;
+ _plat->_idleFacing = kDirNone;
} else if (_platWalkNodes[0]._deltaX < 0) {
_platypusSequenceId = 0x7D2;
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
} else {
_platypusSequenceId = 0x7D2;
- _platypusFacing = kDirUnk4;
+ _plat->_idleFacing = kDirUnk4;
}
- } else if (_platypusFacing != kDirNone) {
+ } else if (_plat->_idleFacing != kDirNone) {
_platypusSequenceId = 0x7D2;
} else {
_platypusSequenceId = 0x7C2;
@@ -1351,8 +1351,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
9, 0, 75 * _platWalkDestX - _platGridX, 48 * _platWalkDestY - _platGridY);
}
- _platX = _platWalkDestX;
- _platY = _platWalkDestY;
+ _plat->_pos = Common::Point(_platWalkDestX, _platWalkDestY);
return done;
}
@@ -1361,22 +1360,22 @@ void GnapEngine::platypusWalkStep() {
bool done = false;
for (int i = 1; !done && i < _gridMaxX; ++i) {
done = true;
- if (!isPointBlocked(_platX + i, _platY))
- platypusWalkTo(_platX + i, _platY, -1, -1, 1);
- else if (!isPointBlocked(_platX - i, _platY))
- platypusWalkTo(_platX - i, _platY, -1, -1, 1);
- else if (!isPointBlocked(_platX, _platY + 1))
- platypusWalkTo(_platX, _platY + 1, -1, -1, 1);
- else if (!isPointBlocked(_platX, _platY - 1))
- platypusWalkTo(_platX, _platY - 1, -1, -1, 1);
- else if (!isPointBlocked(_platX + 1, _platY + 1))
- platypusWalkTo(_platX + 1, _platY + 1, -1, -1, 1);
- else if (!isPointBlocked(_platX - 1, _platY + 1))
- platypusWalkTo(_platX - 1, _platY + 1, -1, -1, 1);
- else if (!isPointBlocked(_platX + 1, _platY - 1))
- platypusWalkTo(_platX + 1, _platY - 1, -1, -1, 1);
- else if (!isPointBlocked(_platX - 1, _platY - 1))
- platypusWalkTo(_platX - 1, _platY - 1, -1, -1, 1);
+ if (!isPointBlocked(_plat->_pos.x + i, _plat->_pos.y))
+ platypusWalkTo(_plat->_pos.x + i, _plat->_pos.y, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x - i, _plat->_pos.y))
+ platypusWalkTo(_plat->_pos.x - i, _plat->_pos.y, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + 1))
+ platypusWalkTo(_plat->_pos.x, _plat->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - 1))
+ platypusWalkTo(_plat->_pos.x, _plat->_pos.y - 1, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x + 1, _plat->_pos.y + 1))
+ platypusWalkTo(_plat->_pos.x + 1, _plat->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x - 1, _plat->_pos.y + 1))
+ platypusWalkTo(_plat->_pos.x - 1, _plat->_pos.y + 1, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x + 1, _plat->_pos.y - 1))
+ platypusWalkTo(_plat->_pos.x + 1, _plat->_pos.y - 1, -1, -1, 1);
+ else if (!isPointBlocked(_plat->_pos.x - 1, _plat->_pos.y - 1))
+ platypusWalkTo(_plat->_pos.x - 1, _plat->_pos.y - 1, -1, -1, 1);
else
done = false;
}
@@ -1387,7 +1386,7 @@ void GnapEngine::platypusMakeRoom() {
do {
rndGridY = getRandom(_gridMaxY);
rndGridX = getRandom(_gridMaxX);
- } while (ABS(rndGridX - _platX) > 4 || ABS(rndGridY - _platY) > 3 ||
+ } while (ABS(rndGridX - _plat->_pos.x) > 4 || ABS(rndGridY - _plat->_pos.y) > 3 ||
isPointBlocked(rndGridX, rndGridY));
platypusWalkTo(rndGridX, rndGridY, -1, -1, 1);
}
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 019678d..087fb53 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -131,15 +131,15 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -481,15 +481,15 @@ void Scene02::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -946,15 +946,15 @@ void Scene03::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1183,12 +1183,11 @@ void Scene03::updateAnimations() {
break;
case kAS03FreePlatypusDone:
_vm->_gnapActionStatus = -1;
- _vm->_platX = 6;
- _vm->_platY = 6;
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_pos = Common::Point(6, 6);
+ _vm->_plat->_idleFacing = kDirUnk4;
_vm->_platypusId = 120;
gameSys.insertSequence(0x107CA, _vm->_platypusId, 0x1BC, 99,
- kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ 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;
@@ -1382,8 +1381,7 @@ void Scene04::run() {
_vm->setGrabCursorSprite(kItemKeys);
_vm->_gnap->_pos = Common::Point(4, 7);
_vm->_gnapId = 140;
- _vm->_platX = 6;
- _vm->_platY = 7;
+ _vm->_plat->_pos = Common::Point(6, 7);
_vm->_platypusId = 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);
@@ -1396,7 +1394,7 @@ void Scene04::run() {
_vm->clearFlag(kGFPlatypusDisguised);
_vm->_platypusSequenceId = 0x20C;
_vm->_platypusSequenceDatNum = 0;
- _vm->_platypusFacing = kDirBottomRight;
+ _vm->_plat->_idleFacing = kDirBottomRight;
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
gameSys.waitForUpdate();
@@ -1452,18 +1450,18 @@ void Scene04::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
_vm->gnapKissPlatypus(0);
else
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1927,15 +1925,15 @@ void Scene05::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1966,11 +1964,11 @@ void Scene05::run() {
_vm->gnapUseDeviceOnPlatypus();
if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
_vm->_platypusActionStatus = kAS05PlatSearchHaystack;
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
}
if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
_vm->gnapWalkStep();
- _vm->playGnapIdle(_vm->_platX, _vm->_platY);
+ _vm->playGnapIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
}
break;
}
@@ -2205,12 +2203,11 @@ void Scene05::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
if (_vm->_platypusSequenceId == 0x146) {
- _vm->_platX = 4;
- _vm->_platY = 8;
+ _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->_platY;
+ _vm->_platypusId = 20 * _vm->_plat->_pos.y;
_vm->invAdd(kItemNeedle);
_vm->setFlag(kGFNeedleTaken);
_vm->setGrabCursorSprite(kItemNeedle);
@@ -2352,15 +2349,15 @@ void Scene06::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2440,7 +2437,7 @@ void Scene06::run() {
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->_gnapActionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2593,8 +2590,7 @@ void Scene06::updateAnimations() {
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
_vm->setGrabCursorSprite(kItemGas);
_vm->_platypusActionStatus = -1;
- _vm->_platX = 6;
- _vm->_platY = 8;
+ _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;
@@ -2697,12 +2693,11 @@ void Scene07::run() {
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS07Wait;
- _vm->_platX = 3;
- _vm->_platY = 8;
+ _vm->_plat->_pos = Common::Point(3, 8);
_vm->_platypusId = 160;
_vm->_platypusSequenceId = 0x91;
_vm->_platypusSequenceDatNum = 0;
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
gameSys.insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
}
@@ -2727,13 +2722,13 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2813,10 +2808,10 @@ void Scene07::run() {
_vm->_timers[1] = _vm->getRandom(20) + 30;
int gnapRandomValue = _vm->getRandom(20);
// TODO Cleanup
- if (_vm->_platypusFacing != kDirNone) {
+ if (_vm->_plat->_idleFacing != kDirNone) {
if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7CA) {
if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7CA) {
- if (_vm->_platY == 9)
+ if (_vm->_plat->_pos.y == 9)
_vm->playPlatypusSequence(0x107CA);
} else {
_vm->playPlatypusSequence(0x10845);
@@ -2826,7 +2821,7 @@ void Scene07::run() {
}
} else if (gnapRandomValue != 0 || _vm->_platypusSequenceId != 0x7C9) {
if (gnapRandomValue != 1 || _vm->_platypusSequenceId != 0x7C9) {
- if (_vm->_platY == 9)
+ if (_vm->_plat->_pos.y == 9)
_vm->playPlatypusSequence(0x107C9);
} else {
_vm->playPlatypusSequence(0x10844);
@@ -2995,16 +2990,16 @@ void Scene08::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->gnapKissPlatypus(8);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -3056,7 +3051,7 @@ void Scene08::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS08PlatWithMan;
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(6, 6);
break;
}
@@ -3092,7 +3087,7 @@ void Scene08::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS08PlatWithDog;
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(3, 7);
break;
}
@@ -3332,11 +3327,10 @@ void Scene08::updateAnimations() {
gameSys.insertSequence(0x148, 160, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = 0x134;
- _vm->_platX = 1;
- _vm->_platY = 8;
+ _vm->_plat->_pos = Common::Point(1, 8);
_vm->_platypusId = 160;
_vm->_platypusSequenceId = 0x148;
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
_vm->_platypusSequenceDatNum = 0;
if (_vm->_gnap->_pos == Common::Point(1, 8))
_vm->gnapWalkStep();
@@ -3428,13 +3422,13 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -3448,7 +3442,7 @@ void Scene09::run() {
_vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
_vm->_gnapActionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
break;
case kHS09ExitHouse:
@@ -3457,7 +3451,7 @@ void Scene09::run() {
_vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
_vm->_gnapActionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
break;
case kHS09Trash:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 017858b..e2d0e96 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -112,15 +112,15 @@ void Scene10::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(10);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -242,7 +242,7 @@ void Scene10::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
_vm->_platypusActionStatus = kAS10PlatWithBox;
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
_vm->playGnapIdle(7, 6);
}
@@ -368,19 +368,18 @@ void Scene10::updateAnimations() {
switch (_nextCookSequenceId) {
case 0x109:
- _vm->_platX = 4;
- _vm->_platY = 8;
+ _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,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
- 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ 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->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->_platypusSequenceDatNum = 1;
break;
case 0x843:
@@ -596,13 +595,13 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1015,13 +1014,13 @@ void Scene12::run() {
case kHS12Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1073,7 +1072,7 @@ void Scene12::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
_vm->_platypusActionStatus = kAS12PlatWithToothGuy;
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
_vm->playGnapIdle(2, 7);
break;
}
@@ -1107,7 +1106,7 @@ void Scene12::run() {
_vm->_gnapActionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
- _vm->playGnapPullOutDevice(_vm->_platX, _vm->_platY);
+ _vm->playGnapPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS12PlatWithBarkeeper;
break;
@@ -1143,7 +1142,7 @@ void Scene12::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
_vm->_platypusActionStatus = kAS12PlatWithBeardGuy;
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(7, 6);
break;
}
@@ -1524,13 +1523,13 @@ void Scene13::run() {
case kHS13Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1694,7 +1693,7 @@ void Scene13::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
- if (_vm->_platY == 5 || _vm->_platY == 6)
+ if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
_vm->platypusWalkTo(-1, 7, -1, -1, 1);
if (_vm->_gnapActionStatus < 0)
_vm->updateGnapIdleSequence();
@@ -2423,8 +2422,7 @@ void Scene17::run() {
_vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
_vm->initGnapPos(3, 9, kDirUpLeft);
- _vm->_platX = _vm->_hotspotsWalkPos[2].x;
- _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_platypusId = 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);
@@ -2459,8 +2457,7 @@ void Scene17::run() {
_vm->clearFlag(kGFUnk16);
_vm->_sceneWaiting = true;
_vm->initGnapPos(3, 9, kDirUpLeft);
- _vm->_platX = _vm->_hotspotsWalkPos[2].x;
- _vm->_platY = _vm->_hotspotsWalkPos[2].y;
+ _vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_platypusId = 20 * _vm->_hotspotsWalkPos[2].y;
_currPhoneSequenceId = 0x251;
gameSys.insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2498,18 +2495,17 @@ void Scene17::run() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.insertSequence(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_platX = -1;
- _vm->_platY = 8;
+ _vm->_plat->_pos = Common::Point(-1, 8);
_vm->_platypusId = 160;
gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x107C1, _vm->_platypusId, 0x241, _vm->_platypusId,
- kSeqScale | kSeqSyncWait, 0, 75 * _vm->_platX - _vm->_platGridX, 48 * _vm->_platY - _vm->_platGridY);
+ 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->_platypusFacing = kDirBottomRight;
+ _vm->_plat->_idleFacing = kDirBottomRight;
_vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
}
@@ -2544,15 +2540,15 @@ void Scene17::run() {
_vm->invRemove(kItemJoint);
}
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2622,7 +2618,7 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->gnapUseDeviceOnPlatypus();
- _vm->_platypusFacing = kDirUpLeft;
+ _vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_platypusActionStatus = kAS17PlatUsePhone;
@@ -2666,7 +2662,7 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->gnapUseDeviceOnPlatypus();
- _vm->_platypusFacing = kDirUpLeft;
+ _vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_platypusActionStatus = kAS17PlatUsePhone;
@@ -3186,11 +3182,11 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
else
direction = -1;
} else {
- if (_vm->_gnap->_pos.y == _vm->_platY) {
+ if (_vm->_gnap->_pos.y == _vm->_plat->_pos.y) {
if (nextGridX >= _vm->_gnap->_pos.x) {
- if (nextGridX >= _vm->_platX && _vm->_gnap->_pos.x <= _vm->_platX)
+ if (nextGridX >= _vm->_plat->_pos.x && _vm->_gnap->_pos.x <= _vm->_plat->_pos.x)
_vm->platypusMakeRoom();
- } else if (nextGridX <= _vm->_platX && _vm->_gnap->_pos.x >= _vm->_platX) {
+ } else if (nextGridX <= _vm->_plat->_pos.x && _vm->_gnap->_pos.x >= _vm->_plat->_pos.x) {
_vm->platypusMakeRoom();
}
}
@@ -3442,17 +3438,17 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_platX, _vm->_platY);
+ _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -4148,17 +4144,17 @@ void Scene19::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 543b4fe..23afc55 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -279,13 +279,13 @@ void Scene20::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(20);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -305,7 +305,7 @@ void Scene20::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1);
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -344,7 +344,7 @@ void Scene20::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1);
- _vm->_platypusFacing = kDirUnk4;
+ _vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -797,13 +797,13 @@ void Scene21::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1113,13 +1113,13 @@ void Scene22::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1337,13 +1337,13 @@ void Scene23::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1606,13 +1606,13 @@ void Scene24::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -1852,13 +1852,13 @@ void Scene25::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_platX, _vm->_platY);
+ _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2169,13 +2169,13 @@ void Scene26::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2403,13 +2403,13 @@ void Scene27::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -2774,13 +2774,13 @@ void Scene28::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -3165,13 +3165,13 @@ void Scene29::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index adec63a..0e14ea9 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -94,13 +94,13 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -349,13 +349,13 @@ void Scene31::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
@@ -694,21 +694,21 @@ void Scene32::run() {
case kHS32Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -870,21 +870,21 @@ void Scene33::run() {
case kHS33Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1147,21 +1147,21 @@ void Scene38::run() {
if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
_vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1351,7 +1351,7 @@ void Scene38::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
gameSys.setAnimation(0x9F, _vm->_gnapId, 0);
_vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
- if (_vm->_platypusFacing != kDirNone)
+ if (_vm->_plat->_idleFacing != kDirNone)
_vm->playPlatypusSequence(0x107D5);
else
_vm->playPlatypusSequence(0x107D4);
@@ -1453,21 +1453,21 @@ void Scene39::run() {
case kHS39Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 008246a..861283a 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -76,21 +76,21 @@ void Scene40::run() {
case kHS40Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -351,21 +351,21 @@ void Scene41::run() {
case kHS41Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -863,21 +863,21 @@ void Scene42::run() {
case kHS42Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -888,7 +888,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
_vm->_gnapActionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_platX, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -912,8 +912,8 @@ void Scene42::run() {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, 0x107BB, 1);
_vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendor;
- if (_vm->_platY < 9)
- _vm->platypusWalkTo(_vm->_platX, 9, -1, -1, 1);
+ if (_vm->_plat->_pos.y < 9)
+ _vm->platypusWalkTo(_vm->_plat->_pos.x, 9, -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
@@ -1321,21 +1321,21 @@ void Scene43::run() {
case kHS43Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1701,10 +1701,9 @@ void Scene44::run() {
} else if (!_vm->isFlag(kGFUnk13)) {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
- _vm->_platX = 5;
- _vm->_platY = 8;
+ _vm->_plat->_pos = Common::Point(5, 8);
_vm->_platypusSequenceId = 0xFD;
- _vm->_platypusFacing = kDirNone;
+ _vm->_plat->_idleFacing = kDirNone;
_vm->_platypusId = 160;
_vm->_platypusSequenceDatNum = 0;
gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
@@ -1770,21 +1769,21 @@ void Scene44::run() {
case kHS44Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1802,7 +1801,7 @@ void Scene44::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
@@ -2259,11 +2258,11 @@ void Scene45::run() {
case kHS45Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
@@ -2271,11 +2270,11 @@ void Scene45::run() {
gameSys.setAnimation(_vm->_platypusSequenceId, _vm->_platypusId, 1);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -2296,7 +2295,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
}
break;
@@ -2306,7 +2305,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
}
break;
@@ -2584,21 +2583,21 @@ void Scene46::run() {
case kHS46Platypus:
if (_vm->_gnapActionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_platX, _vm->_platY);
+ _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->gnapKissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_platX, _vm->_platY);
+ _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->playPlatypusSequence(_vm->getPlatypusSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_platX, _vm->_platY);
+ _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -2658,7 +2657,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
_vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_platY, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
break;
@@ -2666,7 +2665,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
_vm->_gnapActionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_platY, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
break;
Commit: dda4931ee9d78c704ebd768af243d7019e9d0913
https://github.com/scummvm/scummvm/commit/dda4931ee9d78c704ebd768af243d7019e9d0913
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:50+02:00
Commit Message:
GNAP: Move _actionStatus to the Character class
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group5.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index e0110ee..8427487 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -28,6 +28,7 @@ namespace Gnap {
Character::Character(GnapEngine *vm) : _vm(vm) {
_pos = Common::Point(0, 0);
_idleFacing = kDirNone;
+ _actionStatus = 0;
}
Character::~Character() {}
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 8012ab6..4f52824 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -43,6 +43,7 @@ public:
Common::Point _pos;
Facing _idleFacing;
+ int _actionStatus;
protected:
GnapEngine *_vm;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 76184fc..d02321a 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -412,10 +412,10 @@ void GnapEngine::updateMouseCursor() {
setCursor(kDisabledCursors[_verbCursor]);
setGrabCursorSprite(-1);
}
- if (_isWaiting && ((_gnapActionStatus < 0 && _platypusActionStatus < 0) || _sceneWaiting)) {
+ if (_isWaiting && ((_gnap->_actionStatus < 0 && _plat->_actionStatus < 0) || _sceneWaiting)) {
setCursor(kDisabledCursors[_verbCursor]);
_isWaiting = false;
- } else if (!_isWaiting && (_gnapActionStatus >= 0 || _platypusActionStatus >= 0) && !_sceneWaiting) {
+ } else if (!_isWaiting && (_gnap->_actionStatus >= 0 || _plat->_actionStatus >= 0) && !_sceneWaiting) {
setCursor(WAIT_CURSOR);
_isWaiting = true;
}
@@ -733,8 +733,8 @@ void GnapEngine::initScene() {
_isLeavingScene = false;
_sceneDone = false;
_newSceneNum = 55;
- _gnapActionStatus = -1;
- _platypusActionStatus = -1;
+ _gnap->_actionStatus = -1;
+ _plat->_actionStatus = -1;
gnapInitBrainPulseRndValue();
hideCursor();
clearAllKeyStatus1();
@@ -1553,7 +1553,7 @@ void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int g
}
void GnapEngine::updateGnapIdleSequence() {
- if (_gnapActionStatus < 0) {
+ if (_gnap->_actionStatus < 0) {
if (_timers[2] > 0) {
if (_timers[3] == 0) {
_timers[2] = 60;
@@ -1603,7 +1603,7 @@ void GnapEngine::updateGnapIdleSequence() {
}
void GnapEngine::updateGnapIdleSequence2() {
- if (_gnapActionStatus < 0) {
+ if (_gnap->_actionStatus < 0) {
if (_timers[2] > 0) {
if (_timers[3] == 0) {
_timers[2] = 60;
@@ -1637,11 +1637,11 @@ void GnapEngine::updateGnapIdleSequence2() {
}
bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2) {
- if (_mouseClickState._left && someStatus == _gnapActionStatus) {
+ if (_mouseClickState._left && someStatus == _gnap->_actionStatus) {
_isLeavingScene = false;
_gameSys->setAnimation(0, 0, animationIndex);
- _gnapActionStatus = -1;
- _platypusActionStatus = -1;
+ _gnap->_actionStatus = -1;
+ _plat->_actionStatus = -1;
gnapWalkTo(gridX1, gridY1, -1, -1, 1);
platypusWalkTo(gridX2, gridY2, -1, -1, 1);
_mouseClickState._left = false;
@@ -1713,8 +1713,8 @@ void GnapEngine::doCallback(int callback) {
bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
bool result = false;
- if (_gnapActionStatus <= -1 && _platypusActionStatus <= -1) {
- _gnapActionStatus = 100;
+ if (_gnap->_actionStatus <= -1 && _plat->_actionStatus <= -1) {
+ _gnap->_actionStatus = 100;
if (isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)))
platypusWalkStep();
if (!isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY))) {
@@ -1736,14 +1736,14 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
result = true;
}
}
- _gnapActionStatus = -1;
+ _gnap->_actionStatus = -1;
}
return result;
}
void GnapEngine::gnapKissPlatypus(int callback) {
if (gnapPlatypusAction(-1, 0, 0x107D1, callback)) {
- _gnapActionStatus = 100;
+ _gnap->_actionStatus = 100;
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0x10847, _gnapId, 0);
_gameSys->insertSequence(0x10847, _gnapId,
@@ -1764,7 +1764,7 @@ void GnapEngine::gnapKissPlatypus(int callback) {
gameUpdateTick();
}
_gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
+ _gnap->_actionStatus = -1;
} else {
playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
}
@@ -1773,7 +1773,7 @@ void GnapEngine::gnapKissPlatypus(int callback) {
void GnapEngine::gnapUseJointOnPlatypus() {
setGrabCursorSprite(-1);
if (gnapPlatypusAction(1, 0, 0x107C1, 0)) {
- _gnapActionStatus = 100;
+ _gnap->_actionStatus = 100;
_gameSys->setAnimation(0, 0, 1);
_gameSys->setAnimation(0x10876, _platypusId, 0);
_gameSys->insertSequence(0x10875, _gnapId,
@@ -1794,7 +1794,7 @@ void GnapEngine::gnapUseJointOnPlatypus() {
gameUpdateTick();
}
_gameSys->setAnimation(0, 0, 0);
- _gnapActionStatus = -1;
+ _gnap->_actionStatus = -1;
} else {
playGnapSequence(getGnapSequenceId(gskScratchingHead, _plat->_pos.x, _plat->_pos.y) | 0x10000);
}
@@ -1834,7 +1834,7 @@ void GnapEngine::playPlatypusSequence(int sequenceId) {
}
void GnapEngine::updatePlatypusIdleSequence() {
- if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
+ if (_plat->_actionStatus < 0 && _gnap->_actionStatus < 0) {
if (_timers[0] > 0) {
if (_timers[1] == 0) {
_timers[1] = getRandom(20) + 30;
@@ -1872,7 +1872,7 @@ void GnapEngine::updatePlatypusIdleSequence() {
}
void GnapEngine::updatePlatypusIdleSequence2() {
- if (_platypusActionStatus < 0 && _gnapActionStatus < 0) {
+ if (_plat->_actionStatus < 0 && _gnap->_actionStatus < 0) {
if (_timers[0]) {
if (!_timers[1]) {
_timers[1] = getRandom(20) + 30;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index ce631a3..ccaf11f 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -516,7 +516,6 @@ public:
void platypusMakeRoom();
// Gnap
- int _gnapActionStatus;
int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
int _gnapSequenceId, _gnapSequenceDatNum, _gnapId;
@@ -548,7 +547,6 @@ public:
void gnapUseDisguiseOnPlatypus();
// Platypus
- int _platypusActionStatus;
int _platypusSequenceId, _platypusSequenceDatNum, _platypusId;
int getPlatypusSequenceId();
void playPlatypusSequence(int sequenceId);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 087fb53..5348f18 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -115,14 +115,14 @@ void Scene01::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS01Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS01Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -151,7 +151,7 @@ void Scene01::run() {
break;
case kHS01Spaceship:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
} else {
@@ -159,7 +159,7 @@ void Scene01::run() {
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))
- _vm->_gnapActionStatus = kAS01LookSpaceship;
+ _vm->_gnap->_actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
case TALK_CURSOR:
@@ -172,7 +172,7 @@ void Scene01::run() {
break;
case kHS01Mud:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
} else {
@@ -182,7 +182,7 @@ void Scene01::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 3) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS01TakeMud;
+ _vm->_gnap->_actionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -194,7 +194,7 @@ void Scene01::run() {
break;
case kHS01Pigs:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
} else {
@@ -202,17 +202,17 @@ void Scene01::run() {
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->_gnapActionStatus = kAS01LookPigs;
+ _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->_gnapActionStatus = kAS01UsePigs;
+ _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->_gnapActionStatus = kAS01LookPigs;
+ _vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -223,10 +223,10 @@ void Scene01::run() {
break;
case kHS01ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS01LeaveScene;
+ _vm->_gnap->_actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
@@ -241,12 +241,12 @@ void Scene01::run() {
case kHS01WalkArea6:
case kHS01WalkArea7:
case kHS01WalkArea8:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -260,9 +260,9 @@ void Scene01::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (_vm->_timers[4] == 0) {
// Update bird animation
@@ -291,20 +291,20 @@ void Scene01::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS01LookSpaceship:
_spaceshipSurface = gameSys.createSurface(47);
gameSys.insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
gameSys.setAnimation(133, 256, 0);
gameSys.insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = kAS01LookSpaceshipDone;
+ _vm->_gnap->_actionStatus = kAS01LookSpaceshipDone;
break;
case kAS01LookSpaceshipDone:
gameSys.removeSequence(133, 256, true);
gameSys.removeSpriteDrawItem(_spaceshipSurface, 255);
_vm->deleteSurface(&_spaceshipSurface);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS01LeaveScene:
@@ -316,21 +316,21 @@ void Scene01::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS01LookPigs:
_vm->playSound(0x8A, false);
_vm->playSound(0x8B, false);
_vm->playSound(0x8C, false);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS01UsePigs:
_vm->playGnapPullOutDevice(7, 2);
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -465,14 +465,14 @@ void Scene02::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS02Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS02Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -501,12 +501,12 @@ void Scene02::run() {
break;
case kHS02Chicken:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
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);
- _vm->_gnapActionStatus = kAS02UseTwigWithChicken;
+ _vm->_gnap->_actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
@@ -517,14 +517,14 @@ void Scene02::run() {
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))
- _vm->_gnapActionStatus = kAS02GrabChicken;
+ _vm->_gnap->_actionStatus = kAS02GrabChicken;
else
- _vm->_gnapActionStatus = -1;
+ _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->_gnapActionStatus = kAS02TalkChicken;
+ _vm->_gnap->_actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -536,20 +536,20 @@ void Scene02::run() {
case kHS02Truck1:
case kHS02Truck2:
- if (_vm->_gnapActionStatus < 0) {
+ 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)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kAS02UseTruckGas;
+ _vm->_gnap->_actionStatus = kAS02UseTruckGas;
else
- _vm->_gnapActionStatus = kAS02UseTruckNoGas;
+ _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
}
} 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))
- _vm->_gnapActionStatus = kAS02UseGasWithTruck;
+ _vm->_gnap->_actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
@@ -562,14 +562,14 @@ void Scene02::run() {
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->isFlag(kGFTruckFilledWithGas))
- _vm->_gnapActionStatus = kAS02UseTruckGas;
+ _vm->_gnap->_actionStatus = kAS02UseTruckGas;
else
- _vm->_gnapActionStatus = kAS02UseTruckNoGas;
+ _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
}
} else {
_vm->_gnap->_idleFacing = kDirUnk4;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, _vm->getGnapSequenceId(gskIdle, 2, 2) | 0x10000, 1))
- _vm->_gnapActionStatus = kAS02UseTruckNoKeys;
+ _vm->_gnap->_actionStatus = kAS02UseTruckNoKeys;
}
break;
case TALK_CURSOR:
@@ -582,7 +582,7 @@ void Scene02::run() {
break;
case kHS02TruckGrill:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
} else {
@@ -593,7 +593,7 @@ void Scene02::run() {
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->_gnapActionStatus = kAS02GrabTruckGrill;
+ _vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -605,10 +605,10 @@ void Scene02::run() {
break;
case kHS02ExitHouse:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
+ _vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
updateHotspots();
@@ -617,10 +617,10 @@ void Scene02::run() {
break;
case kHS02ExitBarn:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
+ _vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
updateHotspots();
@@ -629,10 +629,10 @@ void Scene02::run() {
break;
case kHS02ExitCreek:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
+ _vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
@@ -640,10 +640,10 @@ void Scene02::run() {
break;
case kHS02ExitPigpen:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS02LeaveScene;
+ _vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
@@ -654,12 +654,12 @@ void Scene02::run() {
case kHS02WalkArea2:
case kHS02WalkArea3:
case kHS02WalkArea4:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -672,9 +672,9 @@ void Scene02::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
// Update bird animation
@@ -684,7 +684,7 @@ void Scene02::run() {
else
gameSys.insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != 7 && _vm->_gnapActionStatus != 8) {
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != 7 && _vm->_gnap->_actionStatus != 8) {
if (_vm->getRandom(6) != 0) {
_nextChickenSequenceId = 0x14B;
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -712,13 +712,13 @@ void Scene02::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
+ 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;
- _vm->_gnapActionStatus = kAS02UseTruckNoKeysDone;
+ _vm->_gnap->_actionStatus = kAS02UseTruckNoKeysDone;
break;
case kAS02UseGasWithTruck:
gameSys.insertSequence(0x151, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -728,7 +728,7 @@ void Scene02::updateAnimations() {
_vm->invRemove(kItemGas);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFTruckFilledWithGas);
- _vm->_gnapActionStatus = kAS02UseGasWithTruckDone;
+ _vm->_gnap->_actionStatus = kAS02UseGasWithTruckDone;
break;
case kAS02UseTruckGas:
_vm->_timers[5] = 9999;
@@ -781,7 +781,7 @@ void Scene02::updateAnimations() {
gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnapId, 0);
_vm->_gnapSequenceId = _gnapTruckSequenceId;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS02LeaveScene:
_vm->_sceneDone = true;
@@ -800,7 +800,7 @@ void Scene02::updateAnimations() {
_currChickenSequenceId = 0x14B;
gameSys.setAnimation(0x14B, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->_timers[5] = 30;
break;
case kAS02UseTwigWithChicken:
@@ -808,12 +808,12 @@ void Scene02::updateAnimations() {
gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_currChickenSequenceId = 0x155;
_nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS02UseTruckNoKeysDone:
case kAS02UseGasWithTruckDone:
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -825,14 +825,14 @@ void Scene02::updateAnimations() {
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
- _vm->_gnapActionStatus = kAS02GrabChickenDone;
+ _vm->_gnap->_actionStatus = kAS02GrabChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x14C) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
@@ -937,7 +937,7 @@ void Scene03::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS03Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -966,7 +966,7 @@ void Scene03::run() {
break;
case kHS03Grass:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -993,11 +993,11 @@ void Scene03::run() {
break;
case kHS03ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS03LeaveScene;
+ _vm->_gnap->_actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1009,7 +1009,7 @@ void Scene03::run() {
break;
case kHS03Creek:
- if (_vm->_gnapActionStatus == -1) {
+ if (_vm->_gnap->_actionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1021,7 +1021,7 @@ void Scene03::run() {
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))
- _vm->_gnapActionStatus = kAS03GrabCreek;
+ _vm->_gnap->_actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
@@ -1035,7 +1035,7 @@ void Scene03::run() {
break;
case kHS03TrappedPlatypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1048,13 +1048,13 @@ void Scene03::run() {
case GRAB_CURSOR:
if (_platypusHypnotized) {
_vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
- _vm->_gnapActionStatus = kAS03FreePlatypus;
+ _vm->_gnap->_actionStatus = kAS03FreePlatypus;
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
+ _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnapActionStatus = kAS03GrabPlatypus;
+ _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
}
break;
case TALK_CURSOR:
@@ -1064,9 +1064,9 @@ void Scene03::run() {
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnapActionStatus = kAS03HypnotizeScaredPlat;
+ _vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
else
- _vm->_gnapActionStatus = kAS03HypnotizePlat;
+ _vm->_gnap->_actionStatus = kAS03HypnotizePlat;
}
break;
case PLAT_CURSOR:
@@ -1078,7 +1078,7 @@ void Scene03::run() {
break;
case kHS03Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1087,26 +1087,26 @@ void Scene03::run() {
case kHS03WalkAreas1:
case kHS03WalkAreas2:
case kHS03WalkAreas3:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHS03PlatypusWalkArea:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
if (_platypusScared)
- _vm->_gnapActionStatus = kAS03GrabScaredPlatypus;
+ _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnapActionStatus = kAS03GrabPlatypus;
+ _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
}
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -1120,18 +1120,18 @@ void Scene03::run() {
_vm->playSound(0x10925, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
_nextPlatSequenceId = 450;
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextFrogSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
if (_vm->getRandom(5) == 1)
_nextFrogSequenceId = 0x1C6;
else
@@ -1141,12 +1141,12 @@ void Scene03::run() {
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
gameSys.insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 200;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
gameSys.setAnimation(0x1C5, 253, 4);
gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -1174,7 +1174,7 @@ void Scene03::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS03LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1182,7 +1182,7 @@ void Scene03::updateAnimations() {
_nextPlatSequenceId = 0x1BC;
break;
case kAS03FreePlatypusDone:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 6);
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_platypusId = 120;
@@ -1207,7 +1207,7 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x1BA;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
@@ -1227,7 +1227,7 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x1BA;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
@@ -1244,10 +1244,10 @@ void Scene03::updateAnimations() {
gameSys.setAnimation(0x1B4, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x1B4;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS03GrabCreekDone;
+ _vm->_gnap->_actionStatus = kAS03GrabCreekDone;
break;
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -1265,7 +1265,7 @@ void Scene03::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
- _vm->_gnapActionStatus = -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);
@@ -1275,7 +1275,7 @@ void Scene03::updateAnimations() {
_vm->_gnapSequenceId = 0x1B6;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnap->_idleFacing = kDirNone;
- _vm->_gnapActionStatus = kAS03FreePlatypusDone;
+ _vm->_gnap->_actionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
gameSys.setAnimation(0, 0, 1);
@@ -1434,14 +1434,14 @@ void Scene04::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS04Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS04Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1473,7 +1473,7 @@ void Scene04::run() {
break;
case kHS04Twig:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
@@ -1497,7 +1497,7 @@ void Scene04::run() {
break;
case kHS04Axe:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
} else {
@@ -1508,7 +1508,7 @@ void Scene04::run() {
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->_gnapActionStatus = kAS04GrabAxe;
+ _vm->_gnap->_actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
break;
@@ -1522,7 +1522,7 @@ void Scene04::run() {
break;
case kHS04Dog:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
} else {
@@ -1536,7 +1536,7 @@ void Scene04::run() {
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))
- _vm->_gnapActionStatus = kAS04GrabDog;
+ _vm->_gnap->_actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
@@ -1554,7 +1554,7 @@ void Scene04::run() {
break;
case kHS04Door:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
} else {
@@ -1566,13 +1566,13 @@ void Scene04::run() {
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS04OpenDoor;
+ _vm->_gnap->_actionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
_vm->_gnap->_idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
+ _vm->_gnap->_actionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
break;
@@ -1585,10 +1585,10 @@ void Scene04::run() {
break;
case kHS04ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
+ _vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -1599,7 +1599,7 @@ void Scene04::run() {
break;
case kHS04Window:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
@@ -1609,9 +1609,9 @@ void Scene04::run() {
case LOOK_CURSOR:
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, _vm->getGnapSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
if (_triedWindow) {
- _vm->_gnapActionStatus = kAS04GetKeyAnother;
+ _vm->_gnap->_actionStatus = kAS04GetKeyAnother;
} else {
- _vm->_gnapActionStatus = kAS04GetKeyFirst;
+ _vm->_gnap->_actionStatus = kAS04GetKeyFirst;
_triedWindow = true;
}
}
@@ -1629,10 +1629,10 @@ void Scene04::run() {
break;
case kHS04ExitBarn:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS04LeaveScene;
+ _vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
@@ -1644,12 +1644,12 @@ void Scene04::run() {
case kHS04WalkArea1:
case kHS04WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -1663,13 +1663,13 @@ void Scene04::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->updatePlatypusIdleSequence2();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(150) + 300;
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
gameSys.insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
@@ -1705,7 +1705,7 @@ void Scene04::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS04LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1719,18 +1719,18 @@ void Scene04::updateAnimations() {
gameSys.setAnimation(0x107B5, _vm->_gnapId, 0);
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gnapActionStatus = kAS04OpenDoorDone;
+ _vm->_gnap->_actionStatus = kAS04OpenDoorDone;
break;
case kAS04OpenDoorDone:
gameSys.insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _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;
- _vm->_gnapActionStatus = kAS04GetKeyFirst2;
+ _vm->_gnap->_actionStatus = kAS04GetKeyFirst2;
break;
case kAS04GetKeyFirst2:
gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -1739,7 +1739,7 @@ void Scene04::updateAnimations() {
gameSys.setAnimation(0x20B, 256, 0);
_vm->_gnapSequenceId = 0x206;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyFirstDone;
+ _vm->_gnap->_actionStatus = kAS04GetKeyFirstDone;
break;
case kAS04GetKeyFirstDone:
gameSys.requestRemoveSequence(0x1FF, 256);
@@ -1750,14 +1750,14 @@ void Scene04::updateAnimations() {
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
- _vm->_gnapActionStatus = -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;
- _vm->_gnapActionStatus = kAS04GetKeyAnother2;
+ _vm->_gnap->_actionStatus = kAS04GetKeyAnother2;
break;
case kAS04GetKeyAnother2:
gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -1766,7 +1766,7 @@ void Scene04::updateAnimations() {
gameSys.setAnimation(0x20A, 256, 0);
_vm->_gnapSequenceId = 0x203;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS04GetKeyAnotherDone;
+ _vm->_gnap->_actionStatus = kAS04GetKeyAnotherDone;
break;
case kAS04GetKeyAnotherDone:
gameSys.removeSequence(0x1FF, 256, true);
@@ -1777,7 +1777,7 @@ void Scene04::updateAnimations() {
_vm->_gnapSequenceId = 0x7B5;
_vm->_gnapSequenceDatNum = 1;
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS04GrabDog:
_nextDogSequenceId = 0x201;
@@ -1787,10 +1787,10 @@ void Scene04::updateAnimations() {
gameSys.requestRemoveSequence(0x212, 100);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x211;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -1814,7 +1814,7 @@ void Scene04::updateAnimations() {
_currDogSequenceId = 0x201;
_vm->_gnapSequenceId = 0x200;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_nextDogSequenceId = -1;
} else if (_nextDogSequenceId != -1) {
@@ -1909,14 +1909,14 @@ void Scene05::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS05Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS05Platypus:
- if (_vm->_gnapActionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1945,7 +1945,7 @@ void Scene05::run() {
break;
case kHS05Haystack:
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
@@ -1963,7 +1963,7 @@ void Scene05::run() {
if (_vm->isFlag(kGFPlatypus)) {
_vm->gnapUseDeviceOnPlatypus();
if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
- _vm->_platypusActionStatus = kAS05PlatSearchHaystack;
+ _vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
}
if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
@@ -1977,12 +1977,12 @@ void Scene05::run() {
break;
case kHS05Chicken:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
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);
- _vm->_gnapActionStatus = kAS05UseTwigWithChicken;
+ _vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
} else {
@@ -1993,12 +1993,12 @@ void Scene05::run() {
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->_gnapActionStatus = kAS05GrabChicken;
+ _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->_gnapActionStatus = kAS05TalkChicken;
+ _vm->_gnap->_actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2009,7 +2009,7 @@ void Scene05::run() {
break;
case kHS05Ladder:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
} else {
@@ -2020,7 +2020,7 @@ void Scene05::run() {
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->_gnapActionStatus = kAS05GrabLadder;
+ _vm->_gnap->_actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -2035,16 +2035,16 @@ void Scene05::run() {
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
- _vm->_gnapActionStatus = kAS05EnterBarn;
+ _vm->_gnap->_actionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
else
_vm->_newSceneNum = 36;
- } else if (_vm->_gnapActionStatus < 0) {
+ } 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->_gnapActionStatus = kAS05PickPadlock;
+ _vm->_gnap->_actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
@@ -2056,7 +2056,7 @@ void Scene05::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS05TryPickPadlock;
+ _vm->_gnap->_actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -2068,10 +2068,10 @@ void Scene05::run() {
break;
case kHS05ExitHouse:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS05LeaveScene;
+ _vm->_gnap->_actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -2083,7 +2083,7 @@ void Scene05::run() {
case kHS05WalkArea1:
case kHS05WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -2092,7 +2092,7 @@ void Scene05::run() {
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -2111,7 +2111,7 @@ void Scene05::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
if (_vm->getRandom(4) != 0)
_nextChickenSequenceId = 0x142;
else
@@ -2120,7 +2120,7 @@ void Scene05::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(150) + 300;
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
gameSys.insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
@@ -2144,16 +2144,16 @@ void Scene05::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS05LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _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;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS05PickPadlock:
gameSys.setAnimation(0x147, _vm->_gnapId, 0);
@@ -2166,11 +2166,11 @@ void Scene05::updateAnimations() {
_vm->_newSceneNum = 6;
_vm->_timers[2] = 100;
_vm->invRemove(kItemNeedle);
- _vm->_gnapActionStatus = kAS05LeaveScene;
+ _vm->_gnap->_actionStatus = kAS05LeaveScene;
break;
case kAS05TalkChicken:
_nextChickenSequenceId = 0x144;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS05GrabChicken:
_nextChickenSequenceId = 0x14B;
@@ -2184,19 +2184,19 @@ void Scene05::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_timers[2] = 200;
_vm->_timers[6] = 300;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
gameSys.setAnimation(0x107B1, 1, 0);
- _vm->_gnapActionStatus = kAS05LeaveScene;
+ _vm->_gnap->_actionStatus = kAS05LeaveScene;
break;
case kAS05UseTwigWithChicken:
_vm->playGnapShowItem(5, 0, 0);
_nextChickenSequenceId = 0x14F;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -2213,9 +2213,9 @@ void Scene05::updateAnimations() {
_vm->setGrabCursorSprite(kItemNeedle);
_vm->showCursor();
_vm->_timers[1] = 30;
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
}
- if (_vm->_platypusActionStatus == kAS05PlatSearchHaystack) {
+ 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);
@@ -2237,7 +2237,7 @@ void Scene05::updateAnimations() {
_vm->_gnapSequenceId = 0x14C;
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -2333,14 +2333,14 @@ void Scene06::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS06Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS06Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2369,7 +2369,7 @@ void Scene06::run() {
break;
case kHS06Gas:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
} else {
@@ -2384,7 +2384,7 @@ void Scene06::run() {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS06TryToGetGas;
+ _vm->_gnap->_actionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
_vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
@@ -2403,7 +2403,7 @@ void Scene06::run() {
break;
case kHS06Ladder:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
} else {
@@ -2416,7 +2416,7 @@ void Scene06::run() {
_vm->playGnapImpossible(0, 0);
else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS06TryToClimbLadder;
+ _vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
break;
@@ -2430,7 +2430,7 @@ void Scene06::run() {
break;
case kHS06Horse:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
@@ -2438,7 +2438,7 @@ void Scene06::run() {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnapActionStatus = kAS06UseTwigOnHorse;
+ _vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
@@ -2455,7 +2455,7 @@ void Scene06::run() {
_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->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS06TalkToHorse;
+ _vm->_gnap->_actionStatus = kAS06TalkToHorse;
}
break;
case GRAB_CURSOR:
@@ -2468,10 +2468,10 @@ void Scene06::run() {
break;
case kHS06ExitOutsideBarn:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS06LeaveScene;
+ _vm->_gnap->_actionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -2484,12 +2484,12 @@ void Scene06::run() {
case kHS06WalkArea3:
case kHS06WalkArea4:
case kHS06WalkArea5:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -2500,13 +2500,13 @@ void Scene06::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
if (_horseTurnedBack) {
_nextHorseSequenceId = 0xF5;
} else {
@@ -2546,16 +2546,16 @@ void Scene06::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS06LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _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;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS06TryToClimbLadder:
gameSys.insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
@@ -2563,11 +2563,11 @@ void Scene06::updateAnimations() {
gameSys.insertSequence(0xFD, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0xFD;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS06TryToClimbLadderDone;
+ _vm->_gnap->_actionStatus = kAS06TryToClimbLadderDone;
break;
case kAS06TryToClimbLadderDone:
_vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS06TalkToHorse:
_nextHorseSequenceId = 0xF6;
@@ -2576,7 +2576,7 @@ void Scene06::updateAnimations() {
_nextPlatSequenceId = 0xFB;
break;
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -2589,19 +2589,19 @@ void Scene06::updateAnimations() {
_vm->setFlag(kGFGasTaken);
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
_vm->setGrabCursorSprite(kItemGas);
- _vm->_platypusActionStatus = -1;
+ _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;
_vm->setFlag(kGFUnk04);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->showCursor();
}
if (_nextPlatSequenceId == 0xFB) {
gameSys.setAnimation(0, 0, 1);
_nextHorseSequenceId = 0xF2;
- _vm->_platypusActionStatus = 6;
+ _vm->_plat->_actionStatus = 6;
}
}
@@ -2633,7 +2633,7 @@ void Scene06::updateAnimations() {
_horseTurnedBack = true;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
default:
gameSys.setAnimation(_nextHorseSequenceId, 120, 2);
@@ -2692,7 +2692,7 @@ void Scene07::run() {
_vm->_gnap->_idleFacing = kDirBottomRight;
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS07Wait;
+ _vm->_gnap->_actionStatus = kAS07Wait;
_vm->_plat->_pos = Common::Point(3, 8);
_vm->_platypusId = 160;
_vm->_platypusSequenceId = 0x91;
@@ -2742,7 +2742,7 @@ void Scene07::run() {
_vm->gnapWalkTo(_vm->_gnap->_pos.x, 7, 0, 0x107AD, 1);
else
_vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS07LeaveScene;
+ _vm->_gnap->_actionStatus = kAS07LeaveScene;
break;
case kHS07Dice:
@@ -2774,7 +2774,7 @@ void Scene07::run() {
break;
case kHS07Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(40) + 50;
@@ -2802,7 +2802,7 @@ void Scene07::run() {
if (!_vm->_isLeavingScene) {
_vm->updateGnapIdleSequence();
- if (_vm->_platypusActionStatus < 0 && _vm->_gnapActionStatus < 0) {
+ if (_vm->_plat->_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
@@ -2859,13 +2859,13 @@ void Scene07::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS07LeaveScene:
_vm->_newSceneNum = 8;
_vm->_sceneDone = true;
break;
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2975,7 +2975,7 @@ void Scene08::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS08Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(50) + 75;
@@ -3012,7 +3012,7 @@ void Scene08::run() {
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS08LeaveScene;
+ _vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
@@ -3021,7 +3021,7 @@ void Scene08::run() {
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS08LeaveScene;
+ _vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
@@ -3034,7 +3034,7 @@ void Scene08::run() {
case LOOK_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS08LookMan;
+ _vm->_gnap->_actionStatus = kAS08LookMan;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
@@ -3044,13 +3044,13 @@ void Scene08::run() {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(8, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS08TalkMan;
+ _vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS08PlatWithMan;
+ _vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(6, 6);
break;
@@ -3062,31 +3062,31 @@ void Scene08::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS08GrabDog;
+ _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);
- _vm->_gnapActionStatus = kAS08LookDog;
+ _vm->_gnap->_actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS08GrabDog;
+ _vm->_gnap->_actionStatus = kAS08GrabDog;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS08TalkDog;
+ _vm->_gnap->_actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
_vm->gnapActionIdle(0x14D);
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS08PlatWithDog;
+ _vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(3, 7);
break;
@@ -3194,7 +3194,7 @@ void Scene08::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextManSequenceId == -1 &&
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
(_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
@@ -3235,49 +3235,49 @@ void Scene08::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS08LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS08TalkMan:
_nextManSequenceId = 0x13F;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS08LookMan:
_nextManSequenceId = 0x140;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS08LookDog:
_nextManSequenceId = 0x137;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS08GrabDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS08TalkDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
+ switch (_vm->_plat->_actionStatus) {
case kAS08PlatWithDog:
_nextDogSequenceId = 0x147;
break;
case kAS08PlatWithMan:
_nextManSequenceId = 0x140;
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
break;
}
}
@@ -3291,7 +3291,7 @@ void Scene08::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2) {
if (_currDogSequenceId == 0x147)
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
if (_vm->getRandom(2) != 0)
_nextManSequenceId = 0x13D;
@@ -3347,7 +3347,7 @@ void Scene08::updateAnimations() {
_vm->_gnapSequenceId = 0x14D;
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
}
}
@@ -3411,7 +3411,7 @@ void Scene09::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS09Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(150) + 50;
@@ -3440,7 +3440,7 @@ void Scene09::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
_vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kAS09LeaveScene;
+ _vm->_gnap->_actionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3449,7 +3449,7 @@ void Scene09::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
_vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS09LeaveScene;
+ _vm->_gnap->_actionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3463,7 +3463,7 @@ void Scene09::run() {
_vm->playGnapScratchingHead(8, 3);
break;
case GRAB_CURSOR:
- _vm->_gnapActionStatus = kAS09SearchTrash;
+ _vm->_gnap->_actionStatus = kAS09SearchTrash;
_vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
break;
case TALK_CURSOR:
@@ -3490,7 +3490,7 @@ void Scene09::run() {
updateAnimations();
- if (!_vm->_isLeavingScene && _vm->_gnapActionStatus != 1 && _vm->_gnapActionStatus != 2) {
+ if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus != 1 && _vm->_gnap->_actionStatus != 2) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
@@ -3522,10 +3522,10 @@ void Scene09::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS09LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS09SearchTrash:
gameSys.setAnimation(0x4C, 120, 0);
@@ -3536,13 +3536,13 @@ void Scene09::updateAnimations() {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnapSequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(9, 6);
- _vm->_gnapActionStatus = kAS09SearchTrashDone;
+ _vm->_gnap->_actionStatus = kAS09SearchTrashDone;
break;
case kAS09SearchTrashDone:
gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[2] = 360;
_vm->_timers[4] = _vm->getRandom(150) + 100;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index e2d0e96..6aca643 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -133,7 +133,7 @@ void Scene10::run() {
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(0, 7, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS10LeaveScene;
+ _vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
break;
@@ -142,7 +142,7 @@ void Scene10::run() {
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(2, 9, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS10LeaveScene;
+ _vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
break;
@@ -151,7 +151,7 @@ void Scene10::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 8, 6, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -165,14 +165,14 @@ void Scene10::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(4, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(4, 6, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
}
}
@@ -195,7 +195,7 @@ void Scene10::run() {
else {
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
case TALK_CURSOR:
@@ -209,7 +209,7 @@ void Scene10::run() {
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, -1, -1, 1);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
}
@@ -227,7 +227,7 @@ void Scene10::run() {
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS10AnnoyCook;
+ _vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -241,7 +241,7 @@ void Scene10::run() {
_vm->gnapActionIdle(0x10C);
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
- _vm->_platypusActionStatus = kAS10PlatWithBox;
+ _vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
_vm->playGnapIdle(7, 6);
@@ -287,7 +287,7 @@ void Scene10::run() {
break;
case kHS10Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -345,7 +345,7 @@ void Scene10::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS10LeaveScene:
_vm->_sceneDone = true;
break;
@@ -357,7 +357,7 @@ void Scene10::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
+ switch (_vm->_plat->_actionStatus) {
case kAS10PlatWithBox:
_nextCookSequenceId = 0x109;
break;
@@ -398,8 +398,8 @@ void Scene10::updateAnimations() {
_vm->delayTicksCursor(5);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->setGrabCursorSprite(kItemTongs);
- if (_vm->_platypusActionStatus == kAS10PlatWithBox)
- _vm->_platypusActionStatus = -1;
+ if (_vm->_plat->_actionStatus == kAS10PlatWithBox)
+ _vm->_plat->_actionStatus = -1;
if (_vm->_gnap->_pos == Common::Point(4, 8))
_vm->gnapWalkStep();
break;
@@ -413,7 +413,7 @@ void Scene10::updateAnimations() {
case 0x106: {
// TODO: Refactor into a if + a switch
int rnd = _vm->getRandom(7);
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (rnd == 0)
_nextCookSequenceId = 0x104;
@@ -427,7 +427,7 @@ void Scene10::updateAnimations() {
}
break;
case 0x103:
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x104;
@@ -435,7 +435,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
break;
case 0x104:
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x103;
@@ -445,7 +445,7 @@ void Scene10::updateAnimations() {
case 0x105: {
// TODO: Refactor into a if + a switch
int rnd = _vm->getRandom(7);
- if (_vm->_gnapActionStatus >= 0 || _vm->_platypusActionStatus >= 0)
+ if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (rnd == 0)
_nextCookSequenceId = 0x104;
@@ -459,8 +459,8 @@ void Scene10::updateAnimations() {
_vm->_gnapSequenceId = 0x10C;
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
- _vm->_platypusActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
}
break;
}
@@ -613,7 +613,7 @@ void Scene11::run() {
case kHS11ExitKitchen:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(6, 5, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(6, 6, -1, -1, 1);
_vm->_newSceneNum = 10;
break;
@@ -621,7 +621,7 @@ void Scene11::run() {
case kHS11ExitToilet:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(8, 5, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(8, 6, -1, -1, 1);
_vm->_newSceneNum = 13;
break;
@@ -629,16 +629,16 @@ void Scene11::run() {
case kHS11ExitLeft:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS11LeaveScene;
+ _vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
break;
case kHS11GoggleGuy:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS11ShowMagazineToGoggleGuy;
+ _vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(3, 7, 2, 0);
@@ -654,7 +654,7 @@ void Scene11::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS11TalkGoggleGuy;
+ _vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
break;
}
}
@@ -662,11 +662,11 @@ void Scene11::run() {
break;
case kHS11HookGuy:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_gnap->_idleFacing = kDirUpRight;
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
- _vm->_gnapActionStatus = kAS11ShowItemToHookGuy;
+ _vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
switch (_vm->_verbCursor) {
@@ -675,12 +675,12 @@ void Scene11::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS11GrabHookGuy;
+ _vm->_gnap->_actionStatus = kAS11GrabHookGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->gnapWalkTo(5, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS11TalkHookGuy;
+ _vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -691,7 +691,7 @@ void Scene11::run() {
break;
case kHS11Billard:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(9, 8);
} else {
@@ -701,7 +701,7 @@ void Scene11::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(9, 8, 0, 0x107BA, 1);
- _vm->_gnapActionStatus = kAS11GrabBillardBall;
+ _vm->_gnap->_actionStatus = kAS11GrabBillardBall;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -717,19 +717,19 @@ void Scene11::run() {
case kHS11WalkArea3:
case kHS11WalkArea4:
case kHS11WalkArea5:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
case kHS11Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -749,7 +749,7 @@ void Scene11::run() {
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextGoggleGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
if (_vm->getRandom(2))
_nextGoggleGuySequenceId = 0x1F6;
else
@@ -758,7 +758,7 @@ void Scene11::run() {
}
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextHookGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHookGuySequenceId == -1) {
if (_currHookGuySequenceId == 0x201) {
switch (_vm->getRandom(7)) {
case 0:
@@ -814,9 +814,9 @@ void Scene11::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- if (_vm->_gnapActionStatus != kAS11GrabBillardBall)
+ if (_vm->_gnap->_actionStatus != kAS11GrabBillardBall)
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS11LeaveScene:
_vm->_sceneDone = true;
break;
@@ -873,7 +873,7 @@ void Scene11::updateAnimations() {
_vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
gameSys.setAnimation(0x207, 257, 4);
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
break;
}
@@ -885,8 +885,8 @@ void Scene11::updateAnimations() {
gameSys.setAnimation(_nextGoggleGuySequenceId, 121, 2);
_currGoggleGuySequenceId = _nextGoggleGuySequenceId;
_nextGoggleGuySequenceId = -1;
- if (_vm->_gnapActionStatus >= 1 && _vm->_gnapActionStatus <= 4)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus >= 1 && _vm->_gnap->_actionStatus <= 4)
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2) {
@@ -901,16 +901,16 @@ void Scene11::updateAnimations() {
_vm->_timers[4] = _vm->getRandom(40) + 20;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnapActionStatus == kAS11GrabHookGuy)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus == kAS11GrabHookGuy)
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextHookGuySequenceId != -1) {
gameSys.insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
_currHookGuySequenceId = _nextHookGuySequenceId;
_nextHookGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnapActionStatus >= 6 && _vm->_gnapActionStatus <= 9)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus >= 6 && _vm->_gnap->_actionStatus <= 9)
+ _vm->_gnap->_actionStatus = -1;
}
}
@@ -1005,7 +1005,7 @@ void Scene12::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS12Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1031,7 +1031,7 @@ void Scene12::run() {
case kHS12ExitRight:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS12LeaveScene;
+ _vm->_gnap->_actionStatus = kAS12LeaveScene;
_vm->platypusWalkTo(10, -1, -1, -1, 1);
_vm->_newSceneNum = 11;
break;
@@ -1041,18 +1041,18 @@ void Scene12::run() {
_vm->_largeSprite = gameSys.createSurface(0x141);
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kAS12QuarterToToothGuy;
+ _vm->_gnap->_actionStatus = kAS12QuarterToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kAS12QuarterWithHoleToToothGuy;
+ _vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnapActionStatus = kAS12ShowItemToToothGuy;
+ _vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else {
switch (_vm->_verbCursor) {
@@ -1061,17 +1061,17 @@ void Scene12::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS12GrabToothGuy;
+ _vm->_gnap->_actionStatus = kAS12GrabToothGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(3, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS12TalkToothGuy;
+ _vm->_gnap->_actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
- _vm->_platypusActionStatus = kAS12PlatWithToothGuy;
+ _vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->playGnapIdle(2, 7);
break;
@@ -1083,19 +1083,19 @@ void Scene12::run() {
if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12QuarterWithBarkeeper;
+ _vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12ShowItemToBarkeeper;
+ _vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12LookBarkeeper;
+ _vm->_gnap->_actionStatus = kAS12LookBarkeeper;
break;
case GRAB_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1103,12 +1103,12 @@ void Scene12::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(6, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS12TalkBarkeeper;
+ _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);
- _vm->_gnapActionStatus = kAS12PlatWithBarkeeper;
+ _vm->_gnap->_actionStatus = kAS12PlatWithBarkeeper;
break;
}
}
@@ -1118,30 +1118,30 @@ void Scene12::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12ShowItemToBeardGuy;
+ _vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12LookBeardGuy;
+ _vm->_gnap->_actionStatus = kAS12LookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
_vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS12GrabBeardGuy;
+ _vm->_gnap->_actionStatus = kAS12GrabBeardGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS12TalkBeardGuy;
+ _vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS12PlatWithBeardGuy;
+ _vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(7, 6);
break;
@@ -1153,19 +1153,19 @@ void Scene12::run() {
_vm->_newSceneNum = 15;
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS12LeaveScene;
+ _vm->_gnap->_actionStatus = kAS12LeaveScene;
break;
case kHS12WalkArea1:
case kHS12WalkArea2:
case kHS12WalkArea3:
case kHS12WalkArea4:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -1181,7 +1181,7 @@ void Scene12::run() {
if (!_vm->_timers[4]) {
_vm->_timers[4] = 15;
if (_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextToothGuySequenceId = 0x1EC;
else
@@ -1193,8 +1193,8 @@ void Scene12::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_nextBarkeeperSequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_nextBarkeeperSequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextBarkeeperSequenceId = 0x208;
else
@@ -1206,8 +1206,8 @@ void Scene12::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(30) + 15;
- if (_nextBeardGuySequenceId == -1 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ if (_nextBeardGuySequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
_nextBeardGuySequenceId = 0x1F2;
else
_nextBeardGuySequenceId = 0x202;
@@ -1251,7 +1251,7 @@ void Scene12::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS12LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1299,7 +1299,7 @@ void Scene12::updateAnimations() {
}
break;
case kAS12QuarterToToothGuyDone:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->showCursor();
gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->deleteSurface(&_vm->_largeSprite);
@@ -1343,7 +1343,7 @@ void Scene12::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
+ switch (_vm->_plat->_actionStatus) {
case kAS12PlatWithToothGuy:
_nextToothGuySequenceId = 0x1EB;
break;
@@ -1358,7 +1358,7 @@ void Scene12::updateAnimations() {
gameSys.setAnimation(0, 0, 2);
_vm->hideCursor();
gameSys.setAnimation(0x10843, 301, 0);
- _vm->_gnapActionStatus = kAS12QuarterToToothGuyDone;
+ _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,
@@ -1380,25 +1380,25 @@ void Scene12::updateAnimations() {
_vm->_timers[4] = 40;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnapActionStatus == kAS12GrabToothGuy)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus == kAS12GrabToothGuy)
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextToothGuySequenceId != -1) {
gameSys.insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextToothGuySequenceId, 50, 2);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
_vm->_timers[4] = 50;
- if (_vm->_gnapActionStatus >= kAS12TalkToothGuy && _vm->_gnapActionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
+ if (_vm->_gnap->_actionStatus >= kAS12TalkToothGuy && _vm->_gnap->_actionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
_currToothGuySequenceId != 0x1EC && _currToothGuySequenceId != 0x200)
- _vm->_gnapActionStatus = -1;
- if (_vm->_platypusActionStatus == kAS12PlatWithToothGuy)
- _vm->_platypusActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
+ if (_vm->_plat->_actionStatus == kAS12PlatWithToothGuy)
+ _vm->_plat->_actionStatus = -1;
}
}
if (gameSys.getAnimationStatus(3) == 2) {
- if (_vm->_gnapActionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
+ _vm->_gnap->_actionStatus = -1;
_vm->playGnapIdle(7, 6);
_vm->_timers[5] = 0;
}
@@ -1408,9 +1408,9 @@ void Scene12::updateAnimations() {
_currBarkeeperSequenceId = _nextBarkeeperSequenceId;
_nextBarkeeperSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus >= kAS12TalkBarkeeper && _vm->_gnapActionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 &&
+ if (_vm->_gnap->_actionStatus >= kAS12TalkBarkeeper && _vm->_gnap->_actionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 &&
_currBarkeeperSequenceId != 0x1FB && _currBarkeeperSequenceId != 0x208)
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
}
@@ -1420,10 +1420,10 @@ void Scene12::updateAnimations() {
_currBeardGuySequenceId = _nextBeardGuySequenceId;
_nextBeardGuySequenceId = -1;
_vm->_timers[6] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus >= kAS12TalkBeardGuy && _vm->_gnapActionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
- _vm->_gnapActionStatus = -1;
- if (_vm->_platypusActionStatus == kAS12PlatWithBeardGuy)
- _vm->_platypusActionStatus = -1;
+ if (_vm->_gnap->_actionStatus >= kAS12TalkBeardGuy && _vm->_gnap->_actionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
+ _vm->_gnap->_actionStatus = -1;
+ if (_vm->_plat->_actionStatus == kAS12PlatWithBeardGuy)
+ _vm->_plat->_actionStatus = -1;
}
}
@@ -1512,7 +1512,7 @@ void Scene13::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS13Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -1540,7 +1540,7 @@ void Scene13::run() {
case kHS13ExitBar:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(2, 7, 0, 0x107C0, 1);
- _vm->_gnapActionStatus = kAS13LeaveScene;
+ _vm->_gnap->_actionStatus = kAS13LeaveScene;
_vm->platypusWalkTo(2, 8, -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
_vm->_newSceneNum = 11;
@@ -1564,13 +1564,13 @@ void Scene13::run() {
gameSys.insertSequence(_backToiletCtr + 0xA3, _vm->_gnapId,
makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId,
kSeqScale | kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS13Wait;
+ _vm->_gnap->_actionStatus = kAS13Wait;
_vm->_gnapSequenceId = _backToiletCtr + 0xA3;
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnapSequenceDatNum = 0;
} else {
_vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS13BackToilet;
+ _vm->_gnap->_actionStatus = kAS13BackToilet;
_vm->_gnap->_idleFacing = kDirUpRight;
}
break;
@@ -1591,7 +1591,7 @@ void Scene13::run() {
case TALK_CURSOR:
case PLAT_CURSOR:
_vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
- _vm->_gnapActionStatus = kAS13FrontToilet;
+ _vm->_gnap->_actionStatus = kAS13FrontToilet;
_vm->_gnap->_idleFacing = kDirBottomRight;
break;
}
@@ -1605,7 +1605,7 @@ void Scene13::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS13LookScribble;
+ _vm->_gnap->_actionStatus = kAS13LookScribble;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
@@ -1630,11 +1630,11 @@ void Scene13::run() {
case LOOK_CURSOR:
_vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 9, 6));
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
- _vm->_gnapActionStatus = kAS13Wait;
+ _vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(8, 7, 0, -1, 1);
- _vm->_gnapActionStatus = kAS13GrabUrinal;
+ _vm->_gnap->_actionStatus = kAS13GrabUrinal;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -1652,11 +1652,11 @@ void Scene13::run() {
case LOOK_CURSOR:
_vm->playGnapSequence(_vm->getGnapSequenceId(gskDeflect, 5, 9));
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
- _vm->_gnapActionStatus = kAS13Wait;
+ _vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(4, 8, 0, 0x107B9, 1);
- _vm->_gnapActionStatus = kAS13GrabSink;
+ _vm->_gnap->_actionStatus = kAS13GrabSink;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -1695,7 +1695,7 @@ void Scene13::run() {
_vm->updatePlatypusIdleSequence();
if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
_vm->platypusWalkTo(-1, 7, -1, -1, 1);
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -1763,24 +1763,24 @@ void Scene13::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS13LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
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;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS13FrontToilet:
_vm->_sceneDone = true;
_vm->_newSceneNum = 14;
break;
case kAS13LookScribble:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
showScribble();
break;
case kAS13GrabSink:
@@ -1793,14 +1793,14 @@ void Scene13::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(4, 8);
_vm->_timers[2] = 360;
- _vm->_gnapActionStatus = kAS13GrabSinkDone;
+ _vm->_gnap->_actionStatus = kAS13GrabSinkDone;
break;
case kAS13GrabSinkDone:
gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS13Wait:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS13GrabUrinal:
gameSys.setAnimation(0xA2, 120, 0);
@@ -1811,14 +1811,14 @@ void Scene13::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnap->_pos = Common::Point(4, 6);
_vm->_timers[2] = 360;
- _vm->_gnapActionStatus = kAS13Wait;
+ _vm->_gnap->_actionStatus = kAS13Wait;
break;
}
}
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
}
}
@@ -1875,7 +1875,7 @@ void Scene14::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS14Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -2051,7 +2051,7 @@ void Scene15::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS15Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -2329,13 +2329,13 @@ void Scene17::update() {
void Scene17::platHangUpPhone() {
GameSys& gameSys = *_vm->_gameSys;
- int savedGnapActionStatus = _vm->_gnapActionStatus;
+ int savedGnapActionStatus = _vm->_gnap->_actionStatus;
- if (_vm->_platypusActionStatus == kAS17PlatPhoningAssistant) {
- _vm->_gnapActionStatus = kAS17PlatHangUpPhone;
+ if (_vm->_plat->_actionStatus == kAS17PlatPhoningAssistant) {
+ _vm->_gnap->_actionStatus = kAS17PlatHangUpPhone;
_vm->updateMouseCursor();
_platPhoneCtr = 0;
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
gameSys.setAnimation(0x257, 254, 4);
gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (gameSys.getAnimationStatus(4) != 2)
@@ -2349,7 +2349,7 @@ void Scene17::platHangUpPhone() {
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
- _vm->_gnapActionStatus = savedGnapActionStatus;
+ _vm->_gnap->_actionStatus = savedGnapActionStatus;
_vm->updateMouseCursor();
}
updateHotspots();
@@ -2431,7 +2431,7 @@ void Scene17::run() {
_vm->endSceneInit();
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
- _vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
+ _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
platHangUpPhone();
gameSys.setAnimation(0, 0, 4);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
@@ -2446,7 +2446,7 @@ void Scene17::run() {
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 601;
- _vm->_gnapActionStatus = kAS17GnapHangUpPhone;
+ _vm->_gnap->_actionStatus = kAS17GnapHangUpPhone;
_vm->clearFlag(kGFUnk25);
gameSys.insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -2466,7 +2466,7 @@ void Scene17::run() {
_vm->_platypusSequenceDatNum = 0;
_vm->endSceneInit();
gameSys.setAnimation(_currPhoneSequenceId, 254, 1);
- _vm->_platypusActionStatus = kAS17PlatPhoningAssistant;
+ _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
_vm->initGnapPos(6, 6, kDirBottomRight);
@@ -2518,14 +2518,14 @@ void Scene17::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS17Device:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == 3) {
+ if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == 3) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS17Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->gnapUseJointOnPlatypus();
@@ -2533,8 +2533,8 @@ void Scene17::run() {
_vm->gnapUseDeviceOnPlatypus();
_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->_platypusActionStatus = kAS17GetWrench1;
- _vm->_gnapActionStatus = kAS17GetWrench1;
+ _vm->_plat->_actionStatus = kAS17GetWrench1;
+ _vm->_gnap->_actionStatus = kAS17GetWrench1;
_vm->_timers[5] = _vm->getRandom(30) + 80;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemJoint);
@@ -2560,7 +2560,7 @@ void Scene17::run() {
break;
case kHS17Wrench:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->playGnapImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2579,8 +2579,8 @@ void Scene17::run() {
platHangUpPhone();
_vm->gnapUseDeviceOnPlatypus();
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
- _vm->_platypusActionStatus = kAS17TryGetWrench;
- _vm->_gnapActionStatus = kAS17TryGetWrench;
+ _vm->_plat->_actionStatus = kAS17TryGetWrench;
+ _vm->_gnap->_actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
} else
_vm->playGnapImpossible(0, 0);
@@ -2591,10 +2591,10 @@ void Scene17::run() {
break;
case kHS17Phone1:
- if (_vm->_gnapActionStatus < 0) {
+ 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->_gnapActionStatus = kAS17PutCoinIntoPhone;
+ _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
@@ -2606,7 +2606,7 @@ void Scene17::run() {
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->_gnapActionStatus = kAS17GetCoinFromPhone;
+ _vm->_gnap->_actionStatus = kAS17GetCoinFromPhone;
} else
_vm->playGnapImpossible(0, 0);
break;
@@ -2621,8 +2621,8 @@ void Scene17::run() {
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
- _vm->_platypusActionStatus = kAS17PlatUsePhone;
- _vm->_gnapActionStatus = kAS17PlatUsePhone;
+ _vm->_plat->_actionStatus = kAS17PlatUsePhone;
+ _vm->_gnap->_actionStatus = kAS17PlatUsePhone;
} else
_vm->playGnapImpossible(0, 0);
break;
@@ -2632,10 +2632,10 @@ void Scene17::run() {
break;
case kHS17Phone2:
- if (_vm->_gnapActionStatus < 0) {
+ 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->_gnapActionStatus = kAS17PutCoinIntoPhone;
+ _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
@@ -2649,7 +2649,7 @@ void Scene17::run() {
_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->_gnapActionStatus = kAS17GnapUsePhone;
+ _vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
_vm->playGnapImpossible(0, 0);
@@ -2665,8 +2665,8 @@ void Scene17::run() {
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
- _vm->_platypusActionStatus = kAS17PlatUsePhone;
- _vm->_gnapActionStatus = kAS17PlatUsePhone;
+ _vm->_plat->_actionStatus = kAS17PlatUsePhone;
+ _vm->_gnap->_actionStatus = kAS17PlatUsePhone;
} else
_vm->playGnapImpossible(0, 0);
break;
@@ -2676,25 +2676,25 @@ void Scene17::run() {
break;
case kHS17ExitToyStore:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS17LeaveScene;
- if (_vm->_platypusActionStatus != kAS17PlatPhoningAssistant)
+ _vm->_gnap->_actionStatus = kAS17LeaveScene;
+ if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
}
break;
case kHS17ExitGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS17LeaveScene;
+ _vm->_gnap->_actionStatus = kAS17LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
}
break;
@@ -2702,12 +2702,12 @@ void Scene17::run() {
case kHS17WalkArea1:
case kHS17WalkArea2:
case kHS17WalkArea3:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
@@ -2720,17 +2720,17 @@ void Scene17::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence2();
_vm->updateGnapIdleSequence2();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
gameSys.insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -2744,7 +2744,7 @@ void Scene17::run() {
}
}
}
- if (_vm->_platypusActionStatus < 0 && !_vm->_timers[5]) {
+ if (_vm->_plat->_actionStatus < 0 && !_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 80;
if (_vm->isFlag(kGFGrassTaken) && _nextWrenchSequenceId == -1) {
_nextWrenchSequenceId = 0x236;
@@ -2823,9 +2823,9 @@ void Scene17::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS17GetWrench1:
- _vm->_gnapActionStatus = kAS17GetWrenchGnapReady;
+ _vm->_gnap->_actionStatus = kAS17GetWrenchGnapReady;
break;
case kAS17GetCoinFromPhone:
_vm->playGnapPullOutDevice(1, 3);
@@ -2834,11 +2834,11 @@ void Scene17::updateAnimations() {
gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemDiceQuarterHole);
_vm->clearFlag(kGFUnk18);
- _vm->_gnapActionStatus = kAS17GetCoinFromPhoneDone;
+ _vm->_gnap->_actionStatus = kAS17GetCoinFromPhoneDone;
break;
case kAS17GetCoinFromPhoneDone:
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS17PutCoinIntoPhone:
gameSys.setAnimation(0x24C, _vm->_gnapId, 0);
@@ -2848,23 +2848,23 @@ void Scene17::updateAnimations() {
_vm->invRemove(kItemDiceQuarterHole);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFUnk18);
- _vm->_gnapActionStatus = kAS17PutCoinIntoPhoneDone;
+ _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhoneDone;
break;
case kAS17PutCoinIntoPhoneDone:
gameSys.insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _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);
- _vm->_gnapActionStatus = kAS17LeaveScene;
+ _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;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS17LeaveScene:
_vm->_sceneDone = true;
@@ -2874,9 +2874,9 @@ void Scene17::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
+ switch (_vm->_plat->_actionStatus) {
case kAS17TryGetWrench:
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
++_platTryGetWrenchCtr;
if (_platTryGetWrenchCtr % 2 != 0)
_nextWrenchSequenceId = 0x233;
@@ -2891,7 +2891,7 @@ void Scene17::updateAnimations() {
_nextCarWindowSequenceId = 0x249;
break;
case kAS17GetWrenchDone:
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
break;
@@ -2900,7 +2900,7 @@ void Scene17::updateAnimations() {
gameSys.insertSequence(0x24E, _vm->_platypusId, _vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x24E;
- _vm->_platypusActionStatus = kAS17LeaveScene;
+ _vm->_plat->_actionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
case kAS17PlatPhoningAssistant:
@@ -2912,7 +2912,7 @@ void Scene17::updateAnimations() {
gameSys.insertSequence(0x25B, _vm->_platypusId, 0x25A, _vm->_platypusId, kSeqSyncWait, 0, 0, 0);
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusSequenceId = 0x25B;
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
_vm->_sceneWaiting = false;
updateHotspots();
@@ -2935,7 +2935,7 @@ void Scene17::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextWrenchSequenceId) {
case 0x233:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
gameSys.insertSequence(0x243, _vm->_platypusId,
_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
@@ -2947,7 +2947,7 @@ void Scene17::updateAnimations() {
gameSys.setAnimation(0x243, _vm->_platypusId, 1);
break;
case 0x234:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
gameSys.insertSequence(0x242, _vm->_platypusId,
_vm->_platypusSequenceId | (_vm->_platypusSequenceDatNum << 16), _vm->_platypusId,
kSeqSyncWait, 0, 0, 0);
@@ -2982,7 +2982,7 @@ void Scene17::updateAnimations() {
_nextWrenchSequenceId = -1;
break;
case 0x230:
- if (_vm->_gnapActionStatus == kAS17GetWrenchGnapReady) {
+ if (_vm->_gnap->_actionStatus == kAS17GetWrenchGnapReady) {
gameSys.setAnimation(0, 0, 2);
if (_canTryGetWrench) {
gameSys.insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -2999,7 +2999,7 @@ void Scene17::updateAnimations() {
_vm->_gnapSequenceId = 0x875;
_vm->_platypusSequenceId = 0x23F;
_vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
- _vm->_platypusActionStatus = kAS17GetWrench2;
+ _vm->_plat->_actionStatus = kAS17GetWrench2;
}
break;
default:
@@ -3063,8 +3063,8 @@ void Scene17::updateAnimations() {
_currWrenchSequenceId = 0x22D;
_nextWrenchSequenceId = -1;
_vm->setFlag(kGFGrassTaken);
- _vm->_gnapActionStatus = -1;
- _vm->_platypusActionStatus = 2;
+ _vm->_gnap->_actionStatus = -1;
+ _vm->_plat->_actionStatus = 2;
updateHotspots();
_vm->_timers[5] = _vm->getRandom(30) + 80;
break;
@@ -3277,7 +3277,7 @@ void Scene18::platEndPhoning(bool platFl) {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_platPhoneIter = 0;
_platPhoneCtr = 0;
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
if (_currPhoneSequenceId != -1) {
gameSys.setAnimation(0x21E, 254, 3);
gameSys.insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
@@ -3288,7 +3288,7 @@ void Scene18::platEndPhoning(bool platFl) {
gameSys.setAnimation(0, 0, 3);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
- _vm->_platypusActionStatus = kAS18PlatComesHere;
+ _vm->_plat->_actionStatus = kAS18PlatComesHere;
_vm->_timers[6] = 50;
_vm->_sceneWaiting = true;
}
@@ -3299,26 +3299,26 @@ void Scene18::platEndPhoning(bool platFl) {
}
void Scene18::closeHydrantValve() {
- _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->_gnap->_actionStatus = kAS18LeaveScene;
_vm->updateMouseCursor();
if (_vm->isFlag(kGFTruckFilledWithGas)) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
waitForGnapAction();
} else {
- _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan;
waitForGnapAction();
}
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
- _vm->_gnapActionStatus = kAS18CloseTopValve;
+ _vm->_gnap->_actionStatus = kAS18CloseTopValve;
waitForGnapAction();
}
}
void Scene18::waitForGnapAction() {
- while (_vm->_gnapActionStatus >= 0) {
+ while (_vm->_gnap->_actionStatus >= 0) {
updateAnimations();
_vm->gameUpdateTick();
}
@@ -3423,14 +3423,14 @@ void Scene18::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS18Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS18Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3460,10 +3460,10 @@ void Scene18::run() {
break;
case kHS18CowboyHat:
- if (_vm->_gnapActionStatus == kAS18StandingOnHydrant) {
- _vm->_gnapActionStatus = kAS18GrabCowboyHat;
+ if (_vm->_gnap->_actionStatus == kAS18StandingOnHydrant) {
+ _vm->_gnap->_actionStatus = kAS18GrabCowboyHat;
_vm->_sceneWaiting = false;
- } else if (_vm->_gnapActionStatus < 0) {
+ } else if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3488,7 +3488,7 @@ void Scene18::run() {
break;
case kHS18GarbageCan:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex >= 0)
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
@@ -3516,10 +3516,10 @@ void Scene18::run() {
_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->_gnapActionStatus = kAS18GrabGarbageCanFromStreet;
+ _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 0, -1, 1))
- _vm->_gnapActionStatus = kAS18GrabGarbageCanFromHydrant;
+ _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromHydrant;
}
break;
case TALK_CURSOR:
@@ -3533,7 +3533,7 @@ void Scene18::run() {
break;
case kHS18HydrantTopValve:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
// While carrying garbage can
if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -3550,10 +3550,10 @@ void Scene18::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
gnapCarryGarbageCanTo(2);
- _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant;
+ _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant;
} else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
gnapCarryGarbageCanTo(2);
- _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrant;
+ _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrant;
} else {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3571,7 +3571,7 @@ void Scene18::run() {
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS18OpenTopValve;
+ _vm->_gnap->_actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
} else {
@@ -3584,7 +3584,7 @@ void Scene18::run() {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS18CloseTopValve;
+ _vm->_gnap->_actionStatus = kAS18CloseTopValve;
} else
_vm->playGnapImpossible(0, 0);
break;
@@ -3599,7 +3599,7 @@ void Scene18::run() {
break;
case kHS18HydrantRightValve:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex == -1) {
_vm->playGnapImpossible(0, 0);
@@ -3614,9 +3614,9 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, 2, 8) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan;
else
- _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCan;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
} else {
@@ -3628,9 +3628,9 @@ void Scene18::run() {
if (_vm->isFlag(kGFTruckFilledWithGas)) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
else
- _vm->_gnapActionStatus = kAS18CloseRightValveNoGarbageCan;
+ _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan;
}
break;
case TALK_CURSOR:
@@ -3644,7 +3644,7 @@ void Scene18::run() {
break;
case kHS18ExitToyStore:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3655,7 +3655,7 @@ void Scene18::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, 0, 0x107C0, 1);
- _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->_gnap->_actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, -1, 0x107C2, 1);
}
@@ -3663,7 +3663,7 @@ void Scene18::run() {
break;
case kHS18ExitPhoneBooth:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3672,7 +3672,7 @@ void Scene18::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
@@ -3681,7 +3681,7 @@ void Scene18::run() {
break;
case kHS18ExitGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3691,7 +3691,7 @@ void Scene18::run() {
_vm->_newSceneNum = 20;
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y, 0, 0x107B2, 1);
- _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
else
@@ -3702,7 +3702,7 @@ void Scene18::run() {
case kHS18WalkArea1:
case kHS18WalkArea2:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3714,7 +3714,7 @@ void Scene18::run() {
break;
default:
- if (_vm->_gnapActionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
+ if (_vm->_gnap->_actionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3732,16 +3732,16 @@ void Scene18::run() {
_vm->playSound(0x10940, true);
if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
- _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnapActionStatus != kAS18OpenRightValveNoGarbageCan &&
- _vm->_gnapActionStatus != kAS18OpenTopValve && _vm->_gnapActionStatus != kAS18OpenTopValveDone &&
- _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnapActionStatus != kAS18OpenRightValveWithGarbageCanDone)
+ _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCan &&
+ _vm->_gnap->_actionStatus != kAS18OpenTopValve && _vm->_gnap->_actionStatus != kAS18OpenTopValveDone &&
+ _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCanDone)
_vm->playSound(0x22B, true);
if (!_vm->_isLeavingScene) {
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_vm->_platypusActionStatus == kAS18PlatComesHere) {
+ if (_vm->_plat->_actionStatus == kAS18PlatComesHere) {
if (!_vm->_timers[6]) {
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
_vm->_sceneWaiting = false;
_vm->initPlatypusPos(-1, 10, kDirNone);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
@@ -3756,7 +3756,7 @@ void Scene18::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->getRandom(2) == 1)
gameSys.insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -3789,7 +3789,7 @@ void Scene18::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS18GrabGarbageCanFromStreet:
if (_vm->_gnap->_idleFacing != kDirUpRight && _vm->_gnap->_idleFacing != kDirBottomRight) {
gameSys.insertSequence(0x1FC, _vm->_gnapId,
@@ -3807,7 +3807,7 @@ void Scene18::updateAnimations() {
gameSys.removeSequence(0x1FA, 19, true);
_vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18GrabGarbageCanFromHydrant:
gameSys.insertSequence(0x1FE, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -3817,7 +3817,7 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFTruckKeysUsed);
_vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseRightValveNoGarbageCan:
gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -3831,7 +3831,7 @@ void Scene18::updateAnimations() {
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18OpenTopValve:
_vm->setFlag(kGFBarnPadlockOpen);
@@ -3842,7 +3842,7 @@ void Scene18::updateAnimations() {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BB, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS18OpenTopValveDone;
+ _vm->_gnap->_actionStatus = kAS18OpenTopValveDone;
break;
case kAS18OpenTopValveDone:
_vm->setGrabCursorSprite(-1);
@@ -3859,7 +3859,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceId = 0x208;
_vm->invRemove(kItemWrench);
_vm->setGrabCursorSprite(-1);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseTopValve:
gameSys.insertSequence(0x206, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -3873,14 +3873,14 @@ void Scene18::updateAnimations() {
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _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;
- _vm->_gnapActionStatus = kAS18GrabCowboyHatDone;
+ _vm->_gnap->_actionStatus = kAS18GrabCowboyHatDone;
break;
case kAS18GrabCowboyHatDone:
_vm->hideCursor();
@@ -3899,11 +3899,11 @@ void Scene18::updateAnimations() {
_vm->setFlag(kGFTruckKeysUsed);
_vm->setFlag(kGFUnk14); // Useless, already set
updateHotspots();
- _vm->_gnapActionStatus = kAS18LeaveScene;
+ _vm->_gnap->_actionStatus = kAS18LeaveScene;
break;
case kAS18LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18PutGarbageCanOnRunningHydrant:
_vm->setFlag(kGFTruckKeysUsed);
@@ -3915,7 +3915,7 @@ void Scene18::updateAnimations() {
gameSys.setAnimation(0x210, _vm->_gnapId, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x210;
- _vm->_gnapActionStatus = kAS18PutGarbageCanOnRunningHydrant2;
+ _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant2;
break;
case kAS18PutGarbageCanOnRunningHydrant2:
_vm->playSound(0x22B, true);
@@ -3924,7 +3924,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x1FF;
_vm->_sceneWaiting = true;
- _vm->_gnapActionStatus = kAS18StandingOnHydrant;
+ _vm->_gnap->_actionStatus = kAS18StandingOnHydrant;
break;
case kAS18StandingOnHydrant:
gameSys.setAnimation(0x1FF, _vm->_gnapId, 0);
@@ -3940,10 +3940,10 @@ void Scene18::updateAnimations() {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- if (_vm->_gnapActionStatus == kAS18OpenRightValveNoGarbageCan)
- _vm->_gnapActionStatus = kAS18OpenRightValveNoGarbageCanDone;
+ if (_vm->_gnap->_actionStatus == kAS18OpenRightValveNoGarbageCan)
+ _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCanDone;
else
- _vm->_gnapActionStatus = kAS18OpenRightValveWithGarbageCanDone;
+ _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCanDone;
break;
case kAS18OpenRightValveWithGarbageCanDone:
_vm->setGrabCursorSprite(-1);
@@ -3960,7 +3960,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x207;
_vm->invRemove(kItemWrench);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18OpenRightValveNoGarbageCanDone:
_vm->setGrabCursorSprite(-1);
@@ -3976,7 +3976,7 @@ void Scene18::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x207;
_vm->invRemove(kItemWrench);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18CloseRightValveWithGarbageCan:
gameSys.insertSequence(0x205, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -3992,10 +3992,10 @@ void Scene18::updateAnimations() {
updateHotspots();
_vm->_gnapSequenceDatNum = 1;
_vm->_gnapSequenceId = 0x7B5;
- _vm->_gnapActionStatus = kAS18CloseRightValveWithGarbageCanDone;
+ _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCanDone;
break;
case kAS18CloseRightValveWithGarbageCanDone:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS18PutGarbageCanOnHydrant:
_vm->setFlag(kGFTruckKeysUsed);
@@ -4004,12 +4004,12 @@ void Scene18::updateAnimations() {
gameSys.setAnimation(0x20F, _vm->_gnapId, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x20F;
- _vm->_gnapActionStatus = kAS18PutGarbageCanOnHydrantDone;
+ _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrantDone;
break;
case kAS18PutGarbageCanOnHydrantDone:
gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnapId, kSeqNone, 0, 0, 0);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -4133,14 +4133,14 @@ void Scene19::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS19Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS19Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -4166,12 +4166,12 @@ void Scene19::run() {
break;
case kHS19ExitOutsideToyStore:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107B2, 1);
- _vm->_gnapActionStatus = kAS19LeaveScene;
+ _vm->_gnap->_actionStatus = kAS19LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
@@ -4181,7 +4181,7 @@ void Scene19::run() {
break;
case kHS19Picture:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
@@ -4192,7 +4192,7 @@ void Scene19::run() {
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->_gnapActionStatus = kAS19GrabPicture;
+ _vm->_gnap->_actionStatus = kAS19GrabPicture;
}
break;
case TALK_CURSOR:
@@ -4205,7 +4205,7 @@ void Scene19::run() {
break;
case kHS19ShopAssistant:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
@@ -4216,7 +4216,7 @@ void Scene19::run() {
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->_gnapActionStatus = kAS19TalkShopAssistant;
+ _vm->_gnap->_actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -4234,7 +4234,7 @@ void Scene19::run() {
case kHS19Toy5:
case kHS19Toy6:
case kHS19Toy7:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
} else {
@@ -4245,7 +4245,7 @@ void Scene19::run() {
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
- _vm->_gnapActionStatus = kAS19GrabToy;
+ _vm->_gnap->_actionStatus = kAS19GrabToy;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -4257,7 +4257,7 @@ void Scene19::run() {
break;
case kHS19Phone:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
} else {
@@ -4268,7 +4268,7 @@ void Scene19::run() {
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
_vm->playGnapIdle(8, 2);
- _vm->_gnapActionStatus = kAS19UsePhone;
+ _vm->_gnap->_actionStatus = kAS19UsePhone;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -4282,7 +4282,7 @@ void Scene19::run() {
case kHS19WalkArea1:
case kHS19WalkArea2:
case kHS19WalkArea3:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -4332,7 +4332,7 @@ void Scene19::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS19UsePhone:
_nextShopAssistantSequenceId = 0x67;
break;
@@ -4361,7 +4361,7 @@ void Scene19::updateAnimations() {
_vm->invAdd(kItemPicture);
_vm->setFlag(kGFPictureTaken);
updateHotspots();
- _vm->_gnapActionStatus = kAS19GrabPictureDone;
+ _vm->_gnap->_actionStatus = kAS19GrabPictureDone;
break;
case kAS19GrabPictureDone:
_vm->setGrabCursorSprite(-1);
@@ -4382,7 +4382,7 @@ void Scene19::updateAnimations() {
break;
case kAS19TalkShopAssistant:
_nextShopAssistantSequenceId = 0x6D;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS19LeaveScene:
_vm->_sceneDone = true;
@@ -4416,14 +4416,14 @@ void Scene19::updateAnimations() {
_vm->gameUpdateTick();
}
_vm->playGnapIdle(6, 2);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case 0x67:
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case 0x65:
_vm->playGnapIdle(6, 2);
@@ -4432,7 +4432,7 @@ void Scene19::updateAnimations() {
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_newSceneNum = 18;
- _vm->_gnapActionStatus = kAS19LeaveScene;
+ _vm->_gnap->_actionStatus = kAS19LeaveScene;
break;
case 0x6D:
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 23afc55..229aad4 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -77,7 +77,7 @@ void Scene20::updateAnimationsCb() {
_vm->invAdd(kItemJoint);
_vm->setFlag(kGFJointTaken);
_stonerGuyShowingJoint = false;
- _vm->_gnapActionStatus = kAS20GrabJointDone;
+ _vm->_gnap->_actionStatus = kAS20GrabJointDone;
break;
case 0x16E:
gameSys.setAnimation(0x16E, 21, 2);
@@ -92,7 +92,7 @@ void Scene20::updateAnimationsCb() {
gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
- _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gnap->_actionStatus = kAS20ActionDone;
break;
case 0x16F:
gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
@@ -264,14 +264,14 @@ void Scene20::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS20Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS20Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -297,71 +297,71 @@ void Scene20::run() {
break;
case kHS20ExitParkingLot:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 21;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
case kHS20ExitPhone:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1);
}
break;
case kHS20ExitOutsideToyStore:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
case kHS20ExitInsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
case kHS20ExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS20LeaveScene;
+ _vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHS20StonerGuy:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
} else {
@@ -373,7 +373,7 @@ void Scene20::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_stonerGuyShowingJoint)
- _vm->_gnapActionStatus = kAS20GrabJoint;
+ _vm->_gnap->_actionStatus = kAS20GrabJoint;
else
_vm->playGnapImpossible(0, 0);
break;
@@ -381,9 +381,9 @@ void Scene20::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
if (_vm->isFlag(kGFJointTaken))
- _vm->_gnapActionStatus = kAS20TalkStonerGuyNoJoint;
+ _vm->_gnap->_actionStatus = kAS20TalkStonerGuyNoJoint;
else
- _vm->_gnapActionStatus = kAS20TalkStonerGuyHasJoint;
+ _vm->_gnap->_actionStatus = kAS20TalkStonerGuyHasJoint;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -394,7 +394,7 @@ void Scene20::run() {
break;
case kHS20GroceryStoreGuy:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
} else {
@@ -406,12 +406,12 @@ void Scene20::run() {
_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->_gnapActionStatus = kAS20GrabGroceryStoreGuy;
+ _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->_gnapActionStatus = kAS20TalkGroceryStoreGuy;
+ _vm->_gnap->_actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -422,11 +422,11 @@ void Scene20::run() {
break;
case kHS20GroceryStoreHat:
- if (_vm->_gnapActionStatus < 0) {
+ 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->_gnapActionStatus = kAS20SwitchGroceryStoreHat;
+ _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
} else {
@@ -438,7 +438,7 @@ void Scene20::run() {
_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->_gnapActionStatus = kAS20GrabGroceryStoreHat;
+ _vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -469,14 +469,14 @@ void Scene20::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0) {
+ if (_vm->_plat->_actionStatus < 0) {
_vm->_hotspots[kHS20WalkArea1]._y2 += 48;
_vm->updatePlatypusIdleSequence();
_vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
}
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->getRandom(4) != 0)
_nextGroceryStoreGuySequenceId = 0x17C;
@@ -485,7 +485,7 @@ void Scene20::run() {
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -518,7 +518,7 @@ void Scene20::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS20LeaveScene:
_vm->_sceneDone = true;
break;
@@ -552,13 +552,13 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 200;
_vm->_timers[4] = 100;
_stonerGuyShowingJoint = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJoint:
_nextStonerGuySequenceId = 0x16A;
break;
case kAS20ActionDone:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS20TalkGroceryStoreGuy:
gameSys.setAnimation(0x170, 21, 2);
@@ -609,7 +609,7 @@ void Scene20::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->invRemove(kItemCowboyHat);
_vm->invAdd(kItemGroceryStoreHat);
- _vm->_gnapActionStatus = kAS20SwitchGroceryStoreHatDone;
+ _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHatDone;
break;
case kAS20SwitchGroceryStoreHatDone:
gameSys.insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
@@ -626,11 +626,11 @@ void Scene20::updateAnimations() {
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->gnapWalkTo(3, 8, -1, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJointDone:
_vm->setGrabCursorSprite(kItemJoint);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -652,7 +652,7 @@ void Scene20::updateAnimations() {
gameSys.insertSequence(0x17D, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17D;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gnap->_actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
@@ -667,7 +667,7 @@ void Scene20::updateAnimations() {
gameSys.insertSequence(0x17E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x17E;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gnap->_actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
@@ -690,7 +690,7 @@ void Scene20::updateAnimations() {
gameSys.insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x175;
_nextGroceryStoreGuySequenceId = -1;
- _vm->_gnapActionStatus = kAS20ActionDone;
+ _vm->_gnap->_actionStatus = kAS20ActionDone;
break;
default:
if (_nextGroceryStoreGuySequenceId != -1) {
@@ -782,14 +782,14 @@ void Scene21::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS21Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS21Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -815,7 +815,7 @@ void Scene21::run() {
break;
case kHS21Banana:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
} else {
@@ -827,7 +827,7 @@ void Scene21::run() {
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
_vm->playGnapPullOutDevice(2, 5);
_vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kAS21GrabBanana;
+ _vm->_gnap->_actionStatus = kAS21GrabBanana;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -838,11 +838,11 @@ void Scene21::run() {
break;
case kHS21OldLady:
- if (_vm->_gnapActionStatus < 0) {
+ 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->_gnapActionStatus = kAS21UseHatWithOldLady;
+ _vm->_gnap->_actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 6, 7, 4);
} else {
@@ -854,13 +854,13 @@ void Scene21::run() {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(7, 6, 0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS21GrabOldLady;
+ _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->_gnapActionStatus = kAS21TalkOldLady;
+ _vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -871,11 +871,11 @@ void Scene21::run() {
break;
case kHS21ExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, 0, 0x107B3, 1);
- _vm->_gnapActionStatus = kAS21LeaveScene;
+ _vm->_gnap->_actionStatus = kAS21LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
@@ -902,7 +902,7 @@ void Scene21::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
- if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(30) + 50;
switch (_vm->getRandom(5)) {
case 0:
@@ -940,10 +940,10 @@ void Scene21::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS21TalkOldLady:
_nextOldLadySequenceId = 0x8B;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS21GrabBanana:
gameSys.setAnimation(0x8C, 59, 0);
@@ -951,11 +951,11 @@ void Scene21::updateAnimations() {
_vm->setFlag(kGFUnk04);
_vm->invAdd(kItemBanana);
updateHotspots();
- _vm->_gnapActionStatus = kAS21GrabBananaDone;
+ _vm->_gnap->_actionStatus = kAS21GrabBananaDone;
break;
case kAS21GrabBananaDone:
_vm->setGrabCursorSprite(kItemBanana);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS21GrabOldLady:
_vm->_timers[4] = _vm->getRandom(30) + 50;
@@ -966,7 +966,7 @@ void Scene21::updateAnimations() {
gameSys.insertSequence(0x8F, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x8F;
- _vm->_gnapActionStatus = kAS21UseHatWithOldLadyDone;
+ _vm->_gnap->_actionStatus = kAS21UseHatWithOldLadyDone;
_vm->invAdd(kItemTickets);
_vm->invRemove(kItemGroceryStoreHat);
_vm->setGrabCursorSprite(-1);
@@ -987,13 +987,13 @@ void Scene21::updateAnimations() {
gameSys.insertSequence(0x86, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x86;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else if (_nextOldLadySequenceId == 0x91) {
gameSys.setAnimation(0x91, 79, 0);
gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS21LeaveScene;
+ _vm->_gnap->_actionStatus = kAS21LeaveScene;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else {
@@ -1098,14 +1098,14 @@ void Scene22::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS22Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS22Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1131,27 +1131,27 @@ void Scene22::run() {
break;
case kHS22ExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS22LeaveScene;
+ _vm->_gnap->_actionStatus = kAS22LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
}
break;
case kHS22ExitBackGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 23;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS22LeaveScene;
+ _vm->_gnap->_actionStatus = kAS22LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1);
}
break;
case kHS22Cashier:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
} else {
@@ -1166,7 +1166,7 @@ void Scene22::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y,
0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS22TalkCashier;
+ _vm->_gnap->_actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
_vm->gnapUseDeviceOnPlatypus();
@@ -1239,7 +1239,7 @@ void Scene22::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS22LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1247,7 +1247,7 @@ void Scene22::updateAnimations() {
_nextCashierSequenceId = 0x5C;
break;
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
@@ -1322,14 +1322,14 @@ void Scene23::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS23Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS23Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1355,7 +1355,7 @@ void Scene23::run() {
break;
case kHS23Cereals:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
} else {
@@ -1366,7 +1366,7 @@ void Scene23::run() {
else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS23LookCereals;
+ _vm->_gnap->_actionStatus = kAS23LookCereals;
}
break;
case GRAB_CURSOR:
@@ -1377,7 +1377,7 @@ void Scene23::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
0, _vm->getGnapSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
- _vm->_gnapActionStatus = kAS23GrabCereals;
+ _vm->_gnap->_actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
}
break;
@@ -1391,18 +1391,18 @@ void Scene23::run() {
break;
case kHS23ExitFrontGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS23LeaveScene;
+ _vm->_gnap->_actionStatus = kAS23LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
}
break;
case kHS23WalkArea1:
case kHS23WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -1419,7 +1419,7 @@ void Scene23::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
- if (!_vm->_timers[4] && _vm->_gnapActionStatus == -1) {
+ if (!_vm->_timers[4] && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
switch (_vm->getRandom(4)) {
case 0:
@@ -1467,10 +1467,10 @@ void Scene23::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS23LookCereals:
_vm->showFullScreenSprite(0x48);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS23GrabCereals:
gameSys.setAnimation(0xBE, _vm->_gnapId, 0);
@@ -1478,11 +1478,11 @@ void Scene23::updateAnimations() {
gameSys.requestRemoveSequence(0xBF, 2);
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0xBE;
- _vm->_gnapActionStatus = kAS23GrabCerealsDone;
+ _vm->_gnap->_actionStatus = kAS23GrabCerealsDone;
break;
case kAS23GrabCerealsDone:
_vm->setGrabCursorSprite(kItemCereals);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS23LeaveScene:
_vm->_sceneDone = true;
@@ -1591,14 +1591,14 @@ void Scene24::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS24Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS24Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1624,22 +1624,22 @@ void Scene24::run() {
break;
case kHS24ExitCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS24LeaveScene;
+ _vm->_gnap->_actionStatus = kAS24LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHS24ExitOutsideGrubCity:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_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->_gnapActionStatus = kAS24LeaveScene;
+ _vm->_gnap->_actionStatus = kAS24LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
break;
@@ -1647,7 +1647,7 @@ void Scene24::run() {
case kHS24WalkArea1:
case kHS24WalkArea2:
case kHS24WalkArea3:
- if (_vm->_gnapActionStatus == -1)
+ if (_vm->_gnap->_actionStatus == -1)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -1729,9 +1729,9 @@ void Scene24::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kAS24LeaveScene)
+ if (_vm->_gnap->_actionStatus == kAS24LeaveScene)
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
}
@@ -1837,14 +1837,14 @@ void Scene25::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS25Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS25Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1870,9 +1870,9 @@ void Scene25::run() {
break;
case kHS25TicketVendor:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
- _vm->_gnapActionStatus = kAS25ShowTicketToVendor;
+ _vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y,
0, _vm->getGnapSequenceId(gskIdle, 9, 4) | 0x10000, 1);
_vm->playGnapPullOutDevice(0, 0);
@@ -1889,7 +1889,7 @@ void Scene25::run() {
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->_gnapActionStatus = kAS25TalkTicketVendor;
+ _vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -1901,29 +1901,29 @@ void Scene25::run() {
break;
case kHS25ExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, 0, 0x107B4, 1);
- _vm->_gnapActionStatus = kAS25LeaveScene;
+ _vm->_gnap->_actionStatus = kAS25LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
break;
case kHS25ExitInsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFNeedleTaken)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, 0, 0x107B1, 1);
- _vm->_gnapActionStatus = kAS25LeaveScene;
+ _vm->_gnap->_actionStatus = kAS25LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(4, 5, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicket;
+ _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicket;
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
}
}
@@ -1933,7 +1933,7 @@ void Scene25::run() {
case kHS25Posters2:
case kHS25Posters3:
case kHS25Posters4:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1961,7 +1961,7 @@ void Scene25::run() {
case kHS25WalkArea1:
case kHS25WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -1978,7 +1978,7 @@ void Scene25::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
_vm->updateGnapIdleSequence();
- if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnapActionStatus == -1) {
+ if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
switch (_vm->getRandom(13)) {
case 0:
@@ -2033,10 +2033,10 @@ void Scene25::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS25TalkTicketVendor:
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS25EnterCircusWihoutTicket:
_nextTicketVendorSequenceId = 0x5E;
@@ -2050,10 +2050,10 @@ void Scene25::updateAnimations() {
_vm->playGnapIdle(0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS25EnterCircusWihoutTicketDone;
+ _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone;
break;
case kAS25EnterCircusWihoutTicketDone:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS25ShowTicketToVendor:
_vm->setGrabCursorSprite(-1);
@@ -2061,7 +2061,7 @@ void Scene25::updateAnimations() {
_vm->setFlag(kGFNeedleTaken);
gameSys.setAnimation(0x61, 40, 0);
gameSys.insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = kAS25ShowTicketToVendorDone;
+ _vm->_gnap->_actionStatus = kAS25ShowTicketToVendorDone;
break;
case kAS25ShowTicketToVendorDone:
_nextTicketVendorSequenceId = 0x53;
@@ -2077,7 +2077,7 @@ void Scene25::updateAnimations() {
gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextTicketVendorSequenceId != -1) {
gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
@@ -2154,14 +2154,14 @@ void Scene26::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS26Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS26Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2187,53 +2187,53 @@ void Scene26::run() {
break;
case kHS26ExitOutsideCircusWorld:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS26LeaveScene;
+ _vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS26LeaveScene;
+ _vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitArcade:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS26LeaveScene;
+ _vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitElephant:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 30;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS26LeaveScene;
+ _vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitBeerStand:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS26LeaveScene;
+ _vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
case kHS26WalkArea1:
case kHS26WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -2288,9 +2288,9 @@ void Scene26::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kAS26LeaveScene)
+ if (_vm->_gnap->_actionStatus == kAS26LeaveScene)
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
@@ -2382,20 +2382,20 @@ void Scene27::run() {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->_sceneClickedHotspot = -1;
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
case kHS27Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS27Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2421,11 +2421,11 @@ void Scene27::run() {
break;
case kHS27Janitor:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemPicture) {
_vm->_gnap->_idleFacing = kDirUpLeft;
if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, 0x107BC, 1))
- _vm->_gnapActionStatus = kAS27ShowPictureToJanitor;
+ _vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
} else {
@@ -2436,7 +2436,7 @@ void Scene27::run() {
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->_gnapActionStatus = kAS27TalkJanitor;
+ _vm->_gnap->_actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2448,7 +2448,7 @@ void Scene27::run() {
break;
case kHS27Bucket:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
} else {
@@ -2459,7 +2459,7 @@ void Scene27::run() {
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->_gnapActionStatus = kAS27GrabBucket;
+ _vm->_gnap->_actionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -2471,59 +2471,59 @@ void Scene27::run() {
break;
case kHS27ExitCircus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, -1, 0x107C7, 1);
}
break;
case kHS27ExitArcade:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade].x, _vm->_hotspotsWalkPos[kHS27ExitArcade].y + 1, -1, 0x107CF, 1);
}
break;
case kHS27ExitBeerStand:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand].x, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y + 1, -1, 0x107CD, 1);
}
break;
case kHS27ExitClown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 28;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, _vm->_hotspotsWalkPos[kHS27ExitClown].y, 0, 0x107AD, 1);
- _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x + 1, _vm->_hotspotsWalkPos[kHS27ExitClown].y, -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7, 0, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE;
- _vm->_gnapActionStatus = kAS27TryEnterClownTent;
+ _vm->_gnap->_actionStatus = kAS27TryEnterClownTent;
}
}
break;
case kHS27WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -2538,13 +2538,13 @@ void Scene27::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (_vm->_debugLevel == 4)
_vm->updateIdleTimer();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->getRandom(3) != 0)
_nextJanitorSequenceId = 0xCB;
else
@@ -2553,7 +2553,7 @@ void Scene27::run() {
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
gameSys.insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
@@ -2576,7 +2576,7 @@ void Scene27::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS27TalkJanitor:
switch (_vm->getRandom(3)) {
case 0:
@@ -2598,11 +2598,11 @@ void Scene27::updateAnimations() {
_vm->setFlag(kGFUnk13);
gameSys.setAnimation(0xD2, 39, 0);
gameSys.insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS27GrabBucketDone;
+ _vm->_gnap->_actionStatus = kAS27GrabBucketDone;
break;
case kAS27GrabBucketDone:
_vm->setGrabCursorSprite(kItemEmptyBucket);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS27ShowPictureToJanitor:
_nextJanitorSequenceId = 0xD0;
@@ -2614,17 +2614,17 @@ void Scene27::updateAnimations() {
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
- _vm->_gnapActionStatus = kAS27TryEnterClownTentDone;
+ _vm->_gnap->_actionStatus = kAS27TryEnterClownTentDone;
break;
case kAS27TryEnterClownTentDone:
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS27EnterClownTent:
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107B2, 1);
- _vm->_gnapActionStatus = kAS27LeaveScene;
+ _vm->_gnap->_actionStatus = kAS27LeaveScene;
break;
case kAS27LeaveScene:
_vm->_sceneDone = true;
@@ -2644,7 +2644,7 @@ void Scene27::updateAnimations() {
case 0xCC:
case 0xCD:
case 0xCE:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
@@ -2657,7 +2657,7 @@ void Scene27::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
- _vm->_gnapActionStatus = kAS27EnterClownTent;
+ _vm->_gnap->_actionStatus = kAS27EnterClownTent;
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
_vm->setFlag(kGFPlatypus);
@@ -2742,12 +2742,12 @@ void Scene28::run() {
gameSys.insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_nextClownSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 80;
- _vm->_gnapActionStatus = kAS28GnapWaiting;
+ _vm->_gnap->_actionStatus = kAS28GnapWaiting;
while (gameSys.getAnimationStatus(3) != 2) {
_vm->gameUpdateTick();
_vm->updateMouseCursor();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
while (!_vm->_sceneDone) {
@@ -2759,14 +2759,14 @@ void Scene28::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS28Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS28Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2792,7 +2792,7 @@ void Scene28::run() {
break;
case kHS28Horn:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(2, 8, 3, 4);
} else {
@@ -2804,7 +2804,7 @@ void Scene28::run() {
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->_gnapActionStatus = kAS28GrabHornSuccess;
+ _vm->_gnap->_actionStatus = kAS28GrabHornSuccess;
}
} else {
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -2812,7 +2812,7 @@ void Scene28::run() {
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y, 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS28GrabHornFails;
+ _vm->_gnap->_actionStatus = kAS28GrabHornFails;
}
break;
case TALK_CURSOR:
@@ -2825,7 +2825,7 @@ void Scene28::run() {
break;
case kHS28Clown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk21)) {
if (_vm->_verbCursor == LOOK_CURSOR)
_vm->playGnapScratchingHead(5, 2);
@@ -2836,13 +2836,13 @@ void Scene28::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kAS28UseBeerBucketWithClown;
+ _vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
- _vm->_gnapActionStatus = kAS28UsePillBucketWithClown;
+ _vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
} else {
@@ -2853,7 +2853,7 @@ void Scene28::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS28TalkClown;
+ _vm->_gnap->_actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2865,19 +2865,19 @@ void Scene28::run() {
break;
case kHS28ExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, 0, 0x107BF, 1);
- _vm->_gnapActionStatus = kAS28LeaveScene;
+ _vm->_gnap->_actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, -1, 0x107C2, 1);
}
break;
case kHS28EmptyBucket:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
} else if (_vm->isFlag(kGFUnk21)) {
@@ -2889,7 +2889,7 @@ void Scene28::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->getGnapSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS28GrabEmptyBucket;
+ _vm->_gnap->_actionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -2902,12 +2902,12 @@ void Scene28::run() {
case kHS28WalkArea1:
case kHS28WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -2924,7 +2924,7 @@ void Scene28::run() {
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 80;
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFUnk21))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFUnk21))
_nextClownSequenceId = 0x114;
}
}
@@ -2946,7 +2946,7 @@ void Scene28::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS28UseBeerBucketWithClown:
_vm->setFlag(kGFUnk22);
_nextClownSequenceId = 0x113;
@@ -2968,7 +2968,7 @@ void Scene28::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.setAnimation(0x117, 59, 0);
gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS28GrabHornSuccessDone;
+ _vm->_gnap->_actionStatus = kAS28GrabHornSuccessDone;
break;
case kAS28GrabHornSuccessDone:
_vm->hideCursor();
@@ -2983,21 +2983,21 @@ void Scene28::updateAnimations() {
_vm->setGrabCursorSprite(kItemHorn);
_vm->invAdd(kItemHorn);
updateHotspots();
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS28GrabEmptyBucket:
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
gameSys.setAnimation(0x111, 99, 0);
gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS28GrabEmptyBucketDone;
+ _vm->_gnap->_actionStatus = kAS28GrabEmptyBucketDone;
break;
case kAS28GrabEmptyBucketDone:
_vm->setGrabCursorSprite(kItemEmptyBucket);
_vm->clearFlag(kGFUnk22);;
updateHotspots();
_vm->invAdd(kItemEmptyBucket);
- _vm->_gnapActionStatus = -1;
+ _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);
@@ -3006,7 +3006,7 @@ void Scene28::updateAnimations() {
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->gnapWalkTo(2, 8, -1, 0x107BB, 1);
break;
case kAS28TalkClown:
@@ -3019,7 +3019,7 @@ void Scene28::updateAnimations() {
_nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
break;
case kAS28GnapWaiting:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS28LeaveScene:
_vm->_sceneDone = true;
@@ -3037,7 +3037,7 @@ void Scene28::updateAnimations() {
gameSys.insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = kAS28GnapWaiting;
+ _vm->_gnap->_actionStatus = kAS28GnapWaiting;
break;
case 0x116:
_vm->setGrabCursorSprite(-1);
@@ -3048,18 +3048,18 @@ void Scene28::updateAnimations() {
gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
- _vm->_gnapActionStatus = kAS28GnapWaiting;
+ _vm->_gnap->_actionStatus = kAS28GnapWaiting;
break;
case 0x11D:
case 0x11E:
case 0x11F:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case 0x119:
gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextClownSequenceId, 39, 0);
gameSys.removeSequence(_currClownSequenceId, 39, true);
- _vm->_gnapActionStatus = kAS28GrabHornFailsDone;
+ _vm->_gnap->_actionStatus = kAS28GrabHornFailsDone;
_vm->_gnapSequenceId = _nextClownSequenceId;
_vm->_gnapSequenceDatNum = 0;
_nextClownSequenceId = -1;
@@ -3150,14 +3150,14 @@ void Scene29::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS29Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS29Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -3183,11 +3183,11 @@ void Scene29::run() {
break;
case kHS29Monkey:
- if (_vm->_gnapActionStatus < 0) {
+ 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->_gnapActionStatus = kAS29UseBananaWithMonkey;
+ _vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
@@ -3211,34 +3211,34 @@ void Scene29::run() {
break;
case kHS29ExitCircus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->_gnap->_actionStatus = kAS29LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, -1, -1, 1);
}
break;
case kHS29ExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->_gnap->_actionStatus = kAS29LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y - 1, -1, 0x107CD, 1);
}
break;
case kHS29Aracde:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->setGrabCursorSprite(-1);
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
- _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->_gnap->_actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
} else {
@@ -3257,7 +3257,7 @@ void Scene29::run() {
break;
case kHS29WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -3275,14 +3275,14 @@ void Scene29::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->updateGnapIdleSequence();
_vm->updatePlatypusIdleSequence();
}
if (!_vm->_timers[4]) {
if (_vm->invHas(kItemHorn)) {
_vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
switch (_vm->getRandom(5)) {
case 0:
_nextManSequenceId = 0xED;
@@ -3323,7 +3323,7 @@ void Scene29::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS29UseBananaWithMonkey:
_nextMonkeySequenceId = 0xE5;
break;
@@ -3349,7 +3349,7 @@ void Scene29::updateAnimations() {
gameSys.setAnimation(0, 159, 4);
gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = kAS29LeaveScene;
+ _vm->_gnap->_actionStatus = kAS29LeaveScene;
_currMonkeySequenceId = 0xE6;
_nextMonkeySequenceId = -1;
_vm->_timers[5] = 30;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 0e14ea9..0698abb 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -79,14 +79,14 @@ void Scene30::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS30Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS30Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -112,12 +112,12 @@ void Scene30::run() {
break;
case kHS30PillMachine:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
_vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 0, 0x107BC, 1);
_vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS30UsePillMachine;
+ _vm->_gnap->_actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
@@ -125,7 +125,7 @@ void Scene30::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapWalkTo(9, 8, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS30LookPillMachine;
+ _vm->_gnap->_actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
_vm->playGnapScratchingHead(8, 5);
@@ -140,20 +140,20 @@ void Scene30::run() {
break;
case kHS30ExitCircus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
if (hasTakenPill)
_vm->_newSceneNum = 47;
else
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS30LeaveScene;
+ _vm->_gnap->_actionStatus = kAS30LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, -1, 0x107C2, 1);
}
break;
case kHS30WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -172,11 +172,11 @@ void Scene30::run() {
if (!_vm->_isLeavingScene) {
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->getRandom(5) == 1) {
gameSys.insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -188,7 +188,7 @@ void Scene30::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
gameSys.insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -215,7 +215,7 @@ void Scene30::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS30LeaveScene:
_vm->_sceneDone = true;
break;
@@ -225,7 +225,7 @@ void Scene30::updateAnimations() {
gameSys.insertSequence(0x105, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x105;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS30UsePillMachine2;
+ _vm->_gnap->_actionStatus = kAS30UsePillMachine2;
break;
case kAS30UsePillMachine2:
_vm->hideCursor();
@@ -240,7 +240,7 @@ void Scene30::updateAnimations() {
gameSys.insertSequence(0x103, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->removeFullScreenSprite();
_vm->showCursor();
- _vm->_gnapActionStatus = kAS30UsePillMachine3;
+ _vm->_gnap->_actionStatus = kAS30UsePillMachine3;
_vm->invAdd(kItemPill);
_vm->setFlag(kGFUnk23);
break;
@@ -249,20 +249,20 @@ void Scene30::updateAnimations() {
gameSys.insertSequence(0x104, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, 0x103), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
_vm->_gnapSequenceId = 0x104;
_vm->_gnapSequenceDatNum = 0;
- _vm->_gnapActionStatus = kAS30UsePillMachine4;
+ _vm->_gnap->_actionStatus = kAS30UsePillMachine4;
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
case kAS30UsePillMachine4:
gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS30LookPillMachine:
if (_vm->isFlag(kGFUnk23))
_vm->showFullScreenSprite(0xE3);
else
_vm->showFullScreenSprite(0xE2);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -334,14 +334,14 @@ void Scene31::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS31Device:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS31Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->gnapUseJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -367,8 +367,8 @@ void Scene31::run() {
break;
case kHS31MeasuringClown:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
- if (_vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_verbCursor == LOOK_CURSOR)
_vm->playGnapScratchingHead(2, 2);
else
@@ -385,7 +385,7 @@ void Scene31::run() {
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 0, 0x107B9, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnapActionStatus = kAS31UseMeasuringClown;
+ _vm->_gnap->_actionStatus = kAS31UseMeasuringClown;
_vm->_timers[4] = 300;
break;
case TALK_CURSOR:
@@ -398,8 +398,8 @@ void Scene31::run() {
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_platypusActionStatus = kAS31PlatMeasuringClown;
- _vm->_gnapActionStatus = kAS31PlatMeasuringClown;
+ _vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
+ _vm->_gnap->_actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
_vm->playGnapImpossible(0, 0);
@@ -410,7 +410,7 @@ void Scene31::run() {
break;
case kHS31BeerBarrel:
- if (_vm->_gnapActionStatus < 0 || _vm->_gnapActionStatus == kAS31PlatMeasuringClown) {
+ 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);
@@ -419,7 +419,7 @@ void Scene31::run() {
_vm->playGnapPullOutDevice(6, 8);
_vm->playGnapUseDevice(0, 0);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeer;
+ _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
@@ -433,7 +433,7 @@ void Scene31::run() {
_vm->playGnapScratchingHead(6, 2);
} else {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS31UseBeerBarrel;
+ _vm->_gnap->_actionStatus = kAS31UseBeerBarrel;
_vm->_gnap->_idleFacing = kDirUpLeft;
}
break;
@@ -447,27 +447,27 @@ void Scene31::run() {
break;
case kHS31ExitCircus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS31LeaveScene;
+ _vm->_gnap->_actionStatus = kAS31LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, -1, -1, 1);
}
break;
case kHS31ExitOutsideClown:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS31LeaveScene;
+ _vm->_gnap->_actionStatus = kAS31LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y + 1, -1, 0x107CF, 1);
}
break;
case kHS31WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
@@ -485,13 +485,13 @@ void Scene31::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnapActionStatus < 0 && _nextClerkSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _nextClerkSequenceId == -1) {
switch (_vm->getRandom(6)){
case 0:
_nextClerkSequenceId = 0xFF;
@@ -510,7 +510,7 @@ void Scene31::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->getRandom(2) != 0)
gameSys.insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -537,7 +537,7 @@ void Scene31::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS31UseBeerBarrel:
_nextClerkSequenceId = 0xFE;
break;
@@ -548,14 +548,14 @@ void Scene31::updateAnimations() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapSequenceId = 0x102;
_vm->_gnapId = 59;
- _vm->_gnapActionStatus = kAS31FillEmptyBucketWithBeerDone;
+ _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeerDone;
break;
case kAS31FillEmptyBucketWithBeerDone:
_vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
_vm->invRemove(kItemEmptyBucket);
_vm->setGrabCursorSprite(kItemBucketWithBeer);
@@ -566,14 +566,14 @@ void Scene31::updateAnimations() {
break;
case kAS31LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_platypusActionStatus == kAS31PlatMeasuringClown) {
+ if (_vm->_plat->_actionStatus == kAS31PlatMeasuringClown) {
_vm->_sceneWaiting = true;
_beerGuyDistracted = true;
_nextClerkSequenceId = 0xFA;
@@ -593,14 +593,14 @@ void Scene31::updateAnimations() {
case 0xFC:
++_clerkMeasureCtr;
if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) {
- if (_vm->_gnapActionStatus != 5)
- _vm->_platypusActionStatus = -1;
+ if (_vm->_gnap->_actionStatus != 5)
+ _vm->_plat->_actionStatus = -1;
_vm->_timers[0] = 40;
gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
_nextClerkSequenceId = -1;
- if (_vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnapActionStatus != kAS31FillEmptyBucketWithBeer)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeer)
+ _vm->_gnap->_actionStatus = -1;
_beerGuyDistracted = false;
_clerkMeasureMaxCtr = 3;
gameSys.setAnimation(0xFD, 39, 3);
@@ -617,7 +617,7 @@ void Scene31::updateAnimations() {
gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
default:
if (_nextClerkSequenceId != -1) {
@@ -685,14 +685,14 @@ void Scene32::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS32Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS32Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -716,11 +716,11 @@ void Scene32::run() {
break;
case kHS32ExitTruck:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS32LeaveScene;
+ _vm->_gnap->_actionStatus = kAS32LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y + 1, -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
@@ -734,13 +734,13 @@ void Scene32::run() {
case kHS32WalkArea6:
case kHS32WalkArea7:
case kHS32WalkArea8:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
@@ -751,9 +751,9 @@ void Scene32::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -781,7 +781,7 @@ void Scene32::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kAS32LeaveScene)
+ if (_vm->_gnap->_actionStatus == kAS32LeaveScene)
_vm->_sceneDone = true;
}
}
@@ -861,14 +861,14 @@ void Scene33::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS33Device:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS33Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -892,7 +892,7 @@ void Scene33::run() {
break;
case kHS33Chicken:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(7, 9, 9, 8);
} else {
@@ -900,14 +900,14 @@ void Scene33::run() {
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))
- _vm->_gnapActionStatus = kAS33UseChicken;
+ _vm->_gnap->_actionStatus = kAS33UseChicken;
else
- _vm->_gnapActionStatus = -1;
+ _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->_gnapActionStatus = kAS33TalkChicken;
+ _vm->_gnap->_actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
@@ -919,9 +919,9 @@ void Scene33::run() {
break;
case kHS33ExitHouse:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 37;
if (_vm->_gnap->_pos.x > 6)
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
@@ -931,9 +931,9 @@ void Scene33::run() {
break;
case kHS33ExitBarn:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 35;
if (_vm->_gnap->_pos.x > 7)
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
@@ -943,20 +943,20 @@ void Scene33::run() {
break;
case kHS33ExitCreek:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
}
break;
case kHS33ExitPigpen:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS33LeaveScene;
+ _vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
}
@@ -964,12 +964,12 @@ void Scene33::run() {
case kHS33WalkArea1:
case kHS33WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -982,9 +982,9 @@ void Scene33::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -993,7 +993,7 @@ void Scene33::run() {
else
gameSys.insertSequence(0x82, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnapActionStatus != kAS33TalkChicken && _vm->_gnapActionStatus != kAS33UseChicken) {
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != kAS33TalkChicken && _vm->_gnap->_actionStatus != kAS33UseChicken) {
if (_vm->getRandom(6) != 0) {
_nextChickenSequenceId = 0x7E;
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -1020,7 +1020,7 @@ void Scene33::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS33LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1038,11 +1038,11 @@ void Scene33::updateAnimations() {
_currChickenSequenceId = 0x7E;
gameSys.setAnimation(0x7E, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->_timers[5] = 30;
break;
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -1054,14 +1054,14 @@ void Scene33::updateAnimations() {
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
- _vm->_gnapActionStatus = kAS33UseChickenDone;
+ _vm->_gnap->_actionStatus = kAS33UseChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x7F) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
@@ -1098,21 +1098,21 @@ void Scene38::updateHotspots() {
_vm->setHotspot(kHS38WalkArea5, 770, 0, 799, 445);
_vm->setHotspot(kHS38WalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
_vm->setDeviceHotspot(kHS38Device, -1, -1, -1, -1);
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38Platypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
- else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_DISABLED;
- else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_DISABLED;
- else if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
+ else if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38WalkArea6]._flags = SF_NONE;
_vm->_hotspotsCount = 13;
}
@@ -1144,8 +1144,8 @@ void Scene38::run() {
break;
case kHS38Platypus:
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -1168,42 +1168,42 @@ void Scene38::run() {
break;
case kHS38ExitHouse:
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
} else {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS38LeaveScene;
+ _vm->_gnap->_actionStatus = kAS38LeaveScene;
_vm->_newSceneNum = 37;
}
break;
case kHS38ExitCave:
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) {
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_isLeavingScene = true;
- } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
_vm->_sceneWaiting = false;
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
- _vm->_gnapActionStatus = kAS38ExitCave;
+ _vm->_gnap->_actionStatus = kAS38ExitCave;
}
break;
case kHS38TrapDoorLid1:
case kHS38TrapDoorLid2:
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy) {
- if (_vm->_verbCursor == PLAT_CURSOR && _vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
- _vm->_gnapActionStatus = kAS38UsePlatypusWithTrapDoor;
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) {
+ if (_vm->_verbCursor == PLAT_CURSOR && _vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
+ _vm->_gnap->_actionStatus = kAS38UsePlatypusWithTrapDoor;
else
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
}
break;
case kHS38HuntingTrophy:
- if (_vm->_gnapActionStatus != kAS38HoldingHuntingTrophy) {
+ if (_vm->_gnap->_actionStatus != kAS38HoldingHuntingTrophy) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(3, 6, 2, 0);
} else {
@@ -1212,12 +1212,12 @@ void Scene38::run() {
_vm->playGnapScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->playGnapImpossible(0, 0);
else {
_vm->gnapWalkTo(3, 6, 0, 0x107BB, 1);
_vm->platypusWalkTo(4, 8, -1, -1, 1);
- _vm->_gnapActionStatus = kAS38UseHuntingTrophy;
+ _vm->_gnap->_actionStatus = kAS38UseHuntingTrophy;
}
break;
case TALK_CURSOR:
@@ -1240,17 +1240,17 @@ void Scene38::run() {
case kHS38WalkArea4:
case kHS38WalkArea5:
case kHS38WalkArea6:
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
- else if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
+ else if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- if (_vm->_gnapActionStatus == kAS38HoldingHuntingTrophy)
- _vm->_gnapActionStatus = kAS38ReleaseHuntingTrophy;
- else if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
+ _vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
+ else if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -1281,7 +1281,7 @@ void Scene38::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS38LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1291,7 +1291,7 @@ void Scene38::updateAnimations() {
_vm->_gnapSequenceId = 0xA3;
_vm->_gnapSequenceDatNum = 0;
gameSys.setAnimation(0xA3, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS38LeaveScene;
+ _vm->_gnap->_actionStatus = kAS38LeaveScene;
break;
case kAS38UseHuntingTrophy:
gameSys.removeSequence(0x9B, 0, true);
@@ -1299,11 +1299,11 @@ void Scene38::updateAnimations() {
_vm->_gnapSequenceId = 0x9C;
_vm->_gnapSequenceDatNum = 0;
gameSys.setAnimation(0x9C, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
+ _vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy;
updateHotspots();
break;
case kAS38HoldingHuntingTrophy:
- if (_vm->_platypusActionStatus != kAS38PlatypusHoldingTrapDoor)
+ 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);
@@ -1318,8 +1318,8 @@ void Scene38::updateAnimations() {
case kAS38ReleaseHuntingTrophy:
if (_vm->_gnapSequenceId == 0x9E) {
gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnapActionStatus = -1;
- } else if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ _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;
@@ -1329,9 +1329,9 @@ void Scene38::updateAnimations() {
_vm->_sceneWaiting = false;
_vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
- _vm->_gnapActionStatus = kAS38ExitCave;
+ _vm->_gnap->_actionStatus = kAS38ExitCave;
} else {
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
} else {
gameSys.insertSequence(0x9E, _vm->_gnapId, makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, kSeqSyncWait, 0, 0, 0);
@@ -1350,7 +1350,7 @@ void Scene38::updateAnimations() {
_vm->_gnapSequenceId = 0x9F;
_vm->_gnapSequenceDatNum = 0;
gameSys.setAnimation(0x9F, _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS38HoldingHuntingTrophy;
+ _vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy;
if (_vm->_plat->_idleFacing != kDirNone)
_vm->playPlatypusSequence(0x107D5);
else
@@ -1361,7 +1361,7 @@ void Scene38::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
_vm->_platypusId = _vm->_gnapId + 1;
gameSys.setAnimation(0xA1, _vm->_gnapId + 1, 1);
- _vm->_platypusActionStatus = kAS38PlatypusHoldingTrapDoor;
+ _vm->_plat->_actionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
}
@@ -1369,7 +1369,7 @@ void Scene38::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_platypusActionStatus == kAS38PlatypusHoldingTrapDoor) {
+ 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;
@@ -1451,7 +1451,7 @@ void Scene39::run() {
break;
case kHS39Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -1475,17 +1475,17 @@ void Scene39::run() {
break;
case kHS39ExitUfoParty:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS39LeaveScene;
+ _vm->_gnap->_actionStatus = kAS39LeaveScene;
_vm->_newSceneNum = 40;
}
break;
case kHS39Sign:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(0, 0);
} else {
@@ -1506,7 +1506,7 @@ void Scene39::run() {
break;
case kHS39ExitInsideHouse:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_sceneDone = true;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 38;
@@ -1515,12 +1515,12 @@ void Scene39::run() {
case kHS39WalkArea1:
case kHS39WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -1530,9 +1530,9 @@ void Scene39::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->updateGnapIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 50;
@@ -1571,10 +1571,10 @@ void Scene39::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus == kAS39LeaveScene)
+ if (_vm->_gnap->_actionStatus == kAS39LeaveScene)
_vm->_sceneDone = true;
else
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextGuySequenceId != -1) {
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 861283a..7ecaf23 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -74,7 +74,7 @@ void Scene40::run() {
break;
case kHS40Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -98,56 +98,56 @@ void Scene40::run() {
break;
case kHS40ExitCave:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 39;
_vm->_sceneDone = true;
}
break;
case kHS40ExitToyStand:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 41;
_vm->_sceneDone = true;
}
break;
case kHS40ExitBBQ:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 42;
_vm->_sceneDone = true;
}
break;
case kHS40ExitUfo:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 43;
_vm->_sceneDone = true;
}
break;
case kHS40ExitKissinBooth:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 44;
_vm->_sceneDone = true;
}
break;
case kHS40ExitDancefloor:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 45;
_vm->_sceneDone = true;
}
break;
case kHS40ExitShoe:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_newSceneNum = 46;
_vm->_sceneDone = true;
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0)
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0)
_vm->_mouseClickState._left = false;
break;
@@ -171,8 +171,8 @@ void Scene40::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnapActionStatus)
- _vm->_gnapActionStatus = -1;
+ if (_vm->_gnap->_actionStatus)
+ _vm->_gnap->_actionStatus = -1;
else
_vm->_sceneDone = true;
}
@@ -228,7 +228,7 @@ void Scene41::run() {
if (_vm->_toyUfoY < 0 || _vm->_toyUfoY > 300)
_vm->_toyUfoY = 150;
if (!_vm->_timers[9])
- _vm->_gnapActionStatus = kAS41GiveBackToyUfo;
+ _vm->_gnap->_actionStatus = kAS41GiveBackToyUfo;
} else {
if (!_vm->isFlag(kGFUnk16) && !_vm->isFlag(kGFJointTaken) && !_vm->isFlag(kGFUnk18) && !_vm->isFlag(kGFGroceryStoreHatTaken))
_vm->toyUfoSetStatus(kGFUnk16);
@@ -349,7 +349,7 @@ void Scene41::run() {
break;
case kHS41Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -375,14 +375,14 @@ void Scene41::run() {
case kHS41ExitCave:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave].x, _vm->_hotspotsWalkPos[kHS41ExitCave].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->_newSceneNum = 40;
break;
case kHS41Exit:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
break;
@@ -390,14 +390,14 @@ void Scene41::run() {
case kHS41ExitBBQ:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS41LeaveScene;
+ _vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
break;
case kHS41ToyVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnapActionStatus = kAS41UseQuarterWithToyVendor;
+ _vm->_gnap->_actionStatus = kAS41UseQuarterWithToyVendor;
_vm->gnapWalkTo(4, 7, 0, 0x107BB, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -413,7 +413,7 @@ void Scene41::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(4, 7, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = kAS41TalkToyVendor;
+ _vm->_gnap->_actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -426,7 +426,7 @@ void Scene41::run() {
if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS41UseChickenBucketWithKid;
+ _vm->_gnap->_actionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(7, 7, 8, 0);
} else {
@@ -437,7 +437,7 @@ void Scene41::run() {
case GRAB_CURSOR:
_vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnapActionStatus = kAS41GrabKid;
+ _vm->_gnap->_actionStatus = kAS41GrabKid;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -454,20 +454,20 @@ void Scene41::run() {
if (_vm->_grabCursorSpriteIndex == kItemGum) {
_vm->playGnapPullOutDevice(9, 0);
gameSys.setAnimation(makeRid(_vm->_gnapSequenceDatNum, _vm->_gnapSequenceId), _vm->_gnapId, 0);
- _vm->_gnapActionStatus = kAS41UseGumWithToyUfo;
+ _vm->_gnap->_actionStatus = kAS41UseGumWithToyUfo;
}
break;
case kHS41WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
- if (!_vm->_timers[9] && _vm->_gnapActionStatus < 0) {
- _vm->_gnapActionStatus = kAS41GiveBackToyUfo;
+ 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;
@@ -477,7 +477,7 @@ void Scene41::run() {
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
int sequenceId;
@@ -510,13 +510,13 @@ void Scene41::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0)
+ if (_vm->_plat->_actionStatus < 0)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
switch (_vm->getRandom(3)) {
case 0:
_nextToyVendorSequenceId = 0x113;
@@ -534,7 +534,7 @@ void Scene41::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
if (_vm->isFlag(kGFGnapControlsToyUFO))
_nextKidSequenceId = 0x11B;
else if (_vm->getRandom(3) != 0)
@@ -562,26 +562,26 @@ void Scene41::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS41LeaveScene:
gameSys.setAnimation(0, 0, 0);
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS41UseQuarterWithToyVendor:
gameSys.setAnimation(0, 0, 0);
_nextToyVendorSequenceId = 0x114;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS41TalkToyVendor:
gameSys.setAnimation(0, 0, 0);
_nextToyVendorSequenceId = 0x116;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
case kAS41UseGumWithToyUfo:
gameSys.setAnimation(0, 0, 0);
_vm->playGnapUseDevice(9, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemGum);
_vm->_toyUfoActionStatus = kAS41UfoGumAttached;
@@ -601,7 +601,7 @@ void Scene41::updateAnimations() {
_currKidSequenceId = _nextKidSequenceId;
_nextKidSequenceId = 0x11B;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->setFlag(kGFGnapControlsToyUFO);
updateHotspots();
_vm->_timers[9] = 600;
@@ -627,7 +627,7 @@ void Scene41::updateAnimations() {
_currKidSequenceId = _nextKidSequenceId;
_nextKidSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
break;
case kAS41GiveBackToyUfo:
@@ -652,7 +652,7 @@ void Scene41::updateAnimations() {
_currKidSequenceId = _nextKidSequenceId;
_nextKidSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->clearFlag(kGFGnapControlsToyUFO);
updateHotspots();
}
@@ -861,7 +861,7 @@ void Scene42::run() {
break;
case kHS42Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -887,7 +887,7 @@ void Scene42::run() {
case kHS42ExitUfoParty:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -895,7 +895,7 @@ void Scene42::run() {
case kHS42ExitToyStand:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
break;
@@ -903,7 +903,7 @@ void Scene42::run() {
case kHS42ExitUfo:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = kAS42LeaveScene;
+ _vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
break;
@@ -911,7 +911,7 @@ void Scene42::run() {
case kHS42BBQVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, 0x107BB, 1);
- _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendor;
+ _vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendor;
if (_vm->_plat->_pos.y < 9)
_vm->platypusWalkTo(_vm->_plat->_pos.x, 9, -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -924,7 +924,7 @@ void Scene42::run() {
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->_gnapActionStatus = kAS42TalkBBQVendor;
+ _vm->_gnap->_actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -944,7 +944,7 @@ void Scene42::run() {
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, 0, 0x107BC, 1);
- _vm->_gnapActionStatus = kAS42GrabChickenLeg;
+ _vm->_gnap->_actionStatus = kAS42GrabChickenLeg;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -956,14 +956,14 @@ void Scene42::run() {
case kHS42WalkArea1:
case kHS42WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoActionStatus = kAS42ToyUfoRefresh;
@@ -978,13 +978,13 @@ void Scene42::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 30;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextBBQVendorSequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextBBQVendorSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
_nextBBQVendorSequenceId = 0x14C;
@@ -1026,22 +1026,22 @@ void Scene42::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case kAS42LeaveScene:
gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_vm->_sceneDone = true;
break;
case kAS42TalkBBQVendor:
gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
_nextBBQVendorSequenceId = 0x14B;
break;
case kAS42UseQuarterWithBBQVendor:
case kAS42GrabChickenLeg:
if (gameSys.getAnimationStatus(2) == 2) {
int sequenceId;
- if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor) {
+ if (_vm->_gnap->_actionStatus == kAS42UseQuarterWithBBQVendor) {
_vm->invRemove(kItemDiceQuarterHole);
_vm->invAdd(kItemChickenBucket);
_vm->setGrabCursorSprite(-1);
@@ -1075,10 +1075,10 @@ void Scene42::updateAnimations() {
}
_vm->_gnapSequenceId = sequenceId;
gameSys.setAnimation(sequenceId | (_vm->_gnapSequenceDatNum << 16), _vm->_gnapId, 0);
- if (_vm->_gnapActionStatus == kAS42UseQuarterWithBBQVendor)
- _vm->_gnapActionStatus = kAS42UseQuarterWithBBQVendorDone;
+ if (_vm->_gnap->_actionStatus == kAS42UseQuarterWithBBQVendor)
+ _vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendorDone;
else
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
gameSys.insertSequence(_nextBBQVendorSequenceId, 1, _currBBQVendorSequenceId, 1, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextBBQVendorSequenceId, 1, 2);
_currBBQVendorSequenceId = _nextBBQVendorSequenceId;
@@ -1094,11 +1094,11 @@ void Scene42::updateAnimations() {
case kAS42UseQuarterWithBBQVendorDone:
gameSys.setAnimation(0, 0, 0);
_vm->setGrabCursorSprite(kItemChickenBucket);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
default:
gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -1319,7 +1319,7 @@ void Scene43::run() {
break;
case kHS43Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -1345,7 +1345,7 @@ void Scene43::run() {
case kHS43ExitUfoParty:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -1353,7 +1353,7 @@ void Scene43::run() {
case kHS43ExitBBQ:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
break;
@@ -1361,7 +1361,7 @@ void Scene43::run() {
case kHS43ExitKissinBooth:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
break;
@@ -1377,7 +1377,7 @@ void Scene43::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(5, 8, 0, _vm->getGnapSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
- _vm->_gnapActionStatus = 2;
+ _vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -1399,7 +1399,7 @@ void Scene43::run() {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(3, 7, 0, 67515, 1);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -1411,13 +1411,13 @@ void Scene43::run() {
case kHS43WalkArea1:
case kHS43WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO) && (_vm->_toyUfoActionStatus == 5 || _vm->_toyUfoActionStatus == -1)) {
_vm->_toyUfoActionStatus = 5;
@@ -1432,13 +1432,13 @@ void Scene43::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
switch (_vm->getRandom(5)) {
case 0:
_nextTwoHeadedGuySequenceId = 0x13C;
@@ -1482,7 +1482,7 @@ void Scene43::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case 0:
gameSys.setAnimation(0, 0, 0);
_vm->_sceneDone = true;
@@ -1502,13 +1502,13 @@ void Scene43::updateAnimations() {
_currTwoHeadedGuySequenceId = _nextTwoHeadedGuySequenceId;
_nextTwoHeadedGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(100) + 100;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
break;
default:
gameSys.setAnimation(0, 0, 0);
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -1560,7 +1560,7 @@ void Scene43::updateAnimations() {
gameSys.setAnimation(0x10874, _vm->_toyUfoId, 3);
_vm->_toyUfoActionStatus = 8;
_vm->setFlag(kGFJointTaken);
- _vm->_gnapActionStatus = 3;
+ _vm->_gnap->_actionStatus = 3;
break;
case 8:
_nextTwoHeadedGuySequenceId = 0x13A;
@@ -1767,7 +1767,7 @@ void Scene44::run() {
break;
case kHS44Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -1793,14 +1793,14 @@ void Scene44::run() {
case kHS44ExitUfoParty:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS44ExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS44ExitUfo:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
@@ -1808,13 +1808,13 @@ void Scene44::run() {
case kHS44ExitShow:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow].x, _vm->_hotspotsWalkPos[kHS44ExitShow].y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 46;
break;
case kHS44KissingLady:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnapActionStatus = 2;
+ _vm->_gnap->_actionStatus = 2;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, -1, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
} else {
@@ -1828,7 +1828,7 @@ void Scene44::run() {
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->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
break;
case PLAT_CURSOR:
_vm->gnapUseDeviceOnPlatypus();
@@ -1836,7 +1836,7 @@ void Scene44::run() {
if (_vm->_gnap->_pos == Common::Point(7, 7))
_vm->gnapWalkStep();
_vm->playGnapIdle(5, 7);
- _vm->_platypusActionStatus = 4;
+ _vm->_plat->_actionStatus = 4;
break;
}
}
@@ -1893,14 +1893,14 @@ void Scene44::run() {
case kHS44WalkArea1:
case kHS44WalkArea2:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoActionStatus = 7;
@@ -1914,13 +1914,13 @@ void Scene44::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
+ if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextKissingLadySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextKissingLadySequenceId == -1) {
switch (_vm->getRandom(20)) {
case 0:
_nextKissingLadySequenceId = 0xED;
@@ -1947,7 +1947,7 @@ void Scene44::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 20;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSpringGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSpringGuySequenceId == -1) {
if (_vm->getRandom(5) != 0) {
if (!_vm->isFlag(kGFSpringTaken))
_nextSpringGuySequenceId = 0xF9;
@@ -1979,7 +1979,7 @@ void Scene44::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case 0:
_vm->_sceneDone = true;
break;
@@ -1990,12 +1990,12 @@ void Scene44::updateAnimations() {
_nextKissingLadySequenceId = 0xF2;
break;
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_platypusActionStatus) {
+ 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);
@@ -2003,7 +2003,7 @@ void Scene44::updateAnimations() {
_vm->_platypusSequenceDatNum = 0;
gameSys.setAnimation(0xFE, _vm->_platypusId, 1);
gameSys.removeSequence(_currKissingLadySequenceId, 1, true);
- _vm->_platypusActionStatus = 5;
+ _vm->_plat->_actionStatus = 5;
}
break;
case 5:
@@ -2011,7 +2011,7 @@ void Scene44::updateAnimations() {
_vm->_newSceneNum = 50;
break;
default:
- _vm->_platypusActionStatus = -1;
+ _vm->_plat->_actionStatus = -1;
break;
}
}
@@ -2145,7 +2145,7 @@ void Scene45::run() {
_vm->_gnapSequenceDatNum = 0;
_vm->_gnapId = 1;
gameSys.setAnimation(0x9E, 1, 0);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
gameSys.insertSequence(_vm->_gnapSequenceId, _vm->_gnapId, 0, 0, kSeqNone, 0, 0, 0);
_vm->initPlatypusPos(4, 8, kDirNone);
_vm->endSceneInit();
@@ -2256,7 +2256,7 @@ void Scene45::run() {
break;
case kHS45Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -2282,29 +2282,29 @@ void Scene45::run() {
break;
case kHS45ExitUfoParty:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
}
break;
case kHS45ExitShoe:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
}
break;
case kHS45ExitRight:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
}
@@ -2318,10 +2318,10 @@ void Scene45::run() {
break;
case kHS45DiscoBall:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemSpring) {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall].x, _vm->_hotspotsWalkPos[kHS45DiscoBall].y, 0, 0x9F, 5);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemSpring);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2342,13 +2342,13 @@ void Scene45::run() {
break;
case kHS45WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoActionStatus = 3;
@@ -2361,7 +2361,7 @@ void Scene45::run() {
updateAnimations();
_vm->toyUfoCheckTimer();
- if (!_vm->_isLeavingScene && _vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
_vm->checkGameKeys();
@@ -2383,7 +2383,7 @@ void Scene45::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case 0:
_vm->_sceneDone = true;
break;
@@ -2397,7 +2397,7 @@ void Scene45::updateAnimations() {
gameSys.setAnimation(0x9E, _vm->_gnapId, 0);
break;
default:
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
break;
}
}
@@ -2581,7 +2581,7 @@ void Scene46::run() {
break;
case kHS46Platypus:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
@@ -2615,7 +2615,7 @@ void Scene46::run() {
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->_gnapActionStatus = 2;
+ _vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2636,7 +2636,7 @@ void Scene46::run() {
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->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2649,14 +2649,14 @@ void Scene46::run() {
case kHS46ExitUfoParty:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS46ExitKissinBooth:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
break;
@@ -2664,19 +2664,19 @@ void Scene46::run() {
case kHS46ExitDisco:
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
break;
case kHS46WalkArea1:
- if (_vm->_gnapActionStatus < 0)
+ if (_vm->_gnap->_actionStatus < 0)
_vm->gnapWalkTo(-1, -1, -1, -1, 1);
break;
}
}
- if (_vm->_mouseClickState._left && _vm->_gnapActionStatus < 0) {
+ if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
_vm->_mouseClickState._left = false;
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->_toyUfoActionStatus = 4;
@@ -2690,13 +2690,13 @@ void Scene46::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_platypusActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updatePlatypusIdleSequence();
- if (_vm->_gnapActionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
_vm->updateGnapIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextItchyGuySequenceId == -1) {
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextItchyGuySequenceId == -1) {
if (_vm->getRandom(2) != 0)
_nextItchyGuySequenceId = 0x49;
else
@@ -2705,7 +2705,7 @@ void Scene46::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 80;
- if (_vm->_gnapActionStatus < 0 && _vm->_platypusActionStatus < 0 && _nextSackGuySequenceId == -1)
+ if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSackGuySequenceId == -1)
_nextSackGuySequenceId = 0x4C;
}
}
@@ -2727,7 +2727,7 @@ void Scene46::updateAnimations() {
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnapActionStatus) {
+ switch (_vm->_gnap->_actionStatus) {
case 0:
_vm->_sceneDone = true;
break;
@@ -2738,7 +2738,7 @@ void Scene46::updateAnimations() {
_nextSackGuySequenceId = 0x4A;
break;
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextSackGuySequenceId != -1) {
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 3ae2003..8cf5087 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -86,13 +86,13 @@ int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
_currHandSequenceId = kPlatypusHandSequenceIds[buttonNum];
}
- _vm->_gnapActionStatus = 6;
+ _vm->_gnap->_actionStatus = 6;
while (gameSys.getAnimationStatus(6) != 2) {
// checkGameAppStatus();
_vm->updateMouseCursor();
_vm->gameUpdateTick();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
if (buttonNum < 11)
phoneNumber = buttonNum % 10 + 10 * phoneNumber;
@@ -137,13 +137,13 @@ void Scene53::runRandomCall() {
_callsMadeCtr = 0;
}
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
void Scene53::runChitChatLine() {
@@ -154,13 +154,13 @@ void Scene53::runChitChatLine() {
gameSys.setAnimation(0x6E, 1, 6);
gameSys.insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.insertSequence(0x45, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -198,7 +198,7 @@ void Scene53::runChitChatLine() {
flag = 1;
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 17;
break;
case 5:
@@ -217,31 +217,31 @@ void Scene53::runChitChatLine() {
if (flag && sequenceId != -1) {
_vm->stopSound(0xA0);
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
gameSys.setAnimation(sequenceId, 1, 6);
gameSys.insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
gameSys.setAnimation(0x72, 1, 6);
gameSys.insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
while (gameSys.getAnimationStatus(6) != 2) {
_vm->updateMouseCursor();
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
}
updateHotspots();
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
@@ -252,7 +252,7 @@ void Scene53::runChitChatLine() {
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
}
@@ -287,7 +287,7 @@ void Scene53::run() {
switch (_vm->_sceneClickedHotspot) {
case 1:
- if (_vm->_gnapActionStatus < 0) {
+ if (_vm->_gnap->_actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -307,7 +307,7 @@ void Scene53::run() {
phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1);
debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
if (phoneNumberLen == 7) {
- _vm->_gnapActionStatus = 1;
+ _vm->_gnap->_actionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -317,7 +317,7 @@ void Scene53::run() {
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
if (phoneNumber == 7284141) {
runChitChatLine();
@@ -348,8 +348,8 @@ void Scene53::run() {
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
break;
case 14:
- if (_vm->_gnapActionStatus < 0) {
- _vm->_gnapActionStatus = 1;
+ if (_vm->_gnap->_actionStatus < 0) {
+ _vm->_gnap->_actionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -359,11 +359,11 @@ void Scene53::run() {
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
- _vm->_gnapActionStatus = -1;
+ _vm->_gnap->_actionStatus = -1;
}
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
- _vm->_gnapActionStatus = 0;
+ _vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 17;
}
break;
Commit: 579ecdabd19f0a5f6837224eafebf6a8ac74c0ad
https://github.com/scummvm/scummvm/commit/579ecdabd19f0a5f6837224eafebf6a8ac74c0ad
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:50+02:00
Commit Message:
GNAP: More refactoring related to characters (WIP)
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 8427487..8b6ea80 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 4f52824..1a05548 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 d02321a..c020d75 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 ccaf11f..4474a2d 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 31b7934..ec0595f 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 196d99a..a4bde9f 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 5348f18..419139f 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 6aca643..5cad36d 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 229aad4..0a8d604 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 0698abb..1a22a33 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 7ecaf23..e4e29d9 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:
Commit: 00c544f9f815be3121b900ff16572676ee6c4bf5
https://github.com/scummvm/scummvm/commit/00c544f9f815be3121b900ff16572676ee6c4bf5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:50+02:00
Commit Message:
GNAP: More refactoring related to characters (WIP)
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 8b6ea80..c8970a4 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -38,8 +38,8 @@ Character::Character(GnapEngine *vm) : _vm(vm) {
Character::~Character() {}
PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {
- _gnapBrainPulseNum = 0;
- _gnapBrainPulseRndValue = 0;
+ _brainPulseNum = 0;
+ _brainPulseRndValue = 0;
}
int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
@@ -67,18 +67,18 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
}
} else {
switch (_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x839;
- break;
- case kDirBottomLeft:
- sequenceId = 0x83B;
- break;
- case kDirUpRight:
- sequenceId = 0x83D;
- break;
- default:
- sequenceId = 0x83F;
- break;
+ case kDirBottomRight:
+ sequenceId = 0x839;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x83B;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x83D;
+ break;
+ default:
+ sequenceId = 0x83F;
+ break;
}
}
break;
@@ -104,18 +104,18 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
}
} else {
switch (_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x826;
- break;
- case kDirBottomLeft:
- sequenceId = 0x827;
- break;
- case kDirUpRight:
- sequenceId = 0x828;
- break;
- default:
- sequenceId = 0x829;
- break;
+ case kDirBottomRight:
+ sequenceId = 0x826;
+ break;
+ case kDirBottomLeft:
+ sequenceId = 0x827;
+ break;
+ case kDirUpRight:
+ sequenceId = 0x828;
+ break;
+ default:
+ sequenceId = 0x829;
+ break;
}
}
break;
@@ -141,22 +141,22 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
}
} 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;
+ 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;
@@ -182,56 +182,56 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
}
} else {
switch (_idleFacing) {
- case kDirBottomRight:
- sequenceId = 0x7B9;
- break;
- case kDirBottomLeft:
- sequenceId = 0x7BA;
- break;
- case kDirUpRight:
- sequenceId = 0x7BB;
- break;
- default:
- sequenceId = 0x7BC;
- break;
+ 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;
+ _brainPulseNum = (_brainPulseNum + 1) & 1;
if (gridX > 0 && gridY > 0) {
if (_pos.y > gridY) {
if (_pos.x > gridX) {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x812;
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x812;
_idleFacing = kDirUpLeft;
} else {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7FE;
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7FE;
_idleFacing = kDirUpRight;
}
} else {
if (_pos.x > gridX) {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7D6;
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7D6;
_idleFacing = kDirBottomLeft;
} else {
- sequenceId = _gnapBrainPulseRndValue + _gnapBrainPulseNum + 0x7EA;
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 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;
+ case kDirBottomRight:
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7EA;
+ break;
+ case kDirBottomLeft:
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7D6;
+ break;
+ case kDirUpRight:
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7FE;
+ break;
+ default:
+ sequenceId = _brainPulseRndValue + _brainPulseNum + 0x812;
+ break;
}
}
break;
@@ -291,42 +291,42 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
}
} 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;
+ 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;
+ 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;
@@ -407,7 +407,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_sequenceId = 0x876;
_vm->_plat->_idleFacing = kDirNone;
- _vm->playGnapSequence(0x107B5);
+ _vm->_gnap->playSequence(0x107B5);
_vm->gnapWalkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
@@ -416,7 +416,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- _vm->playGnapSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ _vm->_gnap->playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
}
}
@@ -436,7 +436,7 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_sequenceId = 0x7CB;
_vm->_plat->_idleFacing = kDirNone;
- _vm->playGnapSequence(0x107B5);
+ _vm->_gnap->playSequence(0x107B5);
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
@@ -445,12 +445,12 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- _vm->playGnapSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ _vm->_gnap->playSequence(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)));
+ _vm->_gnap->playSequence(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,
@@ -475,7 +475,18 @@ void PlayerGnap::useDeviceOnPlatypus() {
}
void PlayerGnap::initBrainPulseRndValue() {
- _gnapBrainPulseRndValue = 2 * _vm->getRandom(10);
+ _brainPulseRndValue = 2 * _vm->getRandom(10);
+}
+
+void PlayerGnap::playSequence(int sequenceId) {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 300;
+ _vm->gnapIdle();
+ _vm->_gameSys->insertSequence(sequenceId, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = ridToEntryIndex(sequenceId);
+ _sequenceDatNum = ridToDatIndex(sequenceId);
}
/************************************************************************************************/
@@ -495,4 +506,13 @@ int PlayerPlat::getSequenceId(int kind, int gridX, int gridY) {
return sequenceId | 0x10000;
}
+
+void PlayerPlat::playSequence(int sequenceId) {
+ _vm->_gameSys->insertSequence(sequenceId, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _vm->_platGridX, 48 * _pos.y - _vm->_platGridY);
+ _sequenceId = ridToEntryIndex(sequenceId);
+ _sequenceDatNum = ridToDatIndex(sequenceId);
+}
+
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 1a05548..faf1d77 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -42,6 +42,7 @@ public:
~Character();
virtual int getSequenceId(int kind, int gridX, int gridY) = 0;
+ virtual void playSequence(int sequenceId) = 0;
Common::Point _pos;
Facing _idleFacing;
@@ -58,19 +59,21 @@ class PlayerGnap : public Character {
public:
PlayerGnap(GnapEngine *vm);
virtual int getSequenceId(int kind, int gridX, int gridY);
+ virtual void playSequence(int sequenceId);
void initBrainPulseRndValue();
void kissPlatypus(int callback);
void useDeviceOnPlatypus();
void useJointOnPlatypus();
- int _gnapBrainPulseNum, _gnapBrainPulseRndValue;
+ int _brainPulseNum, _brainPulseRndValue;
};
class PlayerPlat : public Character {
public:
PlayerPlat(GnapEngine *vm);
virtual int getSequenceId(int kind = 0, int gridX = 0, int gridY = 0);
+ virtual void playSequence(int sequenceId);
};
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index c020d75..818ac89 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1146,55 +1146,44 @@ void GnapEngine::gnapActionIdle(int sequenceId) {
}
}
-void GnapEngine::playGnapSequence(int sequenceId) {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = 300;
- gnapIdle();
- _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);
- _gnap->_sequenceId = ridToEntryIndex(sequenceId);
- _gnap->_sequenceDatNum = ridToDatIndex(sequenceId);
-}
-
void GnapEngine::playGnapImpossible(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapScratchingHead(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapMoan1(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapMoan2(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapBrainPulsating(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapPullOutDevice(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapPullOutDeviceNonWorking(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapUseDevice(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapIdle(int gridX, int gridY) {
- playGnapSequence(_gnap->getSequenceId(gskIdle, gridX, gridY) | 0x10000);
+ _gnap->playSequence(_gnap->getSequenceId(gskIdle, gridX, gridY) | 0x10000);
}
void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
- playGnapSequence(getGnapShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
+ _gnap->playSequence(getGnapShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
}
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
@@ -1213,23 +1202,23 @@ void GnapEngine::updateGnapIdleSequence() {
if (_gnap->_idleFacing == kDirBottomRight) {
switch (getRandom(5)) {
case 0:
- playGnapSequence(0x107A6);
+ _gnap->playSequence(0x107A6);
break;
case 1:
- playGnapSequence(0x107AA);
+ _gnap->playSequence(0x107AA);
break;
case 2:
- playGnapSequence(0x10841);
+ _gnap->playSequence(0x10841);
break;
default:
- playGnapSequence(0x108A2);
+ _gnap->playSequence(0x108A2);
break;
}
} else if (_gnap->_idleFacing == kDirBottomLeft) {
if (getRandom(5) > 2)
- playGnapSequence(0x10832);
+ _gnap->playSequence(0x10832);
else
- playGnapSequence(0x10842);
+ _gnap->playSequence(0x10842);
}
}
} else {
@@ -1261,9 +1250,9 @@ void GnapEngine::updateGnapIdleSequence2() {
_timers[2] = 60;
_timers[3] = 300;
if (_gnap->_idleFacing == kDirBottomRight) {
- playGnapSequence(0x107AA);
+ _gnap->playSequence(0x107AA);
} else if (_gnap->_idleFacing == kDirBottomLeft) {
- playGnapSequence(0x10832);
+ _gnap->playSequence(0x10832);
}
}
} else {
@@ -1350,7 +1339,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, _plat->_id, 1);
- playPlatypusSequence(platSequenceId);
+ _plat->playSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
updateMouseCursor();
doCallback(callback);
@@ -1366,7 +1355,7 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
void GnapEngine::gnapUseDisguiseOnPlatypus() {
_gameSys->setAnimation(0x10846, _gnap->_id, 0);
- playGnapSequence(0x10846);
+ _gnap->playSequence(0x10846);
while (_gameSys->getAnimationStatus(0) != 2)
gameUpdateTick();
_newSceneNum = 47;
@@ -1375,14 +1364,6 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatypusDisguised);
}
-void GnapEngine::playPlatypusSequence(int sequenceId) {
- _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);
- _plat->_sequenceId = ridToEntryIndex(sequenceId);
- _plat->_sequenceDatNum = ridToDatIndex(sequenceId);
-}
-
void GnapEngine::updatePlatypusIdleSequence() {
if (_plat->_actionStatus < 0 && _gnap->_actionStatus < 0) {
if (_timers[0] > 0) {
@@ -1392,23 +1373,23 @@ void GnapEngine::updatePlatypusIdleSequence() {
if (_plat->_idleFacing != kDirNone) {
if (rnd != 0 || _plat->_sequenceId != 0x7CA) {
if (rnd != 1 || _plat->_sequenceId != 0x7CA)
- playPlatypusSequence(0x107CA);
+ _plat->playSequence(0x107CA);
else
- playPlatypusSequence(0x10845);
+ _plat->playSequence(0x10845);
} else {
- playPlatypusSequence(0x107CC);
+ _plat->playSequence(0x107CC);
}
} else if (rnd != 0 || _plat->_sequenceId != 0x7C9) {
if (rnd != 1 || _plat->_sequenceId != 0x7C9) {
if (rnd != 2 || _plat->_sequenceId != 0x7C9)
- playPlatypusSequence(0x107C9);
+ _plat->playSequence(0x107C9);
else
- playPlatypusSequence(0x108A4);
+ _plat->playSequence(0x108A4);
} else {
- playPlatypusSequence(0x10844);
+ _plat->playSequence(0x10844);
}
} else {
- playPlatypusSequence(0x107CB);
+ _plat->playSequence(0x107CB);
}
}
} else {
@@ -1428,14 +1409,14 @@ void GnapEngine::updatePlatypusIdleSequence2() {
_timers[1] = getRandom(20) + 30;
if (_plat->_idleFacing != kDirNone) {
if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7CA)
- playPlatypusSequence(0x107CA);
+ _plat->playSequence(0x107CA);
else
- playPlatypusSequence(0x107CC);
+ _plat->playSequence(0x107CC);
} else {
if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7C9) {
- playPlatypusSequence(0x107C9);
+ _plat->playSequence(0x107C9);
} else {
- playPlatypusSequence(0x107CB);
+ _plat->playSequence(0x107CB);
}
}
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4474a2d..fdf47a2 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -519,7 +519,6 @@ public:
int getGnapShowSequenceId(int index, int gridX, int gridY);
void gnapIdle();
void gnapActionIdle(int sequenceId);
- void playGnapSequence(int sequenceId);
void playGnapImpossible(int gridX, int gridY);
void playGnapScratchingHead(int gridX, int gridY);
void playGnapMoan1(int gridX, int gridY);
@@ -539,7 +538,6 @@ public:
void gnapUseDisguiseOnPlatypus();
// Platypus
- void playPlatypusSequence(int sequenceId);
void updatePlatypusIdleSequence();
void updatePlatypusIdleSequence2();
void initPlatypusPos(int gridX, int gridY, Facing facing);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 419139f..9690d69 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -140,7 +140,7 @@ void Scene01::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -490,7 +490,7 @@ void Scene02::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -955,7 +955,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1462,7 +1462,7 @@ void Scene04::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1934,7 +1934,7 @@ void Scene05::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2358,7 +2358,7 @@ void Scene06::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2729,7 +2729,7 @@ void Scene07::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -2812,22 +2812,22 @@ void Scene07::run() {
if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7CA) {
if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7CA) {
if (_vm->_plat->_pos.y == 9)
- _vm->playPlatypusSequence(0x107CA);
+ _vm->_plat->playSequence(0x107CA);
} else {
- _vm->playPlatypusSequence(0x10845);
+ _vm->_plat->playSequence(0x10845);
}
} else {
- _vm->playPlatypusSequence(0x107CC);
+ _vm->_plat->playSequence(0x107CC);
}
} else if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7C9) {
if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7C9) {
if (_vm->_plat->_pos.y == 9)
- _vm->playPlatypusSequence(0x107C9);
+ _vm->_plat->playSequence(0x107C9);
} else {
- _vm->playPlatypusSequence(0x10844);
+ _vm->_plat->playSequence(0x10844);
}
} else {
- _vm->playPlatypusSequence(0x107CB);
+ _vm->_plat->playSequence(0x107CB);
}
gameSys.setAnimation(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, 1);
}
@@ -3000,7 +3000,7 @@ void Scene08::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -3429,7 +3429,7 @@ void Scene09::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 5cad36d..cbc1f70 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -121,7 +121,7 @@ void Scene10::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -257,7 +257,7 @@ void Scene10::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 10, 5) | 0x10000);
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 10, 5) | 0x10000);
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
@@ -602,7 +602,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -671,7 +671,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
break;
case GRAB_CURSOR:
_vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
@@ -1021,7 +1021,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1530,7 +1530,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1628,7 +1628,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapSequence(_vm->_gnap->getSequenceId(gskDeflect, 9, 6));
+ _vm->_gnap->playSequence(_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->_gnap->getSequenceId(gskDeflect, 5, 9));
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 5, 9));
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
@@ -2549,7 +2549,7 @@ void Scene17::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -3449,7 +3449,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -4155,7 +4155,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 0a8d604..145d0ee 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -286,7 +286,7 @@ void Scene20::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -804,7 +804,7 @@ void Scene21::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1120,7 +1120,7 @@ void Scene22::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1344,7 +1344,7 @@ void Scene23::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1613,7 +1613,7 @@ void Scene24::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1859,7 +1859,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2176,7 +2176,7 @@ void Scene26::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2410,7 +2410,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -2781,7 +2781,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -3172,7 +3172,7 @@ void Scene29::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 1a22a33..ec17be4 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -101,7 +101,7 @@ void Scene30::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -356,7 +356,7 @@ void Scene31::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -705,7 +705,7 @@ void Scene32::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -881,7 +881,7 @@ void Scene33::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1158,7 +1158,7 @@ void Scene38::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1352,9 +1352,9 @@ void Scene38::updateAnimations() {
gameSys.setAnimation(0x9F, _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS38HoldingHuntingTrophy;
if (_vm->_plat->_idleFacing != kDirNone)
- _vm->playPlatypusSequence(0x107D5);
+ _vm->_plat->playSequence(0x107D5);
else
- _vm->playPlatypusSequence(0x107D4);
+ _vm->_plat->playSequence(0x107D4);
_vm->platypusWalkTo(8, 7, -1, 0x107D2, 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;
@@ -1464,7 +1464,7 @@ void Scene39::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_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 e4e29d9..9d731c0 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -87,7 +87,7 @@ void Scene40::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -362,7 +362,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -874,7 +874,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1332,7 +1332,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -1780,7 +1780,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -2208,7 +2208,7 @@ void Scene45::run() {
_vm->_gnap->_sequenceDatNum = 1;
}
- _vm->playPlatypusSequence(0x9A);
+ _vm->_plat->playSequence(0x9A);
gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
while (!_vm->_sceneDone) {
@@ -2266,12 +2266,12 @@ void Scene45::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
- _vm->playPlatypusSequence(0x9A);
+ _vm->_plat->playSequence(0x9A);
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->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
@@ -2405,9 +2405,9 @@ void Scene45::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
if (_vm->getRandom(2) != 0)
- _vm->playPlatypusSequence(0x9B);
+ _vm->_plat->playSequence(0x9B);
else
- _vm->playPlatypusSequence(0x9C);
+ _vm->_plat->playSequence(0x9C);
gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
}
@@ -2594,7 +2594,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
_vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->playPlatypusSequence(_vm->_plat->getSequenceId());
+ _vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
Commit: 45f27ea81c4aa3a4fbfa356a51f6b141447158d0
https://github.com/scummvm/scummvm/commit/45f27ea81c4aa3a4fbfa356a51f6b141447158d0
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:50+02:00
Commit Message:
GNAP: Even more refactoring related to characters (WIP)
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index c8970a4..c72f633 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -489,6 +489,90 @@ void PlayerGnap::playSequence(int sequenceId) {
_sequenceDatNum = ridToDatIndex(sequenceId);
}
+void PlayerGnap::updateIdleSequence() {
+ if (_actionStatus < 0) {
+ if (_vm->_timers[2] > 0) {
+ if (_vm->_timers[3] == 0) {
+ _vm->_timers[2] = 60;
+ _vm->_timers[3] = 300;
+ if (_idleFacing == kDirBottomRight) {
+ switch (_vm->getRandom(5)) {
+ case 0:
+ playSequence(0x107A6);
+ break;
+ case 1:
+ playSequence(0x107AA);
+ break;
+ case 2:
+ playSequence(0x10841);
+ break;
+ default:
+ playSequence(0x108A2);
+ break;
+ }
+ } else if (_idleFacing == kDirBottomLeft) {
+ if (_vm->getRandom(5) > 2)
+ playSequence(0x10832);
+ else
+ playSequence(0x10842);
+ }
+ }
+ } else {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ if (_idleFacing == kDirBottomRight) {
+ _vm->_gameSys->insertSequence(0x107BD, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = 0x7BD;
+ _sequenceDatNum = 1;
+ } else if (_idleFacing == kDirBottomLeft) {
+ _vm->_gameSys->insertSequence(0x107BE, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = 0x7BE;
+ _sequenceDatNum = 1;
+ }
+ }
+ } else {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 300;
+ }
+}
+
+void PlayerGnap::updateIdleSequence2() {
+ if (_actionStatus < 0) {
+ if (_vm->_timers[2] > 0) {
+ if (_vm->_timers[3] == 0) {
+ _vm->_timers[2] = 60;
+ _vm->_timers[3] = 300;
+ if (_idleFacing == kDirBottomRight) {
+ playSequence(0x107AA);
+ } else if (_idleFacing == kDirBottomLeft) {
+ playSequence(0x10832);
+ }
+ }
+ } else {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ if (_idleFacing == kDirBottomRight) {
+ _vm->_gameSys->insertSequence(0x107BD, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = 0x7BD;
+ _sequenceDatNum = 1;
+ } else if (_idleFacing == kDirBottomLeft) {
+ _vm->_gameSys->insertSequence(0x107BE, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ _sequenceId = 0x7BE;
+ _sequenceDatNum = 1;
+ }
+ }
+ } else {
+ _vm->_timers[2] = _vm->getRandom(30) + 20;
+ _vm->_timers[3] = 300;
+ }
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -515,4 +599,70 @@ void PlayerPlat::playSequence(int sequenceId) {
_sequenceDatNum = ridToDatIndex(sequenceId);
}
+void PlayerPlat::updateIdleSequence() {
+ if (_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
+ if (_vm->_timers[0] > 0) {
+ if (_vm->_timers[1] == 0) {
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ int rnd = _vm->getRandom(10);
+ if (_idleFacing != kDirNone) {
+ if (rnd != 0 || _sequenceId != 0x7CA) {
+ if (rnd != 1 || _sequenceId != 0x7CA)
+ playSequence(0x107CA);
+ else
+ playSequence(0x10845);
+ } else {
+ playSequence(0x107CC);
+ }
+ } else if (rnd != 0 || _sequenceId != 0x7C9) {
+ if (rnd != 1 || _sequenceId != 0x7C9) {
+ if (rnd != 2 || _sequenceId != 0x7C9)
+ playSequence(0x107C9);
+ else
+ playSequence(0x108A4);
+ } else {
+ playSequence(0x10844);
+ }
+ } else {
+ playSequence(0x107CB);
+ }
+ }
+ } else {
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
+ _vm->platypusMakeRoom();
+ }
+ } else {
+ _vm->_timers[0] = 100;
+ _vm->_timers[1] = 35;
+ }
+}
+
+void PlayerPlat::updateIdleSequence2() {
+ if (_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
+ if (_vm->_timers[0]) {
+ if (!_vm->_timers[1]) {
+ _vm->_timers[1] = _vm->getRandom(20) + 30;
+ if (_idleFacing != kDirNone) {
+ if (_vm->getRandom(10) >= 2 || _sequenceId != 0x7CA)
+ playSequence(0x107CA);
+ else
+ playSequence(0x107CC);
+ } else {
+ if (_vm->getRandom(10) >= 2 || _sequenceId != 0x7C9) {
+ playSequence(0x107C9);
+ } else {
+ playSequence(0x107CB);
+ }
+ }
+ }
+ } else {
+ _vm->_timers[0] = _vm->getRandom(75) + 75;
+ _vm->platypusMakeRoom();
+ }
+ } else {
+ _vm->_timers[0] = 100;
+ _vm->_timers[1] = 35;
+ }
+}
+
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index faf1d77..5e7d6ee 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -43,6 +43,8 @@ public:
virtual int getSequenceId(int kind, int gridX, int gridY) = 0;
virtual void playSequence(int sequenceId) = 0;
+ virtual void updateIdleSequence() = 0;
+ virtual void updateIdleSequence2() = 0;
Common::Point _pos;
Facing _idleFacing;
@@ -60,6 +62,8 @@ public:
PlayerGnap(GnapEngine *vm);
virtual int getSequenceId(int kind, int gridX, int gridY);
virtual void playSequence(int sequenceId);
+ virtual void updateIdleSequence();
+ virtual void updateIdleSequence2();
void initBrainPulseRndValue();
void kissPlatypus(int callback);
@@ -74,6 +78,8 @@ public:
PlayerPlat(GnapEngine *vm);
virtual int getSequenceId(int kind = 0, int gridX = 0, int gridY = 0);
virtual void playSequence(int sequenceId);
+ virtual void updateIdleSequence();
+ virtual void updateIdleSequence2();
};
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 818ac89..f72b7c6 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1193,90 +1193,6 @@ void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int g
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
}
-void GnapEngine::updateGnapIdleSequence() {
- if (_gnap->_actionStatus < 0) {
- if (_timers[2] > 0) {
- if (_timers[3] == 0) {
- _timers[2] = 60;
- _timers[3] = 300;
- if (_gnap->_idleFacing == kDirBottomRight) {
- switch (getRandom(5)) {
- case 0:
- _gnap->playSequence(0x107A6);
- break;
- case 1:
- _gnap->playSequence(0x107AA);
- break;
- case 2:
- _gnap->playSequence(0x10841);
- break;
- default:
- _gnap->playSequence(0x108A2);
- break;
- }
- } else if (_gnap->_idleFacing == kDirBottomLeft) {
- if (getRandom(5) > 2)
- _gnap->playSequence(0x10832);
- else
- _gnap->playSequence(0x10842);
- }
- }
- } else {
- _timers[2] = getRandom(30) + 20;
- if (_gnap->_idleFacing == kDirBottomRight) {
- _gameSys->insertSequence(0x107BD, _gnap->_id,
- makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnap->_sequenceId = 0x7BD;
- _gnap->_sequenceDatNum = 1;
- } else if (_gnap->_idleFacing == kDirBottomLeft) {
- _gameSys->insertSequence(0x107BE, _gnap->_id,
- makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnap->_sequenceId = 0x7BE;
- _gnap->_sequenceDatNum = 1;
- }
- }
- } else {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = 300;
- }
-}
-
-void GnapEngine::updateGnapIdleSequence2() {
- if (_gnap->_actionStatus < 0) {
- if (_timers[2] > 0) {
- if (_timers[3] == 0) {
- _timers[2] = 60;
- _timers[3] = 300;
- if (_gnap->_idleFacing == kDirBottomRight) {
- _gnap->playSequence(0x107AA);
- } else if (_gnap->_idleFacing == kDirBottomLeft) {
- _gnap->playSequence(0x10832);
- }
- }
- } else {
- _timers[2] = getRandom(30) + 20;
- if (_gnap->_idleFacing == kDirBottomRight) {
- _gameSys->insertSequence(0x107BD, _gnap->_id,
- makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnap->_sequenceId = 0x7BD;
- _gnap->_sequenceDatNum = 1;
- } else if (_gnap->_idleFacing == kDirBottomLeft) {
- _gameSys->insertSequence(0x107BE, _gnap->_id,
- makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- kSeqSyncWait, 0, 75 * _gnap->_pos.x - _gnapGridX, 48 * _gnap->_pos.y - _gnapGridY);
- _gnap->_sequenceId = 0x7BE;
- _gnap->_sequenceDatNum = 1;
- }
- }
- } else {
- _timers[2] = getRandom(30) + 20;
- _timers[3] = 300;
- }
-}
-
bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2) {
if (_mouseClickState._left && someStatus == _gnap->_actionStatus) {
_isLeavingScene = false;
@@ -1364,72 +1280,6 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatypusDisguised);
}
-void GnapEngine::updatePlatypusIdleSequence() {
- if (_plat->_actionStatus < 0 && _gnap->_actionStatus < 0) {
- if (_timers[0] > 0) {
- if (_timers[1] == 0) {
- _timers[1] = getRandom(20) + 30;
- int rnd = getRandom(10);
- if (_plat->_idleFacing != kDirNone) {
- if (rnd != 0 || _plat->_sequenceId != 0x7CA) {
- if (rnd != 1 || _plat->_sequenceId != 0x7CA)
- _plat->playSequence(0x107CA);
- else
- _plat->playSequence(0x10845);
- } else {
- _plat->playSequence(0x107CC);
- }
- } else if (rnd != 0 || _plat->_sequenceId != 0x7C9) {
- if (rnd != 1 || _plat->_sequenceId != 0x7C9) {
- if (rnd != 2 || _plat->_sequenceId != 0x7C9)
- _plat->playSequence(0x107C9);
- else
- _plat->playSequence(0x108A4);
- } else {
- _plat->playSequence(0x10844);
- }
- } else {
- _plat->playSequence(0x107CB);
- }
- }
- } else {
- _timers[0] = getRandom(75) + 75;
- platypusMakeRoom();
- }
- } else {
- _timers[0] = 100;
- _timers[1] = 35;
- }
-}
-
-void GnapEngine::updatePlatypusIdleSequence2() {
- if (_plat->_actionStatus < 0 && _gnap->_actionStatus < 0) {
- if (_timers[0]) {
- if (!_timers[1]) {
- _timers[1] = getRandom(20) + 30;
- if (_plat->_idleFacing != kDirNone) {
- if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7CA)
- _plat->playSequence(0x107CA);
- else
- _plat->playSequence(0x107CC);
- } else {
- if (getRandom(10) >= 2 || _plat->_sequenceId != 0x7C9) {
- _plat->playSequence(0x107C9);
- } else {
- _plat->playSequence(0x107CB);
- }
- }
- }
- } else {
- _timers[0] = getRandom(75) + 75;
- platypusMakeRoom();
- }
- } else {
- _timers[0] = 100;
- _timers[1] = 35;
- }
-}
-
void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
_timers[0] = 50;
_timers[1] = 20;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index fdf47a2..d37b2de6 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -530,16 +530,12 @@ public:
void playGnapIdle(int gridX, int gridY);
void playGnapShowItem(int itemIndex, int gridLookX, int gridLookY);
void playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
- void updateGnapIdleSequence();
- void updateGnapIdleSequence2();
void initGnapPos(int gridX, int gridY, Facing facing);
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
void gnapUseDisguiseOnPlatypus();
// Platypus
- void updatePlatypusIdleSequence();
- void updatePlatypusIdleSequence2();
void initPlatypusPos(int gridX, int gridY, Facing facing);
// Scenes
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 9690d69..0ae1d2e 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -261,9 +261,9 @@ void Scene01::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (_vm->_timers[4] == 0) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -673,9 +673,9 @@ void Scene02::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -1121,9 +1121,9 @@ void Scene03::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
@@ -1664,9 +1664,9 @@ void Scene04::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence2();
+ _vm->_plat->updateIdleSequence2();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence2();
+ _vm->_gnap->updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(150) + 300;
if (_vm->_gnap->_actionStatus < 0)
@@ -2107,8 +2107,8 @@ void Scene05::run() {
if (!_vm->_isLeavingScene) {
if (_vm->isFlag(kGFPlatypus))
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
if (_vm->_gnap->_actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
@@ -2501,9 +2501,9 @@ void Scene06::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
@@ -2801,7 +2801,7 @@ void Scene07::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (_vm->_plat->_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
@@ -3190,8 +3190,8 @@ void Scene08::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
@@ -3491,8 +3491,8 @@ void Scene09::run() {
updateAnimations();
if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus != 1 && _vm->_gnap->_actionStatus != 2) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(150) + 100;
if (_vm->_timers[4] & 1)
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index cbc1f70..28eecf9 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -305,8 +305,8 @@ void Scene10::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(80) + 150;
_vm->playSound(0x12B, false);
@@ -745,8 +745,8 @@ void Scene11::run() {
gameSys.setAnimation(0x207, 257, 4);
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
- _vm->updatePlatypusIdleSequence2();
- _vm->updateGnapIdleSequence2();
+ _vm->_plat->updateIdleSequence2();
+ _vm->_gnap->updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
@@ -1176,8 +1176,8 @@ void Scene12::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = 15;
if (_nextToothGuySequenceId == -1) {
@@ -1692,11 +1692,11 @@ void Scene13::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
_vm->platypusWalkTo(-1, 7, -1, -1, 1);
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
switch (_vm->getRandom(5)) {
@@ -2721,8 +2721,8 @@ void Scene17::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence2();
- _vm->updateGnapIdleSequence2();
+ _vm->_plat->updateIdleSequence2();
+ _vm->_gnap->updateIdleSequence2();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
@@ -3750,7 +3750,7 @@ void Scene18::run() {
} else {
_vm->_hotspots[kHS18WalkArea1]._y2 += 48;
_vm->_hotspots[kHS18WalkArea2]._x1 += 75;
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
_vm->_hotspots[kHS18WalkArea2]._x1 -= 75;
_vm->_hotspots[kHS18WalkArea1]._y2 -= 48;
}
@@ -3766,7 +3766,7 @@ void Scene18::run() {
_vm->playSoundA();
}
if (!_vm->isFlag(kGFPlatypusDisguised))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
}
_vm->checkGameKeys();
@@ -4296,9 +4296,9 @@ void Scene19::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (!_vm->_timers[6] && _nextShopAssistantSequenceId == -1) {
_vm->_timers[6] = _vm->getRandom(40) + 50;
if (_vm->getRandom(4) != 0) {
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 145d0ee..820a14e 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -471,11 +471,11 @@ void Scene20::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0) {
_vm->_hotspots[kHS20WalkArea1]._y2 += 48;
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
_vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
}
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->getRandom(4) != 0)
@@ -900,8 +900,8 @@ void Scene21::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(30) + 50;
switch (_vm->getRandom(5)) {
@@ -1192,8 +1192,8 @@ void Scene22::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[6] && _nextCashierSequenceId == -1) {
_vm->_timers[6] = _vm->getRandom(30) + 20;
if (_vm->getRandom(8) != 0) {
@@ -1417,8 +1417,8 @@ void Scene23::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4] && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
switch (_vm->getRandom(4)) {
@@ -1665,8 +1665,8 @@ void Scene24::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 50;
gameSys.insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
@@ -1976,8 +1976,8 @@ void Scene25::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
switch (_vm->getRandom(13)) {
@@ -2251,8 +2251,8 @@ void Scene26::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[5] && _nextKidSequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(20) + 50;
if (_vm->getRandom(5) != 0)
@@ -2537,9 +2537,9 @@ void Scene27::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (_vm->_debugLevel == 4)
_vm->updateIdleTimer();
if (!_vm->_timers[5]) {
@@ -2920,8 +2920,8 @@ void Scene28::run() {
_vm->playSound(0x1093C, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 80;
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFUnk21))
@@ -3276,8 +3276,8 @@ void Scene29::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_gnap->_actionStatus < 0) {
- _vm->updateGnapIdleSequence();
- _vm->updatePlatypusIdleSequence();
+ _vm->_gnap->updateIdleSequence();
+ _vm->_plat->updateIdleSequence();
}
if (!_vm->_timers[4]) {
if (_vm->invHas(kItemHorn)) {
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index ec17be4..b00224b 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -171,9 +171,9 @@ void Scene30::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_gnap->_actionStatus < 0) {
@@ -486,9 +486,9 @@ void Scene31::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 60;
if (_vm->_gnap->_actionStatus < 0 && _nextClerkSequenceId == -1) {
@@ -752,9 +752,9 @@ void Scene32::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
@@ -983,9 +983,9 @@ void Scene33::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
@@ -1260,8 +1260,8 @@ void Scene38::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->updatePlatypusIdleSequence();
- _vm->updateGnapIdleSequence();
+ _vm->_plat->updateIdleSequence();
+ _vm->_gnap->updateIdleSequence();
}
_vm->checkGameKeys();
@@ -1531,9 +1531,9 @@ void Scene39::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0)
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 50;
switch (_vm->getRandom(4)) {
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 9d731c0..6ec914d 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -511,9 +511,9 @@ void Scene41::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
@@ -979,9 +979,9 @@ void Scene42::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 30;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextBBQVendorSequenceId == -1) {
@@ -1433,9 +1433,9 @@ void Scene43::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
@@ -1915,9 +1915,9 @@ void Scene44::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextKissingLadySequenceId == -1) {
@@ -2362,7 +2362,7 @@ void Scene45::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
_vm->checkGameKeys();
@@ -2691,9 +2691,9 @@ void Scene46::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updatePlatypusIdleSequence();
+ _vm->_plat->updateIdleSequence();
if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->updateGnapIdleSequence();
+ _vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 80;
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextItchyGuySequenceId == -1) {
Commit: 38a83d1770a35b82cdfd7b04c19fcccb174b157f
https://github.com/scummvm/scummvm/commit/38a83d1770a35b82cdfd7b04c19fcccb174b157f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:51+02:00
Commit Message:
GNAP: More character refactoring (WIP)
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index c72f633..4356862 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -33,10 +33,14 @@ Character::Character(GnapEngine *vm) : _vm(vm) {
_sequenceId = 0;
_sequenceDatNum = 0;
_id = 0;
+ _gridX = 0;
+ _gridY = 0;
}
Character::~Character() {}
+/************************************************************************************************/
+
PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {
_brainPulseNum = 0;
_brainPulseRndValue = 0;
@@ -407,7 +411,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_sequenceId = 0x876;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playSequence(0x107B5);
+ playSequence(0x107B5);
_vm->gnapWalkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
@@ -416,7 +420,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- _vm->_gnap->playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
}
}
@@ -432,11 +436,11 @@ void PlayerGnap::kissPlatypus(int callback) {
_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);
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x10847), 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_sequenceId = 0x7CB;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playSequence(0x107B5);
+ playSequence(0x107B5);
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
@@ -445,23 +449,23 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- _vm->_gnap->playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
}
}
void PlayerGnap::useDeviceOnPlatypus() {
- _vm->_gnap->playSequence(makeRid(1, getSequenceId(gskPullOutDevice, _vm->_plat->_pos.x, _vm->_plat->_pos.y)));
+ playSequence(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);
+ kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
_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);
+ kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
_vm->_plat->_sequenceId = 0x7D4;
_vm->_plat->_sequenceDatNum = 1;
}
@@ -469,7 +473,7 @@ void PlayerGnap::useDeviceOnPlatypus() {
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);
+ kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = newSequenceId;
_sequenceDatNum = 1;
}
@@ -484,7 +488,7 @@ void PlayerGnap::playSequence(int sequenceId) {
_vm->gnapIdle();
_vm->_gameSys->insertSequence(sequenceId, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = ridToEntryIndex(sequenceId);
_sequenceDatNum = ridToDatIndex(sequenceId);
}
@@ -522,13 +526,13 @@ void PlayerGnap::updateIdleSequence() {
if (_idleFacing == kDirBottomRight) {
_vm->_gameSys->insertSequence(0x107BD, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = 0x7BD;
_sequenceDatNum = 1;
} else if (_idleFacing == kDirBottomLeft) {
_vm->_gameSys->insertSequence(0x107BE, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = 0x7BE;
_sequenceDatNum = 1;
}
@@ -556,13 +560,13 @@ void PlayerGnap::updateIdleSequence2() {
if (_idleFacing == kDirBottomRight) {
_vm->_gameSys->insertSequence(0x107BD, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = 0x7BD;
_sequenceDatNum = 1;
} else if (_idleFacing == kDirBottomLeft) {
_vm->_gameSys->insertSequence(0x107BE, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqSyncWait, 0, 75 * _pos.x - _vm->_gnapGridX, 48 * _pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = 0x7BE;
_sequenceDatNum = 1;
}
@@ -573,6 +577,27 @@ void PlayerGnap::updateIdleSequence2() {
}
}
+void PlayerGnap::initPos(int gridX, int gridY, Facing facing) {
+ _vm->_timers[2] = 30;
+ _vm->_timers[3] = 300;
+ _pos = Common::Point(gridX, gridY);
+ if (facing == kDirNone)
+ _idleFacing = kDirBottomRight;
+ else
+ _idleFacing = facing;
+ if (_idleFacing == kDirBottomLeft) {
+ _sequenceId = 0x7B8;
+ } else {
+ _sequenceId = 0x7B5;
+ _idleFacing = kDirBottomRight;
+ }
+ _id = 20 * _pos.y;
+ _sequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(makeRid(1, _sequenceId), 20 * _pos.y,
+ 0, 0,
+ kSeqScale, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -594,7 +619,7 @@ int PlayerPlat::getSequenceId(int kind, int gridX, int gridY) {
void PlayerPlat::playSequence(int sequenceId) {
_vm->_gameSys->insertSequence(sequenceId, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
- kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _vm->_platGridX, 48 * _pos.y - _vm->_platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
_sequenceId = ridToEntryIndex(sequenceId);
_sequenceDatNum = ridToDatIndex(sequenceId);
}
@@ -665,4 +690,25 @@ void PlayerPlat::updateIdleSequence2() {
}
}
+void PlayerPlat::initPos(int gridX, int gridY, Facing facing) {
+ _vm->_timers[0] = 50;
+ _vm->_timers[1] = 20;
+ _pos = Common::Point(gridX, gridY);
+ if (facing == kDirNone)
+ _idleFacing = kDirNone;
+ else
+ _idleFacing = facing;
+ if (_idleFacing == kDirUnk4) {
+ _sequenceId = 0x7D1;
+ } else {
+ _sequenceId = 0x7C1;
+ _idleFacing = kDirNone;
+ }
+ _id = 20 * _pos.y;
+ _sequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(makeRid(1, _sequenceId), 20 * _pos.y,
+ 0, 0,
+ kSeqScale, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
+}
+
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 5e7d6ee..3964397 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -45,6 +45,7 @@ public:
virtual void playSequence(int sequenceId) = 0;
virtual void updateIdleSequence() = 0;
virtual void updateIdleSequence2() = 0;
+ virtual void initPos(int gridX, int gridY, Facing facing) = 0;
Common::Point _pos;
Facing _idleFacing;
@@ -52,6 +53,8 @@ public:
int _sequenceId;
int _sequenceDatNum;
int _id;
+ int _gridX;
+ int _gridY;
protected:
GnapEngine *_vm;
@@ -61,6 +64,7 @@ class PlayerGnap : public Character {
public:
PlayerGnap(GnapEngine *vm);
virtual int getSequenceId(int kind, int gridX, int gridY);
+ virtual void initPos(int gridX, int gridY, Facing facing);
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
@@ -70,13 +74,15 @@ public:
void useDeviceOnPlatypus();
void useJointOnPlatypus();
- int _brainPulseNum, _brainPulseRndValue;
+ int _brainPulseNum;
+ int _brainPulseRndValue;
};
class PlayerPlat : public Character {
public:
PlayerPlat(GnapEngine *vm);
virtual int getSequenceId(int kind = 0, int gridX = 0, int gridY = 0);
+ virtual void initPos(int gridX, int gridY, Facing facing);
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index f72b7c6..78c7617 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1129,7 +1129,7 @@ void GnapEngine::gnapIdle() {
_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);
+ kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnap->_gridX, 48 * _gnap->_pos.y - _gnap->_gridY);
_gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
_gnap->_sequenceDatNum = 1;
}
@@ -1140,7 +1140,7 @@ void GnapEngine::gnapActionIdle(int sequenceId) {
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);
+ kSeqSyncExists, 0, 75 * _gnap->_pos.x - _gnap->_gridX, 48 * _gnap->_pos.y - _gnap->_gridY);
_gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
_gnap->_sequenceDatNum = 1;
}
@@ -1207,27 +1207,6 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
return false;
}
-void GnapEngine::initGnapPos(int gridX, int gridY, Facing facing) {
- _timers[2] = 30;
- _timers[3] = 300;
- _gnap->_pos = Common::Point(gridX, gridY);
- if (facing == kDirNone)
- _gnap->_idleFacing = kDirBottomRight;
- else
- _gnap->_idleFacing = facing;
- if (_gnap->_idleFacing == kDirBottomLeft) {
- _gnap->_sequenceId = 0x7B8;
- } else {
- _gnap->_sequenceId = 0x7B5;
- _gnap->_idleFacing = kDirBottomRight;
- }
- _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::doCallback(int callback) {
switch (callback) {
case 8:
@@ -1280,27 +1259,6 @@ void GnapEngine::gnapUseDisguiseOnPlatypus() {
setFlag(kGFPlatypusDisguised);
}
-void GnapEngine::initPlatypusPos(int gridX, int gridY, Facing facing) {
- _timers[0] = 50;
- _timers[1] = 20;
- _plat->_pos = Common::Point(gridX, gridY);
- if (facing == kDirNone)
- _plat->_idleFacing = kDirNone;
- else
- _plat->_idleFacing = facing;
- if (_plat->_idleFacing == kDirUnk4) {
- _plat->_sequenceId = 0x7D1;
- } else {
- _plat->_sequenceId = 0x7C1;
- _plat->_idleFacing = kDirNone;
- }
- _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);
-}
-
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d37b2de6..4cab405 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -475,8 +475,6 @@ public:
void updateMenuStatusQueryQuit();
// Grid common
- int _gnapGridX, _gnapGridY;
- int _platGridX, _platGridY;
int _gridMinX, _gridMinY;
int _gridMaxX, _gridMaxY;
bool isPointBlocked(int gridX, int gridY);
@@ -530,14 +528,10 @@ public:
void playGnapIdle(int gridX, int gridY);
void playGnapShowItem(int itemIndex, int gridLookX, int gridLookY);
void playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
- void initGnapPos(int gridX, int gridY, Facing facing);
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
void gnapUseDisguiseOnPlatypus();
- // Platypus
- void initPlatypusPos(int gridX, int gridY, Facing facing);
-
// Scenes
int _toyUfoNextSequenceId, _toyUfoSequenceId;
int _toyUfoId;
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index ec0595f..5c9b3dd 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -32,10 +32,10 @@ void GnapEngine::initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gri
_gridMinY = gridMinY;
_gridMaxX = gridMaxX;
_gridMaxY = gridMaxY;
- _gnapGridX = 410 - gridMinX;
- _gnapGridY = 450 - gridMinY;
- _platGridX = 396 - gridMinX;
- _platGridY = 347 - gridMinY;
+ _gnap->_gridX = 410 - gridMinX;
+ _gnap->_gridY = 450 - gridMinY;
+ _plat->_gridX = 396 - gridMinX;
+ _plat->_gridY = 347 - gridMinY;
}
int GnapEngine::getGnapWalkSequenceId(int deltaX, int deltaY) {
@@ -587,13 +587,13 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (index % 2) {
_gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
_gnapWalkNodes[index]._sequenceId = 0x7AB;
gnapSequenceId = 0x7AB;
} else {
_gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
_gnapWalkNodes[index]._sequenceId = 0x7AC;
gnapSequenceId = 0x7AC;
}
@@ -601,13 +601,13 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
if (index % 2) {
_gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
_gnapWalkNodes[index]._sequenceId = 0x7AF;
gnapSequenceId = 0x7AF;
} else {
_gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
_gnapWalkNodes[index]._sequenceId = 0x7B0;
gnapSequenceId = 0x7B0;
}
@@ -619,7 +619,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index]._deltaX, _gnapWalkNodes[index]._deltaY);
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnapGridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
_gnapWalkNodes[index]._sequenceId = newSequenceId;
gnapSequenceId = newSequenceId;
}
@@ -705,7 +705,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
} else {
_gameSys->insertSequence(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkDestX - _gnapGridX, 48 * _gnapWalkDestY - _gnapGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkDestX - _gnap->_gridX, 48 * _gnapWalkDestY - _gnap->_gridY);
}
}
@@ -1239,13 +1239,13 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (index % 2) {
_gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
_platWalkNodes[index]._sequenceId = 0x7CD;
platSequenceId = 0x7CD;
} else {
_gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
_platWalkNodes[index]._sequenceId = 0x7CE;
platSequenceId = 0x7CE;
}
@@ -1253,13 +1253,13 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (index % 2) {
_gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
_platWalkNodes[index]._sequenceId = 0x7CF;
platSequenceId = 0x7CF;
} else {
_gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
_platWalkNodes[index]._sequenceId = 0x7D0;
platSequenceId = 0x7D0;
}
@@ -1271,7 +1271,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
int newSequenceId = getPlatypusWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _platGridX, 48 * _platWalkNodes[index]._gridY1 - _platGridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
_platWalkNodes[index]._sequenceId = newSequenceId;
platSequenceId = newSequenceId;
}
@@ -1348,7 +1348,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
else
_gameSys->insertSequence(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkDestX - _platGridX, 48 * _platWalkDestY - _platGridY);
+ 9, 0, 75 * _platWalkDestX - _plat->_gridX, 48 * _platWalkDestY - _plat->_gridY);
}
_plat->_pos = Common::Point(_platWalkDestX, _platWalkDestY);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 0ae1d2e..3ba263d 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -90,17 +90,17 @@ void Scene01::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 2) {
- _vm->initGnapPos(11, 6, kDirBottomLeft);
+ _vm->_gnap->initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
_vm->gnapWalkTo(8, 6, -1, 0x107B9, 1);
} else {
- _vm->initGnapPos(1, 6, kDirBottomRight);
+ _vm->_gnap->initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -412,18 +412,18 @@ void Scene02::run() {
switch (_vm->_prevSceneNum) {
case 3:
- _vm->initGnapPos(11, 6, kDirBottomLeft);
+ _vm->_gnap->initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
_vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
break;
case 4:
- _vm->initGnapPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
+ _vm->_gnap->initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
+ _vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(7, 6, 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
@@ -433,20 +433,20 @@ void Scene02::run() {
break;
case 47:
_vm->clearFlag(kGFUnk25);
- _vm->initGnapPos(5, 6, kDirBottomLeft);
- _vm->initPlatypusPos(6, 7, kDirUnk4);
+ _vm->_gnap->initPos(5, 6, kDirBottomLeft);
+ _vm->_plat->initPos(6, 7, kDirUnk4);
_vm->endSceneInit();
break;
case 49:
- _vm->initGnapPos(5, 6, kDirBottomRight);
+ _vm->_gnap->initPos(5, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(6, 7, kDirNone);
+ _vm->_plat->initPos(6, 7, kDirNone);
_vm->endSceneInit();
break;
default:
- _vm->initGnapPos(-1, 6, kDirBottomRight);
+ _vm->_gnap->initPos(-1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
@@ -794,7 +794,7 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
_currChickenSequenceId = 0x14B;
@@ -893,7 +893,7 @@ void Scene03::run() {
gameSys.insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
_platypusHypnotized = false;
- _vm->initGnapPos(3, 4, kDirBottomRight);
+ _vm->_gnap->initPos(3, 4, kDirBottomRight);
gameSys.insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -906,7 +906,7 @@ void Scene03::run() {
_vm->_timers[5] = _vm->getRandom(100) + 200;
if (_vm->isFlag(kGFPlatypus)) {
- _vm->initPlatypusPos(5, 4, kDirNone);
+ _vm->_plat->initPos(5, 4, kDirNone);
} else {
_vm->_timers[1] = _vm->getRandom(40) + 20;
gameSys.setAnimation(0x1C2, 99, 1);
@@ -1187,7 +1187,7 @@ void Scene03::updateAnimations() {
_vm->_plat->_idleFacing = kDirUnk4;
_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);
+ kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
gameSys.insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_sequenceId = 0x7CA;
@@ -1383,7 +1383,7 @@ void Scene04::run() {
_vm->_gnap->_id = 140;
_vm->_plat->_pos = Common::Point(6, 7);
_vm->_plat->_id = 141;
- gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
gameSys.insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
@@ -1401,21 +1401,21 @@ void Scene04::run() {
} else {
gameSys.insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 2) {
- _vm->initGnapPos(5, 11, kDirUpRight);
+ _vm->_gnap->initPos(5, 11, kDirUpRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(6, 9, -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
- _vm->initGnapPos(5, 7, kDirBottomRight);
- _vm->initPlatypusPos(4, 7, kDirNone);
+ _vm->_gnap->initPos(5, 7, kDirBottomRight);
+ _vm->_plat->initPos(4, 7, kDirNone);
_vm->endSceneInit();
} else {
- _vm->initGnapPos(12, 9, kDirBottomRight);
+ _vm->_gnap->initPos(12, 9, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
@@ -1715,7 +1715,7 @@ void Scene04::updateAnimations() {
_vm->_gnap->_pos = Common::Point(6, 7);
gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnapGridX, 336 - _vm->_gnapGridY);
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
gameSys.setAnimation(0x107B5, _vm->_gnap->_id, 0);
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
@@ -1746,7 +1746,7 @@ void Scene04::updateAnimations() {
gameSys.requestRemoveSequence(0x20B, 256);
gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
@@ -1773,7 +1773,7 @@ void Scene04::updateAnimations() {
gameSys.removeSequence(0x20A, 256, true);
gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
_vm->_gnap->_idleFacing = kDirBottomRight;
@@ -1884,17 +1884,17 @@ void Scene05::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
- _vm->initGnapPos(-1, 8, kDirBottomRight);
+ _vm->_gnap->initPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 9, -1, 0x107B9, 1);
} else {
- _vm->initGnapPos(6, 8, kDirBottomRight);
+ _vm->_gnap->initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->_plat->initPos(7, 9, kDirNone);
_vm->endSceneInit();
}
@@ -2189,7 +2189,7 @@ void Scene05::updateAnimations() {
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
gameSys.setAnimation(0x107B1, 1, 0);
_vm->_gnap->_actionStatus = kAS05LeaveScene;
break;
@@ -2204,7 +2204,7 @@ void Scene05::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
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);
+ gameSys.insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_plat->_gridX, 384 - _vm->_plat->_gridY);
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_id = 20 * _vm->_plat->_pos.y;
@@ -2315,8 +2315,8 @@ void Scene06::run() {
_vm->queueInsertDeviceIcon();
- _vm->initGnapPos(5, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->_gnap->initPos(5, 12, kDirBottomRight);
+ _vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -2591,7 +2591,7 @@ void Scene06::updateAnimations() {
_vm->setGrabCursorSprite(kItemGas);
_vm->_plat->_actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 8);
- gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0, 0, kSeqNone, 0, 450 - _vm->_platGridX, 384 - _vm->_platGridY);
+ gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0, 0, kSeqNone, 0, 450 - _vm->_plat->_gridX, 384 - _vm->_plat->_gridY);
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
@@ -2619,7 +2619,7 @@ void Scene06::updateAnimations() {
_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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B7;
_vm->_gnap->_sequenceDatNum = 1;
_currHorseSequenceId = _nextHorseSequenceId;
@@ -2681,8 +2681,8 @@ void Scene07::run() {
gameSys.insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->initGnapPos(7, 7, kDirBottomLeft);
- _vm->initPlatypusPos(9, 7, kDirUnk4);
+ _vm->_gnap->initPos(7, 7, kDirBottomLeft);
+ _vm->_plat->initPos(9, 7, kDirUnk4);
_vm->endSceneInit();
} else {
_vm->_gnap->_pos = Common::Point(6, 7);
@@ -2761,7 +2761,7 @@ void Scene07::run() {
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, 0, 0);
_vm->_gnap->_sequenceDatNum = 1;
break;
@@ -2951,8 +2951,8 @@ void Scene08::run() {
if (!_vm->isFlag(kGFTruckKeysUsed))
gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ _vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
@@ -3383,14 +3383,14 @@ void Scene09::run() {
gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ _vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(4, 7, kDirBottomRight);
- _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->_gnap->initPos(4, 7, kDirBottomRight);
+ _vm->_plat->initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 28eecf9..3acce7f 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -72,14 +72,14 @@ void Scene10::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 9) {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ _vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ _vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(1, 7, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
@@ -373,7 +373,7 @@ void Scene10::updateAnimations() {
gameSys.insertSequence(0x107C9, 160,
_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);
+ 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
gameSys.removeSequence(0x107, 100, true);
_currCookSequenceId = 0x109;
_nextCookSequenceId = 0x843;
@@ -534,23 +534,23 @@ void Scene11::run() {
switch (_vm->_prevSceneNum) {
case 13:
- _vm->initGnapPos(8, 5, kDirBottomLeft);
- _vm->initPlatypusPos(9, 6, kDirUnk4);
+ _vm->_gnap->initPos(8, 5, kDirBottomLeft);
+ _vm->_plat->initPos(9, 6, kDirUnk4);
break;
case 47:
- _vm->initGnapPos(8, 5, kDirBottomLeft);
- _vm->initPlatypusPos(9, 5, kDirUnk4);
+ _vm->_gnap->initPos(8, 5, kDirBottomLeft);
+ _vm->_plat->initPos(9, 5, kDirUnk4);
_currGoggleGuySequenceId = 0x1FA;
_currHookGuySequenceId = 0x1FF;
_vm->_timers[7] = 180;
break;
case 12:
- _vm->initGnapPos(-1, 9, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->_gnap->initPos(-1, 9, kDirBottomRight);
+ _vm->_plat->initPos(-2, 8, kDirNone);
break;
default:
- _vm->initGnapPos(6, 6, kDirBottomLeft);
- _vm->initPlatypusPos(6, 5, kDirUnk4);
+ _vm->_gnap->initPos(6, 6, kDirBottomLeft);
+ _vm->_plat->initPos(6, 5, kDirUnk4);
break;
}
@@ -982,12 +982,12 @@ void Scene12::run() {
_vm->_timers[7] = _vm->getRandom(100) + 100;
if (_vm->_prevSceneNum == 15) {
- _vm->initGnapPos(5, 6, kDirBottomRight);
- _vm->initPlatypusPos(3, 7, kDirNone);
+ _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ _vm->_plat->initPos(3, 7, kDirNone);
_vm->endSceneInit();
} else {
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 8, kDirUnk4);
+ _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ _vm->_plat->initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
@@ -1362,7 +1362,7 @@ void Scene12::updateAnimations() {
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B7;
_vm->_gnap->_sequenceDatNum = 1;
_vm->setFlag(kGFTwigTaken);
@@ -1486,11 +1486,11 @@ void Scene13::run() {
gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 14) {
- _vm->initGnapPos(6, 6, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirNone);
+ _vm->_gnap->initPos(6, 6, kDirBottomLeft);
+ _vm->_plat->initPos(9, 8, kDirNone);
} else {
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(2, 7, kDirNone);
+ _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ _vm->_plat->initPos(2, 7, kDirNone);
}
_vm->endSceneInit();
@@ -1910,7 +1910,7 @@ void Scene14::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -1918,7 +1918,7 @@ void Scene14::run() {
case kHS14Toilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1929,7 +1929,7 @@ void Scene14::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -2068,7 +2068,7 @@ void Scene15::run() {
} else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_nextSlotSequenceId = 0xDB;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2079,7 +2079,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -2087,7 +2087,7 @@ void Scene15::run() {
case kHS15PlayButton:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2106,7 +2106,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -2119,7 +2119,7 @@ void Scene15::run() {
case kHS15Button5:
case kHS15Button6:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2132,7 +2132,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -2145,7 +2145,7 @@ void Scene15::run() {
case kHS15ButtonE:
case kHS15ButtonF:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2158,7 +2158,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnapGridX, 576 - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
break;
}
}
@@ -2415,13 +2415,13 @@ void Scene17::run() {
if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(4, 6, kDirBottomRight);
- _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->_gnap->initPos(4, 6, kDirBottomRight);
+ _vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
_vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
- _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_gnap->initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2440,7 +2440,7 @@ void Scene17::run() {
} else if (_vm->isFlag(kGFUnk25)) {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
- _vm->initPlatypusPos(7, 9, kDirNone);
+ _vm->_plat->initPos(7, 9, kDirNone);
_vm->_gnap->_pos = _vm->_hotspotsWalkPos[2];
_vm->_gnap->_id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2456,7 +2456,7 @@ void Scene17::run() {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
_vm->_sceneWaiting = true;
- _vm->initGnapPos(3, 9, kDirUpLeft);
+ _vm->_gnap->initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
_currPhoneSequenceId = 0x251;
@@ -2469,19 +2469,19 @@ void Scene17::run() {
_vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
- _vm->initGnapPos(6, 6, kDirBottomRight);
- _vm->initPlatypusPos(5, 6, kDirNone);
+ _vm->_gnap->initPos(6, 6, kDirBottomRight);
+ _vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
_vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->initGnapPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
- _vm->initPlatypusPos(1, 9, kDirNone);
+ _vm->_gnap->initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
+ _vm->_plat->initPos(1, 9, kDirNone);
_vm->endSceneInit();
} else {
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ _vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
_vm->clearFlag(kGFSpringTaken);
@@ -2499,7 +2499,7 @@ void Scene17::run() {
_vm->_plat->_id = 160;
gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
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);
+ kSeqScale | kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
gameSys.insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
_vm->endSceneInit();
@@ -3210,7 +3210,7 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
seqId2 += direction;
gameSys.insertSequence(seqId, seqId2,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
gnapSeqId = seqId;
gnapId = seqId2;
gnapDatNum = 0;
@@ -3234,7 +3234,7 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
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);
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_pos.x = gnapGridX;
}
@@ -3255,12 +3255,12 @@ void Scene18::putDownGarbageCan(int animationIndex) {
if (_vm->_gnap->_idleFacing != kDirNone && _vm->_gnap->_idleFacing != kDirBottomRight && _vm->_gnap->_idleFacing != kDirUpRight) {
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7BA;
} else {
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B9;
}
_vm->_gnap->_sequenceDatNum = 1;
@@ -3361,9 +3361,9 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
if (_vm->_prevSceneNum == 17)
- _vm->initGnapPos(4, 11, kDirBottomRight);
+ _vm->_gnap->initPos(4, 11, kDirBottomRight);
else
- _vm->initGnapPos(4, 7, kDirBottomRight);
+ _vm->_gnap->initPos(4, 7, kDirBottomRight);
_platPhoneCtr = _vm->getRandom(5);
if (_vm->isFlag(kGFUnk27)) {
gameSys.insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -3392,20 +3392,20 @@ void Scene18::run() {
_vm->_prevSceneNum = 19;
}
if (_vm->_prevSceneNum == 17) {
- _vm->initGnapPos(4, 11, kDirBottomRight);
- _vm->initPlatypusPos(5, 11, kDirNone);
+ _vm->_gnap->initPos(4, 11, kDirBottomRight);
+ _vm->_plat->initPos(5, 11, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
- _vm->initGnapPos(7, 7, kDirBottomRight);
- _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->_gnap->initPos(7, 7, kDirBottomRight);
+ _vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- _vm->initGnapPos(-1, 10, kDirBottomRight);
- _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->_gnap->initPos(-1, 10, kDirBottomRight);
+ _vm->_plat->initPos(-1, 10, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(3, 7, -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
@@ -3743,7 +3743,7 @@ void Scene18::run() {
if (!_vm->_timers[6]) {
_vm->_plat->_actionStatus = -1;
_vm->_sceneWaiting = false;
- _vm->initPlatypusPos(-1, 10, kDirNone);
+ _vm->_plat->initPos(-1, 10, kDirNone);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
@@ -3988,7 +3988,7 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
- 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);
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 517, _vm->_gnap->_id, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
updateHotspots();
_vm->_gnap->_sequenceDatNum = 1;
_vm->_gnap->_sequenceId = 0x7B5;
@@ -4099,7 +4099,7 @@ void Scene19::run() {
gameSys.insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->initGnapPos(3, 6, kDirBottomRight);
+ _vm->_gnap->initPos(3, 6, kDirBottomRight);
_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_vm->getRandom(5)];
_nextShopAssistantSequenceId = _currShopAssistantSequenceId;
gameSys.setAnimation(_currShopAssistantSequenceId, 20, 4);
@@ -4115,8 +4115,8 @@ void Scene19::run() {
gameSys.setAnimation(0x6D, 20, 4);
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(40) + 50;
- _vm->initGnapPos(3, 6, kDirBottomRight);
- _vm->initPlatypusPos(4, 6, kDirNone);
+ _vm->_gnap->initPos(3, 6, kDirBottomRight);
+ _vm->_plat->initPos(4, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 820a14e..237000d 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -206,43 +206,43 @@ void Scene20::run() {
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ _vm->_plat->initPos(11, 9, kDirUnk4);
_vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
+ _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ _vm->_plat->initPos(6, 11, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
- _vm->initGnapPos(11, 8, kDirBottomLeft);
- _vm->initPlatypusPos(11, 9, kDirUnk4);
+ _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ _vm->_plat->initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
- _vm->initGnapPos(-1, 8, kDirBottomLeft);
- _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->_gnap->initPos(-1, 8, kDirBottomLeft);
+ _vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
- _vm->initGnapPos(7, 6, kDirBottomRight);
- _vm->initPlatypusPos(8, 6, kDirNone);
+ _vm->_gnap->initPos(7, 6, kDirBottomRight);
+ _vm->_plat->initPos(8, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
- _vm->initGnapPos(8, 6, kDirBottomLeft);
- _vm->initPlatypusPos(9, 6, kDirUnk4);
+ _vm->_gnap->initPos(8, 6, kDirBottomLeft);
+ _vm->_plat->initPos(9, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
@@ -744,16 +744,16 @@ void Scene21::run() {
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
- _vm->initGnapPos(5, 8, kDirBottomRight);
- _vm->initPlatypusPos(6, 8, kDirNone);
+ _vm->_gnap->initPos(5, 8, kDirBottomRight);
+ _vm->_plat->initPos(6, 8, kDirNone);
gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->clearFlag(kGFKeysTaken);
} else {
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
+ _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ _vm->_plat->initPos(6, 11, kDirNone);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -761,8 +761,8 @@ void Scene21::run() {
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
} else {
- _vm->initGnapPos(5, 11, kDirBottomRight);
- _vm->initPlatypusPos(6, 11, kDirNone);
+ _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ _vm->_plat->initPos(6, 11, kDirNone);
_currOldLadySequenceId = 0x89;
gameSys.setAnimation(0x89, 79, 3);
gameSys.insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
@@ -1043,12 +1043,12 @@ void Scene22::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(2, 8, kDirBottomRight);
- _vm->initPlatypusPos(1, 8, kDirNone);
+ _vm->_gnap->initPos(2, 8, kDirBottomRight);
+ _vm->_plat->initPos(1, 8, kDirNone);
_vm->endSceneInit();
} else {
- _vm->initGnapPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
- _vm->initPlatypusPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
+ _vm->_gnap->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
+ _vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
@@ -1293,8 +1293,8 @@ void Scene23::run() {
_vm->queueInsertDeviceIcon();
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ _vm->_plat->initPos(-2, 7, kDirNone);
gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -1566,14 +1566,14 @@ void Scene24::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 20) {
- _vm->initGnapPos(1, 8, kDirBottomRight);
- _vm->initPlatypusPos(2, 8, kDirNone);
+ _vm->_gnap->initPos(1, 8, kDirBottomRight);
+ _vm->_plat->initPos(2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(1, 9, -1, 0x107B9, 1);
_vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(8, 8, kDirUnk4);
+ _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ _vm->_plat->initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
@@ -1815,14 +1815,14 @@ void Scene25::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 24) {
- _vm->initGnapPos(5, 11, kDirUpLeft);
- _vm->initPlatypusPos(6, 11, kDirUnk4);
+ _vm->_gnap->initPos(5, 11, kDirUpLeft);
+ _vm->_plat->initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 7, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
- _vm->initGnapPos(5, 6, kDirBottomRight);
- _vm->initPlatypusPos(6, 6, kDirNone);
+ _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ _vm->_plat->initPos(6, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -2134,14 +2134,14 @@ void Scene26::run() {
gameSys.insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 25) {
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-2, 8, kDirNone);
+ _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ _vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
- _vm->initGnapPos(2, 8, kDirBottomRight);
- _vm->initPlatypusPos(3, 8, kDirNone);
+ _vm->_gnap->initPos(2, 8, kDirBottomRight);
+ _vm->_plat->initPos(3, 8, kDirNone);
_vm->endSceneInit();
}
@@ -2351,29 +2351,29 @@ void Scene27::run() {
switch (_vm->_prevSceneNum) {
case 26:
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ _vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
- _vm->initGnapPos(-1, 8, kDirBottomRight);
- _vm->initPlatypusPos(-1, 9, kDirNone);
+ _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ _vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
- _vm->initGnapPos(12, 8, kDirBottomLeft);
- _vm->initPlatypusPos(12, 9, kDirUnk4);
+ _vm->_gnap->initPos(12, 8, kDirBottomLeft);
+ _vm->_plat->initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
- _vm->initGnapPos(6, 8, kDirBottomRight);
- _vm->initPlatypusPos(5, 9, kDirNone);
+ _vm->_gnap->initPos(6, 8, kDirBottomRight);
+ _vm->_plat->initPos(5, 9, kDirNone);
_vm->endSceneInit();
break;
}
@@ -2727,13 +2727,13 @@ void Scene28::run() {
gameSys.insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ _vm->_plat->initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
} else {
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->initGnapPos(8, 8, kDirBottomLeft);
- _vm->initPlatypusPos(9, 8, kDirUnk4);
+ _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ _vm->_plat->initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_currClownSequenceId = 0x115;
@@ -3000,7 +3000,7 @@ void Scene28::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -3128,14 +3128,14 @@ void Scene29::run() {
gameSys.insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 27) {
- _vm->initGnapPos(12, 7, kDirBottomRight);
- _vm->initPlatypusPos(12, 8, kDirNone);
+ _vm->_gnap->initPos(12, 7, kDirBottomRight);
+ _vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 7, -1, 0x107B9, 1);
_vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
- _vm->initGnapPos(-1, 7, kDirBottomRight);
- _vm->initPlatypusPos(-2, 7, kDirNone);
+ _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ _vm->_plat->initPos(-2, 7, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index b00224b..c89d954 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -64,8 +64,8 @@ void Scene30::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
_kidSequenceId = 0x101;
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ _vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -312,14 +312,14 @@ void Scene31::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_prevSceneNum == 27) {
- _vm->initGnapPos(-1, 8, kDirBottomLeft);
- _vm->initPlatypusPos(-1, 9, kDirUnk4);
+ _vm->_gnap->initPos(-1, 8, kDirBottomLeft);
+ _vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(3, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(7, 12, kDirBottomRight);
- _vm->initPlatypusPos(6, 12, kDirNone);
+ _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ _vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(7, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
@@ -664,14 +664,14 @@ void Scene32::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_prevSceneNum == 33) {
- _vm->initGnapPos(11, 6, kDirBottomLeft);
- _vm->initPlatypusPos(12, 6, kDirUnk4);
+ _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ _vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
_vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
_vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
} else {
- _vm->initGnapPos(1, 6, kDirBottomRight);
- _vm->initPlatypusPos(1, 7, kDirNone);
+ _vm->_gnap->initPos(1, 6, kDirBottomRight);
+ _vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -826,27 +826,27 @@ void Scene33::run() {
switch (_vm->_prevSceneNum) {
case 34:
- _vm->initGnapPos(11, 7, kDirBottomLeft);
- _vm->initPlatypusPos(12, 7, kDirUnk4);
+ _vm->_gnap->initPos(11, 7, kDirBottomLeft);
+ _vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 7, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
- _vm->initGnapPos(7, 7, kDirBottomRight);
- _vm->initPlatypusPos(8, 7, kDirNone);
+ _vm->_gnap->initPos(7, 7, kDirBottomRight);
+ _vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
break;
case 32:
- _vm->initGnapPos(-1, 6, kDirBottomRight);
- _vm->initPlatypusPos(-1, 7, kDirNone);
+ _vm->_gnap->initPos(-1, 6, kDirBottomRight);
+ _vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
break;
default:
- _vm->initGnapPos(3, 7, kDirBottomRight);
- _vm->initPlatypusPos(2, 7, kDirNone);
+ _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ _vm->_plat->initPos(2, 7, kDirNone);
_vm->endSceneInit();
break;
}
@@ -1032,7 +1032,7 @@ void Scene33::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS33UseChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnapGridX, 48 * _vm->_gnap->_pos.y - _vm->_gnapGridY);
+ gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x81, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceId = 0x7B5;
_vm->_gnap->_sequenceDatNum = 1;
_currChickenSequenceId = 0x7E;
@@ -1122,11 +1122,11 @@ void Scene38::run() {
_vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 39) {
- _vm->initGnapPos(3, 7, kDirBottomLeft);
- _vm->initPlatypusPos(4, 7, kDirUnk4);
+ _vm->_gnap->initPos(3, 7, kDirBottomLeft);
+ _vm->_plat->initPos(4, 7, kDirUnk4);
} else {
- _vm->initGnapPos(3, 8, kDirBottomRight);
- _vm->initPlatypusPos(4, 8, kDirNone);
+ _vm->_gnap->initPos(3, 8, kDirBottomRight);
+ _vm->_plat->initPos(4, 8, kDirNone);
}
_vm->endSceneInit();
@@ -1420,12 +1420,12 @@ void Scene39::run() {
_nextGuySequenceId = -1;
if (_vm->_prevSceneNum == 38) {
- _vm->initGnapPos(3, 7, kDirUpRight);
- _vm->initPlatypusPos(2, 7, kDirUpLeft);
+ _vm->_gnap->initPos(3, 7, kDirUpRight);
+ _vm->_plat->initPos(2, 7, kDirUpLeft);
_vm->endSceneInit();
} else {
- _vm->initGnapPos(4, 7, kDirBottomRight);
- _vm->initPlatypusPos(5, 7, kDirNone);
+ _vm->_gnap->initPos(4, 7, kDirBottomRight);
+ _vm->_plat->initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 6ec914d..e5e5651 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -270,23 +270,23 @@ void Scene41::run() {
_vm->_gnap->_id = 140;
gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->initPlatypusPos(8, 10, kDirBottomLeft);
+ _vm->_plat->initPos(8, 10, kDirBottomLeft);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 45) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-2, 8, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-2, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 42) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(5, 8, kDirBottomRight);
- _vm->initPlatypusPos(6, 8, kDirBottomLeft);
+ _vm->_gnap->initPos(5, 8, kDirBottomRight);
+ _vm->_plat->initPos(6, 8, kDirBottomLeft);
_vm->endSceneInit();
}
@@ -785,20 +785,20 @@ void Scene42::run() {
if (_vm->_toyUfoSequenceId == 0x872)
_vm->setGrabCursorSprite(-1);
} else if (_vm->_prevSceneNum == 41) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 43) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_gnap->initPos(5, 11, kDirUpRight);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -1065,7 +1065,7 @@ void Scene42::updateAnimations() {
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);
+ 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->_gnap->_sequenceDatNum = 1;
} else {
gameSys.insertSequence(sequenceId, _vm->_gnap->_id,
@@ -1227,28 +1227,28 @@ void Scene43::run() {
} else {
switch (_vm->_prevSceneNum) {
case 42:
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
- _vm->initGnapPos(4, 7, kDirBottomLeft);
- _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->_gnap->initPos(4, 7, kDirBottomLeft);
+ _vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
default:
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_gnap->initPos(5, 11, kDirUpRight);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
@@ -1681,23 +1681,23 @@ void Scene44::run() {
} else {
switch (_vm->_prevSceneNum) {
case 43:
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 7, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-1, 7, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 8, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
break;
case 50:
- _vm->initGnapPos(4, 8, kDirBottomRight);
+ _vm->_gnap->initPos(4, 8, kDirBottomRight);
if (_vm->_sceneSavegameLoaded) {
- _vm->initPlatypusPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
+ _vm->_plat->initPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
} else if (!_vm->isFlag(kGFUnk13)) {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
@@ -1711,8 +1711,8 @@ void Scene44::run() {
_vm->endSceneInit();
break;
default:
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_gnap->initPos(5, 11, kDirUpRight);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
@@ -2019,7 +2019,7 @@ void Scene44::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextKissingLadySequenceId == 0xF6) {
gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->initPlatypusPos(5, 8, kDirNone);
+ _vm->_plat->initPos(5, 8, kDirNone);
_currKissingLadySequenceId = _nextKissingLadySequenceId;
_nextKissingLadySequenceId = -1;
gameSys.setAnimation(0, 0, 2);
@@ -2147,23 +2147,23 @@ void Scene45::run() {
gameSys.setAnimation(0x9E, 1, 0);
_vm->_gnap->_actionStatus = 1;
gameSys.insertSequence(_vm->_gnap->_sequenceId, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
- _vm->initPlatypusPos(4, 8, kDirNone);
+ _vm->_plat->initPos(4, 8, kDirNone);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 46) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 9, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 41) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(11, 9, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
_vm->gnapWalkTo(10, 9, -1, 0x107BA, 1);
} else {
- _vm->initGnapPos(2, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_gnap->initPos(2, 11, kDirUpRight);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
@@ -2201,7 +2201,7 @@ void Scene45::run() {
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);
+ kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->_gnap->_sequenceId = 0x7BD;
@@ -2514,20 +2514,20 @@ void Scene46::run() {
gameSys.insertSequence(_vm->_toyUfoSequenceId | 0x10000, _vm->_toyUfoId, 0, 0, kSeqNone, 0, _vm->_toyUfoX - 274, _vm->_toyUfoY - 128);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 44) {
- _vm->initGnapPos(-1, 8, kDirUpRight);
- _vm->initPlatypusPos(-1, 8, kDirUpLeft);
+ _vm->_gnap->initPos(-1, 8, kDirUpRight);
+ _vm->_plat->initPos(-1, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 45) {
- _vm->initGnapPos(11, 8, kDirUpRight);
- _vm->initPlatypusPos(12, 8, kDirUpLeft);
+ _vm->_gnap->initPos(11, 8, kDirUpRight);
+ _vm->_plat->initPos(12, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
- _vm->initGnapPos(5, 11, kDirUpRight);
- _vm->initPlatypusPos(6, 11, kDirUpLeft);
+ _vm->_gnap->initPos(5, 11, kDirUpRight);
+ _vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
_vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
Commit: 9d2c537beb5135ecd8e007b227da5139e74a9515
https://github.com/scummvm/scummvm/commit/9d2c537beb5135ecd8e007b227da5139e74a9515
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:53+02:00
Commit Message:
GNAP: Some more refactoring in Character, some renaming
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.h
engines/gnap/grid.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 4356862..9503bfd 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -598,6 +598,16 @@ void PlayerGnap::initPos(int gridX, int gridY, Facing facing) {
kSeqScale, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
}
+int PlayerGnap::getWalkSequenceId(int deltaX, int deltaY) {
+ static const int walkSequenceIds[9] = {
+ 0x7B2, 0x000, 0x7B4,
+ 0x7AD, 0x000, 0x7AE,
+ 0x7B1, 0x000, 0x7B3
+ };
+ // CHECKME This is a little weird
+ return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -711,4 +721,14 @@ void PlayerPlat::initPos(int gridX, int gridY, Facing facing) {
kSeqScale, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
}
+int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
+ static const int walkSequenceIds[9] = {
+ 0x7C5, 0x000, 0x7C8,
+ 0x7C4, 0x000, 0x7C7,
+ 0x7C3, 0x000, 0x7C6
+ };
+ // CHECKME This is a little weird
+ return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 3964397..ddfc719 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -46,6 +46,7 @@ public:
virtual void updateIdleSequence() = 0;
virtual void updateIdleSequence2() = 0;
virtual void initPos(int gridX, int gridY, Facing facing) = 0;
+ virtual int getWalkSequenceId(int deltaX, int deltaY) = 0;
Common::Point _pos;
Facing _idleFacing;
@@ -68,6 +69,7 @@ public:
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
+ virtual int getWalkSequenceId(int deltaX, int deltaY);
void initBrainPulseRndValue();
void kissPlatypus(int callback);
@@ -86,6 +88,7 @@ public:
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
+ virtual int getWalkSequenceId(int deltaX, int deltaY);
};
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 4cab405..d54d4d9 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -487,13 +487,12 @@ public:
int _gnapWalkDestX, _gnapWalkDestY;
int _gnapWalkDeltaX, _gnapWalkDeltaY, _gnapWalkDirX, _gnapWalkDirY, _gnapWalkDirXIncr, _gnapWalkDirYIncr;
- int getGnapWalkSequenceId(int deltaX, int deltaY);
int getGnapWalkStopSequenceId(int deltaX, int deltaY);
Facing getGnapWalkFacing(int deltaX, int deltaY);
- bool gridSub41F08B(int gridX, int gridY);
- bool gridSub41F5FC(int gridX, int gridY, int index);
- bool gridSub41FAD5(int gridX, int gridY, int index);
+ bool gnapFindPath1(int gridX, int gridY, int index);
+ bool gnapFindPath2(int gridX, int gridY, int index);
bool gnapFindPath3(int gridX, int gridY);
+ bool gnapFindPath4(int gridX, int gridY);
bool gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void gnapWalkStep();
@@ -504,11 +503,10 @@ public:
int _platWalkDestX, _platWalkDestY;
int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
- int getPlatypusWalkSequenceId(int deltaX, int deltaY);
- bool gridSub423750(int gridX, int gridY);
- bool gridSub423CC1(int gridX, int gridY, int index);
- bool gridSub42419A(int gridX, int gridY, int index);
+ bool platFindPath1(int gridX, int gridY, int index);
+ bool platFindPath2(int gridX, int gridY, int index);
bool platFindPath3(int gridX, int gridY);
+ bool platFindPath4(int gridX, int gridY);
bool platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void platypusWalkStep();
void platypusMakeRoom();
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 5c9b3dd..271f349 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -38,16 +38,6 @@ void GnapEngine::initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gri
_plat->_gridY = 347 - gridMinY;
}
-int GnapEngine::getGnapWalkSequenceId(int deltaX, int deltaY) {
- static const int _gnapWalkSequenceIds[9] = {
- 0x7B2, 0x000, 0x7B4,
- 0x7AD, 0x000, 0x7AE,
- 0x7B1, 0x000, 0x7B3
- };
- // CHECKME This is a little weird
- return _gnapWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
-}
-
int GnapEngine::getGnapWalkStopSequenceId(int deltaX, int deltaY) {
static const int _gnapWalkStopSequenceIds[9] = {
0x7BC, 0x7BA, 0x7BA,
@@ -90,7 +80,7 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
}
-bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
+bool GnapEngine::gnapFindPath4(int gridX, int gridY) {
bool result = false;
_gnapWalkNodesCount = 0;
@@ -186,7 +176,7 @@ bool GnapEngine::gridSub41F08B(int gridX, int gridY) {
return result;
}
-bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
+bool GnapEngine::gnapFindPath1(int gridX, int gridY, int index) {
_gnapWalkNodesCount = index;
_gnapWalkDirXIncr = 0;
_gnapWalkDirYIncr = 0;
@@ -264,7 +254,7 @@ bool GnapEngine::gridSub41F5FC(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::gridSub41FAD5(int gridX, int gridY, int index) {
+bool GnapEngine::gnapFindPath2(int gridX, int gridY, int index) {
_gnapWalkNodesCount = index;
_gnapWalkDirXIncr = 0;
_gnapWalkDirYIncr = 0;
@@ -371,7 +361,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
bool done = false;
while (!done && gridIncr < _gridMaxX) {
- if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41F5FC(gridX + gridIncr, gridY, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY) && gnapFindPath1(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY;
@@ -381,7 +371,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41F5FC(gridX - gridIncr, gridY, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY) && gnapFindPath1(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY;
@@ -391,7 +381,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41F5FC(gridX, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX, gridY + gridIncr) && gnapFindPath1(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -401,7 +391,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41F5FC(gridX, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX, gridY - gridIncr) && gnapFindPath1(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -411,7 +401,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gnapFindPath1(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -421,7 +411,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gnapFindPath1(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -431,7 +421,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gnapFindPath1(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -441,7 +431,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41F5FC(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gnapFindPath1(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -451,7 +441,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY) && gridSub41FAD5(gridX + gridIncr, gridY, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY) && gnapFindPath2(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY;
@@ -461,7 +451,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY) && gridSub41FAD5(gridX - gridIncr, gridY, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY) && gnapFindPath2(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY;
@@ -471,7 +461,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY + gridIncr) && gridSub41FAD5(gridX, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX, gridY + gridIncr) && gnapFindPath2(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -481,7 +471,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY - gridIncr) && gridSub41FAD5(gridX, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX, gridY - gridIncr) && gnapFindPath2(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -491,7 +481,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gnapFindPath2(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -501,7 +491,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gnapFindPath2(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY + i;
@@ -511,7 +501,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gnapFindPath2(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX + i;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -521,7 +511,7 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gridSub41FAD5(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gnapFindPath2(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_gnapWalkNodes[i]._gridX1 = gridX - i;
_gnapWalkNodes[i]._gridY1 = gridY - i;
@@ -561,16 +551,16 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
platypusMakeRoom();
// TODO: Simplify the cascade of Ifs
- if (gridSub41F5FC(_gnap->_pos.x, _gnap->_pos.y, 0))
+ if (gnapFindPath1(_gnap->_pos.x, _gnap->_pos.y, 0))
done = true;
- if (!done && gridSub41FAD5(_gnap->_pos.x, _gnap->_pos.y, 0))
+ if (!done && gnapFindPath2(_gnap->_pos.x, _gnap->_pos.y, 0))
done = true;
if (!done && gnapFindPath3(_gnap->_pos.x, _gnap->_pos.y))
done = true;
- if (!done && gridSub41F08B(_gnap->_pos.x, _gnap->_pos.y))
+ if (!done && gnapFindPath4(_gnap->_pos.x, _gnap->_pos.y))
done = true;
gnapIdle();
@@ -616,7 +606,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
_gnapWalkNodes[index]._id -= 10;
else
_gnapWalkNodes[index]._id += 10;
- int newSequenceId = getGnapWalkSequenceId(_gnapWalkNodes[index]._deltaX, _gnapWalkNodes[index]._deltaY);
+ int newSequenceId = _gnap->getWalkSequenceId(_gnapWalkNodes[index]._deltaX, _gnapWalkNodes[index]._deltaY);
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index]._id,
makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
@@ -741,17 +731,7 @@ void GnapEngine::gnapWalkStep() {
////////////////////////////////////////////////////////////////////////////////
-int GnapEngine::getPlatypusWalkSequenceId(int deltaX, int deltaY) {
- static const int _platypusWalkSequenceIds[9] = {
- 0x7C5, 0x000, 0x7C8,
- 0x7C4, 0x000, 0x7C7,
- 0x7C3, 0x000, 0x7C6
- };
- // CHECKME This is a little weird
- return _platypusWalkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
-}
-
-bool GnapEngine::gridSub423750(int gridX, int gridY) {
+bool GnapEngine::platFindPath4(int gridX, int gridY) {
bool result = false;
_platWalkNodesCount = 0;
@@ -847,7 +827,7 @@ bool GnapEngine::gridSub423750(int gridX, int gridY) {
return result;
}
-bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
+bool GnapEngine::platFindPath1(int gridX, int gridY, int index) {
_platWalkNodesCount = index;
_platWalkDirXIncr = 0;
_platWalkDirYIncr = 0;
@@ -925,7 +905,7 @@ bool GnapEngine::gridSub423CC1(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::gridSub42419A(int gridX, int gridY, int index) {
+bool GnapEngine::platFindPath2(int gridX, int gridY, int index) {
_platWalkNodesCount = index;
_platWalkDirXIncr = 0;
_platWalkDirYIncr = 0;
@@ -1032,7 +1012,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
bool done = false;
while (!done && gridIncr < _gridMaxX) {
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y;
@@ -1042,7 +1022,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y;
@@ -1052,7 +1032,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1062,7 +1042,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1072,7 +1052,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1082,7 +1062,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1092,7 +1072,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1102,7 +1082,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && gridSub423CC1(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1112,7 +1092,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y;
@@ -1122,7 +1102,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y;
@@ -1132,7 +1112,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1142,7 +1122,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1152,7 +1132,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1162,7 +1142,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
@@ -1172,7 +1152,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1182,7 +1162,7 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && gridSub42419A(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
_platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
_platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
@@ -1217,17 +1197,17 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (animationIndex >= 0 && _gnap->_pos == Common::Point(_platWalkDestX, _platWalkDestY))
gnapWalkStep();
- if (gridSub423CC1(_plat->_pos.x, _plat->_pos.y, 0))
+ if (platFindPath1(_plat->_pos.x, _plat->_pos.y, 0))
done = true;
- if (!done && gridSub42419A(_plat->_pos.x, _plat->_pos.y, 0))
+ if (!done && platFindPath2(_plat->_pos.x, _plat->_pos.y, 0))
done = true;
if (!done && platFindPath3(_plat->_pos.x, _plat->_pos.y))
done = true;
if (!done)
- gridSub423750(_plat->_pos.x, _plat->_pos.y);
+ platFindPath4(_plat->_pos.x, _plat->_pos.y);
int platSequenceId = _plat->_sequenceId;
int platId = _plat->_id;
@@ -1268,7 +1248,7 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
_platWalkNodes[index]._id -= 10;
else
_platWalkNodes[index]._id += 10;
- int newSequenceId = getPlatypusWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
+ int newSequenceId = _plat->getWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
_gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index]._id,
makeRid(platSequenceDatNum, platSequenceId), platId,
kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
Commit: 3209ce80033e10b1801ce9e8075aaabdace2a071
https://github.com/scummvm/scummvm/commit/3209ce80033e10b1801ce9e8075aaabdace2a071
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:53+02:00
Commit Message:
GNAP: Fix a small bug in Playtpuss pathfinding
Changed paths:
engines/gnap/grid.cpp
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 271f349..d38f53b 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -1206,8 +1206,8 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
if (!done && platFindPath3(_plat->_pos.x, _plat->_pos.y))
done = true;
- if (!done)
- platFindPath4(_plat->_pos.x, _plat->_pos.y);
+ if (!done && platFindPath4(_plat->_pos.x, _plat->_pos.y))
+ done = true;
int platSequenceId = _plat->_sequenceId;
int platId = _plat->_id;
Commit: 81074f4503fbb09903c62f5dbb857c741c75cfc3
https://github.com/scummvm/scummvm/commit/81074f4503fbb09903c62f5dbb857c741c75cfc3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:53+02:00
Commit Message:
GNAP: use Common::Point for gnapWalkTo
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 78c7617..36d2889 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1189,7 +1189,7 @@ void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
if (_plat->_pos.x == gridX && _plat->_pos.y == gridY)
platypusMakeRoom();
- gnapWalkTo(gridX, gridY, -1, -1, 1);
+ gnapWalkTo(Common::Point(gridX, gridY), -1, -1, 1);
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
}
@@ -1199,7 +1199,7 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
_gameSys->setAnimation(0, 0, animationIndex);
_gnap->_actionStatus = -1;
_plat->_actionStatus = -1;
- gnapWalkTo(gridX1, gridY1, -1, -1, 1);
+ gnapWalkTo(Common::Point(gridX1, gridY1), -1, -1, 1);
platypusWalkTo(gridX2, gridY2, -1, -1, 1);
_mouseClickState._left = false;
return true;
@@ -1222,17 +1222,21 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
if (_gnap->_actionStatus <= -1 && _plat->_actionStatus <= -1) {
_gnap->_actionStatus = 100;
- if (isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)))
+ Common::Point checkPt = _plat->_pos + Common::Point(gridX, gridY);
+ if (isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
platypusWalkStep();
- if (!isPointBlocked(_plat->_pos.x + gridX, _plat->_pos.y + gridY) && (_gnap->_pos != Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY))) {
- gnapWalkTo(_plat->_pos.x + gridX, _plat->_pos.y + gridY, 0, 0x107B9, 1);
+ checkPt = _plat->_pos + Common::Point(gridX, gridY);
+ }
+
+ if (!isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
+ gnapWalkTo(checkPt, 0, 0x107B9, 1);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
doCallback(callback);
gameUpdateTick();
}
_gameSys->setAnimation(0, 0, 0);
- if (_gnap->_pos == Common::Point(_plat->_pos.x + gridX, _plat->_pos.y + gridY)) {
+ if (_gnap->_pos == _plat->_pos + Common::Point(gridX, gridY)) {
_gameSys->setAnimation(platSequenceId, _plat->_id, 1);
_plat->playSequence(platSequenceId);
while (_gameSys->getAnimationStatus(1) != 2) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d54d4d9..619afdd 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -478,6 +478,7 @@ public:
int _gridMinX, _gridMinY;
int _gridMaxX, _gridMaxY;
bool isPointBlocked(int gridX, int gridY);
+ bool isPointBlocked(Common::Point gridPos);
void initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gridMaxY);
bool testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2);
@@ -494,7 +495,6 @@ public:
bool gnapFindPath3(int gridX, int gridY);
bool gnapFindPath4(int gridX, int gridY);
bool gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
- bool gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
void gnapWalkStep();
// Platypus walking
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index d38f53b..21881a7 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -58,6 +58,10 @@ Facing GnapEngine::getGnapWalkFacing(int deltaX, int deltaY) {
return _gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
}
+bool GnapEngine::isPointBlocked(Common::Point gridPos) {
+ return isPointBlocked(gridPos.x, gridPos.y);
+}
+
bool GnapEngine::isPointBlocked(int gridX, int gridY) {
if (gridX < 0 || gridX >= _gridMaxX || gridY < 0 || gridY >= _gridMaxY)
@@ -528,19 +532,17 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
}
bool GnapEngine::gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
- return gnapWalkTo(gridPos.x, gridPos.y, animationIndex, sequenceId, flags);
-}
-
-bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
bool done = false;
_timers[2] = 200;
_timers[3] = 300;
+ int gridX = gridPos.x;
if (gridX < 0)
gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
+ int gridY = gridPos.y;
if (gridY < 0)
gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
@@ -705,27 +707,54 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
}
void GnapEngine::gnapWalkStep() {
- bool done = false;
- for (int i = 1; i < _gridMaxX && !done; ++i) {
- done = true;
- if (!isPointBlocked(_gnap->_pos.x + i, _gnap->_pos.y))
- gnapWalkTo(_gnap->_pos.x + i, _gnap->_pos.y, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x - i, _gnap->_pos.y))
- gnapWalkTo(_gnap->_pos.x - i, _gnap->_pos.y, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x, _gnap->_pos.y + 1))
- gnapWalkTo(_gnap->_pos.x, _gnap->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x, _gnap->_pos.y - 1))
- gnapWalkTo(_gnap->_pos.x, _gnap->_pos.y - 1, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x + 1, _gnap->_pos.y + 1))
- gnapWalkTo(_gnap->_pos.x + 1, _gnap->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x - 1, _gnap->_pos.y + 1))
- gnapWalkTo(_gnap->_pos.x - 1, _gnap->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x + 1, _gnap->_pos.y - 1))
- gnapWalkTo(_gnap->_pos.x + 1, _gnap->_pos.y - 1, -1, -1, 1);
- else if (!isPointBlocked(_gnap->_pos.x - 1, _gnap->_pos.y - 1))
- gnapWalkTo(_gnap->_pos.x - 1, _gnap->_pos.y - 1, -1, -1, 1);
- else
- done = false;
+ for (int i = 1; i < _gridMaxX; ++i) {
+ Common::Point checkPt = Common::Point(_gnap->_pos.x + i, _gnap->_pos.y);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x - i, _gnap->_pos.y);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x, _gnap->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x, _gnap->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x + 1, _gnap->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x - 1, _gnap->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x + 1, _gnap->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_gnap->_pos.x - 1, _gnap->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ gnapWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
}
}
@@ -1179,7 +1208,6 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
}
bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
-
int datNum = flags & 3;
bool done = false;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 3ba263d..c47c195 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -96,7 +96,7 @@ void Scene01::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 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->_gnap->getSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 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->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
@@ -225,7 +225,7 @@ void Scene01::run() {
case kHS01ExitTruck:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
@@ -242,12 +242,12 @@ void Scene01::run() {
case kHS01WalkArea7:
case kHS01WalkArea8:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -418,14 +418,14 @@ void Scene02::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
_vm->_gnap->initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(7, 6, 0, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
updateHotspots();
@@ -450,7 +450,7 @@ void Scene02::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -504,8 +504,8 @@ void Scene02::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
+ _vm->gnapWalkTo(destPos, 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 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->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 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->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
@@ -607,7 +607,7 @@ void Scene02::run() {
case kHS02ExitHouse:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
@@ -619,7 +619,7 @@ void Scene02::run() {
case kHS02ExitBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
@@ -631,7 +631,7 @@ void Scene02::run() {
case kHS02ExitCreek:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
@@ -642,7 +642,7 @@ void Scene02::run() {
case kHS02ExitPigpen:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
@@ -655,12 +655,12 @@ void Scene02::run() {
case kHS02WalkArea3:
case kHS02WalkArea4:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -926,7 +926,7 @@ void Scene03::run() {
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(3, 6, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -968,7 +968,7 @@ void Scene03::run() {
case kHS03Grass:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
@@ -996,7 +996,7 @@ void Scene03::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
@@ -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->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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;
@@ -1037,7 +1037,7 @@ void Scene03::run() {
case kHS03TrappedPlatypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
@@ -1047,10 +1047,10 @@ void Scene03::run() {
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
- _vm->gnapWalkTo(7, 6, 0, 0x107B5, 1);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107B5, 1);
_vm->_gnap->_actionStatus = kAS03FreePlatypus;
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
else
@@ -1088,15 +1088,15 @@ void Scene03::run() {
case kHS03WalkAreas2:
case kHS03WalkAreas3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS03PlatypusWalkArea:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107B5, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
@@ -1107,7 +1107,7 @@ void Scene03::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1407,7 +1407,7 @@ void Scene04::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(6, 9, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
_vm->_gnap->initPos(5, 7, kDirBottomRight);
_vm->_plat->initPos(4, 7, kDirNone);
@@ -1419,7 +1419,7 @@ void Scene04::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(9, 9, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
@@ -1565,13 +1565,13 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
_vm->_gnap->_idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
@@ -1587,7 +1587,7 @@ void Scene04::run() {
case kHS04ExitTruck:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
@@ -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->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
if (_triedWindow) {
_vm->_gnap->_actionStatus = kAS04GetKeyAnother;
} else {
@@ -1631,7 +1631,7 @@ void Scene04::run() {
case kHS04ExitBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
@@ -1645,12 +1645,12 @@ void Scene04::run() {
case kHS04WalkArea1:
case kHS04WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1890,7 +1890,7 @@ void Scene05::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 9, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
@@ -1980,24 +1980,24 @@ void Scene05::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1,
- 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
+ _vm->gnapWalkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
- } else if (_vm->_grabCursorSpriteIndex >= 0) {
+ } else if (_vm->_grabCursorSpriteIndex >= 0)
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
- } else {
+ else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->playGnapMoan2(9, 7);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
@@ -2034,7 +2034,8 @@ void Scene05::run() {
case kHS05Padlock:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x - 1, _vm->_hotspotsWalkPos[2].y + 1, 0, -1, 1);
+ Common::Point destPt = _vm->_hotspotsWalkPos[2] + Common::Point(- 1, 1);
+ _vm->gnapWalkTo(destPt, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
@@ -2042,7 +2043,7 @@ void Scene05::run() {
_vm->_newSceneNum = 36;
} else if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0,
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0,
_vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2054,8 +2055,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y,
- 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
@@ -2070,7 +2070,7 @@ void Scene05::run() {
case kHS05ExitHouse:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
@@ -2084,7 +2084,7 @@ void Scene05::run() {
case kHS05WalkArea1:
case kHS05WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS05WalkArea3:
@@ -2093,7 +2093,7 @@ void Scene05::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2320,7 +2320,7 @@ void Scene06::run() {
_vm->endSceneInit();
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -2382,7 +2382,7 @@ void Scene06::run() {
_vm->playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TryToGetGas;
} else {
@@ -2415,7 +2415,7 @@ void Scene06::run() {
if (_vm->isFlag(kGFGasTaken))
_vm->playGnapImpossible(0, 0);
else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
@@ -2433,7 +2433,7 @@ void Scene06::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
@@ -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->_gnap->getSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TalkToHorse;
}
@@ -2470,7 +2470,7 @@ void Scene06::run() {
case kHS06ExitOutsideBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
@@ -2485,12 +2485,12 @@ void Scene06::run() {
case kHS06WalkArea4:
case kHS06WalkArea5:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2739,9 +2739,9 @@ void Scene07::run() {
case kHS07ExitHouse:
_vm->_isLeavingScene = true;
if (_vm->_gnap->_pos.x > 8)
- _vm->gnapWalkTo(_vm->_gnap->_pos.x, 7, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, 7), 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(8, 7, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(Common::Point(8, 7), 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS07LeaveScene;
break;
@@ -2783,7 +2783,7 @@ void Scene07::run() {
case kHS07WalkArea1:
case kHS07WalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS07WalkArea3:
@@ -2792,7 +2792,7 @@ void Scene07::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2956,7 +2956,7 @@ void Scene08::run() {
_vm->endSceneInit();
- _vm->gnapWalkTo(1, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(1, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -3011,7 +3011,7 @@ void Scene08::run() {
case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(0, 6, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(0, 6), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
@@ -3020,7 +3020,7 @@ void Scene08::run() {
case kHS08ExitCrash:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(3, 9, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(3, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
@@ -3033,7 +3033,7 @@ void Scene08::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS08LookMan;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
@@ -3043,7 +3043,7 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(8, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
@@ -3071,14 +3071,14 @@ void Scene08::run() {
_vm->_gnap->_actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(4, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS08GrabDog;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(4, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
@@ -3175,13 +3175,13 @@ void Scene08::run() {
case kHS08WalkArea1:
case kHS08WalkArea2:
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(-1, 6, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, 6), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3386,7 +3386,7 @@ void Scene09::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(4, 7, kDirBottomRight);
@@ -3439,7 +3439,7 @@ void Scene09::run() {
case kHS09ExitKitchen:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
- _vm->gnapWalkTo(4, 7, 0, 0x107BF, 1);
+ _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
@@ -3448,7 +3448,7 @@ void Scene09::run() {
case kHS09ExitHouse:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
- _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
_vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
@@ -3464,7 +3464,7 @@ void Scene09::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_actionStatus = kAS09SearchTrash;
- _vm->gnapWalkTo(9, 6, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(9, 6), 0, 0x107BC, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3477,12 +3477,12 @@ void Scene09::run() {
case kHS09WalkArea1:
case kHS09WalkArea2:
case kHS09WalkArea3:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 3acce7f..630a694 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -75,13 +75,13 @@ void Scene10::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(9, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(1, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(1, 7), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
@@ -132,7 +132,7 @@ void Scene10::run() {
case kHS10ExitBar:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(0, 7, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(0, 7), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
@@ -141,7 +141,7 @@ void Scene10::run() {
case kHS10ExitBackdoor:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(2, 9, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(2, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
@@ -164,14 +164,14 @@ void Scene10::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(4, 6, -1, -1, 1);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
}
@@ -194,7 +194,7 @@ void Scene10::run() {
_vm->playGnapMoan2(-1, -1);
else {
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
@@ -208,7 +208,7 @@ void Scene10::run() {
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
_vm->platypusWalkTo(3, 7, -1, -1, 1);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
@@ -226,7 +226,7 @@ void Scene10::run() {
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(4, 8, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
@@ -261,7 +261,7 @@ void Scene10::run() {
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(9, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(9, 6), 0, 0x107BB, 1);
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;
@@ -283,7 +283,7 @@ void Scene10::run() {
case kHS10WalkArea3:
case kHS10WalkArea4:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS10Device:
@@ -296,7 +296,7 @@ void Scene10::run() {
default:
if (_vm->_mouseClickState._left) {
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -573,7 +573,7 @@ void Scene11::run() {
_vm->endSceneInit();
if (_vm->_prevSceneNum == 12) {
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
}
@@ -612,7 +612,7 @@ void Scene11::run() {
case kHS11ExitKitchen:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(6, 5, 0, 0x107BF, 1);
+ _vm->gnapWalkTo(Common::Point(6, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(6, 6, -1, -1, 1);
_vm->_newSceneNum = 10;
@@ -620,7 +620,7 @@ void Scene11::run() {
case kHS11ExitToilet:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(8, 5, 0, 0x107BF, 1);
+ _vm->gnapWalkTo(Common::Point(8, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(8, 6, -1, -1, 1);
_vm->_newSceneNum = 13;
@@ -628,7 +628,7 @@ void Scene11::run() {
case kHS11ExitLeft:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(-1, 8, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
_vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
@@ -637,7 +637,7 @@ void Scene11::run() {
case kHS11GoggleGuy:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -653,7 +653,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
break;
}
@@ -665,7 +665,7 @@ void Scene11::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_gnap->_idleFacing = kDirUpRight;
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 9);
+ _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 9);
_vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
@@ -674,12 +674,12 @@ void Scene11::run() {
_vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS11GrabHookGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(5, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
@@ -700,7 +700,7 @@ void Scene11::run() {
_vm->playGnapScratchingHead(9, 8);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(9, 8, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(9, 8), 0, 0x107BA, 1);
_vm->_gnap->_actionStatus = kAS11GrabBillardBall;
break;
case TALK_CURSOR:
@@ -718,7 +718,7 @@ void Scene11::run() {
case kHS11WalkArea4:
case kHS11WalkArea5:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS11Device:
@@ -730,7 +730,7 @@ void Scene11::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -989,7 +989,7 @@ void Scene12::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
}
@@ -1030,7 +1030,7 @@ void Scene12::run() {
case kHS12ExitRight:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(10, -1, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS12LeaveScene;
_vm->platypusWalkTo(10, -1, -1, -1, 1);
_vm->_newSceneNum = 11;
@@ -1039,18 +1039,18 @@ void Scene12::run() {
case kHS12ToothGuy:
if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
_vm->_largeSprite = gameSys.createSurface(0x141);
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 9);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
@@ -1060,12 +1060,12 @@ void Scene12::run() {
_vm->playGnapScratchingHead(1, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(3, 7, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS12GrabToothGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(3, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
@@ -1081,19 +1081,19 @@ void Scene12::run() {
case kHS12Barkeeper:
if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 9);
+ _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(6, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12LookBarkeeper;
break;
@@ -1102,7 +1102,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(6, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
@@ -1116,26 +1116,26 @@ void Scene12::run() {
case kHS12BeardGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 9);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12LookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
- _vm->gnapWalkTo(7, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12GrabBeardGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 6, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
@@ -1152,7 +1152,7 @@ void Scene12::run() {
case kHS12Jukebox:
_vm->_newSceneNum = 15;
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(5, 6, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS12LeaveScene;
break;
@@ -1161,12 +1161,12 @@ void Scene12::run() {
case kHS12WalkArea3:
case kHS12WalkArea4:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1539,7 +1539,7 @@ void Scene13::run() {
case kHS13ExitBar:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(2, 7, 0, 0x107C0, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS13LeaveScene;
_vm->platypusWalkTo(2, 8, -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
@@ -1569,7 +1569,7 @@ void Scene13::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_sequenceDatNum = 0;
} else {
- _vm->gnapWalkTo(5, 5, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(5, 5), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS13BackToilet;
_vm->_gnap->_idleFacing = kDirUpRight;
}
@@ -1590,7 +1590,7 @@ void Scene13::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->gnapWalkTo(6, 7, 0, 0xA9, 5);
+ _vm->gnapWalkTo(Common::Point(6, 7), 0, 0xA9, 5);
_vm->_gnap->_actionStatus = kAS13FrontToilet;
_vm->_gnap->_idleFacing = kDirBottomRight;
break;
@@ -1604,7 +1604,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS13LookScribble;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
@@ -1613,7 +1613,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1633,7 +1633,7 @@ void Scene13::run() {
_vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(8, 7, 0, -1, 1);
+ _vm->gnapWalkTo(Common::Point(8, 7), 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13GrabUrinal;
break;
case TALK_CURSOR:
@@ -1655,7 +1655,7 @@ void Scene13::run() {
_vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(4, 8, 0, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107B9, 1);
_vm->_gnap->_actionStatus = kAS13GrabSink;
break;
case TALK_CURSOR:
@@ -1674,7 +1674,7 @@ void Scene13::run() {
case kHS13WalkArea7:
case kHS13WalkArea8:
case kHS13WalkArea9:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS13WalkArea1:
@@ -1683,7 +1683,7 @@ void Scene13::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2322,7 +2322,7 @@ void Scene17::update() {
_vm->updateMouseCursor();
_vm->updateGrabCursorSprite(0, 0);
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
}
@@ -2419,7 +2419,7 @@ void Scene17::run() {
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
_vm->_gnap->initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
@@ -2473,7 +2473,7 @@ void Scene17::run() {
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
_vm->_gnap->initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
@@ -2532,7 +2532,7 @@ void Scene17::run() {
} else {
_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->gnapWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
_vm->_plat->_actionStatus = kAS17GetWrench1;
_vm->_gnap->_actionStatus = kAS17GetWrench1;
_vm->_timers[5] = _vm->getRandom(30) + 80;
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 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);
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
@@ -2680,7 +2680,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
@@ -2693,7 +2693,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
}
@@ -2703,12 +2703,12 @@ void Scene17::run() {
case kHS17WalkArea2:
case kHS17WalkArea3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
break;
@@ -2998,7 +2998,7 @@ void Scene17::updateAnimations() {
_vm->_plat->_sequenceDatNum = 0;
_vm->_gnap->_sequenceId = 0x875;
_vm->_plat->_sequenceId = 0x23F;
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->_plat->_actionStatus = kAS17GetWrench2;
}
break;
@@ -3302,7 +3302,7 @@ void Scene18::closeHydrantValve() {
_vm->_gnap->_actionStatus = kAS18LeaveScene;
_vm->updateMouseCursor();
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed)) {
_vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
waitForGnapAction();
@@ -3311,7 +3311,7 @@ void Scene18::closeHydrantValve() {
waitForGnapAction();
}
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
_vm->_gnap->_actionStatus = kAS18CloseTopValve;
waitForGnapAction();
}
@@ -3384,7 +3384,7 @@ void Scene18::run() {
} else {
gameSys.setAnimation(_currPhoneSequenceId, 254, 3);
}
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->clearFlag(kGFGnapControlsToyUFO);
@@ -3395,19 +3395,19 @@ void Scene18::run() {
_vm->_gnap->initPos(4, 11, kDirBottomRight);
_vm->_plat->initPos(5, 11, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(4, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
_vm->_gnap->initPos(7, 7, kDirBottomRight);
_vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 10, kDirBottomRight);
_vm->_plat->initPos(-1, 10, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(3, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
}
}
@@ -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->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3513,12 +3513,12 @@ void Scene18::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y,
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
-1, -1, 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))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
_vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromHydrant;
}
break;
@@ -3582,7 +3582,7 @@ void Scene18::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS18CloseTopValve;
} else
@@ -3626,7 +3626,7 @@ void Scene18::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
else
@@ -3654,7 +3654,7 @@ void Scene18::run() {
} else {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, 0, 0x107C0, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, -1, 0x107C2, 1);
@@ -3671,7 +3671,7 @@ void Scene18::run() {
closeHydrantValve();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
@@ -3690,7 +3690,7 @@ void Scene18::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y, 0, 0x107B2, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity], 0, 0x107B2, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
@@ -3707,7 +3707,7 @@ void Scene18::run() {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
@@ -3719,7 +3719,7 @@ void Scene18::run() {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
@@ -3840,7 +3840,7 @@ void Scene18::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS18OpenTopValveDone;
break;
@@ -3938,7 +3938,7 @@ void Scene18::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 0, 0x107BA, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
if (_vm->_gnap->_actionStatus == kAS18OpenRightValveNoGarbageCan)
_vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCanDone;
@@ -4107,7 +4107,7 @@ void Scene19::run() {
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_shopAssistantCtr = 0;
_vm->endSceneInit();
- _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 9), -1, 0x107B9, 1);
updateHotspots();
} else {
_currShopAssistantSequenceId = 0x6D;
@@ -4118,7 +4118,7 @@ void Scene19::run() {
_vm->_gnap->initPos(3, 6, kDirBottomRight);
_vm->_plat->initPos(4, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(4, 9, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(4, 9), -1, 0x107B9, 1);
_vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
}
@@ -4170,7 +4170,7 @@ void Scene19::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 0, 0x107B2, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107B2, 1);
_vm->_gnap->_actionStatus = kAS19LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
@@ -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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
@@ -4243,7 +4243,7 @@ void Scene19::run() {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
_vm->_gnap->_actionStatus = kAS19GrabToy;
break;
@@ -4266,7 +4266,7 @@ void Scene19::run() {
_vm->playGnapScratchingHead(9, 1);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
_vm->playGnapIdle(8, 2);
_vm->_gnap->_actionStatus = kAS19UsePhone;
break;
@@ -4283,12 +4283,12 @@ void Scene19::run() {
case kHS19WalkArea2:
case kHS19WalkArea3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
}
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 237000d..8b742ee 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -208,7 +208,7 @@ void Scene20::run() {
}
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
@@ -216,28 +216,28 @@ void Scene20::run() {
_vm->_gnap->initPos(5, 11, kDirBottomRight);
_vm->_plat->initPos(6, 11, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 18:
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
break;
case 21:
_vm->_gnap->initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 22:
_vm->_gnap->initPos(7, 6, kDirBottomRight);
_vm->_plat->initPos(8, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
break;
default:
@@ -245,7 +245,7 @@ void Scene20::run() {
_vm->_plat->initPos(9, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
break;
@@ -302,7 +302,7 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 21;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1);
_vm->_plat->_idleFacing = kDirUnk4;
@@ -315,7 +315,7 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1);
}
@@ -328,7 +328,7 @@ void Scene20::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
@@ -341,7 +341,7 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y - 1, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
@@ -354,7 +354,7 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
@@ -451,12 +451,12 @@ void Scene20::run() {
case kHS20WalkArea1:
case kHS20WalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -625,7 +625,7 @@ void Scene20::updateAnimations() {
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(3, 8, -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJointDone:
@@ -674,7 +674,7 @@ void Scene20::updateAnimations() {
_currGroceryStoreGuySequenceId = 377;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = -1;
- _vm->gnapWalkTo(4, 8, -1, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107BB, 1);
break;
case 0x17C:
gameSys.setAnimation(0, 0, 3);
@@ -757,7 +757,7 @@ void Scene21::run() {
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
} else {
@@ -769,7 +769,7 @@ void Scene21::run() {
_nextOldLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
@@ -874,7 +874,7 @@ void Scene21::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, 0, 0x107B3, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
_vm->_gnap->_actionStatus = kAS21LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1);
}
@@ -882,12 +882,12 @@ void Scene21::run() {
case kHS21WalkArea1:
case kHS21WalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1050,7 +1050,7 @@ void Scene22::run() {
_vm->_gnap->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
_vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
}
@@ -1134,7 +1134,7 @@ void Scene22::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
}
@@ -1144,7 +1144,7 @@ void Scene22::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 23;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1);
}
@@ -1164,8 +1164,7 @@ void Scene22::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y,
- 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
@@ -1178,12 +1177,12 @@ void Scene22::run() {
case kHS22WalkArea1:
case kHS22WalkArea2:
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1302,9 +1301,9 @@ void Scene23::run() {
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else {
- _vm->gnapWalkTo(2, 7, 0, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), 0, 0x107B9, 1);
while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
@@ -1364,8 +1363,7 @@ void Scene23::run() {
if (_vm->isFlag(kGFSceneFlag1))
_vm->playGnapMoan2(0, 0);
else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
- 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS23LookCereals;
}
break;
@@ -1374,8 +1372,7 @@ void Scene23::run() {
_vm->playGnapImpossible(0, 0);
else {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y,
- 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
_vm->_gnap->_actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
@@ -1394,7 +1391,7 @@ void Scene23::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS23LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
}
@@ -1403,12 +1400,12 @@ void Scene23::run() {
case kHS23WalkArea1:
case kHS23WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1569,13 +1566,13 @@ void Scene24::run() {
_vm->_gnap->initPos(1, 8, kDirBottomRight);
_vm->_plat->initPos(2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(1, 9, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(1, 9), -1, 0x107B9, 1);
_vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
}
@@ -1627,7 +1624,7 @@ void Scene24::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1);
}
@@ -1638,7 +1635,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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 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);
}
@@ -1648,12 +1645,12 @@ void Scene24::run() {
case kHS24WalkArea2:
case kHS24WalkArea3:
if (_vm->_gnap->_actionStatus == -1)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1818,13 +1815,13 @@ void Scene25::run() {
_vm->_gnap->initPos(5, 11, kDirUpLeft);
_vm->_plat->initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 7, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 7), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(5, 6, kDirBottomRight);
_vm->_plat->initPos(6, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
@@ -1873,8 +1870,7 @@ void Scene25::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
_vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y,
- 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1888,7 +1884,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
@@ -1904,7 +1900,7 @@ void Scene25::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, 0, 0x107B4, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
}
@@ -1916,13 +1912,13 @@ void Scene25::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, 0, 0x107B1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(4, 5, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(4, 5), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicket;
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
}
@@ -1939,7 +1935,7 @@ void Scene25::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, -1, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], -1, -1, 1);
if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
_vm->_gnap->_idleFacing = kDirUpLeft;
else if (_vm->_sceneClickedHotspot == 8)
@@ -1962,12 +1958,12 @@ void Scene25::run() {
case kHS25WalkArea1:
case kHS25WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2048,7 +2044,7 @@ void Scene25::updateAnimations() {
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
_vm->playGnapIdle(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, -1, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone;
break;
@@ -2137,7 +2133,7 @@ void Scene26::run() {
_vm->_gnap->initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(2, 8, kDirBottomRight);
@@ -2190,7 +2186,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2199,7 +2195,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2208,7 +2204,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2217,7 +2213,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 30;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[4].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitElephant].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2226,7 +2222,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2234,12 +2230,12 @@ void Scene26::run() {
case kHS26WalkArea1:
case kHS26WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2354,21 +2350,21 @@ void Scene27::run() {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
case 29:
_vm->_gnap->initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
break;
case 31:
_vm->_gnap->initPos(12, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
break;
default:
@@ -2424,7 +2420,7 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemPicture) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, 0x107BC, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
_vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
@@ -2435,7 +2431,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
@@ -2474,7 +2470,7 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, -1, 0x107C7, 1);
}
@@ -2484,7 +2480,7 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade].x, _vm->_hotspotsWalkPos[kHS27ExitArcade].y + 1, -1, 0x107CF, 1);
}
@@ -2494,7 +2490,7 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand].x, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y + 1, -1, 0x107CD, 1);
}
@@ -2505,12 +2501,12 @@ void Scene27::run() {
if (_vm->isFlag(kGFPlatypus)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 28;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, _vm->_hotspotsWalkPos[kHS27ExitClown].y, 0, 0x107AD, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x + 1, _vm->_hotspotsWalkPos[kHS27ExitClown].y, -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS27TryEnterClownTent;
}
@@ -2519,12 +2515,12 @@ void Scene27::run() {
case kHS27WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2618,7 +2614,7 @@ void Scene27::updateAnimations() {
break;
case kAS27TryEnterClownTentDone:
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7].x, 9, -1, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[7].x, 9), -1, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = -1;
break;
@@ -2808,9 +2804,9 @@ void Scene28::run() {
}
} else {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(2, 8, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn], 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS28GrabHornFails;
}
@@ -2833,13 +2829,13 @@ void Scene28::run() {
_vm->playGnapImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown;
@@ -2852,7 +2848,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(5, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
@@ -2869,7 +2865,7 @@ void Scene28::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, 0, 0x107BF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, -1, 0x107C2, 1);
@@ -2903,12 +2899,12 @@ void Scene28::run() {
case kHS28WalkArea1:
case kHS28WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3007,7 +3003,7 @@ void Scene28::updateAnimations() {
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnap->_actionStatus = -1;
- _vm->gnapWalkTo(2, 8, -1, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107BB, 1);
break;
case kAS28TalkClown:
_clownTalkCtr = (_clownTalkCtr + 1) % 2;
@@ -3131,13 +3127,13 @@ void Scene29::run() {
_vm->_gnap->initPos(12, 7, kDirBottomRight);
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107B9, 1);
_vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 7, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
}
@@ -3186,7 +3182,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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
@@ -3214,7 +3210,7 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, -1, -1, 1);
}
@@ -3224,7 +3220,7 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y - 1, -1, 0x107CD, 1);
}
@@ -3236,7 +3232,7 @@ void Scene29::run() {
_vm->setGrabCursorSprite(-1);
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -3258,12 +3254,12 @@ void Scene29::run() {
case kHS29WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index c89d954..be8b911 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -67,7 +67,7 @@ void Scene30::run() {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
@@ -115,7 +115,7 @@ void Scene30::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
_vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine], 0, 0x107BC, 1);
_vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
@@ -124,7 +124,7 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(9, 8, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(Common::Point(9, 8), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
@@ -146,7 +146,7 @@ void Scene30::run() {
_vm->_newSceneNum = 47;
else
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS30LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, -1, 0x107C2, 1);
}
@@ -154,12 +154,12 @@ void Scene30::run() {
case kHS30WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -254,7 +254,7 @@ void Scene30::updateAnimations() {
break;
case kAS30UsePillMachine4:
gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y + 1, -1, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine] + Common::Point(0, 1), -1, 0x107BC, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS30LookPillMachine:
@@ -315,13 +315,13 @@ void Scene31::run() {
_vm->_gnap->initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(3, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(7, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
}
@@ -381,9 +381,9 @@ void Scene31::run() {
_vm->playGnapScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, -1, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 0, 0x107B9, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 0, 0x107B9, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS31UseMeasuringClown;
_vm->_timers[4] = 300;
@@ -418,7 +418,7 @@ void Scene31::run() {
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->playGnapPullOutDevice(6, 8);
_vm->playGnapUseDevice(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -432,7 +432,7 @@ void Scene31::run() {
if (_beerGuyDistracted) {
_vm->playGnapScratchingHead(6, 2);
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31UseBeerBarrel;
_vm->_gnap->_idleFacing = kDirUpLeft;
}
@@ -450,7 +450,7 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, -1, -1, 1);
}
@@ -460,7 +460,7 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y + 1, -1, 0x107CF, 1);
}
@@ -468,12 +468,12 @@ void Scene31::run() {
case kHS31WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -668,7 +668,7 @@ void Scene32::run() {
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
_vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
- _vm->gnapWalkTo(8, 6, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
_vm->_plat->initPos(1, 7, kDirNone);
@@ -719,7 +719,7 @@ void Scene32::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS32LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y + 1, -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
@@ -735,13 +735,13 @@ void Scene32::run() {
case kHS32WalkArea7:
case kHS32WalkArea8:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
@@ -829,7 +829,7 @@ void Scene33::run() {
_vm->_gnap->initPos(11, 7, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 7, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
break;
case 37:
@@ -842,7 +842,7 @@ void Scene33::run() {
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
_vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
_vm->_gnap->initPos(3, 7, kDirBottomRight);
@@ -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->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
@@ -926,7 +926,7 @@ void Scene33::run() {
if (_vm->_gnap->_pos.x > 6)
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(6, 7, 0, 0x107B1, 1);
+ _vm->gnapWalkTo(Common::Point(6, 7), 0, 0x107B1, 1);
}
break;
@@ -938,14 +938,14 @@ void Scene33::run() {
if (_vm->_gnap->_pos.x > 7)
_vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(7, 7, 0, 0x107B1, 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107B1, 1);
}
break;
case kHS33ExitCreek:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
@@ -955,7 +955,7 @@ void Scene33::run() {
case kHS33ExitPigpen:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
@@ -965,12 +965,12 @@ void Scene33::run() {
case kHS33WalkArea1:
case kHS33WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1172,7 +1172,7 @@ void Scene38::run() {
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
} else {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(-1, -1, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS38LeaveScene;
_vm->_newSceneNum = 37;
}
@@ -1186,7 +1186,7 @@ void Scene38::run() {
} else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
_vm->_sceneWaiting = false;
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(5, 7), 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
_vm->_gnap->_actionStatus = kAS38ExitCave;
}
@@ -1215,7 +1215,7 @@ void Scene38::run() {
if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->playGnapImpossible(0, 0);
else {
- _vm->gnapWalkTo(3, 6, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(3, 6), 0, 0x107BB, 1);
_vm->platypusWalkTo(4, 8, -1, -1, 1);
_vm->_gnap->_actionStatus = kAS38UseHuntingTrophy;
}
@@ -1243,7 +1243,7 @@ void Scene38::run() {
if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
else if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
@@ -1251,7 +1251,7 @@ void Scene38::run() {
if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
else if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1327,7 +1327,7 @@ void Scene38::updateAnimations() {
_vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->_isLeavingScene) {
_vm->_sceneWaiting = false;
- _vm->gnapWalkTo(5, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(5, 7), 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
_vm->_gnap->_actionStatus = kAS38ExitCave;
} else {
@@ -1491,7 +1491,7 @@ void Scene39::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y, 0, -1, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS39Sign], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
_vm->showFullScreenSprite(0x1C);
break;
@@ -1516,12 +1516,12 @@ void Scene39::run() {
case kHS39WalkArea1:
case kHS39WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index e5e5651..f6f41e6 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -277,12 +277,12 @@ void Scene41::run() {
_vm->_plat->initPos(-2, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 42) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 8, kDirBottomRight);
@@ -374,14 +374,14 @@ void Scene41::run() {
case kHS41ExitCave:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave].x, _vm->_hotspotsWalkPos[kHS41ExitCave].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->_newSceneNum = 40;
break;
case kHS41Exit:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
@@ -389,7 +389,7 @@ void Scene41::run() {
case kHS41ExitBBQ:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
@@ -398,7 +398,7 @@ void Scene41::run() {
case kHS41ToyVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->_gnap->_actionStatus = kAS41UseQuarterWithToyVendor;
- _vm->gnapWalkTo(4, 7, 0, 0x107BB, 9);
+ _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BB, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
@@ -412,7 +412,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(4, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
@@ -424,7 +424,7 @@ void Scene41::run() {
case kHS41Kid:
if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -435,13 +435,13 @@ void Scene41::run() {
_vm->playGnapScratchingHead(9, 0);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(7, 7, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS41GrabKid;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(7, 7, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -460,7 +460,7 @@ void Scene41::run() {
case kHS41WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -503,7 +503,7 @@ void Scene41::run() {
_vm->_toyUfoActionStatus = kAS41ToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -788,19 +788,19 @@ void Scene42::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 43) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
}
@@ -886,7 +886,7 @@ void Scene42::run() {
case kHS42ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
@@ -894,7 +894,7 @@ void Scene42::run() {
case kHS42ExitToyStand:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
@@ -902,7 +902,7 @@ void Scene42::run() {
case kHS42ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
@@ -910,7 +910,7 @@ void Scene42::run() {
case kHS42BBQVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, 0, 0x107BB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendor;
if (_vm->_plat->_pos.y < 9)
_vm->platypusWalkTo(_vm->_plat->_pos.x, 9, -1, -1, 1);
@@ -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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
@@ -943,7 +943,7 @@ void Scene42::run() {
_vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, 0, 0x107BC, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS42GrabChickenLeg;
break;
case TALK_CURSOR:
@@ -957,7 +957,7 @@ void Scene42::run() {
case kHS42WalkArea1:
case kHS42WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
@@ -969,7 +969,7 @@ void Scene42::run() {
_vm->_toyUfoActionStatus = kAS42ToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -1230,14 +1230,14 @@ void Scene43::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 44:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
break;
case 54:
@@ -1250,7 +1250,7 @@ void Scene43::run() {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
break;
}
@@ -1344,7 +1344,7 @@ void Scene43::run() {
case kHS43ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
@@ -1352,7 +1352,7 @@ void Scene43::run() {
case kHS43ExitBBQ:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
@@ -1360,7 +1360,7 @@ void Scene43::run() {
case kHS43ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
@@ -1376,7 +1376,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(5, 8, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -1398,7 +1398,7 @@ void Scene43::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(3, 7, 0, 67515, 1);
+ _vm->gnapWalkTo(Common::Point(3, 7), 0, 67515, 1);
_vm->_gnap->_actionStatus = 1;
break;
case TALK_CURSOR:
@@ -1412,7 +1412,7 @@ void Scene43::run() {
case kHS43WalkArea1:
case kHS43WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -1423,7 +1423,7 @@ void Scene43::run() {
_vm->_toyUfoActionStatus = 5;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -1684,14 +1684,14 @@ void Scene44::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 7, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
break;
case 46:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
break;
case 50:
@@ -1715,7 +1715,7 @@ void Scene44::run() {
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(5, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
break;
}
}
@@ -1792,14 +1792,14 @@ void Scene44::run() {
case kHS44ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS44ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS44ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
@@ -1807,7 +1807,7 @@ void Scene44::run() {
case kHS44ExitShow:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow].x, _vm->_hotspotsWalkPos[kHS44ExitShow].y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 46;
break;
@@ -1815,7 +1815,7 @@ void Scene44::run() {
case kHS44KissingLady:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->_actionStatus = 2;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, -1, 9);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, -1, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
} else {
switch (_vm->_verbCursor) {
@@ -1827,7 +1827,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady].x, _vm->_hotspotsWalkPos[kHS44KissingLady].y, 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case PLAT_CURSOR:
@@ -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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -1894,7 +1894,7 @@ void Scene44::run() {
case kHS44WalkArea1:
case kHS44WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
@@ -1906,7 +1906,7 @@ void Scene44::run() {
_vm->_toyUfoActionStatus = 7;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -2154,19 +2154,19 @@ void Scene45::run() {
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 41) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
- _vm->gnapWalkTo(10, 9, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(10, 9), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(2, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 7, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
}
if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -2284,7 +2284,7 @@ void Scene45::run() {
case kHS45ExitUfoParty:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
}
@@ -2293,7 +2293,7 @@ void Scene45::run() {
case kHS45ExitShoe:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
@@ -2303,7 +2303,7 @@ void Scene45::run() {
case kHS45ExitRight:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
@@ -2320,7 +2320,7 @@ void Scene45::run() {
case kHS45DiscoBall:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemSpring) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall].x, _vm->_hotspotsWalkPos[kHS45DiscoBall].y, 0, 0x9F, 5);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall], 0, 0x9F, 5);
_vm->_gnap->_actionStatus = 1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemSpring);
@@ -2343,7 +2343,7 @@ void Scene45::run() {
case kHS45WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -2354,7 +2354,7 @@ void Scene45::run() {
_vm->_toyUfoActionStatus = 3;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -2518,19 +2518,19 @@ void Scene46::run() {
_vm->_plat->initPos(-1, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(2, 8, -1, 0x107B9, 1);
+ _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 45) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(12, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(8, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
- _vm->gnapWalkTo(6, 8, -1, 0x107BA, 1);
+ _vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
}
_vm->_timers[4] = _vm->getRandom(50) + 80;
@@ -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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 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->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case GRAB_CURSOR:
@@ -2648,14 +2648,14 @@ void Scene46::run() {
case kHS46ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y, 0, 0x107AE, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS46ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y, 0, 0x107AF, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
@@ -2663,7 +2663,7 @@ void Scene46::run() {
case kHS46ExitDisco:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y, 0, 0x107AB, 1);
+ _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
_vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
@@ -2671,7 +2671,7 @@ void Scene46::run() {
case kHS46WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -2682,7 +2682,7 @@ void Scene46::run() {
_vm->_toyUfoActionStatus = 4;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- _vm->gnapWalkTo(-1, -1, -1, -1, 1);
+ _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
Commit: b3bf17a315092b38c675360dcf360a54c054d791
https://github.com/scummvm/scummvm/commit/b3bf17a315092b38c675360dcf360a54c054d791
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:53+02:00
Commit Message:
GNAP: Use Common::Point with platypusWalkTo
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 36d2889..9f1ae26 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1200,7 +1200,7 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
_gnap->_actionStatus = -1;
_plat->_actionStatus = -1;
gnapWalkTo(Common::Point(gridX1, gridY1), -1, -1, 1);
- platypusWalkTo(gridX2, gridY2, -1, -1, 1);
+ platypusWalkTo(Common::Point(gridX2, gridY2), -1, -1, 1);
_mouseClickState._left = false;
return true;
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 619afdd..59326b0 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -507,7 +507,7 @@ public:
bool platFindPath2(int gridX, int gridY, int index);
bool platFindPath3(int gridX, int gridY);
bool platFindPath4(int gridX, int gridY);
- bool platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags);
+ bool platypusWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
void platypusWalkStep();
void platypusMakeRoom();
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 21881a7..568fe25 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -1207,15 +1207,17 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
return done;
}
-bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int sequenceId, int flags) {
+bool GnapEngine::platypusWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
bool done = false;
_timers[1] = 60;
+ int gridX = gridPos.x;
if (gridX < 0)
gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
+ int gridY = gridPos.y;
if (gridY < 0)
gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
@@ -1365,27 +1367,54 @@ bool GnapEngine::platypusWalkTo(int gridX, int gridY, int animationIndex, int se
}
void GnapEngine::platypusWalkStep() {
- bool done = false;
- for (int i = 1; !done && i < _gridMaxX; ++i) {
- done = true;
- if (!isPointBlocked(_plat->_pos.x + i, _plat->_pos.y))
- platypusWalkTo(_plat->_pos.x + i, _plat->_pos.y, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x - i, _plat->_pos.y))
- platypusWalkTo(_plat->_pos.x - i, _plat->_pos.y, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + 1))
- platypusWalkTo(_plat->_pos.x, _plat->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - 1))
- platypusWalkTo(_plat->_pos.x, _plat->_pos.y - 1, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x + 1, _plat->_pos.y + 1))
- platypusWalkTo(_plat->_pos.x + 1, _plat->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x - 1, _plat->_pos.y + 1))
- platypusWalkTo(_plat->_pos.x - 1, _plat->_pos.y + 1, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x + 1, _plat->_pos.y - 1))
- platypusWalkTo(_plat->_pos.x + 1, _plat->_pos.y - 1, -1, -1, 1);
- else if (!isPointBlocked(_plat->_pos.x - 1, _plat->_pos.y - 1))
- platypusWalkTo(_plat->_pos.x - 1, _plat->_pos.y - 1, -1, -1, 1);
- else
- done = false;
+ for (int i = 1; i < _gridMaxX; ++i) {
+ Common::Point checkPt = Common::Point(_plat->_pos.x + i, _plat->_pos.y);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x - i, _plat->_pos.y);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x, _plat->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x, _plat->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x + 1, _plat->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x - 1, _plat->_pos.y + 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x + 1, _plat->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_plat->_pos.x - 1, _plat->_pos.y - 1);
+ if (!isPointBlocked(checkPt)) {
+ platypusWalkTo(checkPt, -1, -1, 1);
+ break;
+ }
}
}
@@ -1396,7 +1425,7 @@ void GnapEngine::platypusMakeRoom() {
rndGridX = getRandom(_gridMaxX);
} while (ABS(rndGridX - _plat->_pos.x) > 4 || ABS(rndGridY - _plat->_pos.y) > 3 ||
isPointBlocked(rndGridX, rndGridY));
- platypusWalkTo(rndGridX, rndGridY, -1, -1, 1);
+ platypusWalkTo(Common::Point(rndGridX, rndGridY), -1, -1, 1);
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index c47c195..8eeb4bf 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -95,7 +95,7 @@ void Scene01::run() {
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
@@ -228,7 +228,7 @@ void Scene01::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
}
break;
@@ -417,7 +417,7 @@ void Scene02::run() {
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 6, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
@@ -427,7 +427,7 @@ void Scene02::run() {
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(8, 6, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(8, 6), 1, 0x107C2, 1);
updateHotspots();
gameSys.waitForUpdate();
break;
@@ -449,7 +449,7 @@ void Scene02::run() {
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(2, 7), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -610,7 +610,7 @@ void Scene02::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, -1, 0x107C1, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 4;
}
@@ -622,7 +622,7 @@ void Scene02::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7].x + 1, _vm->_hotspotsWalkPos[7].y, -1, 0x107C1, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 5;
}
@@ -634,7 +634,7 @@ void Scene02::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
}
break;
@@ -645,7 +645,7 @@ void Scene02::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9].x, _vm->_hotspotsWalkPos[9].y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
}
break;
@@ -925,7 +925,7 @@ void Scene03::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(4, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(4, 7), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
@@ -999,7 +999,7 @@ void Scene03::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
@@ -1406,7 +1406,7 @@ void Scene04::run() {
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
_vm->_gnap->initPos(5, 7, kDirBottomRight);
@@ -1418,7 +1418,7 @@ void Scene04::run() {
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -1590,7 +1590,7 @@ void Scene04::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x, _vm->_hotspotsWalkPos[5].y, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
else
@@ -1634,7 +1634,7 @@ void Scene04::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8].x, _vm->_hotspotsWalkPos[8].y + 1, -1, 0x107C1, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -1889,7 +1889,7 @@ void Scene05::run() {
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(2, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(2, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(6, 8, kDirBottomRight);
@@ -1962,7 +1962,7 @@ void Scene05::run() {
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
_vm->_gnap->useDeviceOnPlatypus();
- if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y, 1, 0x107C2, 1)) {
+ if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
_vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
}
@@ -2073,7 +2073,7 @@ void Scene05::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y + 1, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 4;
else
@@ -2319,7 +2319,7 @@ void Scene06::run() {
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
@@ -2436,7 +2436,7 @@ void Scene06::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(6, 8, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), 1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirNone;
_vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
@@ -2957,7 +2957,7 @@ void Scene08::run() {
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(1, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -3013,7 +3013,7 @@ void Scene08::run() {
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(Common::Point(0, 6), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(0, 7, 1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(0, 7), 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
@@ -3022,7 +3022,7 @@ void Scene08::run() {
_vm->gnapActionIdle(0x14D);
_vm->gnapWalkTo(Common::Point(3, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(4, 9, 1, 0x107C1, 1);
+ _vm->platypusWalkTo(Common::Point(4, 9), 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
@@ -3049,7 +3049,7 @@ void Scene08::run() {
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(6, 6, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(6, 6);
@@ -3085,7 +3085,7 @@ void Scene08::run() {
_vm->setFlag(kGFSceneFlag1);
_vm->gnapActionIdle(0x14D);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(3, 7, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(3, 7);
@@ -3387,7 +3387,7 @@ void Scene09::run() {
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(4, 7, kDirBottomRight);
_vm->_plat->initPos(5, 7, kDirNone);
@@ -3441,7 +3441,7 @@ void Scene09::run() {
_vm->_newSceneNum = 10;
_vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3450,7 +3450,7 @@ void Scene09::run() {
_vm->_newSceneNum = 8;
_vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(10, -1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(Common::Point(10, -1), -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 630a694..cb74bff 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -76,13 +76,13 @@ void Scene10::run() {
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(1, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
_vm->_timers[4] = _vm->getRandom(80) + 150;
@@ -134,7 +134,7 @@ void Scene10::run() {
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(Common::Point(0, 7), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
- _vm->platypusWalkTo(0, 7, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(0, 7), -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
break;
@@ -143,7 +143,7 @@ void Scene10::run() {
_vm->gnapActionIdle(0x10C);
_vm->gnapWalkTo(Common::Point(2, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
- _vm->platypusWalkTo(3, 9, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
break;
@@ -170,7 +170,7 @@ void Scene10::run() {
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(4, 6, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(4, 6), -1, -1, 1);
_vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
@@ -207,7 +207,7 @@ void Scene10::run() {
else {
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(3, 7, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(3, 7), -1, -1, 1);
_vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
@@ -240,7 +240,7 @@ void Scene10::run() {
_vm->setFlag(kGFMudTaken);
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(7, 6, 1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(7, 6), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
@@ -574,7 +574,7 @@ void Scene11::run() {
if (_vm->_prevSceneNum == 12) {
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
gameSys.insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
@@ -614,7 +614,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(6, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(6, 6, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(6, 6), -1, -1, 1);
_vm->_newSceneNum = 10;
break;
@@ -622,7 +622,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(8, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(8, 6, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(8, 6), -1, -1, 1);
_vm->_newSceneNum = 13;
break;
@@ -630,7 +630,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(-1, 9, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
break;
@@ -990,7 +990,7 @@ void Scene12::run() {
_vm->_plat->initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -1032,7 +1032,7 @@ void Scene12::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS12LeaveScene;
- _vm->platypusWalkTo(10, -1, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(10, -1), -1, -1, 1);
_vm->_newSceneNum = 11;
break;
@@ -1070,7 +1070,7 @@ void Scene12::run() {
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(3, 7, 1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 7), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->playGnapIdle(2, 7);
@@ -1140,7 +1140,7 @@ void Scene12::run() {
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(7, 6, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(7, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(7, 6);
@@ -1541,7 +1541,7 @@ void Scene13::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(2, 7), 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS13LeaveScene;
- _vm->platypusWalkTo(2, 8, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(2, 8), -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
_vm->_newSceneNum = 11;
} else {
@@ -1694,7 +1694,7 @@ void Scene13::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
- _vm->platypusWalkTo(-1, 7, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(-1, 7), -1, -1, 1);
if (_vm->_gnap->_actionStatus < 0)
_vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -2418,7 +2418,7 @@ void Scene17::run() {
_vm->_gnap->initPos(4, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
_vm->_gnap->initPos(3, 9, kDirUpLeft);
@@ -2472,7 +2472,7 @@ void Scene17::run() {
_vm->_gnap->initPos(6, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
@@ -2506,7 +2506,7 @@ void Scene17::run() {
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_idleFacing = kDirBottomRight;
- _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(2, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -2531,7 +2531,7 @@ void Scene17::run() {
_vm->_gnap->useJointOnPlatypus();
} else {
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
_vm->_plat->_actionStatus = kAS17GetWrench1;
_vm->_gnap->_actionStatus = kAS17GetWrench1;
@@ -2578,7 +2578,7 @@ void Scene17::run() {
if (_canTryGetWrench) {
platHangUpPhone();
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS17TryGetWrench;
_vm->_gnap->_actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
@@ -2619,7 +2619,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
@@ -2663,7 +2663,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
@@ -2683,7 +2683,7 @@ void Scene17::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5].x - 1, _vm->_hotspotsWalkPos[5].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -2695,7 +2695,7 @@ void Scene17::run() {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -3396,19 +3396,19 @@ void Scene18::run() {
_vm->_plat->initPos(5, 11, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
_vm->_gnap->initPos(7, 7, kDirBottomRight);
_vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 10, kDirBottomRight);
_vm->_plat->initPos(-1, 10, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(3, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
}
@@ -3657,7 +3657,7 @@ void Scene18::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore].x + 1, _vm->_hotspotsWalkPos[kHS18ExitToyStore].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
}
}
break;
@@ -3676,7 +3676,7 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].x + 1, _vm->_hotspotsWalkPos[kHS18ExitPhoneBooth].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -3695,7 +3695,7 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity].x, _vm->_hotspotsWalkPos[kHS18ExitGrubCity].y - 1, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity] + Common::Point(0, -1), -1, 0x107CF, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -3744,7 +3744,7 @@ void Scene18::run() {
_vm->_plat->_actionStatus = -1;
_vm->_sceneWaiting = false;
_vm->_plat->initPos(-1, 10, kDirNone);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
@@ -4119,7 +4119,7 @@ void Scene19::run() {
_vm->_plat->initPos(4, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(4, 9), -1, 0x107B9, 1);
- _vm->platypusWalkTo(5, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -4175,7 +4175,7 @@ void Scene19::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1].x + 1, _vm->_hotspotsWalkPos[1].y, -1, 0x107C5, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1] + Common::Point(1, 0), -1, 0x107C5, 1);
_vm->_hotspots[kHS19WalkArea1]._flags &= ~SF_WALKABLE;
}
break;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 8b742ee..e02b2fa 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -209,7 +209,7 @@ void Scene20::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
@@ -217,28 +217,28 @@ void Scene20::run() {
_vm->_plat->initPos(6, 11, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 18:
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 21:
_vm->_gnap->initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 22:
_vm->_gnap->initPos(7, 6, kDirBottomRight);
_vm->_plat->initPos(8, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 9), -1, 0x107C2, 1);
break;
default:
_vm->_gnap->initPos(8, 6, kDirBottomLeft);
@@ -246,7 +246,7 @@ void Scene20::run() {
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 9), -1, 0x107C2, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
break;
}
@@ -304,7 +304,7 @@ void Scene20::run() {
_vm->_newSceneNum = 21;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot].x, _vm->_hotspotsWalkPos[kHS20ExitParkingLot].y + 1, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -317,7 +317,7 @@ void Scene20::run() {
_vm->_newSceneNum = 17;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone].x + 1, _vm->_hotspotsWalkPos[kHS20ExitPhone].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -330,7 +330,7 @@ void Scene20::run() {
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].x, _vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore].y + 1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -343,7 +343,7 @@ void Scene20::run() {
_vm->_newSceneNum = 22;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -356,7 +356,7 @@ void Scene20::run() {
_vm->_newSceneNum = 24;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -758,7 +758,7 @@ void Scene21::run() {
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
} else {
_vm->_gnap->initPos(5, 11, kDirBottomRight);
@@ -770,7 +770,7 @@ void Scene21::run() {
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -876,7 +876,7 @@ void Scene21::run() {
_vm->_newSceneNum = 20;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
_vm->_gnap->_actionStatus = kAS21LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].x + 1, _vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1051,7 +1051,7 @@ void Scene22::run() {
_vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107C2, 1);
}
if (_vm->isFlag(kGFSceneFlag1)) {
@@ -1136,7 +1136,7 @@ void Scene22::run() {
_vm->_newSceneNum = 20;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity].y + 1, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1146,7 +1146,7 @@ void Scene22::run() {
_vm->_newSceneNum = 23;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].x, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1298,7 +1298,7 @@ void Scene23::run() {
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
_vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
@@ -1393,7 +1393,7 @@ void Scene23::run() {
_vm->_newSceneNum = 22;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS23LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].x, _vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity].y - 1, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
}
break;
@@ -1567,13 +1567,13 @@ void Scene24::run() {
_vm->_plat->initPos(2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(1, 9), -1, 0x107B9, 1);
- _vm->platypusWalkTo(2, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(2, 9), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(3, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1626,7 +1626,7 @@ void Scene24::run() {
_vm->_newSceneNum = 25;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS24ExitCircusWorld].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1637,7 +1637,7 @@ void Scene24::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 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);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1816,13 +1816,13 @@ void Scene25::run() {
_vm->_plat->initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 7), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 7), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(5, 6, kDirBottomRight);
_vm->_plat->initPos(6, 6, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1902,7 +1902,7 @@ void Scene25::run() {
_vm->_newSceneNum = 24;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1914,7 +1914,7 @@ void Scene25::run() {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].x + 1, _vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
@@ -2134,7 +2134,7 @@ void Scene26::run() {
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(2, 8, kDirBottomRight);
_vm->_plat->initPos(3, 8, kDirNone);
@@ -2351,21 +2351,21 @@ void Scene27::run() {
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
case 29:
_vm->_gnap->initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 31:
_vm->_gnap->initPos(12, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(8, 9, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(8, 9), -1, 0x107C2, 1);
break;
default:
_vm->_gnap->initPos(6, 8, kDirBottomRight);
@@ -2472,7 +2472,7 @@ void Scene27::run() {
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
}
break;
@@ -2482,7 +2482,7 @@ void Scene27::run() {
_vm->_newSceneNum = 29;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade].x, _vm->_hotspotsWalkPos[kHS27ExitArcade].y + 1, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -2492,7 +2492,7 @@ void Scene27::run() {
_vm->_newSceneNum = 31;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand].x, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y + 1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
}
break;
@@ -2503,7 +2503,7 @@ void Scene27::run() {
_vm->_newSceneNum = 28;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown].x + 1, _vm->_hotspotsWalkPos[kHS27ExitClown].y, -1, 0x107C4, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
@@ -2868,7 +2868,7 @@ void Scene28::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown].x - 1, _vm->_hotspotsWalkPos[kHS28ExitOutsideClown].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -3128,13 +3128,13 @@ void Scene29::run() {
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(8, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 7, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -3212,7 +3212,7 @@ void Scene29::run() {
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS29ExitCircus].y, -1, -1, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -3222,7 +3222,7 @@ void Scene29::run() {
_vm->_newSceneNum = 27;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS29ExitOutsideClown].y - 1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
}
break;
@@ -3351,7 +3351,7 @@ void Scene29::updateAnimations() {
_vm->_timers[5] = 30;
while (_vm->_timers[5])
_vm->gameUpdateTick();
- _vm->platypusWalkTo(0, 8, 1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(0, 8), 1, 0x107CF, 1);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
} else if (_nextMonkeySequenceId == -1) {
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index be8b911..8a91123 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -68,7 +68,7 @@ void Scene30::run() {
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -148,7 +148,7 @@ void Scene30::run() {
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS30LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -316,13 +316,13 @@ void Scene31::run() {
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(3, 9, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -394,9 +394,9 @@ void Scene31::run() {
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y, 1, 0x107C2, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
_vm->_gnap->_actionStatus = kAS31PlatMeasuringClown;
@@ -452,7 +452,7 @@ void Scene31::run() {
_vm->_newSceneNum = 26;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus].x + 1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y, -1, -1, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -462,7 +462,7 @@ void Scene31::run() {
_vm->_newSceneNum = 27;
_vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown].x, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y + 1, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -667,7 +667,7 @@ void Scene32::run() {
_vm->_gnap->initPos(11, 6, kDirBottomLeft);
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
- _vm->platypusWalkTo(9, 6, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107D2, 1);
_vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
@@ -721,7 +721,7 @@ void Scene32::run() {
_vm->setGrabCursorSprite(-1);
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS32LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck].x, _vm->_hotspotsWalkPos[kHS32ExitTruck].y + 1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
break;
@@ -830,7 +830,7 @@ void Scene33::run() {
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 7, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
_vm->_gnap->initPos(7, 7, kDirBottomRight);
@@ -841,7 +841,7 @@ void Scene33::run() {
_vm->_gnap->initPos(-1, 6, kDirBottomRight);
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(2, 7, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(2, 7), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
@@ -947,7 +947,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek].x, _vm->_hotspotsWalkPos[kHS33ExitCreek].y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
}
break;
@@ -957,7 +957,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen].x, _vm->_hotspotsWalkPos[kHS33ExitPigpen].y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
}
break;
@@ -1216,7 +1216,7 @@ void Scene38::run() {
_vm->playGnapImpossible(0, 0);
else {
_vm->gnapWalkTo(Common::Point(3, 6), 0, 0x107BB, 1);
- _vm->platypusWalkTo(4, 8, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(4, 8), -1, -1, 1);
_vm->_gnap->_actionStatus = kAS38UseHuntingTrophy;
}
break;
@@ -1355,7 +1355,7 @@ void Scene38::updateAnimations() {
_vm->_plat->playSequence(0x107D5);
else
_vm->_plat->playSequence(0x107D4);
- _vm->platypusWalkTo(8, 7, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(8, 7), -1, 0x107D2, 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;
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index f6f41e6..b805c10 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -276,14 +276,14 @@ void Scene41::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-2, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 42) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 8, kDirBottomRight);
_vm->_plat->initPos(6, 8, kDirBottomLeft);
@@ -383,7 +383,7 @@ void Scene41::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41Exit].x, -1, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
break;
@@ -391,7 +391,7 @@ void Scene41::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
break;
@@ -789,19 +789,19 @@ void Scene42::run() {
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 43) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -888,7 +888,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -896,7 +896,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_hotspotsWalkPos[kHS42ExitToyStand].y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand], -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
break;
@@ -904,7 +904,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_hotspotsWalkPos[kHS42ExitUfo].y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo], -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
break;
@@ -913,7 +913,7 @@ void Scene42::run() {
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendor;
if (_vm->_plat->_pos.y < 9)
- _vm->platypusWalkTo(_vm->_plat->_pos.x, 9, -1, -1, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_plat->_pos.x, 9), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
@@ -1231,27 +1231,27 @@ void Scene43::run() {
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 44:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
case 54:
_vm->_gnap->initPos(4, 7, kDirBottomLeft);
_vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
default:
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
}
}
@@ -1346,7 +1346,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty].x, _vm->_hotspotsWalkPos[kHS43ExitUfoParty].y, -1, 0x107C7, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -1354,7 +1354,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_hotspotsWalkPos[kHS43ExitBBQ].y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ], -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
break;
@@ -1362,7 +1362,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_hotspotsWalkPos[kHS43ExitKissinBooth].y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth], -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
break;
@@ -1685,14 +1685,14 @@ void Scene44::run() {
_vm->_plat->initPos(-1, 7, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 46:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(7, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(7, 8), -1, 0x107D2, 1);
break;
case 50:
_vm->_gnap->initPos(4, 8, kDirBottomRight);
@@ -1714,7 +1714,7 @@ void Scene44::run() {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(6, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
break;
}
@@ -1801,7 +1801,7 @@ void Scene44::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
@@ -1832,7 +1832,7 @@ void Scene44::run() {
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(6, 7, 1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(6, 7), 1, 0x107D2, 1);
if (_vm->_gnap->_pos == Common::Point(7, 7))
_vm->gnapWalkStep();
_vm->playGnapIdle(5, 7);
@@ -2153,19 +2153,19 @@ void Scene45::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 41) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107D2, 1);
_vm->gnapWalkTo(Common::Point(10, 9), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(2, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(4, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
}
@@ -2295,7 +2295,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
}
break;
@@ -2305,7 +2305,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
}
break;
@@ -2517,19 +2517,19 @@ void Scene46::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(1, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 45) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(12, 8, kDirUpLeft);
_vm->endSceneInit();
_vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(9, 8, -1, 0x107D2, 1);
+ _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(5, 8, -1, 0x107C2, 1);
+ _vm->platypusWalkTo(Common::Point(5, 8), -1, 0x107C2, 1);
_vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
}
@@ -2657,7 +2657,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y, -1, 0x107CF, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
break;
@@ -2665,7 +2665,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
_vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y, -1, 0x107CD, 1);
+ _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
break;
Commit: 951fab48530ab6b411ce396f459bf66d120ce05d
https://github.com/scummvm/scummvm/commit/951fab48530ab6b411ce396f459bf66d120ce05d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:54+02:00
Commit Message:
GNAP: Move walkTo and walkStep to Character
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 9503bfd..a15f4e9 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -35,10 +35,76 @@ Character::Character(GnapEngine *vm) : _vm(vm) {
_id = 0;
_gridX = 0;
_gridY = 0;
+
+ _walkNodesCount = 0;
+ _walkDestX = _walkDestY = 0;
+ _walkDeltaX = _walkDeltaY = 0;
+ _walkDirX = _walkDirY = 0;
+ _walkDirXIncr = _walkDirYIncr = 0;
+
+ for(int i = 0; i < kMaxGridStructs; i++) {
+ _walkNodes[i]._id = 0;
+ _walkNodes[i]._sequenceId = 0;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = 0;
+ _walkNodes[i]._gridY1 = 0;
+ }
}
Character::~Character() {}
+void Character::walkStep() {
+ for (int i = 1; i < _vm->_gridMaxX; ++i) {
+ Common::Point checkPt = Common::Point(_pos.x + i, _pos.y);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x - i, _pos.y);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x, _pos.y + 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x, _pos.y - 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x + 1, _pos.y + 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x - 1, _pos.y + 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x + 1, _pos.y - 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+
+ checkPt = Common::Point(_pos.x - 1, _pos.y - 1);
+ if (!_vm->isPointBlocked(checkPt)) {
+ walkTo(checkPt, -1, -1, 1);
+ break;
+ }
+ }
+}
/************************************************************************************************/
PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {
@@ -412,7 +478,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_plat->_sequenceId = 0x876;
_vm->_plat->_idleFacing = kDirNone;
playSequence(0x107B5);
- _vm->gnapWalkStep();
+ _vm->_gnap->walkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
_vm->gameUpdateTick();
@@ -608,6 +674,180 @@ int PlayerGnap::getWalkSequenceId(int deltaX, int deltaY) {
return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
}
+bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
+ int datNum = flags & 3;
+ bool done = false;
+
+ _vm->_timers[2] = 200;
+ _vm->_timers[3] = 300;
+
+ int gridX = gridPos.x;
+ if (gridX < 0)
+ gridX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
+
+ int gridY = gridPos.y;
+ if (gridY < 0)
+ gridY = (_vm->_leftClickMouseY - _vm->_gridMinY + 24) / 48;
+
+ _walkDestX = CLIP(gridX, 0, _vm->_gridMaxX - 1);
+ _walkDestY = CLIP(gridY, 0, _vm->_gridMaxY - 1);
+
+ if (animationIndex >= 0 && _walkDestX == _vm->_plat->_pos.x && _walkDestY == _vm->_plat->_pos.y)
+ _vm->platypusMakeRoom();
+
+ if (findPath1(_pos.x, _pos.y, 0))
+ done = true;
+
+ if (!done && findPath2(_pos.x, _pos.y, 0))
+ done = true;
+
+ if (!done && findPath3(_pos.x, _pos.y))
+ done = true;
+
+ if (!done && findPath4(_pos.x, _pos.y))
+ done = true;
+
+ _vm->gnapIdle();
+
+ int gnapSequenceId = _sequenceId;
+ int gnapId = _id;
+ int gnapSequenceDatNum = _sequenceDatNum;
+
+ debugC(kDebugBasic, "_gnap->_walkNodesCount: %d", _walkNodesCount);
+
+ for (int index = 0; index < _walkNodesCount; ++index) {
+ _walkNodes[index]._id = index + 20 * _walkNodes[index]._gridY1;
+ if (_walkNodes[index]._deltaX == 1 && _walkNodes[index]._deltaY == 0) {
+ if (index % 2) {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7AB), _walkNodes[index]._id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7AB;
+ gnapSequenceId = 0x7AB;
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7AC), _walkNodes[index]._id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7AC;
+ gnapSequenceId = 0x7AC;
+ }
+ } else if (_walkNodes[index]._deltaX == -1 && _walkNodes[index]._deltaY == 0) {
+ if (index % 2) {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7AF), _walkNodes[index]._id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7AF;
+ gnapSequenceId = 0x7AF;
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7B0), _walkNodes[index]._id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7B0;
+ gnapSequenceId = 0x7B0;
+ }
+ } else {
+ if (_walkNodes[index]._deltaY == -1)
+ _walkNodes[index]._id -= 10;
+ else
+ _walkNodes[index]._id += 10;
+ int newSequenceId = getWalkSequenceId(_walkNodes[index]._deltaX, _walkNodes[index]._deltaY);
+ _vm->_gameSys->insertSequence(makeRid(datNum, newSequenceId), _walkNodes[index]._id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = newSequenceId;
+ gnapSequenceId = newSequenceId;
+ }
+ gnapId = _walkNodes[index]._id;
+ gnapSequenceDatNum = datNum;
+ }
+
+ if (flags & 8) {
+ if (_walkNodesCount > 0) {
+ _sequenceId = gnapSequenceId;
+ _id = gnapId;
+ _idleFacing = _vm->getGnapWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ _sequenceDatNum = datNum;
+ if (animationIndex >= 0)
+ _vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), _id, animationIndex);
+ } else if (animationIndex >= 0) {
+ _vm->_gameSys->setAnimation(0x107D3, 1, animationIndex);
+ _vm->_gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ } else {
+ if (sequenceId >= 0 && sequenceId != -1) {
+ _sequenceId = ridToEntryIndex(sequenceId);
+ _sequenceDatNum = ridToDatIndex(sequenceId);
+ if (_sequenceId == 0x7B9) {
+ _idleFacing = kDirBottomRight;
+ } else {
+ switch (_sequenceId) {
+ case 0x7BA:
+ _idleFacing = kDirBottomLeft;
+ break;
+ case 0x7BB:
+ _idleFacing = kDirUpRight;
+ break;
+ case 0x7BC:
+ _idleFacing = kDirUpLeft;
+ break;
+ }
+ }
+ } else {
+ if (_walkNodesCount > 0) {
+ _sequenceId = _vm->getGnapWalkStopSequenceId(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ _idleFacing = _vm->getGnapWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ } else if (gridX >= 0 || gridY >= 0) {
+ switch (_idleFacing) {
+ case kDirBottomRight:
+ _sequenceId = 0x7B9;
+ break;
+ case kDirBottomLeft:
+ _sequenceId = 0x7BA;
+ break;
+ case kDirUpRight:
+ _sequenceId = 0x7BB;
+ break;
+ default:
+ _sequenceId = 0x7BC;
+ break;
+ }
+ } else {
+ //TODO: simplify the checks by using v10 and v11
+ int v10 = _vm->_leftClickMouseX - (_vm->_gridMinX + 75 * _pos.x);
+ int v11 = _vm->_leftClickMouseY - (_vm->_gridMinY + 48 * _pos.y);
+ if (_vm->_leftClickMouseX == _vm->_gridMinX + 75 * _pos.x)
+ ++v10;
+ if (_vm->_leftClickMouseY == _vm->_gridMinY + 48 * _pos.y)
+ v11 = 1;
+ _sequenceId = _vm->getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
+ _idleFacing = _vm->getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
+ }
+ _sequenceDatNum = datNum;
+ }
+
+ if (animationIndex < 0) {
+ _id = 20 * _walkDestY + 1;
+ } else {
+ _id = _walkNodesCount + animationIndex + 20 * _walkDestY;
+ _vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), _walkNodesCount + animationIndex + 20 * _walkDestY, animationIndex);
+ }
+
+ if (flags & 4) {
+ _vm->_gameSys->insertSequence(makeRid(_sequenceDatNum, _sequenceId), _id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 0, 0);
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(_sequenceDatNum, _sequenceId), _id,
+ makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkDestX - _gridX, 48 * _walkDestY - _gridY);
+ }
+ }
+
+ _pos = Common::Point(_walkDestX, _walkDestY);
+
+ return done;
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -731,4 +971,162 @@ int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
}
+bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
+ int datNum = flags & 3;
+ bool done = false;
+
+ _vm->_timers[1] = 60;
+
+ int gridX = gridPos.x;
+ if (gridX < 0)
+ gridX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
+
+ int gridY = gridPos.y;
+ if (gridY < 0)
+ gridY = (_vm->_leftClickMouseY - _vm->_gridMinY + 24) / 48;
+
+ _walkDestX = CLIP(gridX, 0, _vm->_gridMaxX - 1);
+ _walkDestY = CLIP(gridY, 0, _vm->_gridMaxY - 1);
+
+ if (animationIndex >= 0 && _vm->_gnap->_pos == Common::Point(_walkDestX, _walkDestY))
+ _vm->_gnap->walkStep();
+
+ if (findPath1(_pos.x, _pos.y, 0))
+ done = true;
+
+ if (!done && findPath2(_pos.x, _pos.y, 0))
+ done = true;
+
+ if (!done && findPath3(_pos.x, _pos.y))
+ done = true;
+
+ if (!done && findPath4(_pos.x, _pos.y))
+ done = true;
+
+ int platSequenceId = _sequenceId;
+ int platId = _id;
+ int platSequenceDatNum = _sequenceDatNum;
+
+ for (int index = 0; index < _walkNodesCount; ++index) {
+ _walkNodes[index]._id = index + 20 * _walkNodes[index]._gridY1;
+ if (_walkNodes[index]._deltaX == 1 && _walkNodes[index]._deltaY == 0) {
+ if (index % 2) {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7CD), _walkNodes[index]._id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7CD;
+ platSequenceId = 0x7CD;
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7CE), _walkNodes[index]._id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7CE;
+ platSequenceId = 0x7CE;
+ }
+ } else if (_walkNodes[index]._deltaX == -1 && _walkNodes[index]._deltaY == 0) {
+ if (index % 2) {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7CF), _walkNodes[index]._id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7CF;
+ platSequenceId = 0x7CF;
+ } else {
+ _vm->_gameSys->insertSequence(makeRid(datNum, 0x7D0), _walkNodes[index]._id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = 0x7D0;
+ platSequenceId = 0x7D0;
+ }
+ } else {
+ if (_walkNodes[index]._deltaY == -1)
+ _walkNodes[index]._id -= 10;
+ else
+ _walkNodes[index]._id += 10;
+ int newSequenceId = getWalkSequenceId(_walkNodes[index]._deltaX, _walkNodes[index]._deltaY);
+ _vm->_gameSys->insertSequence(makeRid(datNum, newSequenceId), _walkNodes[index]._id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ kSeqScale | kSeqSyncWait, 0, 75 * _walkNodes[index]._gridX1 - _gridX, 48 * _walkNodes[index]._gridY1 - _gridY);
+ _walkNodes[index]._sequenceId = newSequenceId;
+ platSequenceId = newSequenceId;
+ }
+ platId = _walkNodes[index]._id;
+ platSequenceDatNum = datNum;
+ }
+
+ if (flags & 8) {
+ if (_walkNodesCount > 0) {
+ _sequenceId = platSequenceId;
+ _id = platId;
+ _sequenceDatNum = datNum;
+ // CHECKME Not sure if this is correct...
+ if (_walkNodes[_walkNodesCount - 1]._deltaX > 0)
+ _idleFacing = kDirNone;
+ else if (_walkNodes[_walkNodesCount - 1]._deltaX < 0)
+ _idleFacing = kDirUnk4;
+ else if (_walkNodes[_walkNodesCount - 1]._gridX1 % 2)
+ _idleFacing = kDirUnk4;
+ else
+ _idleFacing = kDirNone;
+ if (animationIndex >= 0)
+ _vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), _id, animationIndex);
+ } else if (animationIndex >= 0) {
+ _vm->_gameSys->setAnimation(0x107D3, 1, animationIndex);
+ _vm->_gameSys->insertSequence(0x107D3, 1, 0, 0, kSeqNone, 0, 0, 0);
+ }
+ } else {
+ if (sequenceId >= 0 && sequenceId != -1) {
+ _sequenceId = ridToEntryIndex(sequenceId);
+ _sequenceDatNum = ridToDatIndex(sequenceId);
+ if (_sequenceId == 0x7C2) {
+ _idleFacing = kDirNone;
+ } else if (_sequenceId == 0x7D2) {
+ _idleFacing = kDirUnk4;
+ }
+ } else {
+ if (_walkNodesCount > 0) {
+ if (_walkNodes[_walkNodesCount - 1]._deltaX > 0) {
+ _sequenceId = 0x7C2;
+ _idleFacing = kDirNone;
+ } else if (_walkNodes[_walkNodesCount - 1]._deltaX < 0) {
+ _sequenceId = 0x7D2;
+ _idleFacing = kDirUnk4;
+ } else if (_walkNodes[0]._deltaX > 0) {
+ _sequenceId = 0x7C2;
+ _idleFacing = kDirNone;
+ } else if (_walkNodes[0]._deltaX < 0) {
+ _sequenceId = 0x7D2;
+ _idleFacing = kDirUnk4;
+ } else {
+ _sequenceId = 0x7D2;
+ _idleFacing = kDirUnk4;
+ }
+ } else if (_idleFacing != kDirNone) {
+ _sequenceId = 0x7D2;
+ } else {
+ _sequenceId = 0x7C2;
+ }
+ _sequenceDatNum = datNum;
+ }
+
+ if (animationIndex < 0) {
+ _id = 20 * _walkDestY;
+ } else {
+ _id = animationIndex + 20 * _walkDestY;
+ _vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), animationIndex + 20 * _walkDestY, animationIndex);
+ }
+
+ if (flags & 4)
+ _vm->_gameSys->insertSequence(makeRid(_sequenceDatNum, _sequenceId), _id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 0, 0);
+ else
+ _vm->_gameSys->insertSequence(makeRid(_sequenceDatNum, _sequenceId), _id,
+ makeRid(platSequenceDatNum, platSequenceId), platId,
+ 9, 0, 75 * _walkDestX - _gridX, 48 * _walkDestY - _gridY);
+ }
+
+ _pos = Common::Point(_walkDestX, _walkDestY);
+
+ return done;
+}
} // End of namespace Gnap
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index ddfc719..c36b0a2 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -36,17 +36,29 @@ enum Facing {
kDirUpRight = 7
};
+struct GridStruct {
+ int _deltaX, _deltaY;
+ int _gridX1, _gridY1;
+ int _sequenceId;
+ int _id;
+};
+
+const int kMaxGridStructs = 30;
+
class Character {
public:
Character(GnapEngine *vm);
~Character();
+ void walkStep();
+
virtual int getSequenceId(int kind, int gridX, int gridY) = 0;
virtual void playSequence(int sequenceId) = 0;
virtual void updateIdleSequence() = 0;
virtual void updateIdleSequence2() = 0;
virtual void initPos(int gridX, int gridY, Facing facing) = 0;
virtual int getWalkSequenceId(int deltaX, int deltaY) = 0;
+ virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) = 0;
Common::Point _pos;
Facing _idleFacing;
@@ -56,6 +68,10 @@ public:
int _id;
int _gridX;
int _gridY;
+ int _walkNodesCount;
+ GridStruct _walkNodes[kMaxGridStructs];
+ int _walkDestX, _walkDestY;
+ int _walkDeltaX, _walkDeltaY, _walkDirX, _walkDirY, _walkDirXIncr, _walkDirYIncr;
protected:
GnapEngine *_vm;
@@ -70,6 +86,7 @@ public:
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
virtual int getWalkSequenceId(int deltaX, int deltaY);
+ virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
void initBrainPulseRndValue();
void kissPlatypus(int callback);
@@ -78,6 +95,12 @@ public:
int _brainPulseNum;
int _brainPulseRndValue;
+
+private:
+ bool findPath1(int gridX, int gridY, int index);
+ bool findPath2(int gridX, int gridY, int index);
+ bool findPath3(int gridX, int gridY);
+ bool findPath4(int gridX, int gridY);
};
class PlayerPlat : public Character {
@@ -89,6 +112,13 @@ public:
virtual void updateIdleSequence();
virtual void updateIdleSequence2();
virtual int getWalkSequenceId(int deltaX, int deltaY);
+ virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
+
+private:
+ bool findPath1(int gridX, int gridY, int index);
+ bool findPath2(int gridX, int gridY, int index);
+ bool findPath3(int gridX, int gridY);
+ bool findPath4(int gridX, int gridY);
};
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 9f1ae26..42d5277 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1189,7 +1189,7 @@ void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
if (_plat->_pos.x == gridX && _plat->_pos.y == gridY)
platypusMakeRoom();
- gnapWalkTo(Common::Point(gridX, gridY), -1, -1, 1);
+ _gnap->walkTo(Common::Point(gridX, gridY), -1, -1, 1);
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
}
@@ -1199,8 +1199,8 @@ bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gr
_gameSys->setAnimation(0, 0, animationIndex);
_gnap->_actionStatus = -1;
_plat->_actionStatus = -1;
- gnapWalkTo(Common::Point(gridX1, gridY1), -1, -1, 1);
- platypusWalkTo(Common::Point(gridX2, gridY2), -1, -1, 1);
+ _gnap->walkTo(Common::Point(gridX1, gridY1), -1, -1, 1);
+ _plat->walkTo(Common::Point(gridX2, gridY2), -1, -1, 1);
_mouseClickState._left = false;
return true;
}
@@ -1224,12 +1224,12 @@ bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, in
_gnap->_actionStatus = 100;
Common::Point checkPt = _plat->_pos + Common::Point(gridX, gridY);
if (isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
- platypusWalkStep();
+ _plat->walkStep();
checkPt = _plat->_pos + Common::Point(gridX, gridY);
}
if (!isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
- gnapWalkTo(checkPt, 0, 0x107B9, 1);
+ _gnap->walkTo(checkPt, 0, 0x107B9, 1);
while (_gameSys->getAnimationStatus(0) != 2) {
updateMouseCursor();
doCallback(callback);
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 59326b0..db9368d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -75,14 +75,6 @@ struct Hotspot {
}
};
-struct GridStruct {
- int _deltaX, _deltaY;
- int _gridX1, _gridY1;
- int _sequenceId;
- int _id;
-};
-
-const int kMaxGridStructs = 30;
const int kMaxTimers = 10;
enum GnapDebugChannels {
@@ -483,32 +475,10 @@ public:
bool testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2);
// Gnap walking
- int _gnapWalkNodesCount;
- GridStruct _gnapWalkNodes[kMaxGridStructs];
- int _gnapWalkDestX, _gnapWalkDestY;
- int _gnapWalkDeltaX, _gnapWalkDeltaY, _gnapWalkDirX, _gnapWalkDirY, _gnapWalkDirXIncr, _gnapWalkDirYIncr;
-
int getGnapWalkStopSequenceId(int deltaX, int deltaY);
Facing getGnapWalkFacing(int deltaX, int deltaY);
- bool gnapFindPath1(int gridX, int gridY, int index);
- bool gnapFindPath2(int gridX, int gridY, int index);
- bool gnapFindPath3(int gridX, int gridY);
- bool gnapFindPath4(int gridX, int gridY);
- bool gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
- void gnapWalkStep();
// Platypus walking
- int _platWalkNodesCount;
- GridStruct _platWalkNodes[kMaxGridStructs];
- int _platWalkDestX, _platWalkDestY;
- int _platWalkDeltaX, _platWalkDeltaY, _platWalkDirX, _platWalkDirY, _platWalkDirXIncr, _platWalkDirYIncr;
-
- bool platFindPath1(int gridX, int gridY, int index);
- bool platFindPath2(int gridX, int gridY, int index);
- bool platFindPath3(int gridX, int gridY);
- bool platFindPath4(int gridX, int gridY);
- bool platypusWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
- void platypusWalkStep();
void platypusMakeRoom();
// Gnap
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 568fe25..d4aed8d 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -81,176 +81,81 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
}
return false;
-
}
-bool GnapEngine::gnapFindPath4(int gridX, int gridY) {
- bool result = false;
-
- _gnapWalkNodesCount = 0;
- _gnapWalkDirXIncr = 0;
- _gnapWalkDirYIncr = 0;
- _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
- _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
-
- if (_gnapWalkDeltaX)
- _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
- else
- _gnapWalkDirX = 0;
-
- if (_gnapWalkDeltaY)
- _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
- else
- _gnapWalkDirY = 0;
-
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkDirYIncr;
- } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- } else {
- _gnapWalkDeltaX = _gnapWalkDirXIncr;
- _gnapWalkDeltaY = _gnapWalkDirYIncr;
- --_gnapWalkNodesCount;
- }
- } else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- } else {
- _gnapWalkDeltaX = _gnapWalkDirXIncr;
- _gnapWalkDeltaY = _gnapWalkDirYIncr;
- --_gnapWalkNodesCount;
- }
- }
- ++_gnapWalkNodesCount;
- }
-
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkNodesCount;
- } else {
- _gnapWalkDeltaX = _gnapWalkDirXIncr;
- }
- }
-
- while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- ++_gnapWalkNodesCount;
- } else {
- _gnapWalkDeltaY = _gnapWalkDirYIncr;
- }
- }
-
- if (gridX + _gnapWalkDirX * _gnapWalkDirXIncr != _gnapWalkDestX || gridY + _gnapWalkDirY * _gnapWalkDirYIncr != _gnapWalkDestY) {
- _gnapWalkDestX = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkDestY = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- result = false;
- } else {
- result = true;
- }
+/******************************************************************************/
- return result;
-}
+bool PlayerGnap::findPath1(int gridX, int gridY, int index) {
+ _walkNodesCount = index;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
-bool GnapEngine::gnapFindPath1(int gridX, int gridY, int index) {
- _gnapWalkNodesCount = index;
- _gnapWalkDirXIncr = 0;
- _gnapWalkDirYIncr = 0;
- _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
- _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
-
- if (_gnapWalkDeltaX)
- _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
else
- _gnapWalkDirX = 0;
+ _walkDirX = 0;
- if (_gnapWalkDeltaY)
- _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
else
- _gnapWalkDirY = 0;
-
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkDirYIncr;
- } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
+ _walkDirY = 0;
+
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else
return false;
}
- ++_gnapWalkNodesCount;
+ ++_walkNodesCount;
}
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkNodesCount;
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- ++_gnapWalkNodesCount;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
@@ -258,101 +163,101 @@ bool GnapEngine::gnapFindPath1(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::gnapFindPath2(int gridX, int gridY, int index) {
- _gnapWalkNodesCount = index;
- _gnapWalkDirXIncr = 0;
- _gnapWalkDirYIncr = 0;
- _gnapWalkDeltaX = ABS(_gnapWalkDestX - gridX);
- _gnapWalkDeltaY = ABS(_gnapWalkDestY - gridY);
+bool PlayerGnap::findPath2(int gridX, int gridY, int index) {
+ _walkNodesCount = index;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
- if (_gnapWalkDeltaX)
- _gnapWalkDirX = (_gnapWalkDestX - gridX) / _gnapWalkDeltaX;
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
else
- _gnapWalkDirX = 0;
+ _walkDirX = 0;
- if (_gnapWalkDeltaY)
- _gnapWalkDirY = (_gnapWalkDestY - gridY) / _gnapWalkDeltaY;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
else
- _gnapWalkDirY = 0;
-
- while (_gnapWalkDeltaY < _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, gridY)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkNodesCount;
+ _walkDirY = 0;
+
+ while (_walkDeltaY < _walkDeltaX - _walkDirXIncr) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, gridY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_gnapWalkDeltaX < _gnapWalkDeltaY - _gnapWalkDirYIncr) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(gridX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- ++_gnapWalkNodesCount;
+ while (_walkDeltaX < _walkDeltaY - _walkDirYIncr) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(gridX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX && _gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkDirYIncr;
- } else if (_gnapWalkDeltaY - _gnapWalkDirYIncr > _gnapWalkDeltaX - _gnapWalkDirXIncr) {
- if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- } else if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- } else if (!isPointBlocked(_gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else
return false;
}
- ++_gnapWalkNodesCount;
+ ++_walkNodesCount;
}
- while (_gnapWalkDirXIncr < _gnapWalkDeltaX) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = gridX + _gnapWalkDirX * _gnapWalkDirXIncr;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = _gnapWalkDestY;
- if (!isPointBlocked(_gnapWalkDirX + _gnapWalkNodes[_gnapWalkNodesCount]._gridX1, _gnapWalkDestY)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = _gnapWalkDirX;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = 0;
- ++_gnapWalkDirXIncr;
- ++_gnapWalkNodesCount;
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_gnapWalkDirYIncr < _gnapWalkDeltaY) {
- _gnapWalkNodes[_gnapWalkNodesCount]._gridX1 = _gnapWalkDestX;
- _gnapWalkNodes[_gnapWalkNodesCount]._gridY1 = gridY + _gnapWalkDirY * _gnapWalkDirYIncr;
- if (!isPointBlocked(_gnapWalkDestX, _gnapWalkDirY + _gnapWalkNodes[_gnapWalkNodesCount]._gridY1)) {
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaX = 0;
- _gnapWalkNodes[_gnapWalkNodesCount]._deltaY = _gnapWalkDirY;
- ++_gnapWalkDirYIncr;
- ++_gnapWalkNodesCount;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
@@ -360,167 +265,167 @@ bool GnapEngine::gnapFindPath2(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
+bool PlayerGnap::findPath3(int gridX, int gridY) {
int gridIncr = 1;
bool done = false;
- while (!done && gridIncr < _gridMaxX) {
- if (!isPointBlocked(gridX + gridIncr, gridY) && gnapFindPath1(gridX + gridIncr, gridY, gridIncr)) {
+ while (!done && gridIncr < _vm->_gridMaxX) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY) && findPath1(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY) && gnapFindPath1(gridX - gridIncr, gridY, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY) && findPath1(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY + gridIncr) && gnapFindPath1(gridX, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX, gridY + gridIncr) && findPath1(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = 0;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY - gridIncr) && gnapFindPath1(gridX, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX, gridY - gridIncr) && findPath1(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = 0;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gnapFindPath1(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY + gridIncr) && findPath1(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gnapFindPath1(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY + gridIncr) && findPath1(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gnapFindPath1(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY - gridIncr) && findPath1(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gnapFindPath1(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY - gridIncr) && findPath1(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY) && gnapFindPath2(gridX + gridIncr, gridY, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY) && findPath2(gridX + gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY) && gnapFindPath2(gridX - gridIncr, gridY, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY) && findPath2(gridX - gridIncr, gridY, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY + gridIncr) && gnapFindPath2(gridX, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX, gridY + gridIncr) && findPath2(gridX, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = 0;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX, gridY - gridIncr) && gnapFindPath2(gridX, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX, gridY - gridIncr) && findPath2(gridX, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = 0;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY + gridIncr) && gnapFindPath2(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY + gridIncr) && findPath2(gridX + gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY + gridIncr) && gnapFindPath2(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY + gridIncr) && findPath2(gridX - gridIncr, gridY + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY + i;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY + i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX + gridIncr, gridY - gridIncr) && gnapFindPath2(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX + gridIncr, gridY - gridIncr) && findPath2(gridX + gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX + i;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = 1;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX + i;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(gridX - gridIncr, gridY - gridIncr) && gnapFindPath2(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(gridX - gridIncr, gridY - gridIncr) && findPath2(gridX - gridIncr, gridY - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _gnapWalkNodes[i]._gridX1 = gridX - i;
- _gnapWalkNodes[i]._gridY1 = gridY - i;
- _gnapWalkNodes[i]._deltaX = -1;
- _gnapWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = gridX - i;
+ _walkNodes[i]._gridY1 = gridY - i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
@@ -531,323 +436,94 @@ bool GnapEngine::gnapFindPath3(int gridX, int gridY) {
return done;
}
-bool GnapEngine::gnapWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
- int datNum = flags & 3;
- bool done = false;
-
- _timers[2] = 200;
- _timers[3] = 300;
-
- int gridX = gridPos.x;
- if (gridX < 0)
- gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
-
- int gridY = gridPos.y;
- if (gridY < 0)
- gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
-
- _gnapWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
- _gnapWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
-
- if (animationIndex >= 0 && _gnapWalkDestX == _plat->_pos.x && _gnapWalkDestY == _plat->_pos.y)
- platypusMakeRoom();
-
- // TODO: Simplify the cascade of Ifs
- if (gnapFindPath1(_gnap->_pos.x, _gnap->_pos.y, 0))
- done = true;
-
- if (!done && gnapFindPath2(_gnap->_pos.x, _gnap->_pos.y, 0))
- done = true;
-
- if (!done && gnapFindPath3(_gnap->_pos.x, _gnap->_pos.y))
- done = true;
-
- if (!done && gnapFindPath4(_gnap->_pos.x, _gnap->_pos.y))
- done = true;
-
- gnapIdle();
-
- int gnapSequenceId = _gnap->_sequenceId;
- int gnapId = _gnap->_id;
- int gnapSequenceDatNum = _gnap->_sequenceDatNum;
-
- debugC(kDebugBasic, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
-
- for (int index = 0; index < _gnapWalkNodesCount; ++index) {
- _gnapWalkNodes[index]._id = index + 20 * _gnapWalkNodes[index]._gridY1;
- if (_gnapWalkNodes[index]._deltaX == 1 && _gnapWalkNodes[index]._deltaY == 0) {
- if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7AB), _gnapWalkNodes[index]._id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
- _gnapWalkNodes[index]._sequenceId = 0x7AB;
- gnapSequenceId = 0x7AB;
- } else {
- _gameSys->insertSequence(makeRid(datNum, 0x7AC), _gnapWalkNodes[index]._id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
- _gnapWalkNodes[index]._sequenceId = 0x7AC;
- gnapSequenceId = 0x7AC;
- }
- } else if (_gnapWalkNodes[index]._deltaX == -1 && _gnapWalkNodes[index]._deltaY == 0) {
- if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7AF), _gnapWalkNodes[index]._id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
- _gnapWalkNodes[index]._sequenceId = 0x7AF;
- gnapSequenceId = 0x7AF;
- } else {
- _gameSys->insertSequence(makeRid(datNum, 0x7B0), _gnapWalkNodes[index]._id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
- _gnapWalkNodes[index]._sequenceId = 0x7B0;
- gnapSequenceId = 0x7B0;
- }
- } else {
- if (_gnapWalkNodes[index]._deltaY == -1)
- _gnapWalkNodes[index]._id -= 10;
- else
- _gnapWalkNodes[index]._id += 10;
- int newSequenceId = _gnap->getWalkSequenceId(_gnapWalkNodes[index]._deltaX, _gnapWalkNodes[index]._deltaY);
- _gameSys->insertSequence(makeRid(datNum, newSequenceId), _gnapWalkNodes[index]._id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkNodes[index]._gridX1 - _gnap->_gridX, 48 * _gnapWalkNodes[index]._gridY1 - _gnap->_gridY);
- _gnapWalkNodes[index]._sequenceId = newSequenceId;
- gnapSequenceId = newSequenceId;
- }
- gnapId = _gnapWalkNodes[index]._id;
- gnapSequenceDatNum = datNum;
- }
-
- if (flags & 8) {
- if (_gnapWalkNodesCount > 0) {
- _gnap->_sequenceId = gnapSequenceId;
- _gnap->_id = gnapId;
- _gnap->_idleFacing = getGnapWalkFacing(_gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaX, _gnapWalkNodes[_gnapWalkNodesCount - 1]._deltaY);
- _gnap->_sequenceDatNum = datNum;
- if (animationIndex >= 0)
- _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) {
- _gnap->_sequenceId = ridToEntryIndex(sequenceId);
- _gnap->_sequenceDatNum = ridToDatIndex(sequenceId);
- if (_gnap->_sequenceId == 0x7B9) {
- _gnap->_idleFacing = kDirBottomRight;
- } else {
- switch (_gnap->_sequenceId) {
- case 0x7BA:
- _gnap->_idleFacing = kDirBottomLeft;
- break;
- case 0x7BB:
- _gnap->_idleFacing = kDirUpRight;
- break;
- case 0x7BC:
- _gnap->_idleFacing = kDirUpLeft;
- break;
- }
- }
- } else {
- if (_gnapWalkNodesCount > 0) {
- _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:
- _gnap->_sequenceId = 0x7B9;
- break;
- case kDirBottomLeft:
- _gnap->_sequenceId = 0x7BA;
- break;
- case kDirUpRight:
- _gnap->_sequenceId = 0x7BB;
- break;
- default:
- _gnap->_sequenceId = 0x7BC;
- break;
- }
- } else {
- //TODO: simplify the checks by using v10 and v11
- int v10 = _leftClickMouseX - (_gridMinX + 75 * _gnap->_pos.x);
- int v11 = _leftClickMouseY - (_gridMinY + 48 * _gnap->_pos.y);
- if (_leftClickMouseX == _gridMinX + 75 * _gnap->_pos.x)
- ++v10;
- if (_leftClickMouseY == _gridMinY + 48 * _gnap->_pos.y)
- v11 = 1;
- _gnap->_sequenceId = getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
- _gnap->_idleFacing = getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
- }
- _gnap->_sequenceDatNum = datNum;
- }
-
- if (animationIndex < 0) {
- _gnap->_id = 20 * _gnapWalkDestY + 1;
- } else {
- _gnap->_id = _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY;
- _gameSys->setAnimation(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnapWalkNodesCount + animationIndex + 20 * _gnapWalkDestY, animationIndex);
- }
-
- if (flags & 4) {
- _gameSys->insertSequence(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 0, 0);
- } else {
- _gameSys->insertSequence(makeRid(_gnap->_sequenceDatNum, _gnap->_sequenceId), _gnap->_id,
- makeRid(gnapSequenceDatNum, gnapSequenceId), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * _gnapWalkDestX - _gnap->_gridX, 48 * _gnapWalkDestY - _gnap->_gridY);
- }
- }
-
- _gnap->_pos = Common::Point(_gnapWalkDestX, _gnapWalkDestY);
-
- return done;
-}
-
-void GnapEngine::gnapWalkStep() {
- for (int i = 1; i < _gridMaxX; ++i) {
- Common::Point checkPt = Common::Point(_gnap->_pos.x + i, _gnap->_pos.y);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x - i, _gnap->_pos.y);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x, _gnap->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x, _gnap->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x + 1, _gnap->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x - 1, _gnap->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x + 1, _gnap->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_gnap->_pos.x - 1, _gnap->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- gnapWalkTo(checkPt, -1, -1, 1);
- break;
- }
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-bool GnapEngine::platFindPath4(int gridX, int gridY) {
+bool PlayerGnap::findPath4(int gridX, int gridY) {
bool result = false;
- _platWalkNodesCount = 0;
- _platWalkDirXIncr = 0;
- _platWalkDirYIncr = 0;
- _platWalkDeltaX = ABS(_platWalkDestX - gridX);
- _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+ _walkNodesCount = 0;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
- if (_platWalkDeltaX)
- _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
else
- _platWalkDirX = 0;
+ _walkDirX = 0;
- if (_platWalkDeltaY)
- _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
else
- _platWalkDirY = 0;
-
- while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirXIncr;
- ++_platWalkDirYIncr;
- } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
+ _walkDirY = 0;
+
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else {
- _platWalkDeltaX = _platWalkDirXIncr;
- _platWalkDeltaY = _platWalkDirYIncr;
- --_platWalkNodesCount;
+ _walkDeltaX = _walkDirXIncr;
+ _walkDeltaY = _walkDirYIncr;
+ --_walkNodesCount;
}
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else {
- _platWalkDeltaX = _platWalkDirXIncr;
- _platWalkDeltaY = _platWalkDirYIncr;
- --_platWalkNodesCount;
+ _walkDeltaX = _walkDirXIncr;
+ _walkDeltaY = _walkDirYIncr;
+ --_walkNodesCount;
}
}
- ++_platWalkNodesCount;
+ ++_walkNodesCount;
}
- while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- ++_platWalkNodesCount;
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else {
- _platWalkDeltaX = _platWalkDirXIncr;
+ _walkDeltaX = _walkDirXIncr;
}
}
- while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- ++_platWalkNodesCount;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else {
- _platWalkDeltaY = _platWalkDirYIncr;
+ _walkDeltaY = _walkDirYIncr;
}
}
- if (gridX + _platWalkDirX * _platWalkDirXIncr != _platWalkDestX || gridY + _platWalkDirY * _platWalkDirYIncr != _platWalkDestY) {
- _platWalkDestX = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkDestY = gridY + _platWalkDirY * _platWalkDirYIncr;
+ if (gridX + _walkDirX * _walkDirXIncr != _walkDestX || gridY + _walkDirY * _walkDirYIncr != _walkDestY) {
+ _walkDestX = gridX + _walkDirX * _walkDirXIncr;
+ _walkDestY = gridY + _walkDirY * _walkDirYIncr;
result = false;
} else {
result = true;
@@ -856,77 +532,79 @@ bool GnapEngine::platFindPath4(int gridX, int gridY) {
return result;
}
-bool GnapEngine::platFindPath1(int gridX, int gridY, int index) {
- _platWalkNodesCount = index;
- _platWalkDirXIncr = 0;
- _platWalkDirYIncr = 0;
- _platWalkDeltaX = ABS(_platWalkDestX - gridX);
- _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+/******************************************************************************/
- if (_platWalkDeltaX)
- _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+bool PlayerPlat::findPath1(int gridX, int gridY, int index) {
+ _walkNodesCount = index;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
+
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
else
- _platWalkDirX = 0;
+ _walkDirX = 0;
- if (_platWalkDeltaY)
- _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
else
- _platWalkDirY = 0;
-
- while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirXIncr;
- ++_platWalkDirYIncr;
- } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
+ _walkDirY = 0;
+
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else
return false;
}
- ++_platWalkNodesCount;
+ ++_walkNodesCount;
}
- while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- ++_platWalkNodesCount;
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- ++_platWalkNodesCount;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
@@ -934,101 +612,101 @@ bool GnapEngine::platFindPath1(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::platFindPath2(int gridX, int gridY, int index) {
- _platWalkNodesCount = index;
- _platWalkDirXIncr = 0;
- _platWalkDirYIncr = 0;
- _platWalkDeltaX = ABS(_platWalkDestX - gridX);
- _platWalkDeltaY = ABS(_platWalkDestY - gridY);
+bool PlayerPlat::findPath2(int gridX, int gridY, int index) {
+ _walkNodesCount = index;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
- if (_platWalkDeltaX)
- _platWalkDirX = (_platWalkDestX - gridX) / _platWalkDeltaX;
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
else
- _platWalkDirX = 0;
+ _walkDirX = 0;
- if (_platWalkDeltaY)
- _platWalkDirY = (_platWalkDestY - gridY) / _platWalkDeltaY;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
else
- _platWalkDirY = 0;
-
- while (_platWalkDeltaY < _platWalkDeltaX - _platWalkDirXIncr) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, gridY)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- ++_platWalkNodesCount;
+ _walkDirY = 0;
+
+ while (_walkDeltaY < _walkDeltaX - _walkDirXIncr) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, gridY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_platWalkDeltaX < _platWalkDeltaY - _platWalkDirYIncr) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(gridX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- ++_platWalkNodesCount;
+ while (_walkDeltaX < _walkDeltaY - _walkDirYIncr) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(gridX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_platWalkDirXIncr < _platWalkDeltaX && _platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirXIncr;
- ++_platWalkDirYIncr;
- } else if (_platWalkDeltaY - _platWalkDirYIncr > _platWalkDeltaX - _platWalkDirXIncr) {
- if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- } else if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else
return false;
} else {
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- } else if (!isPointBlocked(_platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else
return false;
}
- ++_platWalkNodesCount;
+ ++_walkNodesCount;
}
- while (_platWalkDirXIncr < _platWalkDeltaX) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = gridX + _platWalkDirX * _platWalkDirXIncr;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = _platWalkDestY;
- if (!isPointBlocked(_platWalkDirX + _platWalkNodes[_platWalkNodesCount]._gridX1, _platWalkDestY)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = _platWalkDirX;
- _platWalkNodes[_platWalkNodesCount]._deltaY = 0;
- ++_platWalkDirXIncr;
- ++_platWalkNodesCount;
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else
return false;
}
- while (_platWalkDirYIncr < _platWalkDeltaY) {
- _platWalkNodes[_platWalkNodesCount]._gridX1 = _platWalkDestX;
- _platWalkNodes[_platWalkNodesCount]._gridY1 = gridY + _platWalkDirY * _platWalkDirYIncr;
- if (!isPointBlocked(_platWalkDestX, _platWalkDirY + _platWalkNodes[_platWalkNodesCount]._gridY1)) {
- _platWalkNodes[_platWalkNodesCount]._deltaX = 0;
- _platWalkNodes[_platWalkNodesCount]._deltaY = _platWalkDirY;
- ++_platWalkDirYIncr;
- ++_platWalkNodesCount;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else
return false;
}
@@ -1036,167 +714,167 @@ bool GnapEngine::platFindPath2(int gridX, int gridY, int index) {
return true;
}
-bool GnapEngine::platFindPath3(int gridX, int gridY) {
+bool PlayerPlat::findPath3(int gridX, int gridY) {
int gridIncr = 1;
bool done = false;
- while (!done && gridIncr < _gridMaxX) {
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
+ while (!done && gridIncr < _vm->_gridMaxX) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y) && findPath1(_pos.x + gridIncr, _pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y) && findPath1(_pos.x - gridIncr, _pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x, _pos.y + gridIncr) && findPath1(_pos.x, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = 0;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x, _pos.y - gridIncr) && findPath1(_pos.x, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = 0;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y + gridIncr) && findPath1(_pos.x + gridIncr, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y + gridIncr) && findPath1(_pos.x - gridIncr, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y - gridIncr) && findPath1(_pos.x + gridIncr, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && platFindPath1(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y - gridIncr) && findPath1(_pos.x - gridIncr, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y) && findPath2(_pos.x + gridIncr, _pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y) && findPath2(_pos.x - gridIncr, _pos.y, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = 0;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 0;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x, _pos.y + gridIncr) && findPath2(_pos.x, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = 0;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x, _pos.y - gridIncr) && findPath2(_pos.x, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = 0;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = 0;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y + gridIncr) && findPath2(_pos.x + gridIncr, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y + gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y + gridIncr) && findPath2(_pos.x - gridIncr, _pos.y + gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y + i;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = 1;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y + i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = 1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x + gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x + gridIncr, _pos.y - gridIncr) && findPath2(_pos.x + gridIncr, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x + i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = 1;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x + i;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = 1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
}
- if (!isPointBlocked(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr) && platFindPath2(_plat->_pos.x - gridIncr, _plat->_pos.y - gridIncr, gridIncr)) {
+ if (!_vm->isPointBlocked(_pos.x - gridIncr, _pos.y - gridIncr) && findPath2(_pos.x - gridIncr, _pos.y - gridIncr, gridIncr)) {
for (int i = 0; i < gridIncr; ++i) {
- _platWalkNodes[i]._gridX1 = _plat->_pos.x - i;
- _platWalkNodes[i]._gridY1 = _plat->_pos.y - i;
- _platWalkNodes[i]._deltaX = -1;
- _platWalkNodes[i]._deltaY = -1;
+ _walkNodes[i]._gridX1 = _pos.x - i;
+ _walkNodes[i]._gridY1 = _pos.y - i;
+ _walkNodes[i]._deltaX = -1;
+ _walkNodes[i]._deltaY = -1;
}
done = true;
break;
@@ -1207,215 +885,100 @@ bool GnapEngine::platFindPath3(int gridX, int gridY) {
return done;
}
-bool GnapEngine::platypusWalkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
- int datNum = flags & 3;
- bool done = false;
-
- _timers[1] = 60;
-
- int gridX = gridPos.x;
- if (gridX < 0)
- gridX = (_leftClickMouseX - _gridMinX + 37) / 75;
-
- int gridY = gridPos.y;
- if (gridY < 0)
- gridY = (_leftClickMouseY - _gridMinY + 24) / 48;
-
- _platWalkDestX = CLIP(gridX, 0, _gridMaxX - 1);
- _platWalkDestY = CLIP(gridY, 0, _gridMaxY - 1);
-
- if (animationIndex >= 0 && _gnap->_pos == Common::Point(_platWalkDestX, _platWalkDestY))
- gnapWalkStep();
-
- if (platFindPath1(_plat->_pos.x, _plat->_pos.y, 0))
- done = true;
-
- if (!done && platFindPath2(_plat->_pos.x, _plat->_pos.y, 0))
- done = true;
-
- if (!done && platFindPath3(_plat->_pos.x, _plat->_pos.y))
- done = true;
+bool PlayerPlat::findPath4(int gridX, int gridY) {
+ bool result = false;
- if (!done && platFindPath4(_plat->_pos.x, _plat->_pos.y))
- done = true;
+ _walkNodesCount = 0;
+ _walkDirXIncr = 0;
+ _walkDirYIncr = 0;
+ _walkDeltaX = ABS(_walkDestX - gridX);
+ _walkDeltaY = ABS(_walkDestY - gridY);
- int platSequenceId = _plat->_sequenceId;
- int platId = _plat->_id;
- int platSequenceDatNum = _plat->_sequenceDatNum;
+ if (_walkDeltaX)
+ _walkDirX = (_walkDestX - gridX) / _walkDeltaX;
+ else
+ _walkDirX = 0;
- for (int index = 0; index < _platWalkNodesCount; ++index) {
- _platWalkNodes[index]._id = index + 20 * _platWalkNodes[index]._gridY1;
- if (_platWalkNodes[index]._deltaX == 1 && _platWalkNodes[index]._deltaY == 0) {
- if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7CD), _platWalkNodes[index]._id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
- _platWalkNodes[index]._sequenceId = 0x7CD;
- platSequenceId = 0x7CD;
+ if (_walkDeltaY)
+ _walkDirY = (_walkDestY - gridY) / _walkDeltaY;
+ else
+ _walkDirY = 0;
+
+ while (_walkDirXIncr < _walkDeltaX && _walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirXIncr;
+ ++_walkDirYIncr;
+ } else if (_walkDeltaY - _walkDirYIncr > _walkDeltaX - _walkDirXIncr) {
+ if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ } else if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7CE), _platWalkNodes[index]._id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
- _platWalkNodes[index]._sequenceId = 0x7CE;
- platSequenceId = 0x7CE;
+ _walkDeltaX = _walkDirXIncr;
+ _walkDeltaY = _walkDirYIncr;
+ --_walkNodesCount;
}
- } else if (_platWalkNodes[index]._deltaX == -1 && _platWalkNodes[index]._deltaY == 0) {
- if (index % 2) {
- _gameSys->insertSequence(makeRid(datNum, 0x7CF), _platWalkNodes[index]._id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
- _platWalkNodes[index]._sequenceId = 0x7CF;
- platSequenceId = 0x7CF;
+ } else {
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ } else if (!_vm->isPointBlocked(_walkNodes[_walkNodesCount]._gridX1, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
} else {
- _gameSys->insertSequence(makeRid(datNum, 0x7D0), _platWalkNodes[index]._id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
- _platWalkNodes[index]._sequenceId = 0x7D0;
- platSequenceId = 0x7D0;
+ _walkDeltaX = _walkDirXIncr;
+ _walkDeltaY = _walkDirYIncr;
+ --_walkNodesCount;
}
- } else {
- if (_platWalkNodes[index]._deltaY == -1)
- _platWalkNodes[index]._id -= 10;
- else
- _platWalkNodes[index]._id += 10;
- int newSequenceId = _plat->getWalkSequenceId(_platWalkNodes[index]._deltaX, _platWalkNodes[index]._deltaY);
- _gameSys->insertSequence(makeRid(datNum, newSequenceId), _platWalkNodes[index]._id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- kSeqScale | kSeqSyncWait, 0, 75 * _platWalkNodes[index]._gridX1 - _plat->_gridX, 48 * _platWalkNodes[index]._gridY1 - _plat->_gridY);
- _platWalkNodes[index]._sequenceId = newSequenceId;
- platSequenceId = newSequenceId;
}
- platId = _platWalkNodes[index]._id;
- platSequenceDatNum = datNum;
+ ++_walkNodesCount;
}
- if (flags & 8) {
- if (_platWalkNodesCount > 0) {
- _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;
- else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0)
- _plat->_idleFacing = kDirUnk4;
- else if (_platWalkNodes[_platWalkNodesCount - 1]._gridX1 % 2)
- _plat->_idleFacing = kDirUnk4;
- else
- _plat->_idleFacing = kDirNone;
- if (animationIndex >= 0)
- _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) {
- _plat->_sequenceId = ridToEntryIndex(sequenceId);
- _plat->_sequenceDatNum = ridToDatIndex(sequenceId);
- if (_plat->_sequenceId == 0x7C2) {
- _plat->_idleFacing = kDirNone;
- } else if (_plat->_sequenceId == 0x7D2) {
- _plat->_idleFacing = kDirUnk4;
- }
+ while (_walkDirXIncr < _walkDeltaX) {
+ _walkNodes[_walkNodesCount]._gridX1 = gridX + _walkDirX * _walkDirXIncr;
+ _walkNodes[_walkNodesCount]._gridY1 = _walkDestY;
+ if (!_vm->isPointBlocked(_walkDirX + _walkNodes[_walkNodesCount]._gridX1, _walkDestY)) {
+ _walkNodes[_walkNodesCount]._deltaX = _walkDirX;
+ _walkNodes[_walkNodesCount]._deltaY = 0;
+ ++_walkDirXIncr;
+ ++_walkNodesCount;
} else {
- if (_platWalkNodesCount > 0) {
- if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX > 0) {
- _plat->_sequenceId = 0x7C2;
- _plat->_idleFacing = kDirNone;
- } else if (_platWalkNodes[_platWalkNodesCount - 1]._deltaX < 0) {
- _plat->_sequenceId = 0x7D2;
- _plat->_idleFacing = kDirUnk4;
- } else if (_platWalkNodes[0]._deltaX > 0) {
- _plat->_sequenceId = 0x7C2;
- _plat->_idleFacing = kDirNone;
- } else if (_platWalkNodes[0]._deltaX < 0) {
- _plat->_sequenceId = 0x7D2;
- _plat->_idleFacing = kDirUnk4;
- } else {
- _plat->_sequenceId = 0x7D2;
- _plat->_idleFacing = kDirUnk4;
- }
- } else if (_plat->_idleFacing != kDirNone) {
- _plat->_sequenceId = 0x7D2;
- } else {
- _plat->_sequenceId = 0x7C2;
- }
- _plat->_sequenceDatNum = datNum;
+ _walkDeltaX = _walkDirXIncr;
}
+ }
- if (animationIndex < 0) {
- _plat->_id = 20 * _platWalkDestY;
+ while (_walkDirYIncr < _walkDeltaY) {
+ _walkNodes[_walkNodesCount]._gridX1 = _walkDestX;
+ _walkNodes[_walkNodesCount]._gridY1 = gridY + _walkDirY * _walkDirYIncr;
+ if (!_vm->isPointBlocked(_walkDestX, _walkDirY + _walkNodes[_walkNodesCount]._gridY1)) {
+ _walkNodes[_walkNodesCount]._deltaX = 0;
+ _walkNodes[_walkNodesCount]._deltaY = _walkDirY;
+ ++_walkDirYIncr;
+ ++_walkNodesCount;
} else {
- _plat->_id = animationIndex + 20 * _platWalkDestY;
- _gameSys->setAnimation(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), animationIndex + 20 * _platWalkDestY, animationIndex);
+ _walkDeltaY = _walkDirYIncr;
}
-
- if (flags & 4)
- _gameSys->insertSequence(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 0, 0);
- else
- _gameSys->insertSequence(makeRid(_plat->_sequenceDatNum, _plat->_sequenceId), _plat->_id,
- makeRid(platSequenceDatNum, platSequenceId), platId,
- 9, 0, 75 * _platWalkDestX - _plat->_gridX, 48 * _platWalkDestY - _plat->_gridY);
}
- _plat->_pos = Common::Point(_platWalkDestX, _platWalkDestY);
-
- return done;
-}
-
-void GnapEngine::platypusWalkStep() {
- for (int i = 1; i < _gridMaxX; ++i) {
- Common::Point checkPt = Common::Point(_plat->_pos.x + i, _plat->_pos.y);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x - i, _plat->_pos.y);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x, _plat->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x, _plat->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x + 1, _plat->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x - 1, _plat->_pos.y + 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x + 1, _plat->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
-
- checkPt = Common::Point(_plat->_pos.x - 1, _plat->_pos.y - 1);
- if (!isPointBlocked(checkPt)) {
- platypusWalkTo(checkPt, -1, -1, 1);
- break;
- }
+ if (gridX + _walkDirX * _walkDirXIncr != _walkDestX || gridY + _walkDirY * _walkDirYIncr != _walkDestY) {
+ _walkDestX = gridX + _walkDirX * _walkDirXIncr;
+ _walkDestY = gridY + _walkDirY * _walkDirYIncr;
+ result = false;
+ } else {
+ result = true;
}
+
+ return result;
}
void GnapEngine::platypusMakeRoom() {
@@ -1425,7 +988,7 @@ void GnapEngine::platypusMakeRoom() {
rndGridX = getRandom(_gridMaxX);
} while (ABS(rndGridX - _plat->_pos.x) > 4 || ABS(rndGridY - _plat->_pos.y) > 3 ||
isPointBlocked(rndGridX, rndGridY));
- platypusWalkTo(Common::Point(rndGridX, rndGridY), -1, -1, 1);
+ _plat->walkTo(Common::Point(rndGridX, rndGridY), -1, -1, 1);
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 8eeb4bf..c16a1e7 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -95,8 +95,8 @@ void Scene01::run() {
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
@@ -158,7 +158,7 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
@@ -225,10 +225,10 @@ void Scene01::run() {
case kHS01ExitTruck:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
}
break;
@@ -242,12 +242,12 @@ void Scene01::run() {
case kHS01WalkArea7:
case kHS01WalkArea8:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -417,17 +417,17 @@ void Scene02::run() {
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
_vm->_gnap->initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(8, 6), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(8, 6), 1, 0x107C2, 1);
updateHotspots();
gameSys.waitForUpdate();
break;
@@ -449,8 +449,8 @@ void Scene02::run() {
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(2, 7), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -505,7 +505,7 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
- _vm->gnapWalkTo(destPos, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(destPos, 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
@@ -607,10 +607,10 @@ void Scene02::run() {
case kHS02ExitHouse:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 4;
}
@@ -619,10 +619,10 @@ void Scene02::run() {
case kHS02ExitBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 5;
}
@@ -631,10 +631,10 @@ void Scene02::run() {
case kHS02ExitCreek:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
}
break;
@@ -642,10 +642,10 @@ void Scene02::run() {
case kHS02ExitPigpen:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
}
break;
@@ -655,12 +655,12 @@ void Scene02::run() {
case kHS02WalkArea3:
case kHS02WalkArea4:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -925,8 +925,8 @@ void Scene03::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(4, 7), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(3, 6), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(4, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -968,7 +968,7 @@ void Scene03::run() {
case kHS03Grass:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
@@ -996,10 +996,10 @@ void Scene03::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
@@ -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], 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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;
@@ -1037,7 +1037,7 @@ void Scene03::run() {
case kHS03TrappedPlatypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
@@ -1047,10 +1047,10 @@ void Scene03::run() {
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
- _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107B5, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
_vm->_gnap->_actionStatus = kAS03FreePlatypus;
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
else
@@ -1088,15 +1088,15 @@ void Scene03::run() {
case kHS03WalkAreas2:
case kHS03WalkAreas3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS03PlatypusWalkArea:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
@@ -1107,7 +1107,7 @@ void Scene03::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1406,8 +1406,8 @@ void Scene04::run() {
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(5, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(6, 9), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
_vm->_gnap->initPos(5, 7, kDirBottomRight);
_vm->_plat->initPos(4, 7, kDirNone);
@@ -1418,8 +1418,8 @@ void Scene04::run() {
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(9, 9), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -1507,7 +1507,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
@@ -1528,19 +1528,19 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
_vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20E;
}
@@ -1565,13 +1565,13 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
_vm->_gnap->_idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
@@ -1587,10 +1587,10 @@ void Scene04::run() {
case kHS04ExitTruck:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
else
@@ -1607,7 +1607,7 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
if (_triedWindow) {
_vm->_gnap->_actionStatus = kAS04GetKeyAnother;
} else {
@@ -1631,10 +1631,10 @@ void Scene04::run() {
case kHS04ExitBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -1645,12 +1645,12 @@ void Scene04::run() {
case kHS04WalkArea1:
case kHS04WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1889,8 +1889,8 @@ void Scene05::run() {
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(Common::Point(2, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 9), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
_vm->_gnap->initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
@@ -1962,12 +1962,12 @@ void Scene05::run() {
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
_vm->_gnap->useDeviceOnPlatypus();
- if (_vm->platypusWalkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
+ if (_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
_vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
}
if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
- _vm->gnapWalkStep();
+ _vm->_gnap->walkStep();
_vm->playGnapIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
}
break;
@@ -1981,7 +1981,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
- _vm->gnapWalkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(checkPt, 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
@@ -2035,7 +2035,7 @@ void Scene05::run() {
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
Common::Point destPt = _vm->_hotspotsWalkPos[2] + Common::Point(- 1, 1);
- _vm->gnapWalkTo(destPt, 0, -1, 1);
+ _vm->_gnap->walkTo(destPt, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
@@ -2043,7 +2043,7 @@ void Scene05::run() {
_vm->_newSceneNum = 36;
} else if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0,
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0,
_vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2055,7 +2055,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
@@ -2070,10 +2070,10 @@ void Scene05::run() {
case kHS05ExitHouse:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 4;
else
@@ -2084,7 +2084,7 @@ void Scene05::run() {
case kHS05WalkArea1:
case kHS05WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS05WalkArea3:
@@ -2093,7 +2093,7 @@ void Scene05::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2319,8 +2319,8 @@ void Scene06::run() {
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -2382,7 +2382,7 @@ void Scene06::run() {
_vm->playGnapImpossible(0, 0);
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TryToGetGas;
} else {
@@ -2415,7 +2415,7 @@ void Scene06::run() {
if (_vm->isFlag(kGFGasTaken))
_vm->playGnapImpossible(0, 0);
else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
@@ -2433,10 +2433,10 @@ void Scene06::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(Common::Point(6, 8), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirNone;
_vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
@@ -2449,11 +2449,11 @@ void Scene06::run() {
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TalkToHorse;
}
@@ -2470,7 +2470,7 @@ void Scene06::run() {
case kHS06ExitOutsideBarn:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
@@ -2485,12 +2485,12 @@ void Scene06::run() {
case kHS06WalkArea4:
case kHS06WalkArea5:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2739,9 +2739,9 @@ void Scene07::run() {
case kHS07ExitHouse:
_vm->_isLeavingScene = true;
if (_vm->_gnap->_pos.x > 8)
- _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, 7), 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, 7), 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(Common::Point(8, 7), 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 7), 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS07LeaveScene;
break;
@@ -2783,7 +2783,7 @@ void Scene07::run() {
case kHS07WalkArea1:
case kHS07WalkArea2:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS07WalkArea3:
@@ -2792,7 +2792,7 @@ void Scene07::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2956,8 +2956,8 @@ void Scene08::run() {
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(1, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -3011,18 +3011,18 @@ void Scene08::run() {
case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(0, 6), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(Common::Point(0, 7), 1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
case kHS08ExitCrash:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(3, 9), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
- _vm->platypusWalkTo(Common::Point(4, 9), 1, 0x107C1, 1);
+ _vm->_plat->walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
@@ -3033,7 +3033,7 @@ void Scene08::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS08LookMan;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
@@ -3043,13 +3043,13 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x14D);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(6, 6), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(6, 6);
@@ -3071,21 +3071,21 @@ void Scene08::run() {
_vm->_gnap->_actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS08GrabDog;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(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->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(3, 7), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(3, 7);
@@ -3175,13 +3175,13 @@ void Scene08::run() {
case kHS08WalkArea1:
case kHS08WalkArea2:
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(-1, 6), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, 6), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
_vm->gnapActionIdle(0x14D);
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3333,7 +3333,7 @@ void Scene08::updateAnimations() {
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_plat->_sequenceDatNum = 0;
if (_vm->_gnap->_pos == Common::Point(1, 8))
- _vm->gnapWalkStep();
+ _vm->_gnap->walkStep();
} else if (_nextDogSequenceId != -1) {
gameSys.setAnimation(_nextDogSequenceId, 100, 3);
gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -3386,8 +3386,8 @@ void Scene09::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(4, 7, kDirBottomRight);
_vm->_plat->initPos(5, 7, kDirNone);
@@ -3439,18 +3439,18 @@ void Scene09::run() {
case kHS09ExitKitchen:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
- _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BF, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
case kHS09ExitHouse:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
- _vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS09LeaveScene;
- _vm->platypusWalkTo(Common::Point(10, -1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3464,7 +3464,7 @@ void Scene09::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_actionStatus = kAS09SearchTrash;
- _vm->gnapWalkTo(Common::Point(9, 6), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BC, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3477,12 +3477,12 @@ void Scene09::run() {
case kHS09WalkArea1:
case kHS09WalkArea2:
case kHS09WalkArea3:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index cb74bff..9033763 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -75,14 +75,14 @@ void Scene10::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(1, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(1, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
_vm->_timers[4] = _vm->getRandom(80) + 150;
@@ -132,18 +132,18 @@ void Scene10::run() {
case kHS10ExitBar:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(0, 7), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(0, 7), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
- _vm->platypusWalkTo(Common::Point(0, 7), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(0, 7), -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
break;
case kHS10ExitBackdoor:
_vm->_isLeavingScene = true;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(2, 9), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
- _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C7, 1);
+ _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
break;
@@ -164,14 +164,14 @@ void Scene10::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(4, 6), -1, -1, 1);
- _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ _vm->_plat->walkTo(Common::Point(4, 6), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
}
@@ -194,7 +194,7 @@ void Scene10::run() {
_vm->playGnapMoan2(-1, -1);
else {
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
@@ -207,8 +207,8 @@ void Scene10::run() {
else {
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(3, 7), -1, -1, 1);
- _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ _vm->_plat->walkTo(Common::Point(3, 7), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
break;
@@ -226,7 +226,7 @@ void Scene10::run() {
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
@@ -240,7 +240,7 @@ void Scene10::run() {
_vm->setFlag(kGFMudTaken);
_vm->gnapActionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(7, 6), 1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
@@ -261,7 +261,7 @@ void Scene10::run() {
break;
case GRAB_CURSOR:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(9, 6), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BB, 1);
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;
@@ -283,7 +283,7 @@ void Scene10::run() {
case kHS10WalkArea3:
case kHS10WalkArea4:
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS10Device:
@@ -296,7 +296,7 @@ void Scene10::run() {
default:
if (_vm->_mouseClickState._left) {
_vm->gnapActionIdle(0x10C);
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -401,7 +401,7 @@ void Scene10::updateAnimations() {
if (_vm->_plat->_actionStatus == kAS10PlatWithBox)
_vm->_plat->_actionStatus = -1;
if (_vm->_gnap->_pos == Common::Point(4, 8))
- _vm->gnapWalkStep();
+ _vm->_gnap->walkStep();
break;
default:
gameSys.insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -573,8 +573,8 @@ void Scene11::run() {
_vm->endSceneInit();
if (_vm->_prevSceneNum == 12) {
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
gameSys.insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
@@ -612,32 +612,32 @@ void Scene11::run() {
case kHS11ExitKitchen:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(6, 5), 0, 0x107BF, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(Common::Point(6, 6), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(6, 6), -1, -1, 1);
_vm->_newSceneNum = 10;
break;
case kHS11ExitToilet:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(8, 5), 0, 0x107BF, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 5), 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(Common::Point(8, 6), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(8, 6), -1, -1, 1);
_vm->_newSceneNum = 13;
break;
case kHS11ExitLeft:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS11LeaveScene;
- _vm->platypusWalkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
break;
case kHS11GoggleGuy:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -653,7 +653,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
break;
}
@@ -665,7 +665,7 @@ void Scene11::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_gnap->_idleFacing = kDirUpRight;
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 9);
+ _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 9);
_vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
@@ -674,12 +674,12 @@ void Scene11::run() {
_vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS11GrabHookGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->gnapWalkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
@@ -700,7 +700,7 @@ void Scene11::run() {
_vm->playGnapScratchingHead(9, 8);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(9, 8), 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 8), 0, 0x107BA, 1);
_vm->_gnap->_actionStatus = kAS11GrabBillardBall;
break;
case TALK_CURSOR:
@@ -718,7 +718,7 @@ void Scene11::run() {
case kHS11WalkArea4:
case kHS11WalkArea5:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS11Device:
@@ -730,7 +730,7 @@ void Scene11::run() {
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -989,8 +989,8 @@ void Scene12::run() {
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -1030,27 +1030,27 @@ void Scene12::run() {
case kHS12ExitRight:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(10, -1), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS12LeaveScene;
- _vm->platypusWalkTo(Common::Point(10, -1), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(10, -1), -1, -1, 1);
_vm->_newSceneNum = 11;
break;
case kHS12ToothGuy:
if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
_vm->_largeSprite = gameSys.createSurface(0x141);
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
@@ -1060,17 +1060,17 @@ void Scene12::run() {
_vm->playGnapScratchingHead(1, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS12GrabToothGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(3, 7), 1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->playGnapIdle(2, 7);
@@ -1081,19 +1081,19 @@ void Scene12::run() {
case kHS12Barkeeper:
if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 9);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 9);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(Common::Point(6, 6), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12LookBarkeeper;
break;
@@ -1102,7 +1102,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
@@ -1116,31 +1116,31 @@ void Scene12::run() {
case kHS12BeardGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 9);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy;
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12LookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
- _vm->gnapWalkTo(Common::Point(7, 6), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12GrabBeardGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(7, 6), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
_vm->playGnapIdle(7, 6);
@@ -1152,7 +1152,7 @@ void Scene12::run() {
case kHS12Jukebox:
_vm->_newSceneNum = 15;
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(5, 6), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS12LeaveScene;
break;
@@ -1161,12 +1161,12 @@ void Scene12::run() {
case kHS12WalkArea3:
case kHS12WalkArea4:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1539,9 +1539,9 @@ void Scene13::run() {
case kHS13ExitBar:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(2, 7), 0, 0x107C0, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS13LeaveScene;
- _vm->platypusWalkTo(Common::Point(2, 8), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(2, 8), -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
_vm->_newSceneNum = 11;
} else {
@@ -1569,7 +1569,7 @@ void Scene13::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_sequenceDatNum = 0;
} else {
- _vm->gnapWalkTo(Common::Point(5, 5), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 5), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS13BackToilet;
_vm->_gnap->_idleFacing = kDirUpRight;
}
@@ -1590,7 +1590,7 @@ void Scene13::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->gnapWalkTo(Common::Point(6, 7), 0, 0xA9, 5);
+ _vm->_gnap->walkTo(Common::Point(6, 7), 0, 0xA9, 5);
_vm->_gnap->_actionStatus = kAS13FrontToilet;
_vm->_gnap->_idleFacing = kDirBottomRight;
break;
@@ -1604,7 +1604,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS13LookScribble;
_vm->_gnap->_idleFacing = kDirUpRight;
break;
@@ -1613,7 +1613,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -1629,11 +1629,11 @@ void Scene13::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 9, 6));
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(8, 7), 0, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 7), 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13GrabUrinal;
break;
case TALK_CURSOR:
@@ -1651,11 +1651,11 @@ void Scene13::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 5, 9));
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(4, 8), 0, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107B9, 1);
_vm->_gnap->_actionStatus = kAS13GrabSink;
break;
case TALK_CURSOR:
@@ -1674,7 +1674,7 @@ void Scene13::run() {
case kHS13WalkArea7:
case kHS13WalkArea8:
case kHS13WalkArea9:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS13WalkArea1:
@@ -1683,7 +1683,7 @@ void Scene13::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1694,7 +1694,7 @@ void Scene13::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
- _vm->platypusWalkTo(Common::Point(-1, 7), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(-1, 7), -1, -1, 1);
if (_vm->_gnap->_actionStatus < 0)
_vm->_gnap->updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -2322,7 +2322,7 @@ void Scene17::update() {
_vm->updateMouseCursor();
_vm->updateGrabCursorSprite(0, 0);
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
}
@@ -2418,8 +2418,8 @@ void Scene17::run() {
_vm->_gnap->initPos(4, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
_vm->_gnap->initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
@@ -2472,8 +2472,8 @@ void Scene17::run() {
_vm->_gnap->initPos(6, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
_vm->_gnap->initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
@@ -2506,7 +2506,7 @@ void Scene17::run() {
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->_plat->_idleFacing = kDirBottomRight;
- _vm->platypusWalkTo(Common::Point(2, 9), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -2531,8 +2531,8 @@ void Scene17::run() {
_vm->_gnap->useJointOnPlatypus();
} else {
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
_vm->_plat->_actionStatus = kAS17GetWrench1;
_vm->_gnap->_actionStatus = kAS17GetWrench1;
_vm->_timers[5] = _vm->getRandom(30) + 80;
@@ -2578,7 +2578,7 @@ void Scene17::run() {
if (_canTryGetWrench) {
platHangUpPhone();
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS17TryGetWrench;
_vm->_gnap->_actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
@@ -2593,7 +2593,7 @@ void Scene17::run() {
case kHS17Phone1:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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);
@@ -2619,7 +2619,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
@@ -2634,7 +2634,7 @@ void Scene17::run() {
case kHS17Phone2:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
@@ -2663,7 +2663,7 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
@@ -2680,10 +2680,10 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -2693,9 +2693,9 @@ void Scene17::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS17LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -2703,12 +2703,12 @@ void Scene17::run() {
case kHS17WalkArea2:
case kHS17WalkArea3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
break;
@@ -2998,7 +2998,7 @@ void Scene17::updateAnimations() {
_vm->_plat->_sequenceDatNum = 0;
_vm->_gnap->_sequenceId = 0x875;
_vm->_plat->_sequenceId = 0x23F;
- _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->_plat->_actionStatus = kAS17GetWrench2;
}
break;
@@ -3302,7 +3302,7 @@ void Scene18::closeHydrantValve() {
_vm->_gnap->_actionStatus = kAS18LeaveScene;
_vm->updateMouseCursor();
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed)) {
_vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
waitForGnapAction();
@@ -3311,7 +3311,7 @@ void Scene18::closeHydrantValve() {
waitForGnapAction();
}
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
_vm->_gnap->_actionStatus = kAS18CloseTopValve;
waitForGnapAction();
}
@@ -3384,7 +3384,7 @@ void Scene18::run() {
} else {
gameSys.setAnimation(_currPhoneSequenceId, 254, 3);
}
- _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->clearFlag(kGFGnapControlsToyUFO);
@@ -3395,20 +3395,20 @@ void Scene18::run() {
_vm->_gnap->initPos(4, 11, kDirBottomRight);
_vm->_plat->initPos(5, 11, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
_vm->_gnap->initPos(7, 7, kDirBottomRight);
_vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(8, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 10, kDirBottomRight);
_vm->_plat->initPos(-1, 10, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(3, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(3, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
}
@@ -3476,7 +3476,7 @@ void Scene18::run() {
_vm->playGnapScratchingHead(3, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3513,12 +3513,12 @@ void Scene18::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
-1, -1, 1);
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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], 0, -1, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
_vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromHydrant;
}
break;
@@ -3570,7 +3570,7 @@ void Scene18::run() {
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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);
@@ -3582,7 +3582,7 @@ void Scene18::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS18CloseTopValve;
} else
@@ -3612,7 +3612,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan;
else
@@ -3626,7 +3626,7 @@ void Scene18::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
else
@@ -3654,10 +3654,10 @@ void Scene18::run() {
} else {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
}
}
break;
@@ -3671,12 +3671,12 @@ void Scene18::run() {
closeHydrantValve();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -3690,12 +3690,12 @@ void Scene18::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity], 0, 0x107B2, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity], 0, 0x107B2, 1);
_vm->_gnap->_actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity] + Common::Point(0, -1), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity] + Common::Point(0, -1), -1, 0x107CF, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -3707,7 +3707,7 @@ void Scene18::run() {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
@@ -3719,7 +3719,7 @@ void Scene18::run() {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
@@ -3744,7 +3744,7 @@ void Scene18::run() {
_vm->_plat->_actionStatus = -1;
_vm->_sceneWaiting = false;
_vm->_plat->initPos(-1, 10, kDirNone);
- _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
@@ -3840,7 +3840,7 @@ void Scene18::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS18OpenTopValveDone;
break;
@@ -3938,7 +3938,7 @@ void Scene18::updateAnimations() {
_vm->playGnapUseDevice(0, 0);
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
if (_vm->_gnap->_actionStatus == kAS18OpenRightValveNoGarbageCan)
_vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCanDone;
@@ -4107,7 +4107,7 @@ void Scene19::run() {
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_shopAssistantCtr = 0;
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(4, 9), -1, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
updateHotspots();
} else {
_currShopAssistantSequenceId = 0x6D;
@@ -4118,8 +4118,8 @@ void Scene19::run() {
_vm->_gnap->initPos(3, 6, kDirBottomRight);
_vm->_plat->initPos(4, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(4, 9), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -4170,12 +4170,12 @@ void Scene19::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[1], 0, 0x107B2, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107B2, 1);
_vm->_gnap->_actionStatus = kAS19LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[1] + Common::Point(1, 0), -1, 0x107C5, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(1, 0), -1, 0x107C5, 1);
_vm->_hotspots[kHS19WalkArea1]._flags &= ~SF_WALKABLE;
}
break;
@@ -4191,7 +4191,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
@@ -4243,7 +4243,7 @@ void Scene19::run() {
_vm->playGnapMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
_vm->_gnap->_actionStatus = kAS19GrabToy;
break;
@@ -4266,7 +4266,7 @@ void Scene19::run() {
_vm->playGnapScratchingHead(9, 1);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
_vm->playGnapIdle(8, 2);
_vm->_gnap->_actionStatus = kAS19UsePhone;
break;
@@ -4283,12 +4283,12 @@ void Scene19::run() {
case kHS19WalkArea2:
case kHS19WalkArea3:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
}
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index e02b2fa..582aa5b 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -208,45 +208,45 @@ void Scene20::run() {
}
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
_vm->_gnap->initPos(5, 11, kDirBottomRight);
_vm->_plat->initPos(6, 11, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 18:
_vm->_gnap->initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 21:
_vm->_gnap->initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 22:
_vm->_gnap->initPos(7, 6, kDirBottomRight);
_vm->_plat->initPos(8, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(9, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
break;
default:
_vm->_gnap->initPos(8, 6, kDirBottomLeft);
_vm->_plat->initPos(9, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
break;
}
@@ -302,9 +302,9 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 21;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -315,9 +315,9 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -328,9 +328,9 @@ void Scene20::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -341,9 +341,9 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
@@ -354,9 +354,9 @@ void Scene20::run() {
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS20LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -371,7 +371,7 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 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], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
@@ -451,12 +451,12 @@ void Scene20::run() {
case kHS20WalkArea1:
case kHS20WalkArea2:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -625,7 +625,7 @@ void Scene20::updateAnimations() {
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJointDone:
@@ -674,7 +674,7 @@ void Scene20::updateAnimations() {
_currGroceryStoreGuySequenceId = 377;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = -1;
- _vm->gnapWalkTo(Common::Point(4, 8), -1, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107BB, 1);
break;
case 0x17C:
gameSys.setAnimation(0, 0, 3);
@@ -757,8 +757,8 @@ void Scene21::run() {
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
} else {
_vm->_gnap->initPos(5, 11, kDirBottomRight);
@@ -769,8 +769,8 @@ void Scene21::run() {
_nextOldLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -824,7 +824,7 @@ void Scene21::run() {
_vm->playGnapScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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(Common::Point(4, 6), 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(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(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
@@ -874,20 +874,20 @@ void Scene21::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
_vm->_gnap->_actionStatus = kAS21LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS21WalkArea1:
case kHS21WalkArea2:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1050,8 +1050,8 @@ void Scene22::run() {
_vm->_gnap->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
_vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
}
if (_vm->isFlag(kGFSceneFlag1)) {
@@ -1134,9 +1134,9 @@ void Scene22::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1144,9 +1144,9 @@ void Scene22::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 23;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS22LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1164,7 +1164,7 @@ void Scene22::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
@@ -1177,12 +1177,12 @@ void Scene22::run() {
case kHS22WalkArea1:
case kHS22WalkArea2:
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1298,12 +1298,12 @@ void Scene23::run() {
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
- _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else {
- _vm->gnapWalkTo(Common::Point(2, 7), 0, 0x107B9, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), 0, 0x107B9, 1);
while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
@@ -1363,7 +1363,7 @@ void Scene23::run() {
if (_vm->isFlag(kGFSceneFlag1))
_vm->playGnapMoan2(0, 0);
else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS23LookCereals;
}
break;
@@ -1372,7 +1372,7 @@ void Scene23::run() {
_vm->playGnapImpossible(0, 0);
else {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
_vm->_gnap->_actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
@@ -1391,21 +1391,21 @@ void Scene23::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS23LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
}
break;
case kHS23WalkArea1:
case kHS23WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1566,14 +1566,14 @@ void Scene24::run() {
_vm->_gnap->initPos(1, 8, kDirBottomRight);
_vm->_plat->initPos(2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(1, 9), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(2, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(1, 9), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(3, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1624,9 +1624,9 @@ void Scene24::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1635,9 +1635,9 @@ void Scene24::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1645,12 +1645,12 @@ void Scene24::run() {
case kHS24WalkArea2:
case kHS24WalkArea3:
if (_vm->_gnap->_actionStatus == -1)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1815,14 +1815,14 @@ void Scene25::run() {
_vm->_gnap->initPos(5, 11, kDirUpLeft);
_vm->_plat->initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 7), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 7), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 7), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(5, 6, kDirBottomRight);
_vm->_plat->initPos(6, 6, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1870,7 +1870,7 @@ void Scene25::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
_vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1884,7 +1884,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
@@ -1900,9 +1900,9 @@ void Scene25::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1912,13 +1912,13 @@ void Scene25::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
_vm->_gnap->_actionStatus = kAS25LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(Common::Point(4, 5), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 5), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicket;
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
}
@@ -1935,7 +1935,7 @@ void Scene25::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], -1, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], -1, -1, 1);
if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
_vm->_gnap->_idleFacing = kDirUpLeft;
else if (_vm->_sceneClickedHotspot == 8)
@@ -1958,12 +1958,12 @@ void Scene25::run() {
case kHS25WalkArea1:
case kHS25WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2044,7 +2044,7 @@ void Scene25::updateAnimations() {
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
_vm->playGnapIdle(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone;
break;
@@ -2133,8 +2133,8 @@ void Scene26::run() {
_vm->_gnap->initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(2, 8, kDirBottomRight);
_vm->_plat->initPos(3, 8, kDirNone);
@@ -2186,7 +2186,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2195,7 +2195,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2204,7 +2204,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2213,7 +2213,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 30;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitElephant].y), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitElephant].y), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2222,7 +2222,7 @@ void Scene26::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS26LeaveScene;
}
break;
@@ -2230,12 +2230,12 @@ void Scene26::run() {
case kHS26WalkArea1:
case kHS26WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2350,22 +2350,22 @@ void Scene27::run() {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
case 29:
_vm->_gnap->initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 31:
_vm->_gnap->initPos(12, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(8, 9), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(8, 9), -1, 0x107C2, 1);
break;
default:
_vm->_gnap->initPos(6, 8, kDirBottomRight);
@@ -2420,7 +2420,7 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemPicture) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
_vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
@@ -2431,7 +2431,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
@@ -2454,7 +2454,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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:
@@ -2470,9 +2470,9 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
}
break;
@@ -2480,9 +2480,9 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -2490,9 +2490,9 @@ void Scene27::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
}
break;
@@ -2501,12 +2501,12 @@ void Scene27::run() {
if (_vm->isFlag(kGFPlatypus)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 28;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS27TryEnterClownTent;
}
@@ -2515,12 +2515,12 @@ void Scene27::run() {
case kHS27WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2614,12 +2614,12 @@ void Scene27::updateAnimations() {
break;
case kAS27TryEnterClownTentDone:
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[7].x, 9), -1, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[7].x, 9), -1, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = -1;
break;
case kAS27EnterClownTent:
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107B2, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107B2, 1);
_vm->_gnap->_actionStatus = kAS27LeaveScene;
break;
case kAS27LeaveScene:
@@ -2799,14 +2799,14 @@ void Scene28::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28GrabHornSuccess;
}
} else {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(Common::Point(2, 8), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Horn], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Horn], 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS28GrabHornFails;
}
@@ -2829,13 +2829,13 @@ void Scene28::run() {
_vm->playGnapImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
_vm->playGnapPullOutDevice(0, 0);
_vm->playGnapUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown;
@@ -2848,7 +2848,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
@@ -2865,10 +2865,10 @@ void Scene28::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
_vm->_gnap->_actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -2884,7 +2884,7 @@ void Scene28::run() {
_vm->playGnapScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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:
@@ -2899,12 +2899,12 @@ void Scene28::run() {
case kHS28WalkArea1:
case kHS28WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3003,7 +3003,7 @@ void Scene28::updateAnimations() {
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
_vm->_gnap->_actionStatus = -1;
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107BB, 1);
break;
case kAS28TalkClown:
_clownTalkCtr = (_clownTalkCtr + 1) % 2;
@@ -3127,14 +3127,14 @@ void Scene29::run() {
_vm->_gnap->initPos(12, 7, kDirBottomRight);
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(8, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
_vm->_gnap->initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 7, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -3182,7 +3182,7 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
@@ -3210,9 +3210,9 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -3220,9 +3220,9 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
}
break;
@@ -3232,7 +3232,7 @@ void Scene29::run() {
_vm->setGrabCursorSprite(-1);
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -3254,12 +3254,12 @@ void Scene29::run() {
case kHS29WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3351,7 +3351,7 @@ void Scene29::updateAnimations() {
_vm->_timers[5] = 30;
while (_vm->_timers[5])
_vm->gameUpdateTick();
- _vm->platypusWalkTo(Common::Point(0, 8), 1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(0, 8), 1, 0x107CF, 1);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
} else if (_nextMonkeySequenceId == -1) {
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 8a91123..99cd34b 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -67,8 +67,8 @@ void Scene30::run() {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -115,7 +115,7 @@ void Scene30::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
_vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine], 0, 0x107BC, 1);
_vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
@@ -124,7 +124,7 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(Common::Point(9, 8), 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(Common::Point(9, 8), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
@@ -146,20 +146,20 @@ void Scene30::run() {
_vm->_newSceneNum = 47;
else
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS30LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS30WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -254,7 +254,7 @@ void Scene30::updateAnimations() {
break;
case kAS30UsePillMachine4:
gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS30PillMachine] + Common::Point(0, 1), -1, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine] + Common::Point(0, 1), -1, 0x107BC, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS30LookPillMachine:
@@ -315,14 +315,14 @@ void Scene31::run() {
_vm->_gnap->initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(3, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(3, 9), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(7, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -381,9 +381,9 @@ void Scene31::run() {
_vm->playGnapScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 0, 0x107B9, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 0, 0x107B9, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS31UseMeasuringClown;
_vm->_timers[4] = 300;
@@ -394,9 +394,9 @@ void Scene31::run() {
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
_vm->_gnap->_actionStatus = kAS31PlatMeasuringClown;
@@ -413,12 +413,12 @@ 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->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_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);
_vm->playGnapUseDevice(0, 0);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -432,7 +432,7 @@ void Scene31::run() {
if (_beerGuyDistracted) {
_vm->playGnapScratchingHead(6, 2);
} else {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31UseBeerBarrel;
_vm->_gnap->_idleFacing = kDirUpLeft;
}
@@ -450,9 +450,9 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -460,20 +460,20 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->gnapWalkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS31LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
case kHS31WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -667,8 +667,8 @@ void Scene32::run() {
_vm->_gnap->initPos(11, 6, kDirBottomLeft);
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(9, 6), -1, 0x107D2, 1);
- _vm->gnapWalkTo(Common::Point(8, 6), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(1, 6, kDirBottomRight);
_vm->_plat->initPos(1, 7, kDirNone);
@@ -719,9 +719,9 @@ void Scene32::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS32LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
break;
@@ -735,13 +735,13 @@ void Scene32::run() {
case kHS32WalkArea7:
case kHS32WalkArea8:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
@@ -829,8 +829,8 @@ void Scene33::run() {
_vm->_gnap->initPos(11, 7, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 7), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
_vm->_gnap->initPos(7, 7, kDirBottomRight);
@@ -841,8 +841,8 @@ void Scene33::run() {
_vm->_gnap->initPos(-1, 6, kDirBottomRight);
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(2, 7), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
_vm->_gnap->initPos(3, 7, kDirBottomRight);
@@ -899,14 +899,14 @@ void Scene33::run() {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
@@ -924,9 +924,9 @@ void Scene33::run() {
_vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 37;
if (_vm->_gnap->_pos.x > 6)
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(Common::Point(6, 7), 0, 0x107B1, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 7), 0, 0x107B1, 1);
}
break;
@@ -936,18 +936,18 @@ void Scene33::run() {
_vm->_gnap->_actionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 35;
if (_vm->_gnap->_pos.x > 7)
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
else
- _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107B1, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107B1, 1);
}
break;
case kHS33ExitCreek:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
}
break;
@@ -955,9 +955,9 @@ void Scene33::run() {
case kHS33ExitPigpen:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS33LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
}
break;
@@ -965,12 +965,12 @@ void Scene33::run() {
case kHS33WalkArea1:
case kHS33WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1172,7 +1172,7 @@ void Scene38::run() {
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
} else {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(-1, -1), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS38LeaveScene;
_vm->_newSceneNum = 37;
}
@@ -1186,7 +1186,7 @@ void Scene38::run() {
} else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
_vm->_sceneWaiting = false;
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(5, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 7), 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
_vm->_gnap->_actionStatus = kAS38ExitCave;
}
@@ -1215,8 +1215,8 @@ void Scene38::run() {
if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->playGnapImpossible(0, 0);
else {
- _vm->gnapWalkTo(Common::Point(3, 6), 0, 0x107BB, 1);
- _vm->platypusWalkTo(Common::Point(4, 8), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 6), 0, 0x107BB, 1);
+ _vm->_plat->walkTo(Common::Point(4, 8), -1, -1, 1);
_vm->_gnap->_actionStatus = kAS38UseHuntingTrophy;
}
break;
@@ -1243,7 +1243,7 @@ void Scene38::run() {
if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
else if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
@@ -1251,7 +1251,7 @@ void Scene38::run() {
if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy)
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
else if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1327,7 +1327,7 @@ void Scene38::updateAnimations() {
_vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->_isLeavingScene) {
_vm->_sceneWaiting = false;
- _vm->gnapWalkTo(Common::Point(5, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 7), 0, 0x107BB, 1);
_vm->_newSceneNum = 39;
_vm->_gnap->_actionStatus = kAS38ExitCave;
} else {
@@ -1355,7 +1355,7 @@ void Scene38::updateAnimations() {
_vm->_plat->playSequence(0x107D5);
else
_vm->_plat->playSequence(0x107D4);
- _vm->platypusWalkTo(Common::Point(8, 7), -1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(8, 7), -1, 0x107D2, 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;
@@ -1478,7 +1478,7 @@ void Scene39::run() {
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
- _vm->gnapWalkTo(_vm->_gnap->_pos, 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS39LeaveScene;
_vm->_newSceneNum = 40;
}
@@ -1491,7 +1491,7 @@ void Scene39::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS39Sign], 0, -1, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS39Sign], 0, -1, 1);
_vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
_vm->showFullScreenSprite(0x1C);
break;
@@ -1516,12 +1516,12 @@ void Scene39::run() {
case kHS39WalkArea1:
case kHS39WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index b805c10..7d7be66 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -276,14 +276,14 @@ void Scene41::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-2, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 42) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 8, kDirBottomRight);
_vm->_plat->initPos(6, 8, kDirBottomLeft);
@@ -374,31 +374,31 @@ void Scene41::run() {
case kHS41ExitCave:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS41ExitCave], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS41ExitCave], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
_vm->_newSceneNum = 40;
break;
case kHS41Exit:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
break;
case kHS41ExitBBQ:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS41LeaveScene;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
break;
case kHS41ToyVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->_gnap->_actionStatus = kAS41UseQuarterWithToyVendor;
- _vm->gnapWalkTo(Common::Point(4, 7), 0, 0x107BB, 9);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BB, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(4, 7, 5, 0);
@@ -412,7 +412,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
@@ -424,7 +424,7 @@ void Scene41::run() {
case kHS41Kid:
if (_vm->_grabCursorSpriteIndex == kItemChickenBucket) {
- _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -435,13 +435,13 @@ void Scene41::run() {
_vm->playGnapScratchingHead(9, 0);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(Common::Point(7, 7), 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS41GrabKid;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
_vm->playGnapImpossible(0, 0);
@@ -460,7 +460,7 @@ void Scene41::run() {
case kHS41WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -503,7 +503,7 @@ void Scene41::run() {
_vm->_toyUfoActionStatus = kAS41ToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -788,20 +788,20 @@ void Scene42::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 43) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -886,34 +886,34 @@ void Scene42::run() {
case kHS42ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(Common::Point(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), -1, 0x107C7, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
case kHS42ExitToyStand:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand], -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand], -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
break;
case kHS42ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = kAS42LeaveScene;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo], -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo], -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
break;
case kHS42BBQVendor:
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, 0x107BB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS42UseQuarterWithBBQVendor;
if (_vm->_plat->_pos.y < 9)
- _vm->platypusWalkTo(Common::Point(_vm->_plat->_pos.x, 9), -1, -1, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_plat->_pos.x, 9), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
@@ -923,7 +923,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
@@ -943,7 +943,7 @@ void Scene42::run() {
_vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
break;
case GRAB_CURSOR:
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg], 0, 0x107BC, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS42GrabChickenLeg;
break;
case TALK_CURSOR:
@@ -957,7 +957,7 @@ void Scene42::run() {
case kHS42WalkArea1:
case kHS42WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
@@ -969,7 +969,7 @@ void Scene42::run() {
_vm->_toyUfoActionStatus = kAS42ToyUfoRefresh;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -1230,28 +1230,28 @@ void Scene43::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 44:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
case 54:
_vm->_gnap->initPos(4, 7, kDirBottomLeft);
_vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
default:
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
}
}
@@ -1344,25 +1344,25 @@ void Scene43::run() {
case kHS43ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], -1, 0x107C7, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
case kHS43ExitBBQ:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ], -1, 0x107CF, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ], -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
break;
case kHS43ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth], -1, 0x107CD, 1);
+ _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth], -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
break;
@@ -1376,7 +1376,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -1398,7 +1398,7 @@ void Scene43::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(Common::Point(3, 7), 0, 67515, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, 67515, 1);
_vm->_gnap->_actionStatus = 1;
break;
case TALK_CURSOR:
@@ -1412,7 +1412,7 @@ void Scene43::run() {
case kHS43WalkArea1:
case kHS43WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -1423,7 +1423,7 @@ void Scene43::run() {
_vm->_toyUfoActionStatus = 5;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -1684,15 +1684,15 @@ void Scene44::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 7, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 46:
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(7, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(7, 8), -1, 0x107D2, 1);
break;
case 50:
_vm->_gnap->initPos(4, 8, kDirBottomRight);
@@ -1714,8 +1714,8 @@ void Scene44::run() {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(6, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
break;
}
}
@@ -1792,22 +1792,22 @@ void Scene44::run() {
case kHS44ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty], 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44ExitUfoParty], 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS44ExitUfo:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
case kHS44ExitShow:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44ExitShow], 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44ExitShow], 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 46;
break;
@@ -1815,7 +1815,7 @@ void Scene44::run() {
case kHS44KissingLady:
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->_actionStatus = 2;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, -1, 9);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, -1, 9);
_vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
} else {
switch (_vm->_verbCursor) {
@@ -1827,14 +1827,14 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case PLAT_CURSOR:
_vm->_gnap->useDeviceOnPlatypus();
- _vm->platypusWalkTo(Common::Point(6, 7), 1, 0x107D2, 1);
+ _vm->_plat->walkTo(Common::Point(6, 7), 1, 0x107D2, 1);
if (_vm->_gnap->_pos == Common::Point(7, 7))
- _vm->gnapWalkStep();
+ _vm->_gnap->walkStep();
_vm->playGnapIdle(5, 7);
_vm->_plat->_actionStatus = 4;
break;
@@ -1881,7 +1881,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -1894,7 +1894,7 @@ void Scene44::run() {
case kHS44WalkArea1:
case kHS44WalkArea2:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
@@ -1906,7 +1906,7 @@ void Scene44::run() {
_vm->_toyUfoActionStatus = 7;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 3);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -2153,20 +2153,20 @@ void Scene45::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 41) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107D2, 1);
- _vm->gnapWalkTo(Common::Point(10, 9), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(10, 9), -1, 0x107BA, 1);
} else {
_vm->_gnap->initPos(2, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(4, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
}
if (!_vm->isFlag(kGFUnk21) && !_vm->isFlag(kGFGnapControlsToyUFO)) {
@@ -2284,7 +2284,7 @@ void Scene45::run() {
case kHS45ExitUfoParty:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS45ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
}
@@ -2293,9 +2293,9 @@ void Scene45::run() {
case kHS45ExitShoe:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
}
break;
@@ -2303,9 +2303,9 @@ void Scene45::run() {
case kHS45ExitRight:
if (_vm->_gnap->_actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
}
break;
@@ -2320,7 +2320,7 @@ void Scene45::run() {
case kHS45DiscoBall:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemSpring) {
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall], 0, 0x9F, 5);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS45DiscoBall], 0, 0x9F, 5);
_vm->_gnap->_actionStatus = 1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemSpring);
@@ -2343,7 +2343,7 @@ void Scene45::run() {
case kHS45WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -2354,7 +2354,7 @@ void Scene45::run() {
_vm->_toyUfoActionStatus = 3;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 5);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
@@ -2517,20 +2517,20 @@ void Scene46::run() {
_vm->_gnap->initPos(-1, 8, kDirUpRight);
_vm->_plat->initPos(-1, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(1, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 45) {
_vm->_gnap->initPos(11, 8, kDirUpRight);
_vm->_plat->initPos(12, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->gnapWalkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->platypusWalkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
_vm->_gnap->initPos(5, 11, kDirUpRight);
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->platypusWalkTo(Common::Point(5, 8), -1, 0x107C2, 1);
- _vm->gnapWalkTo(Common::Point(6, 8), -1, 0x107BA, 1);
+ _vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 8), -1, 0x107BA, 1);
}
_vm->_timers[4] = _vm->getRandom(50) + 80;
@@ -2614,7 +2614,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapWalkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 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], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case GRAB_CURSOR:
@@ -2648,30 +2648,30 @@ void Scene46::run() {
case kHS46ExitUfoParty:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y), 0, 0x107AE, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, _vm->_hotspotsWalkPos[kHS46ExitUfoParty].y), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = 0;
_vm->_newSceneNum = 40;
break;
case kHS46ExitKissinBooth:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_gnap->_pos.y), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
break;
case kHS46ExitDisco:
_vm->_isLeavingScene = true;
- _vm->gnapWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
+ _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_gnap->_pos.y), 0, 0x107AB, 1);
_vm->_gnap->_actionStatus = 0;
- _vm->platypusWalkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
+ _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
break;
case kHS46WalkArea1:
if (_vm->_gnap->_actionStatus < 0)
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
}
@@ -2682,7 +2682,7 @@ void Scene46::run() {
_vm->_toyUfoActionStatus = 4;
_vm->toyUfoFlyTo(-1, -1, 0, 799, 0, 300, 2);
} else {
- _vm->gnapWalkTo(Common::Point(-1, -1), -1, -1, 1);
+ _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
}
}
Commit: 8a725082a512d080ff394ee38370c96c6f13ec0b
https://github.com/scummvm/scummvm/commit/8a725082a512d080ff394ee38370c96c6f13ec0b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:54+02:00
Commit Message:
GNAP: Move more functions to PlayerGnap
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index a15f4e9..6ae7316 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -551,7 +551,7 @@ void PlayerGnap::initBrainPulseRndValue() {
void PlayerGnap::playSequence(int sequenceId) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = 300;
- _vm->gnapIdle();
+ idle();
_vm->_gameSys->insertSequence(sequenceId, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqScale | kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
@@ -693,7 +693,7 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
_walkDestY = CLIP(gridY, 0, _vm->_gridMaxY - 1);
if (animationIndex >= 0 && _walkDestX == _vm->_plat->_pos.x && _walkDestY == _vm->_plat->_pos.y)
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
if (findPath1(_pos.x, _pos.y, 0))
done = true;
@@ -707,7 +707,7 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
if (!done && findPath4(_pos.x, _pos.y))
done = true;
- _vm->gnapIdle();
+ idle();
int gnapSequenceId = _sequenceId;
int gnapId = _id;
@@ -765,7 +765,7 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
if (_walkNodesCount > 0) {
_sequenceId = gnapSequenceId;
_id = gnapId;
- _idleFacing = _vm->getGnapWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ _idleFacing = getWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
_sequenceDatNum = datNum;
if (animationIndex >= 0)
_vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), _id, animationIndex);
@@ -794,8 +794,8 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
}
} else {
if (_walkNodesCount > 0) {
- _sequenceId = _vm->getGnapWalkStopSequenceId(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
- _idleFacing = _vm->getGnapWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ _sequenceId = getWalkStopSequenceId(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
+ _idleFacing = getWalkFacing(_walkNodes[_walkNodesCount - 1]._deltaX, _walkNodes[_walkNodesCount - 1]._deltaY);
} else if (gridX >= 0 || gridY >= 0) {
switch (_idleFacing) {
case kDirBottomRight:
@@ -819,8 +819,8 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
++v10;
if (_vm->_leftClickMouseY == _vm->_gridMinY + 48 * _pos.y)
v11 = 1;
- _sequenceId = _vm->getGnapWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
- _idleFacing = _vm->getGnapWalkFacing(v10 / abs(v10), v11 / abs(v11));
+ _sequenceId = getWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
+ _idleFacing = getWalkFacing(v10 / abs(v10), v11 / abs(v11));
}
_sequenceDatNum = datNum;
}
@@ -848,6 +848,211 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
return done;
}
+int PlayerGnap::getShowSequenceId(int index, int gridX, int gridY) {
+ int sequenceId;
+ Facing facing = _idleFacing;
+
+ if (gridY > 0 && gridX > 0) {
+ if (_pos.y > gridY) {
+ if (_pos.x > gridX)
+ _idleFacing = kDirUpLeft;
+ else
+ _idleFacing = kDirUpRight;
+ } else {
+ if (_pos.x > gridX)
+ _idleFacing = kDirUpLeft;
+ else
+ _idleFacing = kDirUpRight;
+ }
+ } else if (_idleFacing != kDirBottomRight && _idleFacing != kDirUpRight) {
+ _idleFacing = kDirUpLeft;
+ } else {
+ _idleFacing = kDirUpRight;
+ }
+
+ switch (index) {
+ case 0:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x8A0;
+ else
+ sequenceId = 0x8A1;
+ break;
+ case 1:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x880;
+ else
+ sequenceId = 0x895;
+ break;
+ case 2:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x884;
+ else
+ sequenceId = 0x899;
+ break;
+ //Skip 3
+ case 4:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x881;
+ else
+ sequenceId = 0x896;
+ break;
+ case 5:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x883;
+ else
+ sequenceId = 0x898;
+ break;
+ case 6:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87E;
+ else
+ sequenceId = 0x893;
+ break;
+ case 7:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x848;
+ else
+ sequenceId = 0x890;
+ break;
+ case 8:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87D;
+ else
+ sequenceId = 0x892;
+ break;
+ case 9:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x882;
+ else
+ sequenceId = 0x897;
+ break;
+ case 10:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87C;
+ else
+ sequenceId = 0x891;
+ break;
+ case 11:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87C;
+ else
+ sequenceId = 0x891;
+ break;
+ case 12:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87D;
+ else
+ sequenceId = 0x892;
+ break;
+ case 13:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x888;
+ else
+ sequenceId = 0x89D;
+ break;
+ case 14:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87F;
+ else
+ sequenceId = 0x894;
+ break;
+ case 15:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87B;
+ else
+ sequenceId = 0x8A3;
+ break;
+ case 16:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x877;
+ else
+ sequenceId = 0x88C;
+ break;
+ //Skip 17
+ case 18:
+ sequenceId = 0x887;
+ break;
+ case 19:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87A;
+ else
+ sequenceId = 0x88F;
+ break;
+ case 20:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x878;
+ else
+ sequenceId = 0x88D;
+ break;
+ case 21:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x879;
+ else
+ sequenceId = 0x88E;
+ break;
+ case 22:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x88A;
+ else
+ sequenceId = 0x89F;
+ break;
+ case 23:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x889;
+ else
+ sequenceId = 0x89E;
+ break;
+ case 24:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x886;
+ else
+ sequenceId = 0x89B;
+ break;
+ case 25:
+ if (_idleFacing == kDirUpRight)
+ sequenceId = 0x87A;
+ else
+ sequenceId = 0x88F;
+ break;
+ //Skip 26
+ //Skip 27
+ //Skip 28
+ //Skip 29
+ default:
+ _idleFacing = facing;
+ sequenceId = getSequenceId(gskImpossible, 0, 0);
+ break;
+ }
+
+ return sequenceId;
+}
+
+void PlayerGnap::idle() {
+ if (_sequenceDatNum == 1 &&
+ (_sequenceId == 0x7A6 || _sequenceId == 0x7AA ||
+ _sequenceId == 0x832 || _sequenceId == 0x841 ||
+ _sequenceId == 0x842 || _sequenceId == 0x8A2 ||
+ _sequenceId == 0x833 || _sequenceId == 0x834 ||
+ _sequenceId == 0x885 || _sequenceId == 0x7A8 ||
+ _sequenceId == 0x831 || _sequenceId == 0x89A)) {
+ _vm->_gameSys->insertSequence(getSequenceId(gskIdle, 0, 0) | 0x10000, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
+ _sequenceId = getSequenceId(gskIdle, 0, 0);
+ _sequenceDatNum = 1;
+ }
+}
+
+void PlayerGnap::actionIdle(int sequenceId) {
+ if (_sequenceId != -1 && ridToDatIndex(sequenceId) == _sequenceDatNum && ridToEntryIndex(sequenceId) == _sequenceId) {
+ _vm->_gameSys->insertSequence(getSequenceId(gskIdle, 0, 0) | 0x10000, _id,
+ makeRid(_sequenceDatNum, _sequenceId), _id,
+ kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
+ _sequenceId = getSequenceId(gskIdle, 0, 0);
+ _sequenceDatNum = 1;
+ }
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -904,7 +1109,7 @@ void PlayerPlat::updateIdleSequence() {
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
}
} else {
_vm->_timers[0] = 100;
@@ -932,7 +1137,7 @@ void PlayerPlat::updateIdleSequence2() {
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
}
} else {
_vm->_timers[0] = 100;
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index c36b0a2..114b3a3 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -88,6 +88,11 @@ public:
virtual int getWalkSequenceId(int deltaX, int deltaY);
virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
+ void actionIdle(int sequenceId);
+ int getShowSequenceId(int index, int gridX, int gridY);
+ Facing getWalkFacing(int deltaX, int deltaY);
+ int getWalkStopSequenceId(int deltaX, int deltaY);
+ void idle();
void initBrainPulseRndValue();
void kissPlatypus(int callback);
void useDeviceOnPlatypus();
@@ -114,6 +119,8 @@ public:
virtual int getWalkSequenceId(int deltaX, int deltaY);
virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
+ void makeRoom();
+
private:
bool findPath1(int gridX, int gridY, int index);
bool findPath2(int gridX, int gridY, int index);
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 42d5277..e40d50e 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -941,211 +941,6 @@ void GnapEngine::deleteSurface(Graphics::Surface **surface) {
}
}
-int GnapEngine::getGnapShowSequenceId(int index, int gridX, int gridY) {
- int sequenceId;
- Facing facing = _gnap->_idleFacing;
-
- if (gridY > 0 && gridX > 0) {
- if (_gnap->_pos.y > gridY) {
- if (_gnap->_pos.x > gridX)
- _gnap->_idleFacing = kDirUpLeft;
- else
- _gnap->_idleFacing = kDirUpRight;
- } else {
- if (_gnap->_pos.x > gridX)
- _gnap->_idleFacing = kDirUpLeft;
- else
- _gnap->_idleFacing = kDirUpRight;
- }
- } else if (_gnap->_idleFacing != kDirBottomRight && _gnap->_idleFacing != kDirUpRight) {
- _gnap->_idleFacing = kDirUpLeft;
- } else {
- _gnap->_idleFacing = kDirUpRight;
- }
-
- switch (index) {
- case 0:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x8A0;
- else
- sequenceId = 0x8A1;
- break;
- case 1:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x880;
- else
- sequenceId = 0x895;
- break;
- case 2:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x884;
- else
- sequenceId = 0x899;
- break;
- //Skip 3
- case 4:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x881;
- else
- sequenceId = 0x896;
- break;
- case 5:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x883;
- else
- sequenceId = 0x898;
- break;
- case 6:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87E;
- else
- sequenceId = 0x893;
- break;
- case 7:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x848;
- else
- sequenceId = 0x890;
- break;
- case 8:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87D;
- else
- sequenceId = 0x892;
- break;
- case 9:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x882;
- else
- sequenceId = 0x897;
- break;
- case 10:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87C;
- else
- sequenceId = 0x891;
- break;
- case 11:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87C;
- else
- sequenceId = 0x891;
- break;
- case 12:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87D;
- else
- sequenceId = 0x892;
- break;
- case 13:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x888;
- else
- sequenceId = 0x89D;
- break;
- case 14:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87F;
- else
- sequenceId = 0x894;
- break;
- case 15:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87B;
- else
- sequenceId = 0x8A3;
- break;
- case 16:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x877;
- else
- sequenceId = 0x88C;
- break;
- //Skip 17
- case 18:
- sequenceId = 0x887;
- break;
- case 19:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87A;
- else
- sequenceId = 0x88F;
- break;
- case 20:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x878;
- else
- sequenceId = 0x88D;
- break;
- case 21:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x879;
- else
- sequenceId = 0x88E;
- break;
- case 22:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x88A;
- else
- sequenceId = 0x89F;
- break;
- case 23:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x889;
- else
- sequenceId = 0x89E;
- break;
- case 24:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x886;
- else
- sequenceId = 0x89B;
- break;
- case 25:
- if (_gnap->_idleFacing == kDirUpRight)
- sequenceId = 0x87A;
- else
- sequenceId = 0x88F;
- break;
- //Skip 26
- //Skip 27
- //Skip 28
- //Skip 29
- default:
- _gnap->_idleFacing = facing;
- sequenceId = _gnap->getSequenceId(gskImpossible, 0, 0);
- break;
- }
- return sequenceId;
-}
-
-void GnapEngine::gnapIdle() {
- 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 - _gnap->_gridX, 48 * _gnap->_pos.y - _gnap->_gridY);
- _gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
- _gnap->_sequenceDatNum = 1;
- }
-}
-
-void GnapEngine::gnapActionIdle(int sequenceId) {
- 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 - _gnap->_gridX, 48 * _gnap->_pos.y - _gnap->_gridY);
- _gnap->_sequenceId = _gnap->getSequenceId(gskIdle, 0, 0);
- _gnap->_sequenceDatNum = 1;
- }
-}
-
void GnapEngine::playGnapImpossible(int gridX, int gridY) {
_gnap->playSequence(_gnap->getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
}
@@ -1183,12 +978,12 @@ void GnapEngine::playGnapIdle(int gridX, int gridY) {
}
void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
- _gnap->playSequence(getGnapShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
+ _gnap->playSequence(_gnap->getShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
}
void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
if (_plat->_pos.x == gridX && _plat->_pos.y == gridY)
- platypusMakeRoom();
+ _plat->makeRoom();
_gnap->walkTo(Common::Point(gridX, gridY), -1, -1, 1);
playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index db9368d..15e1753 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -474,17 +474,7 @@ public:
void initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gridMaxY);
bool testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2);
- // Gnap walking
- int getGnapWalkStopSequenceId(int deltaX, int deltaY);
- Facing getGnapWalkFacing(int deltaX, int deltaY);
-
- // Platypus walking
- void platypusMakeRoom();
-
// Gnap
- int getGnapShowSequenceId(int index, int gridX, int gridY);
- void gnapIdle();
- void gnapActionIdle(int sequenceId);
void playGnapImpossible(int gridX, int gridY);
void playGnapScratchingHead(int gridX, int gridY);
void playGnapMoan1(int gridX, int gridY);
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index d4aed8d..b817b65 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -38,24 +38,24 @@ void GnapEngine::initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gri
_plat->_gridY = 347 - gridMinY;
}
-int GnapEngine::getGnapWalkStopSequenceId(int deltaX, int deltaY) {
- static const int _gnapWalkStopSequenceIds[9] = {
+int PlayerGnap::getWalkStopSequenceId(int deltaX, int deltaY) {
+ static const int gnapWalkStopSequenceIds[9] = {
0x7BC, 0x7BA, 0x7BA,
0x7BC, 0x000, 0x7BA,
0x7BB, 0x7B9, 0x7B9
};
// CHECKME This is a little weird
- return _gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+ return gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
}
-Facing GnapEngine::getGnapWalkFacing(int deltaX, int deltaY) {
- static const Facing _gnapWalkFacings[9] = {
+Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
+ static const Facing gnapWalkFacings[9] = {
kDirUpLeft, kDirBottomLeft, kDirBottomLeft,
kDirUpLeft, kDirNone, kDirBottomLeft,
kDirUpRight, kDirBottomRight, kDirBottomRight
};
// CHECKME This is a little weird
- return _gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
+ return gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
}
bool GnapEngine::isPointBlocked(Common::Point gridPos) {
@@ -981,14 +981,14 @@ bool PlayerPlat::findPath4(int gridX, int gridY) {
return result;
}
-void GnapEngine::platypusMakeRoom() {
+void PlayerPlat::makeRoom() {
int rndGridX, rndGridY;
do {
- rndGridY = getRandom(_gridMaxY);
- rndGridX = getRandom(_gridMaxX);
- } while (ABS(rndGridX - _plat->_pos.x) > 4 || ABS(rndGridY - _plat->_pos.y) > 3 ||
- isPointBlocked(rndGridX, rndGridY));
- _plat->walkTo(Common::Point(rndGridX, rndGridY), -1, -1, 1);
+ rndGridY = _vm->getRandom(_vm->_gridMaxY);
+ rndGridX = _vm->getRandom(_vm->_gridMaxX);
+ } while (ABS(rndGridX - _pos.x) > 4 || ABS(rndGridY - _pos.y) > 3 ||
+ _vm->isPointBlocked(rndGridX, rndGridY));
+ walkTo(Common::Point(rndGridX, rndGridY), -1, -1, 1);
}
} // End of namespace Gnap
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index c16a1e7..d655584 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -2833,7 +2833,7 @@ void Scene07::run() {
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
}
} else {
_vm->_timers[0] = 100;
@@ -2995,7 +2995,7 @@ void Scene08::run() {
_vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->kissPlatypus(8);
break;
case TALK_CURSOR:
@@ -3010,7 +3010,7 @@ void Scene08::run() {
case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
@@ -3019,7 +3019,7 @@ void Scene08::run() {
case kHS08ExitCrash:
_vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
@@ -3032,7 +3032,7 @@ void Scene08::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS08LookMan;
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -3042,12 +3042,12 @@ void Scene08::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
@@ -3077,13 +3077,13 @@ void Scene08::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(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->_gnap->actionIdle(0x14D);
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
@@ -3106,7 +3106,7 @@ void Scene08::run() {
if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(6, 7);
} else {
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->playGnapPullOutDevice(6, 7);
_vm->playGnapUseDevice(0, 0);
_nextDogSequenceId = 0x149;
@@ -3132,7 +3132,7 @@ void Scene08::run() {
if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(3, 6);
} else {
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->playGnapPullOutDevice(3, 6);
_vm->playGnapUseDevice(0, 0);
_nextDogSequenceId = 0x14A;
@@ -3158,7 +3158,7 @@ void Scene08::run() {
if (_currDogSequenceId == 0x135) {
_vm->playGnapScratchingHead(7, 6);
} else {
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->playGnapPullOutDevice(7, 6);
_vm->playGnapUseDevice(0, 0);
_nextDogSequenceId = 0x14B;
@@ -3174,13 +3174,13 @@ void Scene08::run() {
case kHS08WalkArea1:
case kHS08WalkArea2:
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(-1, 6), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapActionIdle(0x14D);
+ _vm->_gnap->actionIdle(0x14D);
_vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 9033763..8a6bff0 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -131,7 +131,7 @@ void Scene10::run() {
case kHS10ExitBar:
_vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(0, 7), 0, 0x107AF, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->_plat->walkTo(Common::Point(0, 7), -1, 0x107CF, 1);
@@ -140,7 +140,7 @@ void Scene10::run() {
case kHS10ExitBackdoor:
_vm->_isLeavingScene = true;
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(2, 9), 0, 0x107AE, 1);
_vm->_gnap->_actionStatus = kAS10LeaveScene;
_vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C7, 1);
@@ -163,12 +163,12 @@ void Scene10::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(4, 6), -1, -1, 1);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
@@ -193,7 +193,7 @@ void Scene10::run() {
if (_vm->isFlag(kGFMudTaken))
_vm->playGnapMoan2(-1, -1);
else {
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
}
@@ -205,7 +205,7 @@ void Scene10::run() {
if (_vm->isFlag(kGFMudTaken))
_vm->playGnapMoan2(-1, -1);
else {
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), -1, -1, 1);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
@@ -225,7 +225,7 @@ void Scene10::run() {
_vm->playGnapScratchingHead(7, 3);
break;
case GRAB_CURSOR:
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
@@ -238,7 +238,7 @@ void Scene10::run() {
else {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS10PlatWithBox;
@@ -260,7 +260,7 @@ void Scene10::run() {
_vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 10, 5) | 0x10000);
break;
case GRAB_CURSOR:
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BB, 1);
gameSys.insertSequence(0x10E, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_sequenceId = 0x10E;
@@ -282,7 +282,7 @@ void Scene10::run() {
case kHS10WalkArea2:
case kHS10WalkArea3:
case kHS10WalkArea4:
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
@@ -295,7 +295,7 @@ void Scene10::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->gnapActionIdle(0x10C);
+ _vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
@@ -3185,9 +3185,9 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
if (_vm->_gnap->_pos.y == _vm->_plat->_pos.y) {
if (nextGridX >= _vm->_gnap->_pos.x) {
if (nextGridX >= _vm->_plat->_pos.x && _vm->_gnap->_pos.x <= _vm->_plat->_pos.x)
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
} else if (nextGridX <= _vm->_plat->_pos.x && _vm->_gnap->_pos.x >= _vm->_plat->_pos.x) {
- _vm->platypusMakeRoom();
+ _vm->_plat->makeRoom();
}
}
gnapSeqId = _vm->_gnap->_sequenceId;
Commit: a508936349cd29ef2d89735699fac0b933ff9b7d
https://github.com/scummvm/scummvm/commit/a508936349cd29ef2d89735699fac0b933ff9b7d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:54+02:00
Commit Message:
GNAP: Move Gnap action functions to PlayerGnap
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 6ae7316..ee81961 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1053,6 +1053,53 @@ void PlayerGnap::actionIdle(int sequenceId) {
}
}
+void PlayerGnap::playImpossible(int gridX, int gridY) {
+ playSequence(getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playScratchingHead(int gridX, int gridY) {
+ playSequence(getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playMoan1(int gridX, int gridY) {
+ playSequence(getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playMoan2(int gridX, int gridY) {
+ playSequence(getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playBrainPulsating(int gridX, int gridY) {
+ playSequence(getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playPullOutDevice(int gridX, int gridY) {
+ playSequence(getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playPullOutDeviceNonWorking(int gridX, int gridY) {
+ playSequence(getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playUseDevice(int gridX, int gridY) {
+ playSequence(getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playIdle(int gridX, int gridY) {
+ playSequence(getSequenceId(gskIdle, gridX, gridY) | 0x10000);
+}
+
+void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
+ playSequence(getShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
+}
+
+void PlayerGnap::playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
+ if (_vm->_plat->_pos.x == gridX && _vm->_plat->_pos.y == gridY)
+ _vm->_plat->makeRoom();
+ walkTo(Common::Point(gridX, gridY), -1, -1, 1);
+ playShowItem(_vm->_grabCursorSpriteIndex, gridLookX, gridLookY);
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 114b3a3..d04c594 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -95,6 +95,17 @@ public:
void idle();
void initBrainPulseRndValue();
void kissPlatypus(int callback);
+ void playBrainPulsating(int gridX, int gridY);
+ void playIdle(int gridX, int gridY);
+ void playImpossible(int gridX, int gridY);
+ void playMoan1(int gridX, int gridY);
+ void playMoan2(int gridX, int gridY);
+ void playPullOutDevice(int gridX, int gridY);
+ void playPullOutDeviceNonWorking(int gridX, int gridY);
+ void playScratchingHead(int gridX, int gridY);
+ void playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
+ void playShowItem(int itemIndex, int gridLookX, int gridLookY);
+ void playUseDevice(int gridX, int gridY);
void useDeviceOnPlatypus();
void useJointOnPlatypus();
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index e40d50e..3b6f84a 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -941,53 +941,6 @@ void GnapEngine::deleteSurface(Graphics::Surface **surface) {
}
}
-void GnapEngine::playGnapImpossible(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapScratchingHead(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapMoan1(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapMoan2(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapBrainPulsating(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapPullOutDevice(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapPullOutDeviceNonWorking(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapUseDevice(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapIdle(int gridX, int gridY) {
- _gnap->playSequence(_gnap->getSequenceId(gskIdle, gridX, gridY) | 0x10000);
-}
-
-void GnapEngine::playGnapShowItem(int itemIndex, int gridLookX, int gridLookY) {
- _gnap->playSequence(_gnap->getShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
-}
-
-void GnapEngine::playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
- if (_plat->_pos.x == gridX && _plat->_pos.y == gridY)
- _plat->makeRoom();
- _gnap->walkTo(Common::Point(gridX, gridY), -1, -1, 1);
- playGnapShowItem(_grabCursorSpriteIndex, gridLookX, gridLookY);
-}
-
bool GnapEngine::testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2) {
if (_mouseClickState._left && someStatus == _gnap->_actionStatus) {
_isLeavingScene = false;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 15e1753..8446454 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -475,17 +475,6 @@ public:
bool testWalk(int animationIndex, int someStatus, int gridX1, int gridY1, int gridX2, int gridY2);
// Gnap
- void playGnapImpossible(int gridX, int gridY);
- void playGnapScratchingHead(int gridX, int gridY);
- void playGnapMoan1(int gridX, int gridY);
- void playGnapMoan2(int gridX, int gridY);
- void playGnapBrainPulsating(int gridX, int gridY);
- void playGnapPullOutDevice(int gridX, int gridY);
- void playGnapPullOutDeviceNonWorking(int gridX, int gridY);
- void playGnapUseDevice(int gridX, int gridY);
- void playGnapIdle(int gridX, int gridY);
- void playGnapShowItem(int itemIndex, int gridLookX, int gridLookY);
- void playGnapShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
void doCallback(int callback);
bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
void gnapUseDisguiseOnPlatypus();
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index d655584..780c4d2 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -126,24 +126,24 @@ void Scene01::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -153,7 +153,7 @@ void Scene01::run() {
case kHS01Spaceship:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -164,7 +164,7 @@ void Scene01::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -174,11 +174,11 @@ void Scene01::run() {
case kHS01Mud:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 3);
+ _vm->_gnap->playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 3) | 0x10000, 1);
@@ -186,7 +186,7 @@ void Scene01::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -196,7 +196,7 @@ void Scene01::run() {
case kHS01Pigs:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -215,7 +215,7 @@ void Scene01::run() {
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -312,8 +312,8 @@ void Scene01::updateAnimations() {
break;
case kAS01TakeMud:
- _vm->playGnapPullOutDevice(2, 3);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(2, 3);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
_vm->_gnap->_actionStatus = -1;
@@ -327,8 +327,8 @@ void Scene01::updateAnimations() {
break;
case kAS01UsePigs:
- _vm->playGnapPullOutDevice(7, 2);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(7, 2);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
_vm->_gnap->_actionStatus = -1;
break;
@@ -476,24 +476,24 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -508,11 +508,11 @@ void Scene02::run() {
_vm->_gnap->walkTo(destPos, 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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(9, 8);
+ _vm->_gnap->playMoan2(9, 8);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
@@ -527,7 +527,7 @@ void Scene02::run() {
_vm->_gnap->_actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -552,11 +552,11 @@ void Scene02::run() {
_vm->_gnap->_actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 2);
+ _vm->_gnap->playScratchingHead(2, 2);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
@@ -574,7 +574,7 @@ void Scene02::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -584,11 +584,11 @@ void Scene02::run() {
case kHS02TruckGrill:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 4);
+ _vm->_gnap->playMoan2(2, 4);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -597,7 +597,7 @@ void Scene02::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -804,7 +804,7 @@ void Scene02::updateAnimations() {
_vm->_timers[5] = 30;
break;
case kAS02UseTwigWithChicken:
- _vm->playGnapShowItem(5, 0, 0);
+ _vm->_gnap->playShowItem(5, 0, 0);
gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_currChickenSequenceId = 0x155;
_nextChickenSequenceId = -1;
@@ -941,24 +941,24 @@ void Scene03::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -970,22 +970,22 @@ void Scene03::run() {
if (_vm->isFlag(kGFGrassTaken)) {
_vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 6);
+ _vm->_gnap->playScratchingHead(9, 6);
break;
case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(9, 6);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(9, 6);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1B3, 253, 5);
_vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1011,11 +1011,11 @@ void Scene03::run() {
case kHS03Creek:
if (_vm->_gnap->_actionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 8);
+ _vm->_gnap->playMoan2(2, 8);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
@@ -1027,7 +1027,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1039,11 +1039,11 @@ void Scene03::run() {
if (_vm->isFlag(kGFPlatypus)) {
_vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
+ _vm->_gnap->playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
@@ -1059,7 +1059,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
if (_platypusHypnotized) {
- _vm->playGnapBrainPulsating(8, 4);
+ _vm->_gnap->playBrainPulsating(8, 4);
} else {
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
@@ -1070,7 +1070,7 @@ void Scene03::run() {
}
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1196,7 +1196,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizePlat:
- _vm->playGnapBrainPulsating(0, 0);
+ _vm->_gnap->playBrainPulsating(0, 0);
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
@@ -1212,7 +1212,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
- _vm->playGnapBrainPulsating(0, 0);
+ _vm->_gnap->playBrainPulsating(0, 0);
gameSys.insertSequence(0x1BF, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
@@ -1445,27 +1445,27 @@ void Scene04::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
_vm->_gnap->kissPlatypus(0);
else
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1475,21 +1475,21 @@ void Scene04::run() {
case kHS04Twig:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
break;
case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->playGnapUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gnap->playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gnap->playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1FD, 100, 2);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1499,11 +1499,11 @@ void Scene04::run() {
case kHS04Axe:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
+ _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1514,7 +1514,7 @@ void Scene04::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1524,12 +1524,12 @@ void Scene04::run() {
case kHS04Dog:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->playGnapMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20F;
}
break;
@@ -1541,12 +1541,12 @@ void Scene04::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ _vm->_gnap->playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1556,12 +1556,12 @@ void Scene04::run() {
case kHS04Door:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapScratchingHead(4, 3);
+ _vm->_gnap->playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
@@ -1577,7 +1577,7 @@ void Scene04::run() {
}
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1601,9 +1601,9 @@ void Scene04::run() {
case kHS04Window:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1617,11 +1617,11 @@ void Scene04::run() {
}
break;
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1920,24 +1920,24 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1947,17 +1947,17 @@ void Scene05::run() {
case kHS05Haystack:
if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
@@ -1968,7 +1968,7 @@ void Scene05::run() {
}
if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
_vm->_gnap->walkStep();
- _vm->playGnapIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
}
break;
}
@@ -1984,11 +1984,11 @@ void Scene05::run() {
_vm->_gnap->walkTo(checkPt, 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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(9, 7);
+ _vm->_gnap->playMoan2(9, 7);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
@@ -2001,7 +2001,7 @@ void Scene05::run() {
_vm->_gnap->_actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2011,11 +2011,11 @@ void Scene05::run() {
case kHS05Ladder:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(2, 4);
+ _vm->_gnap->playMoan2(2, 4);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
@@ -2024,7 +2024,7 @@ void Scene05::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2047,11 +2047,11 @@ void Scene05::run() {
_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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 4);
+ _vm->_gnap->playScratchingHead(7, 4);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -2060,7 +2060,7 @@ void Scene05::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2194,7 +2194,7 @@ void Scene05::updateAnimations() {
_vm->_gnap->_actionStatus = kAS05LeaveScene;
break;
case kAS05UseTwigWithChicken:
- _vm->playGnapShowItem(5, 0, 0);
+ _vm->_gnap->playShowItem(5, 0, 0);
_nextChickenSequenceId = 0x14F;
_vm->_gnap->_actionStatus = -1;
break;
@@ -2344,24 +2344,24 @@ void Scene06::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
_vm->gnapUseDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2371,15 +2371,15 @@ void Scene06::run() {
case kHS06Gas:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 0);
+ _vm->_gnap->playScratchingHead(5, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk04)) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
@@ -2387,15 +2387,15 @@ void Scene06::run() {
_vm->_gnap->_actionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
- _vm->playGnapPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ _vm->_gnap->playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk04))
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
else
- _vm->playGnapScratchingHead(5, 0);
+ _vm->_gnap->playScratchingHead(5, 0);
break;
}
}
@@ -2405,15 +2405,15 @@ void Scene06::run() {
case kHS06Ladder:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
+ _vm->_gnap->playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFGasTaken))
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
else {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
_vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
@@ -2422,7 +2422,7 @@ void Scene06::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2441,11 +2441,11 @@ void Scene06::run() {
_vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 2);
+ _vm->_gnap->playScratchingHead(3, 2);
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
@@ -2460,7 +2460,7 @@ void Scene06::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2722,13 +2722,13 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -2747,7 +2747,7 @@ void Scene07::run() {
case kHS07Dice:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 8, 3, 3);
+ _vm->_gnap->playShowCurrItem(4, 8, 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2756,7 +2756,7 @@ void Scene07::run() {
_vm->setFlag(kGFPlatypus);
_vm->invAdd(kItemDice);
updateHotspots();
- _vm->playGnapPullOutDevice(3, 3);
+ _vm->_gnap->playPullOutDevice(3, 3);
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnap->_id,
@@ -2767,7 +2767,7 @@ void Scene07::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2985,21 +2985,21 @@ void Scene08::run() {
case kH08SPlatypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->actionIdle(0x14D);
_vm->_gnap->kissPlatypus(8);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3028,7 +3028,7 @@ void Scene08::run() {
case kHS08Man:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 6, 7, 0);
+ _vm->_gnap->playShowCurrItem(6, 6, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3038,7 +3038,7 @@ void Scene08::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -3052,7 +3052,7 @@ void Scene08::run() {
_vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
- _vm->playGnapIdle(6, 6);
+ _vm->_gnap->playIdle(6, 6);
break;
}
}
@@ -3060,13 +3060,13 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 7, 5, 0);
+ _vm->_gnap->playShowCurrItem(4, 7, 5, 0);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 0);
+ _vm->_gnap->playScratchingHead(6, 0);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS08LookDog;
break;
@@ -3088,7 +3088,7 @@ void Scene08::run() {
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
- _vm->playGnapIdle(3, 7);
+ _vm->_gnap->playIdle(3, 7);
break;
}
}
@@ -3096,25 +3096,25 @@ void Scene08::run() {
case kHS08Meat:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 8, 5, 6);
+ _vm->_gnap->playShowCurrItem(6, 8, 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 7);
+ _vm->_gnap->playScratchingHead(6, 7);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(6, 7);
+ _vm->_gnap->playScratchingHead(6, 7);
} else {
_vm->_gnap->actionIdle(0x14D);
- _vm->playGnapPullOutDevice(6, 7);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(6, 7);
+ _vm->_gnap->playUseDevice(0, 0);
_nextDogSequenceId = 0x149;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3122,25 +3122,25 @@ void Scene08::run() {
case kHS08Bone:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(2, 7, 3, 6);
+ _vm->_gnap->playShowCurrItem(2, 7, 3, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 6);
+ _vm->_gnap->playScratchingHead(3, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(3, 6);
+ _vm->_gnap->playScratchingHead(3, 6);
} else {
_vm->_gnap->actionIdle(0x14D);
- _vm->playGnapPullOutDevice(3, 6);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(3, 6);
+ _vm->_gnap->playUseDevice(0, 0);
_nextDogSequenceId = 0x14A;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3148,25 +3148,25 @@ void Scene08::run() {
case kHS08Toy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(8, 7, 7, 6);
+ _vm->_gnap->playShowCurrItem(8, 7, 7, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 6);
+ _vm->_gnap->playScratchingHead(7, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->playGnapScratchingHead(7, 6);
+ _vm->_gnap->playScratchingHead(7, 6);
} else {
_vm->_gnap->actionIdle(0x14D);
- _vm->playGnapPullOutDevice(7, 6);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(7, 6);
+ _vm->_gnap->playUseDevice(0, 0);
_nextDogSequenceId = 0x14B;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3422,13 +3422,13 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3456,11 +3456,11 @@ void Scene09::run() {
case kHS09Trash:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(9, 6, 8, 0);
+ _vm->_gnap->playShowCurrItem(9, 6, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 3);
+ _vm->_gnap->playScratchingHead(8, 3);
break;
case GRAB_CURSOR:
_vm->_gnap->_actionStatus = kAS09SearchTrash;
@@ -3468,7 +3468,7 @@ void Scene09::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 8a6bff0..18bb955 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -107,20 +107,20 @@ void Scene10::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS10Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(10);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -149,16 +149,16 @@ void Scene10::run() {
case kHS10Cook:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 8, 6, 0);
+ _vm->_gnap->playShowCurrItem(4, 8, 6, 0);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 0);
+ _vm->_gnap->playScratchingHead(6, 0);
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
_vm->_gnap->_idleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
@@ -180,18 +180,18 @@ void Scene10::run() {
case kHS10Tongs:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 4, 0);
+ _vm->_gnap->playShowCurrItem(3, 7, 4, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
+ _vm->_gnap->playMoan2(-1, -1);
else
- _vm->playGnapScratchingHead(4, 3);
+ _vm->_gnap->playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
+ _vm->_gnap->playMoan2(-1, -1);
else {
_vm->_gnap->actionIdle(0x10C);
_vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
@@ -199,11 +199,11 @@ void Scene10::run() {
}
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
+ _vm->_gnap->playMoan2(-1, -1);
else {
_vm->_gnap->actionIdle(0x10C);
_vm->_gnap->useDeviceOnPlatypus();
@@ -218,11 +218,11 @@ void Scene10::run() {
case kHS10Box:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 6, 6, 0);
+ _vm->_gnap->playShowCurrItem(7, 6, 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 3);
+ _vm->_gnap->playScratchingHead(7, 3);
break;
case GRAB_CURSOR:
_vm->_gnap->actionIdle(0x10C);
@@ -230,11 +230,11 @@ void Scene10::run() {
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->playGnapMoan2(-1, -1);
+ _vm->_gnap->playMoan2(-1, -1);
else {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
@@ -244,7 +244,7 @@ void Scene10::run() {
_vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
- _vm->playGnapIdle(7, 6);
+ _vm->_gnap->playIdle(7, 6);
}
break;
}
@@ -253,7 +253,7 @@ void Scene10::run() {
case kHS10Oven:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(9, 6, 10, 0);
+ _vm->_gnap->playShowCurrItem(9, 6, 10, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -272,7 +272,7 @@ void Scene10::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -591,17 +591,17 @@ void Scene11::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS11Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -639,17 +639,17 @@ void Scene11::run() {
if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
_vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 2, 0);
+ _vm->_gnap->playShowCurrItem(3, 7, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 6);
+ _vm->_gnap->playScratchingHead(1, 6);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -667,7 +667,7 @@ void Scene11::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 9);
_vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -683,7 +683,7 @@ void Scene11::run() {
_vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -693,11 +693,11 @@ void Scene11::run() {
case kHS11Billard:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(9, 8);
+ _vm->_gnap->playImpossible(9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 8);
+ _vm->_gnap->playScratchingHead(9, 8);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(Common::Point(9, 8), 0, 0x107BA, 1);
@@ -705,7 +705,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(9, 8);
+ _vm->_gnap->playImpossible(9, 8);
break;
}
}
@@ -1014,13 +1014,13 @@ void Scene12::run() {
case kHS12Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -1042,22 +1042,22 @@ void Scene12::run() {
_vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
_vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 2);
+ _vm->_gnap->playScratchingHead(1, 2);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
@@ -1073,7 +1073,7 @@ void Scene12::run() {
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
- _vm->playGnapIdle(2, 7);
+ _vm->_gnap->playIdle(2, 7);
break;
}
}
@@ -1084,12 +1084,12 @@ void Scene12::run() {
_vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1098,7 +1098,7 @@ void Scene12::run() {
_vm->_gnap->_actionStatus = kAS12LookBarkeeper;
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1106,7 +1106,7 @@ void Scene12::run() {
_vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
- _vm->playGnapPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS12PlatWithBarkeeper;
break;
@@ -1119,7 +1119,7 @@ void Scene12::run() {
_vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 9);
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy;
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1143,7 +1143,7 @@ void Scene12::run() {
_vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
- _vm->playGnapIdle(7, 6);
+ _vm->_gnap->playIdle(7, 6);
break;
}
}
@@ -1399,7 +1399,7 @@ void Scene12::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2) {
if (_vm->_gnap->_actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
_vm->_gnap->_actionStatus = -1;
- _vm->playGnapIdle(7, 6);
+ _vm->_gnap->playIdle(7, 6);
_vm->_timers[5] = 0;
}
if (_nextBarkeeperSequenceId != -1) {
@@ -1523,13 +1523,13 @@ void Scene13::run() {
case kHS13Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -1552,7 +1552,7 @@ void Scene13::run() {
case kHS13BackToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(5, 5, 6, 0);
+ _vm->_gnap->playShowCurrItem(5, 5, 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1575,7 +1575,7 @@ void Scene13::run() {
}
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1583,7 +1583,7 @@ void Scene13::run() {
case kHS13FrontToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 7, 7, 0);
+ _vm->_gnap->playShowCurrItem(6, 7, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1600,7 +1600,7 @@ void Scene13::run() {
case kHS13Scribble:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 7, 8, 0);
+ _vm->_gnap->playShowCurrItem(7, 7, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1609,14 +1609,14 @@ void Scene13::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
+ _vm->_gnap->playScratchingHead(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->walkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1624,7 +1624,7 @@ void Scene13::run() {
case kHS13Urinal:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(8, 7, 9, 0);
+ _vm->_gnap->playShowCurrItem(8, 7, 9, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1638,7 +1638,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1646,7 +1646,7 @@ void Scene13::run() {
case kHS13Sink:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1660,7 +1660,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2540,19 +2540,19 @@ void Scene17::run() {
_vm->invRemove(kItemJoint);
}
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2562,17 +2562,17 @@ void Scene17::run() {
case kHS17Wrench:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(8, 7);
+ _vm->_gnap->playScratchingHead(8, 7);
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_canTryGetWrench) {
@@ -2583,7 +2583,7 @@ void Scene17::run() {
_vm->_gnap->_actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2596,11 +2596,11 @@ void Scene17::run() {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 3);
+ _vm->_gnap->playScratchingHead(1, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2608,10 +2608,10 @@ void Scene17::run() {
_vm->_gnap->walkTo(_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);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2624,7 +2624,7 @@ void Scene17::run() {
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2637,11 +2637,11 @@ void Scene17::run() {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 3);
+ _vm->_gnap->playScratchingHead(1, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2652,10 +2652,10 @@ void Scene17::run() {
_vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2668,7 +2668,7 @@ void Scene17::run() {
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
_vm->_gnap->_actionStatus = kAS17PlatUsePhone;
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2828,8 +2828,8 @@ void Scene17::updateAnimations() {
_vm->_gnap->_actionStatus = kAS17GetWrenchGnapReady;
break;
case kAS17GetCoinFromPhone:
- _vm->playGnapPullOutDevice(1, 3);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(1, 3);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.setAnimation(0x250, 100, 0);
gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemDiceQuarterHole);
@@ -3438,21 +3438,21 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3469,18 +3469,18 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 2);
+ _vm->_gnap->playScratchingHead(3, 2);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3491,25 +3491,25 @@ void Scene18::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex >= 0)
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(true);
if (_vm->_grabCursorSpriteIndex >= 0) {
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
_vm->_hotspotsWalkPos[kHS18GarbageCan].y, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else if (!_vm->isFlag(kGFTruckFilledWithGas))
- _vm->playGnapScratchingHead(2, 4);
+ _vm->_gnap->playScratchingHead(2, 4);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
@@ -3524,7 +3524,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3539,13 +3539,13 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->playGnapScratchingHead(0, 0);
+ _vm->_gnap->playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
@@ -3557,14 +3557,14 @@ void Scene18::run() {
} else {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3573,11 +3573,11 @@ void Scene18::run() {
_vm->_gnap->walkTo(_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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 5);
+ _vm->_gnap->playScratchingHead(1, 5);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
@@ -3586,11 +3586,11 @@ void Scene18::run() {
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS18CloseTopValve;
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3602,9 +3602,9 @@ void Scene18::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex == -1) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
}
} else {
if (_vm->isFlag(kGFPlatypusDisguised)) {
@@ -3618,11 +3618,11 @@ void Scene18::run() {
else
_vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCan;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 5);
+ _vm->_gnap->playScratchingHead(1, 5);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
@@ -3635,7 +3635,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3650,7 +3650,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->isFlag(kGFPictureTaken)) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
@@ -3836,8 +3836,8 @@ void Scene18::updateAnimations() {
case kAS18OpenTopValve:
_vm->setFlag(kGFBarnPadlockOpen);
updateHotspots();
- _vm->playGnapPullOutDevice(2, 7);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(2, 7);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
@@ -3934,8 +3934,8 @@ void Scene18::updateAnimations() {
case kAS18OpenRightValveWithGarbageCan:
_vm->setFlag(kGFTruckFilledWithGas);
updateHotspots();
- _vm->playGnapPullOutDevice(2, 7);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(2, 7);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
@@ -4144,21 +4144,21 @@ void Scene19::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -4183,11 +4183,11 @@ void Scene19::run() {
case kHS19Picture:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 2);
+ _vm->_gnap->playScratchingHead(6, 2);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
@@ -4197,7 +4197,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -4207,11 +4207,11 @@ void Scene19::run() {
case kHS19ShopAssistant:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 2);
+ _vm->_gnap->playScratchingHead(6, 2);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -4220,7 +4220,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -4236,20 +4236,20 @@ void Scene19::run() {
case kHS19Toy7:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ _vm->_gnap->playImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- _vm->playGnapIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ _vm->_gnap->playIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
_vm->_gnap->_actionStatus = kAS19GrabToy;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -4259,20 +4259,20 @@ void Scene19::run() {
case kHS19Phone:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 1);
+ _vm->_gnap->playScratchingHead(9, 1);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- _vm->playGnapIdle(8, 2);
+ _vm->_gnap->playIdle(8, 2);
_vm->_gnap->_actionStatus = kAS19UsePhone;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -4354,8 +4354,8 @@ void Scene19::updateAnimations() {
}
break;
case kAS19GrabPicture:
- _vm->playGnapPullOutDevice(6, 2);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(6, 2);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.setAnimation(0x68, 19, 0);
gameSys.insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemPicture);
@@ -4415,7 +4415,7 @@ void Scene19::updateAnimations() {
while (_vm->_timers[5]) {
_vm->gameUpdateTick();
}
- _vm->playGnapIdle(6, 2);
+ _vm->_gnap->playIdle(6, 2);
_vm->_gnap->_actionStatus = -1;
break;
case 0x67:
@@ -4426,7 +4426,7 @@ void Scene19::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case 0x65:
- _vm->playGnapIdle(6, 2);
+ _vm->_gnap->playIdle(6, 2);
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 0);
gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 582aa5b..6599a4b 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -68,8 +68,8 @@ void Scene20::updateAnimationsCb() {
break;
case 0x16A:
// Grab joint
- _vm->playGnapPullOutDevice(4, 4);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(4, 4);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.setAnimation(0x16A, 21, 0);
gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16A;
@@ -275,21 +275,21 @@ void Scene20::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(20);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -363,11 +363,11 @@ void Scene20::run() {
case kHS20StonerGuy:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(5, 4);
+ _vm->_gnap->playMoan2(5, 4);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -375,7 +375,7 @@ void Scene20::run() {
if (_stonerGuyShowingJoint)
_vm->_gnap->_actionStatus = kAS20GrabJoint;
else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -386,7 +386,7 @@ void Scene20::run() {
_vm->_gnap->_actionStatus = kAS20TalkStonerGuyHasJoint;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -396,11 +396,11 @@ void Scene20::run() {
case kHS20GroceryStoreGuy:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 3);
+ _vm->_gnap->playScratchingHead(2, 3);
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
@@ -414,7 +414,7 @@ void Scene20::run() {
_vm->_gnap->_actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -428,11 +428,11 @@ void Scene20::run() {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 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);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(1, 6);
+ _vm->_gnap->playScratchingHead(1, 6);
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
@@ -442,7 +442,7 @@ void Scene20::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -793,21 +793,21 @@ void Scene21::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -817,16 +817,16 @@ void Scene21::run() {
case kHS21Banana:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 5);
+ _vm->_gnap->playScratchingHead(2, 5);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_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->playPullOutDevice(2, 5);
+ _vm->_gnap->playUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS21GrabBanana;
break;
case TALK_CURSOR:
@@ -844,11 +844,11 @@ void Scene21::run() {
_vm->_gnap->walkTo(Common::Point(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);
+ _vm->_gnap->playShowCurrItem(4, 6, 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 4);
+ _vm->_gnap->playScratchingHead(7, 4);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -863,7 +863,7 @@ void Scene21::run() {
_vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1109,21 +1109,21 @@ void Scene22::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1153,14 +1153,14 @@ void Scene22::run() {
case kHS22Cashier:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 4);
+ _vm->_gnap->playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1332,21 +1332,21 @@ void Scene23::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1356,12 +1356,12 @@ void Scene23::run() {
case kHS23Cereals:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapMoan2(0, 0);
+ _vm->_gnap->playMoan2(0, 0);
else {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS23LookCereals;
@@ -1369,7 +1369,7 @@ void Scene23::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
else {
_vm->_gnap->_idleFacing = kDirBottomRight;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
@@ -1380,7 +1380,7 @@ void Scene23::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1599,21 +1599,21 @@ void Scene24::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1845,21 +1845,21 @@ void Scene25::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1871,15 +1871,15 @@ void Scene25::run() {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
_vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
_nextTicketVendorSequenceId = 0x5B;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 1);
+ _vm->_gnap->playScratchingHead(6, 1);
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
@@ -1889,7 +1889,7 @@ void Scene25::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1931,7 +1931,7 @@ void Scene25::run() {
case kHS25Posters4:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1942,13 +1942,13 @@ void Scene25::run() {
_vm->_gnap->_idleFacing = kDirBottomRight;
else
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->playGnapIdle(0, 0);
+ _vm->_gnap->playIdle(0, 0);
playAnims(8 - _vm->_sceneClickedHotspot + 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapMoan2(0, 0);
+ _vm->_gnap->playMoan2(0, 0);
break;
}
}
@@ -2043,7 +2043,7 @@ void Scene25::updateAnimations() {
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->playGnapIdle(0, 0);
+ _vm->_gnap->playIdle(0, 0);
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone;
@@ -2161,21 +2161,21 @@ void Scene26::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2395,21 +2395,21 @@ void Scene27::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2423,11 +2423,11 @@ void Scene27::run() {
if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
_vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 3);
+ _vm->_gnap->playScratchingHead(6, 3);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -2436,7 +2436,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2446,11 +2446,11 @@ void Scene27::run() {
case kHS27Bucket:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(3, 3);
+ _vm->_gnap->playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -2459,7 +2459,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2587,8 +2587,8 @@ void Scene27::updateAnimations() {
}
break;
case kAS27GrabBucket:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
_vm->setFlag(kGFUnk13);
@@ -2649,8 +2649,8 @@ void Scene27::updateAnimations() {
break;
case 0xD0:
// Show picture to janitor
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_vm->_gnap->_actionStatus = kAS27EnterClownTent;
@@ -2766,21 +2766,21 @@ void Scene28::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2790,11 +2790,11 @@ void Scene28::run() {
case kHS28Horn:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(2, 8, 3, 4);
+ _vm->_gnap->playShowCurrItem(2, 8, 3, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 4);
+ _vm->_gnap->playScratchingHead(2, 4);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
@@ -2813,7 +2813,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2824,27 +2824,27 @@ void Scene28::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->isFlag(kGFUnk21)) {
if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->playGnapScratchingHead(5, 2);
+ _vm->_gnap->playScratchingHead(5, 2);
else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
_vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 2);
+ _vm->_gnap->playScratchingHead(5, 2);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -2853,7 +2853,7 @@ void Scene28::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2875,13 +2875,13 @@ void Scene28::run() {
case kHS28EmptyBucket:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
} else if (_vm->isFlag(kGFUnk21)) {
- _vm->playGnapImpossible(8, 6);
+ _vm->_gnap->playImpossible(8, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 6);
+ _vm->_gnap->playScratchingHead(8, 6);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
@@ -2889,7 +2889,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2960,8 +2960,8 @@ void Scene28::updateAnimations() {
_nextClownSequenceId = 0x119;
break;
case kAS28GrabHornSuccess:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.setAnimation(0x117, 59, 0);
gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_actionStatus = kAS28GrabHornSuccessDone;
@@ -2982,8 +2982,8 @@ void Scene28::updateAnimations() {
_vm->_gnap->_actionStatus = -1;
break;
case kAS28GrabEmptyBucket:
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.setAnimation(0x111, 99, 0);
gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_actionStatus = kAS28GrabEmptyBucketDone;
@@ -3157,21 +3157,21 @@ void Scene29::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3188,18 +3188,18 @@ void Scene29::run() {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 6);
+ _vm->_gnap->playScratchingHead(5, 6);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
+ _vm->_gnap->playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -3233,19 +3233,19 @@ void Scene29::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
- _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
+ _vm->_gnap->playIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
_vm->_gnap->_actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan2(0, 0);
+ _vm->_gnap->playMoan2(0, 0);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 99cd34b..ecc1238 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -90,21 +90,21 @@ void Scene30::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -120,7 +120,7 @@ void Scene30::run() {
_vm->_gnap->_actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -128,11 +128,11 @@ void Scene30::run() {
_vm->_gnap->_actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
- _vm->playGnapScratchingHead(8, 5);
+ _vm->_gnap->playScratchingHead(8, 5);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(8, 5);
+ _vm->_gnap->playImpossible(8, 5);
break;
}
}
@@ -345,21 +345,21 @@ void Scene31::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
_vm->_gnap->useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -370,15 +370,15 @@ void Scene31::run() {
if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->playGnapScratchingHead(2, 2);
+ _vm->_gnap->playScratchingHead(2, 2);
else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(2, 2);
+ _vm->_gnap->playScratchingHead(2, 2);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
@@ -389,7 +389,7 @@ void Scene31::run() {
_vm->_timers[4] = 300;
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
@@ -402,7 +402,7 @@ void Scene31::run() {
_vm->_gnap->_actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -416,21 +416,21 @@ void Scene31::run() {
_vm->_gnap->walkTo(_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);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(6, 8);
+ _vm->_gnap->playUseDevice(0, 0);
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(6, 2);
+ _vm->_gnap->playScratchingHead(6, 2);
break;
case GRAB_CURSOR:
if (_beerGuyDistracted) {
- _vm->playGnapScratchingHead(6, 2);
+ _vm->_gnap->playScratchingHead(6, 2);
} else {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
_vm->_gnap->_actionStatus = kAS31UseBeerBarrel;
@@ -439,7 +439,7 @@ void Scene31::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -552,8 +552,8 @@ void Scene31::updateAnimations() {
break;
case kAS31FillEmptyBucketWithBeerDone:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->playGnapPullOutDevice(0, 0);
- _vm->playGnapUseDevice(0, 0);
+ _vm->_gnap->playPullOutDevice(0, 0);
+ _vm->_gnap->playUseDevice(0, 0);
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
_vm->_gnap->_actionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
@@ -694,21 +694,21 @@ void Scene32::run() {
case kHS32Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -870,21 +870,21 @@ void Scene33::run() {
case kHS33Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -894,7 +894,7 @@ void Scene33::run() {
case kHS33Chicken:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 9, 9, 8);
+ _vm->_gnap->playShowCurrItem(7, 9, 9, 8);
} else {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
@@ -911,7 +911,7 @@ void Scene33::run() {
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1147,21 +1147,21 @@ void Scene38::run() {
if (_vm->_gnap->_actionStatus == kAS38HoldingHuntingTrophy) {
_vm->_gnap->_actionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1205,15 +1205,15 @@ void Scene38::run() {
case kHS38HuntingTrophy:
if (_vm->_gnap->_actionStatus != kAS38HoldingHuntingTrophy) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 6, 2, 0);
+ _vm->_gnap->playShowCurrItem(3, 6, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
+ _vm->_gnap->playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
else {
_vm->_gnap->walkTo(Common::Point(3, 6), 0, 0x107BB, 1);
_vm->_plat->walkTo(Common::Point(4, 8), -1, -1, 1);
@@ -1221,10 +1221,10 @@ void Scene38::run() {
}
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(2, 0);
+ _vm->_gnap->playBrainPulsating(2, 0);
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1453,21 +1453,21 @@ void Scene39::run() {
case kHS39Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1487,18 +1487,18 @@ void Scene39::run() {
case kHS39Sign:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS39Sign], 0, -1, 1);
- _vm->playGnapIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
+ _vm->_gnap->playIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
_vm->showFullScreenSprite(0x1C);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 7d7be66..2a3458c 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -76,21 +76,21 @@ void Scene40::run() {
case kHS40Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -351,21 +351,21 @@ void Scene41::run() {
case kHS41Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -399,16 +399,16 @@ void Scene41::run() {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->_gnap->_actionStatus = kAS41UseQuarterWithToyVendor;
_vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BB, 9);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(4, 7, 5, 0);
+ _vm->_gnap->playShowCurrItem(4, 7, 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(5, 0);
+ _vm->_gnap->playMoan1(5, 0);
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -416,7 +416,7 @@ void Scene41::run() {
_vm->_gnap->_actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -428,11 +428,11 @@ void Scene41::run() {
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->_actionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(7, 7, 8, 0);
+ _vm->_gnap->playShowCurrItem(7, 7, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(9, 0);
+ _vm->_gnap->playScratchingHead(9, 0);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
@@ -444,7 +444,7 @@ void Scene41::run() {
_vm->_gnap->walkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -452,7 +452,7 @@ void Scene41::run() {
case kHS41ToyUfo:
if (_vm->_grabCursorSpriteIndex == kItemGum) {
- _vm->playGnapPullOutDevice(9, 0);
+ _vm->_gnap->playPullOutDevice(9, 0);
gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
_vm->_gnap->_actionStatus = kAS41UseGumWithToyUfo;
}
@@ -580,7 +580,7 @@ void Scene41::updateAnimations() {
break;
case kAS41UseGumWithToyUfo:
gameSys.setAnimation(0, 0, 0);
- _vm->playGnapUseDevice(9, 0);
+ _vm->_gnap->playUseDevice(9, 0);
_vm->_gnap->_actionStatus = -1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemGum);
@@ -863,21 +863,21 @@ void Scene42::run() {
case kHS42Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -915,11 +915,11 @@ void Scene42::run() {
if (_vm->_plat->_pos.y < 9)
_vm->_plat->walkTo(Common::Point(_vm->_plat->_pos.x, 9), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -928,7 +928,7 @@ void Scene42::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -936,11 +936,11 @@ void Scene42::run() {
case kHS42ChickenLeg:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, _vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, _vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg], 0, 0x107BC, 1);
@@ -948,7 +948,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1321,21 +1321,21 @@ void Scene43::run() {
case kHS43Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1368,11 +1368,11 @@ void Scene43::run() {
case kHS43TwoHeadedGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(6, 8, 7, 0);
+ _vm->_gnap->playShowCurrItem(6, 8, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(7, 0);
+ _vm->_gnap->playScratchingHead(7, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1381,7 +1381,7 @@ void Scene43::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1390,11 +1390,11 @@ void Scene43::run() {
case kHS43Key:
case kHS43Ufo:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(3, 7, 2, 0);
+ _vm->_gnap->playShowCurrItem(3, 7, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(0, 0);
+ _vm->_gnap->playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1403,7 +1403,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1769,21 +1769,21 @@ void Scene44::run() {
case kHS44Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -1816,14 +1816,14 @@ void Scene44::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->_actionStatus = 2;
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, -1, 9);
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, _vm->_hotspotsWalkPos[kHS44KissingLady].x - 1, _vm->_hotspotsWalkPos[kHS44KissingLady].y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(4, 3);
+ _vm->_gnap->playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -1835,7 +1835,7 @@ void Scene44::run() {
_vm->_plat->walkTo(Common::Point(6, 7), 1, 0x107D2, 1);
if (_vm->_gnap->_pos == Common::Point(7, 7))
_vm->_gnap->walkStep();
- _vm->playGnapIdle(5, 7);
+ _vm->_gnap->playIdle(5, 7);
_vm->_plat->_actionStatus = 4;
break;
}
@@ -1844,25 +1844,25 @@ void Scene44::run() {
case kHS44Spring:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring].x, _vm->_hotspotsWalkPos[kHS44Spring].y, 8, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring].x, _vm->_hotspotsWalkPos[kHS44Spring].y, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(8, 7);
+ _vm->_gnap->playScratchingHead(8, 7);
break;
case GRAB_CURSOR:
- _vm->playGnapPullOutDevice(8, 0);
- _vm->playGnapUseDevice(8, 0);
+ _vm->_gnap->playPullOutDevice(8, 0);
+ _vm->_gnap->playUseDevice(8, 0);
_nextSpringGuySequenceId = 0xFB;
_vm->invAdd(kItemSpring);
_vm->setFlag(kGFSpringTaken);
updateHotspots();
break;
case TALK_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -1870,14 +1870,14 @@ void Scene44::run() {
case kHS44SpringGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, 8, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSpringTaken))
- _vm->playGnapMoan1(8, 7);
+ _vm->_gnap->playMoan1(8, 7);
else
- _vm->playGnapScratchingHead(8, 7);
+ _vm->_gnap->playScratchingHead(8, 7);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -1885,7 +1885,7 @@ void Scene44::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2258,11 +2258,11 @@ void Scene45::run() {
case kHS45Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
@@ -2270,11 +2270,11 @@ void Scene45::run() {
gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -2325,16 +2325,16 @@ void Scene45::run() {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemSpring);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
+ _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapScratchingHead(5, 0);
+ _vm->_gnap->playScratchingHead(5, 0);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2583,21 +2583,21 @@ void Scene46::run() {
case kHS46Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
_vm->_gnap->kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->playGnapBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->playGnapImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -2606,11 +2606,11 @@ void Scene46::run() {
case kHS46SackGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 2, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0);
+ _vm->_gnap->playMoan1(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
@@ -2619,7 +2619,7 @@ void Scene46::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
@@ -2627,11 +2627,11 @@ void Scene46::run() {
case kHS46ItchyGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->playGnapShowCurrItem(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 7, 0);
+ _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->playGnapMoan1(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0);
+ _vm->_gnap->playMoan1(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0);
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
@@ -2640,7 +2640,7 @@ void Scene46::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->playGnapImpossible(0, 0);
+ _vm->_gnap->playImpossible(0, 0);
break;
}
}
Commit: 33ca09ae12a09df7d1367122eb8461f7b7a74572
https://github.com/scummvm/scummvm/commit/33ca09ae12a09df7d1367122eb8461f7b7a74572
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:54+02:00
Commit Message:
GNAP: Remove useless redirections, move two more functions
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index ee81961..1ff7698 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -462,7 +462,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
void PlayerGnap::useJointOnPlatypus() {
_vm->setGrabCursorSprite(-1);
- if (_vm->gnapPlatypusAction(1, 0, 0x107C1, 0)) {
+ if (doPlatypusAction(1, 0, 0x107C1, 0)) {
_actionStatus = 100;
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_gameSys->setAnimation(0x10876, _vm->_plat->_id, 0);
@@ -478,7 +478,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_plat->_sequenceId = 0x876;
_vm->_plat->_idleFacing = kDirNone;
playSequence(0x107B5);
- _vm->_gnap->walkStep();
+ walkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
_vm->gameUpdateTick();
@@ -491,7 +491,7 @@ void PlayerGnap::useJointOnPlatypus() {
}
void PlayerGnap::kissPlatypus(int callback) {
- if (_vm->gnapPlatypusAction(-1, 0, 0x107D1, callback)) {
+ if (doPlatypusAction(-1, 0, 0x107D1, callback)) {
_actionStatus = 100;
_vm->_gameSys->setAnimation(0, 0, 1);
_vm->_gameSys->setAnimation(0x10847, _id, 0);
@@ -1100,6 +1100,52 @@ void PlayerGnap::playShowCurrItem(int gridX, int gridY, int gridLookX, int gridL
playShowItem(_vm->_grabCursorSpriteIndex, gridLookX, gridLookY);
}
+bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
+ bool result = false;
+
+ if (_actionStatus <= -1 && _vm->_plat->_actionStatus <= -1) {
+ _actionStatus = 100;
+ Common::Point checkPt = _vm->_plat->_pos + Common::Point(gridX, gridY);
+ if (_vm->isPointBlocked(checkPt) && (_pos != checkPt)) {
+ _vm->_plat->walkStep();
+ checkPt = _vm->_plat->_pos + Common::Point(gridX, gridY);
+ }
+
+ if (!_vm->isPointBlocked(checkPt) && (_pos != checkPt)) {
+ walkTo(checkPt, 0, 0x107B9, 1);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ _vm->updateMouseCursor();
+ _vm->doCallback(callback);
+ _vm->gameUpdateTick();
+ }
+ _vm->_gameSys->setAnimation(0, 0, 0);
+ if (_pos == _vm->_plat->_pos + Common::Point(gridX, gridY)) {
+ _vm->_gameSys->setAnimation(platSequenceId, _vm->_plat->_id, 1);
+ _vm->_plat->playSequence(platSequenceId);
+ while (_vm->_gameSys->getAnimationStatus(1) != 2) {
+ _vm->updateMouseCursor();
+ _vm->doCallback(callback);
+ _vm->gameUpdateTick();
+ }
+ result = true;
+ }
+ }
+ _actionStatus = -1;
+ }
+ return result;
+}
+
+void PlayerGnap::useDisguiseOnPlatypus() {
+ _vm->_gameSys->setAnimation(0x10846, _id, 0);
+ playSequence(0x10846);
+ while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ _vm->gameUpdateTick();
+ _vm->_newSceneNum = 47;
+ _vm->_isLeavingScene = true;
+ _vm->_sceneDone = true;
+ _vm->setFlag(kGFPlatypusDisguised);
+}
+
/************************************************************************************************/
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
@@ -1156,7 +1202,7 @@ void PlayerPlat::updateIdleSequence() {
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->_plat->makeRoom();
+ makeRoom();
}
} else {
_vm->_timers[0] = 100;
@@ -1184,7 +1230,7 @@ void PlayerPlat::updateIdleSequence2() {
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->_plat->makeRoom();
+ makeRoom();
}
} else {
_vm->_timers[0] = 100;
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index d04c594..c7f97b7 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -89,6 +89,7 @@ public:
virtual bool walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags);
void actionIdle(int sequenceId);
+ bool doPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
int getShowSequenceId(int index, int gridX, int gridY);
Facing getWalkFacing(int deltaX, int deltaY);
int getWalkStopSequenceId(int deltaX, int deltaY);
@@ -107,6 +108,7 @@ public:
void playShowItem(int itemIndex, int gridLookX, int gridLookY);
void playUseDevice(int gridX, int gridY);
void useDeviceOnPlatypus();
+ void useDisguiseOnPlatypus();
void useJointOnPlatypus();
int _brainPulseNum;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 3b6f84a..518dda2 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -965,52 +965,6 @@ void GnapEngine::doCallback(int callback) {
}
}
-bool GnapEngine::gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
- bool result = false;
-
- if (_gnap->_actionStatus <= -1 && _plat->_actionStatus <= -1) {
- _gnap->_actionStatus = 100;
- Common::Point checkPt = _plat->_pos + Common::Point(gridX, gridY);
- if (isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
- _plat->walkStep();
- checkPt = _plat->_pos + Common::Point(gridX, gridY);
- }
-
- if (!isPointBlocked(checkPt) && (_gnap->_pos != checkPt)) {
- _gnap->walkTo(checkPt, 0, 0x107B9, 1);
- while (_gameSys->getAnimationStatus(0) != 2) {
- updateMouseCursor();
- doCallback(callback);
- gameUpdateTick();
- }
- _gameSys->setAnimation(0, 0, 0);
- if (_gnap->_pos == _plat->_pos + Common::Point(gridX, gridY)) {
- _gameSys->setAnimation(platSequenceId, _plat->_id, 1);
- _plat->playSequence(platSequenceId);
- while (_gameSys->getAnimationStatus(1) != 2) {
- updateMouseCursor();
- doCallback(callback);
- gameUpdateTick();
- }
- result = true;
- }
- }
- _gnap->_actionStatus = -1;
- }
- return result;
-}
-
-void GnapEngine::gnapUseDisguiseOnPlatypus() {
- _gameSys->setAnimation(0x10846, _gnap->_id, 0);
- _gnap->playSequence(0x10846);
- while (_gameSys->getAnimationStatus(0) != 2)
- gameUpdateTick();
- _newSceneNum = 47;
- _isLeavingScene = true;
- _sceneDone = true;
- setFlag(kGFPlatypusDisguised);
-}
-
////////////////////////////////////////////////////////////////////////////////
void GnapEngine::initGlobalSceneVars() {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 8446454..0bda4b4 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -476,8 +476,6 @@ public:
// Gnap
void doCallback(int callback);
- bool gnapPlatypusAction(int gridX, int gridY, int platSequenceId, int callback);
- void gnapUseDisguiseOnPlatypus();
// Scenes
int _toyUfoNextSequenceId, _toyUfoSequenceId;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 780c4d2..b693d3b 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -124,7 +124,7 @@ void Scene01::run() {
case kHS01Platypus:
if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
@@ -474,7 +474,7 @@ void Scene02::run() {
case kHS02Platypus:
if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
@@ -939,7 +939,7 @@ void Scene03::run() {
case kHS03Platypus:
if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
@@ -1443,7 +1443,7 @@ void Scene04::run() {
case kHS04Platypus:
if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
@@ -1918,7 +1918,7 @@ void Scene05::run() {
case kHS05Platypus:
if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
@@ -2342,7 +2342,7 @@ void Scene06::run() {
case kHS06Platypus:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->gnapUseDisguiseOnPlatypus();
+ _vm->_gnap->useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playImpossible(0, 0);
} else {
Commit: 81c5f8651d7b78986a5487c0b6b67a3ea1bea19c
https://github.com/scummvm/scummvm/commit/81c5f8651d7b78986a5487c0b6b67a3ea1bea19c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:55+02:00
Commit Message:
GNAP: USe Common::Point for getSequenceId
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 1ff7698..aa920fa0 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -112,14 +112,14 @@ PlayerGnap::PlayerGnap(GnapEngine * vm) : Character(vm) {
_brainPulseRndValue = 0;
}
-int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
+int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
int sequenceId = 0;
switch (kind) {
case gskPullOutDevice:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x83F;
_idleFacing = kDirUpLeft;
} else {
@@ -127,7 +127,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x83B;
_idleFacing = kDirBottomLeft;
} else {
@@ -154,9 +154,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskPullOutDeviceNonWorking:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x829;
_idleFacing = kDirUpLeft;
} else {
@@ -164,7 +164,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x827;
_idleFacing = kDirBottomLeft;
} else {
@@ -191,9 +191,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskScratchingHead:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x834;
_idleFacing = kDirBottomLeft;
} else {
@@ -201,7 +201,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x834;
_idleFacing = kDirBottomLeft;
} else {
@@ -232,9 +232,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskIdle:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x7BC;
_idleFacing = kDirUpLeft;
} else {
@@ -242,7 +242,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x7BA;
_idleFacing = kDirBottomLeft;
} else {
@@ -270,9 +270,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
case gskBrainPulsating:
_brainPulseNum = (_brainPulseNum + 1) & 1;
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = _brainPulseRndValue + _brainPulseNum + 0x812;
_idleFacing = kDirUpLeft;
} else {
@@ -280,7 +280,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = _brainPulseRndValue + _brainPulseNum + 0x7D6;
_idleFacing = kDirBottomLeft;
} else {
@@ -307,9 +307,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskImpossible:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x831;
_idleFacing = kDirBottomLeft;
} else {
@@ -317,7 +317,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirBottomRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x831;
_idleFacing = kDirBottomLeft;
} else {
@@ -341,9 +341,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskDeflect:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x830;
_idleFacing = kDirUpLeft;
} else {
@@ -351,7 +351,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirUpRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x82E;
_idleFacing = kDirBottomLeft;
} else {
@@ -401,9 +401,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskMoan1:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x832;
_idleFacing = kDirBottomLeft;
} else {
@@ -411,7 +411,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirBottomRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x832;
_idleFacing = kDirBottomLeft;
} else {
@@ -429,9 +429,9 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
break;
case gskMoan2:
- if (gridX > 0 && gridY > 0) {
- if (_pos.y > gridY) {
- if (_pos.x > gridX) {
+ if (gridPos.x > 0 && gridPos.y > 0) {
+ if (_pos.y > gridPos.y) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x832;
_idleFacing = kDirBottomLeft;
} else {
@@ -439,7 +439,7 @@ int PlayerGnap::getSequenceId(int kind, int gridX, int gridY) {
_idleFacing = kDirBottomRight;
}
} else {
- if (_pos.x > gridX) {
+ if (_pos.x > gridPos.x) {
sequenceId = 0x832;
_idleFacing = kDirBottomLeft;
} else {
@@ -486,7 +486,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos) | 0x10000);
}
}
@@ -515,12 +515,12 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos.x, _vm->_plat->_pos.y) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos) | 0x10000);
}
}
void PlayerGnap::useDeviceOnPlatypus() {
- playSequence(makeRid(1, getSequenceId(gskPullOutDevice, _vm->_plat->_pos.x, _vm->_plat->_pos.y)));
+ playSequence(makeRid(1, getSequenceId(gskPullOutDevice, _vm->_plat->_pos)));
if (_vm->_plat->_idleFacing != kDirNone) {
_vm->_gameSys->insertSequence(makeRid(1, 0x7D5), _vm->_plat->_id,
@@ -536,7 +536,7 @@ void PlayerGnap::useDeviceOnPlatypus() {
_vm->_plat->_sequenceDatNum = 1;
}
- int newSequenceId = getSequenceId(gskUseDevice, 0, 0);
+ int newSequenceId = getSequenceId(gskUseDevice, Common::Point(0, 0));
_vm->_gameSys->insertSequence(makeRid(1, newSequenceId), _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
@@ -1020,7 +1020,7 @@ int PlayerGnap::getShowSequenceId(int index, int gridX, int gridY) {
//Skip 29
default:
_idleFacing = facing;
- sequenceId = getSequenceId(gskImpossible, 0, 0);
+ sequenceId = getSequenceId(gskImpossible, Common::Point(0, 0));
break;
}
@@ -1035,58 +1035,58 @@ void PlayerGnap::idle() {
_sequenceId == 0x833 || _sequenceId == 0x834 ||
_sequenceId == 0x885 || _sequenceId == 0x7A8 ||
_sequenceId == 0x831 || _sequenceId == 0x89A)) {
- _vm->_gameSys->insertSequence(getSequenceId(gskIdle, 0, 0) | 0x10000, _id,
+ _vm->_gameSys->insertSequence(getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
- _sequenceId = getSequenceId(gskIdle, 0, 0);
+ _sequenceId = getSequenceId(gskIdle, Common::Point(0, 0));
_sequenceDatNum = 1;
}
}
void PlayerGnap::actionIdle(int sequenceId) {
if (_sequenceId != -1 && ridToDatIndex(sequenceId) == _sequenceDatNum && ridToEntryIndex(sequenceId) == _sequenceId) {
- _vm->_gameSys->insertSequence(getSequenceId(gskIdle, 0, 0) | 0x10000, _id,
+ _vm->_gameSys->insertSequence(getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
- _sequenceId = getSequenceId(gskIdle, 0, 0);
+ _sequenceId = getSequenceId(gskIdle, Common::Point(0, 0));
_sequenceDatNum = 1;
}
}
void PlayerGnap::playImpossible(int gridX, int gridY) {
- playSequence(getSequenceId(gskImpossible, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskImpossible, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playScratchingHead(int gridX, int gridY) {
- playSequence(getSequenceId(gskScratchingHead, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playMoan1(int gridX, int gridY) {
- playSequence(getSequenceId(gskMoan1, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskMoan1, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playMoan2(int gridX, int gridY) {
- playSequence(getSequenceId(gskMoan2, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskMoan2, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playBrainPulsating(int gridX, int gridY) {
- playSequence(getSequenceId(gskBrainPulsating, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskBrainPulsating, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playPullOutDevice(int gridX, int gridY) {
- playSequence(getSequenceId(gskPullOutDevice, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskPullOutDevice, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playPullOutDeviceNonWorking(int gridX, int gridY) {
- playSequence(getSequenceId(gskPullOutDeviceNonWorking, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskPullOutDeviceNonWorking, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playUseDevice(int gridX, int gridY) {
- playSequence(getSequenceId(gskUseDevice, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskUseDevice, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playIdle(int gridX, int gridY) {
- playSequence(getSequenceId(gskIdle, gridX, gridY) | 0x10000);
+ playSequence(getSequenceId(gskIdle, Common::Point(gridX, gridY)) | 0x10000);
}
void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
@@ -1150,7 +1150,7 @@ void PlayerGnap::useDisguiseOnPlatypus() {
PlayerPlat::PlayerPlat(GnapEngine * vm) : Character(vm) {}
-int PlayerPlat::getSequenceId(int kind, int gridX, int gridY) {
+int PlayerPlat::getSequenceId(int kind, Common::Point gridPos) {
// The original had 3 parameters, all always set to 0.
// The code to handle the other values has been removed.
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index c7f97b7..f1fc0ec 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -52,7 +52,7 @@ public:
void walkStep();
- virtual int getSequenceId(int kind, int gridX, int gridY) = 0;
+ virtual int getSequenceId(int kind, Common::Point gridPos) = 0;
virtual void playSequence(int sequenceId) = 0;
virtual void updateIdleSequence() = 0;
virtual void updateIdleSequence2() = 0;
@@ -80,7 +80,7 @@ protected:
class PlayerGnap : public Character {
public:
PlayerGnap(GnapEngine *vm);
- virtual int getSequenceId(int kind, int gridX, int gridY);
+ virtual int getSequenceId(int kind, Common::Point gridPos);
virtual void initPos(int gridX, int gridY, Facing facing);
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
@@ -124,7 +124,7 @@ private:
class PlayerPlat : public Character {
public:
PlayerPlat(GnapEngine *vm);
- virtual int getSequenceId(int kind = 0, int gridX = 0, int gridY = 0);
+ virtual int getSequenceId(int kind = 0, Common::Point gridPos = Common::Point(0, 0));
virtual void initPos(int gridX, int gridY, Facing facing);
virtual void playSequence(int sequenceId);
virtual void updateIdleSequence();
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index b693d3b..982cfca 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -158,7 +158,7 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
@@ -181,7 +181,7 @@ void Scene01::run() {
_vm->_gnap->playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 3) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 7, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
@@ -505,7 +505,7 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
- _vm->_gnap->walkTo(destPos, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(destPos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_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->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS02GrabChicken;
else
_vm->_gnap->_actionStatus = -1;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 2, 2) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
@@ -1020,7 +1020,7 @@ void Scene03::run() {
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3].x + 1, _vm->_hotspotsWalkPos[3].y + 1) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1050,7 +1050,7 @@ void Scene03::run() {
_vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
_vm->_gnap->_actionStatus = kAS03FreePlatypus;
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
else
@@ -1062,7 +1062,7 @@ void Scene03::run() {
_vm->_gnap->playBrainPulsating(8, 4);
} else {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
_vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
else
@@ -1507,7 +1507,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, 10, 2) | 0x10000, 1)) {
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
if (_triedWindow) {
_vm->_gnap->_actionStatus = kAS04GetKeyAnother;
} else {
@@ -1981,7 +1981,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
_vm->_gnap->_idleFacing = kDirUpRight;
Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
- _vm->_gnap->walkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0)
_vm->_gnap->playShowCurrItem(_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->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
@@ -2044,7 +2044,7 @@ void Scene05::run() {
} else if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0,
- _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1))
+ _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
@@ -2055,7 +2055,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
@@ -2449,11 +2449,11 @@ void Scene06::run() {
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 3, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
} else {
_vm->_gnap->_idleFacing = kDirBottomLeft;
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
_vm->_gnap->_actionStatus = kAS06TalkToHorse;
}
@@ -2759,10 +2759,10 @@ void Scene07::run() {
_vm->_gnap->playPullOutDevice(3, 3);
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, 0, 0) | 0x10000, _vm->_gnap->_id,
+ gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, _vm->_gnap->_id,
makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, 0, 0);
+ _vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0));
_vm->_gnap->_sequenceDatNum = 1;
break;
case TALK_CURSOR:
@@ -3043,7 +3043,7 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
_vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
@@ -3078,7 +3078,7 @@ void Scene08::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 18bb955..0122a08 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -164,7 +164,7 @@ void Scene10::run() {
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
_vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
@@ -257,7 +257,7 @@ void Scene10::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 10, 5) | 0x10000);
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(10, 5)) | 0x10000);
break;
case GRAB_CURSOR:
_vm->_gnap->actionIdle(0x10C);
@@ -653,7 +653,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
break;
}
@@ -671,7 +671,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 3, 6) | 0x10000);
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(3, 6)) | 0x10000);
break;
case GRAB_CURSOR:
_vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
@@ -679,7 +679,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnap->walkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
@@ -1065,7 +1065,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
@@ -1102,7 +1102,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
@@ -1135,7 +1135,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
@@ -1613,7 +1613,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0), 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)), 1);
break;
case PLAT_CURSOR:
_vm->_gnap->playImpossible(0, 0);
@@ -1628,7 +1628,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 9, 6));
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(9, 6)));
_vm->_gnap->walkTo(_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->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, 5, 9));
+ _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(5, 9)));
_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1);
_vm->_gnap->_actionStatus = kAS13Wait;
break;
@@ -2593,7 +2593,7 @@ void Scene17::run() {
case kHS17Phone1:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_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->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GetCoinFromPhone;
} else
_vm->_gnap->playImpossible(0, 0);
@@ -2634,7 +2634,7 @@ void Scene17::run() {
case kHS17Phone2:
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_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->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
@@ -3476,7 +3476,7 @@ void Scene18::run() {
_vm->_gnap->playScratchingHead(3, 2);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, 3, 2) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3515,7 +3515,7 @@ void Scene18::run() {
if (!_vm->isFlag(kGFTruckKeysUsed)) {
_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
-1, -1, 1);
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_s18GarbageCanPos, _vm->_gnap->_pos.y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(_vm->_s18GarbageCanPos, _vm->_gnap->_pos.y)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
@@ -3570,7 +3570,7 @@ void Scene18::run() {
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
@@ -3612,7 +3612,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, 2, 8) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
_vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan;
else
@@ -4191,7 +4191,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS19GrabPicture;
}
break;
@@ -4215,7 +4215,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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 6599a4b..8c49bf6 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -371,7 +371,7 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreGuy;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(_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->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
@@ -625,7 +625,7 @@ void Scene20::updateAnimations() {
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = -1;
break;
case kAS20GrabJointDone:
@@ -824,7 +824,7 @@ void Scene21::run() {
_vm->_gnap->playScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana].x, _vm->_hotspotsWalkPos[kHS21Banana].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
_vm->_gnap->playPullOutDevice(2, 5);
_vm->_gnap->playUseDevice(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->_gnap->walkTo(Common::Point(4, 6), 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 6), 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->_gnap->playShowCurrItem(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->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21GrabOldLady;
_vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
@@ -1164,7 +1164,7 @@ void Scene22::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
@@ -1363,7 +1363,7 @@ void Scene23::run() {
if (_vm->isFlag(kGFSceneFlag1))
_vm->_gnap->playMoan2(0, 0);
else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS23LookCereals;
}
break;
@@ -1372,7 +1372,7 @@ void Scene23::run() {
_vm->_gnap->playImpossible(0, 0);
else {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
_vm->_gnap->_actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
@@ -1635,7 +1635,7 @@ void Scene24::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS24LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
@@ -1870,7 +1870,7 @@ void Scene25::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
_vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, 9, 4) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
_vm->_gnap->playPullOutDevice(0, 0);
_vm->_gnap->playUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1884,7 +1884,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
@@ -2431,7 +2431,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
@@ -2454,7 +2454,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket].x, _vm->_hotspotsWalkPos[kHS27Bucket].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket]) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
@@ -2799,7 +2799,7 @@ void Scene28::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn].x, _vm->_hotspotsWalkPos[kHS28Horn].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn]) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28GrabHornSuccess;
}
} else {
@@ -2848,7 +2848,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
@@ -2884,7 +2884,7 @@ void Scene28::run() {
_vm->_gnap->playScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket].x, _vm->_hotspotsWalkPos[kHS28EmptyBucket].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
@@ -3182,7 +3182,7 @@ void Scene29::run() {
if (_vm->_gnap->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index ecc1238..871177b 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -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->_gnap->walkTo(_vm->_gnap->_pos, -1, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_gnap->_pos, -1, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->_gnap->playPullOutDevice(6, 8);
@@ -899,14 +899,14 @@ void Scene33::run() {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskIdle, 0, 0) | 0x10000, 1))
+ if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
_vm->_gnap->_actionStatus = kAS33UseChicken;
else
_vm->_gnap->_actionStatus = -1;
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 2a3458c..44a99f9 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -412,7 +412,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(7, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
break;
case PLAT_CURSOR:
_vm->_gnap->playImpossible(0, 0);
@@ -923,7 +923,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
@@ -1376,7 +1376,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -1827,7 +1827,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case PLAT_CURSOR:
@@ -1881,7 +1881,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2614,7 +2614,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
_vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(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->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, 0, 0) | 0x10000, 1);
+ _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_gnap->_actionStatus = 1;
break;
case GRAB_CURSOR:
Commit: 1f7eeb24a0622a44a4b4582b51950fae4a80fcb7
https://github.com/scummvm/scummvm/commit/1f7eeb24a0622a44a4b4582b51950fae4a80fcb7
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:55+02:00
Commit Message:
GNAP: Simplify some checks
Changed paths:
engines/gnap/character.cpp
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index aa920fa0..114c2f4 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -676,7 +676,6 @@ int PlayerGnap::getWalkSequenceId(int deltaX, int deltaY) {
bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
- bool done = false;
_vm->_timers[2] = 200;
_vm->_timers[3] = 300;
@@ -695,17 +694,16 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
if (animationIndex >= 0 && _walkDestX == _vm->_plat->_pos.x && _walkDestY == _vm->_plat->_pos.y)
_vm->_plat->makeRoom();
- if (findPath1(_pos.x, _pos.y, 0))
- done = true;
+ bool done = findPath1(_pos.x, _pos.y, 0);
- if (!done && findPath2(_pos.x, _pos.y, 0))
- done = true;
+ if (!done)
+ done = findPath2(_pos.x, _pos.y, 0);
- if (!done && findPath3(_pos.x, _pos.y))
- done = true;
+ if (!done)
+ done = findPath3(_pos.x, _pos.y);
- if (!done && findPath4(_pos.x, _pos.y))
- done = true;
+ if (!done)
+ done = findPath4(_pos.x, _pos.y);
idle();
@@ -812,15 +810,14 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
break;
}
} else {
- //TODO: simplify the checks by using v10 and v11
- int v10 = _vm->_leftClickMouseX - (_vm->_gridMinX + 75 * _pos.x);
- int v11 = _vm->_leftClickMouseY - (_vm->_gridMinY + 48 * _pos.y);
- if (_vm->_leftClickMouseX == _vm->_gridMinX + 75 * _pos.x)
- ++v10;
- if (_vm->_leftClickMouseY == _vm->_gridMinY + 48 * _pos.y)
- v11 = 1;
- _sequenceId = getWalkStopSequenceId(v10 / abs(v10), v11 / abs(v11));
- _idleFacing = getWalkFacing(v10 / abs(v10), v11 / abs(v11));
+ int dirX = _vm->_leftClickMouseX - (_vm->_gridMinX + 75 * _pos.x);
+ int dirY = _vm->_leftClickMouseY - (_vm->_gridMinY + 48 * _pos.y);
+ if (dirX == 0)
+ dirX = 1;
+ if (dirY == 0)
+ dirY = 1;
+ _sequenceId = getWalkStopSequenceId(dirX / abs(dirX), dirY / abs(dirY));
+ _idleFacing = getWalkFacing(dirX / abs(dirX), dirY / abs(dirY));
}
_sequenceDatNum = datNum;
}
@@ -1271,7 +1268,6 @@ int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
- bool done = false;
_vm->_timers[1] = 60;
@@ -1289,17 +1285,16 @@ bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
if (animationIndex >= 0 && _vm->_gnap->_pos == Common::Point(_walkDestX, _walkDestY))
_vm->_gnap->walkStep();
- if (findPath1(_pos.x, _pos.y, 0))
- done = true;
+ bool done = findPath1(_pos.x, _pos.y, 0);
- if (!done && findPath2(_pos.x, _pos.y, 0))
- done = true;
+ if (!done)
+ done = findPath2(_pos.x, _pos.y, 0);
- if (!done && findPath3(_pos.x, _pos.y))
- done = true;
+ if (!done)
+ done = findPath3(_pos.x, _pos.y);
- if (!done && findPath4(_pos.x, _pos.y))
- done = true;
+ if (!done)
+ done = findPath4(_pos.x, _pos.y);
int platSequenceId = _sequenceId;
int platId = _id;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 0122a08..aa55e1d 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -410,20 +410,25 @@ void Scene10::updateAnimations() {
}
switch (_currCookSequenceId) {
- case 0x106: {
- // TODO: Refactor into a if + a switch
- int rnd = _vm->getRandom(7);
+ case 0x106:
if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
- else if (rnd == 0)
- _nextCookSequenceId = 0x104;
- else if (rnd == 1)
- _nextCookSequenceId = 0x103;
- else if (rnd == 2) {
- _nextCookSequenceId = 0x106;
- gameSys.insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
- } else
- _nextCookSequenceId = 0x106;
+ else {
+ int rnd = _vm->getRandom(7);
+ switch (rnd) {
+ case 0:
+ _nextCookSequenceId = 0x104;
+ break;
+ case 1:
+ _nextCookSequenceId = 0x103;
+ break;
+ case 2:
+ _nextCookSequenceId = 0x106;
+ gameSys.insertSequence(0x10D, 1, 0, 0, kSeqNone, 0, 0, 0);
+ break;
+ default:
+ _nextCookSequenceId = 0x106;
+ }
}
break;
case 0x103:
@@ -442,17 +447,22 @@ void Scene10::updateAnimations() {
else
_nextCookSequenceId = 0x106;
break;
- case 0x105: {
- // TODO: Refactor into a if + a switch
- int rnd = _vm->getRandom(7);
+ case 0x105:
if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
- else if (rnd == 0)
- _nextCookSequenceId = 0x104;
- else if (rnd == 1)
- _nextCookSequenceId = 0x103;
- else
- _nextCookSequenceId = 0x106;
+ else {
+ int rnd = _vm->getRandom(7);
+ switch (rnd) {
+ case 0:
+ _nextCookSequenceId = 0x104;
+ break;
+ case 1:
+ _nextCookSequenceId = 0x103;
+ break;
+ default:
+ _nextCookSequenceId = 0x106;
+ }
+ }
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = 300;
gameSys.insertSequence(0x10C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
@@ -461,7 +471,6 @@ void Scene10::updateAnimations() {
_vm->_gnap->_sequenceDatNum = 0;
_vm->_gnap->_actionStatus = -1;
_vm->_plat->_actionStatus = -1;
- }
break;
}
if (_currCookSequenceId == 0x843)
Commit: fdabbcc16ab90b47a14eda8c168ab206a92780f1
https://github.com/scummvm/scummvm/commit/fdabbcc16ab90b47a14eda8c168ab206a92780f1
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:55+02:00
Commit Message:
GNAP: Reduce dereferencing of _gnap
Changed paths:
engines/gnap/character.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group5.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 114c2f4..3d74d1e 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1208,7 +1208,9 @@ void PlayerPlat::updateIdleSequence() {
}
void PlayerPlat::updateIdleSequence2() {
- if (_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
+ PlayerGnap& gnap = *_vm->_gnap;
+
+ if (_actionStatus < 0 && gnap._actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
@@ -1268,6 +1270,7 @@ int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
int datNum = flags & 3;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->_timers[1] = 60;
@@ -1282,8 +1285,8 @@ bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
_walkDestX = CLIP(gridX, 0, _vm->_gridMaxX - 1);
_walkDestY = CLIP(gridY, 0, _vm->_gridMaxY - 1);
- if (animationIndex >= 0 && _vm->_gnap->_pos == Common::Point(_walkDestX, _walkDestY))
- _vm->_gnap->walkStep();
+ if (animationIndex >= 0 && gnap._pos == Common::Point(_walkDestX, _walkDestY))
+ gnap.walkStep();
bool done = findPath1(_pos.x, _pos.y, 0);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 982cfca..f5e8307 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -72,6 +72,7 @@ void Scene01::run() {
// NOTE Removed _s01_dword_474380 which was set when the mud was taken
// which is also set in the global game flags.
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -90,15 +91,15 @@ void Scene01::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 2) {
- _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
- _vm->_gnap->initPos(1, 6, kDirBottomRight);
+ gnap.initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
@@ -115,35 +116,35 @@ void Scene01::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS01Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS01Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -151,20 +152,20 @@ void Scene01::run() {
break;
case kHS01Spaceship:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS01LookSpaceship;
+ gnap._idleFacing = kDirUpLeft;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -172,21 +173,21 @@ void Scene01::run() {
break;
case kHS01Mud:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 3);
+ gnap.playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01TakeMud;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
+ gnap._actionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -194,28 +195,28 @@ void Scene01::run() {
break;
case kHS01Pigs:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01LookPigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01UsePigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS01LookPigs;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
+ gnap._actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -223,10 +224,10 @@ void Scene01::run() {
break;
case kHS01ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS01LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
@@ -241,13 +242,13 @@ void Scene01::run() {
case kHS01WalkArea6:
case kHS01WalkArea7:
case kHS01WalkArea8:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -262,8 +263,8 @@ void Scene01::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (_vm->_timers[4] == 0) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -288,23 +289,24 @@ void Scene01::run() {
void Scene01::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS01LookSpaceship:
_spaceshipSurface = gameSys.createSurface(47);
gameSys.insertSpriteDrawItem(_spaceshipSurface, 0, 0, 255);
gameSys.setAnimation(133, 256, 0);
gameSys.insertSequence(133, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS01LookSpaceshipDone;
+ gnap._actionStatus = kAS01LookSpaceshipDone;
break;
case kAS01LookSpaceshipDone:
gameSys.removeSequence(133, 256, true);
gameSys.removeSpriteDrawItem(_spaceshipSurface, 255);
_vm->deleteSurface(&_spaceshipSurface);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01LeaveScene:
@@ -312,25 +314,25 @@ void Scene01::updateAnimations() {
break;
case kAS01TakeMud:
- _vm->_gnap->playPullOutDevice(2, 3);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(2, 3);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01LookPigs:
_vm->playSound(0x8A, false);
_vm->playSound(0x8B, false);
_vm->playSound(0x8C, false);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS01UsePigs:
- _vm->_gnap->playPullOutDevice(7, 2);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(7, 2);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -396,6 +398,7 @@ void Scene02::updateHotspots() {
void Scene02::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -412,20 +415,20 @@ void Scene02::run() {
switch (_vm->_prevSceneNum) {
case 3:
- _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
- _vm->_gnap->initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
+ gnap.initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(8, 6), 1, 0x107C2, 1);
updateHotspots();
@@ -433,24 +436,24 @@ void Scene02::run() {
break;
case 47:
_vm->clearFlag(kGFUnk25);
- _vm->_gnap->initPos(5, 6, kDirBottomLeft);
+ gnap.initPos(5, 6, kDirBottomLeft);
_vm->_plat->initPos(6, 7, kDirUnk4);
_vm->endSceneInit();
break;
case 49:
- _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ gnap.initPos(5, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(6, 7, kDirNone);
_vm->endSceneInit();
break;
default:
- _vm->_gnap->initPos(-1, 6, kDirBottomRight);
+ gnap.initPos(-1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -465,35 +468,35 @@ void Scene02::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS02Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS02Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -501,33 +504,33 @@ void Scene02::run() {
break;
case kHS02Chicken:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap._idleFacing = kDirUpRight;
Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
- _vm->_gnap->walkTo(destPos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02UseTwigWithChicken;
+ gnap.walkTo(destPos, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(9, 8);
+ gnap.playMoan2(9, 8);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02GrabChicken;
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS02GrabChicken;
else
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02TalkChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -536,45 +539,45 @@ void Scene02::run() {
case kHS02Truck1:
case kHS02Truck2:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemKeys) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnap->_actionStatus = kAS02UseTruckGas;
+ gnap._actionStatus = kAS02UseTruckGas;
else
- _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
+ gnap._actionStatus = kAS02UseTruckNoGas;
}
} else if (_vm->_grabCursorSpriteIndex == kItemGas) {
_vm->_hotspots[kHS02WalkArea4]._flags |= SF_WALKABLE;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02UseGasWithTruck;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ gnap._actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 2);
+ gnap.playScratchingHead(2, 2);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
if (_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnap->_actionStatus = kAS02UseTruckGas;
+ gnap._actionStatus = kAS02UseTruckGas;
else
- _vm->_gnap->_actionStatus = kAS02UseTruckNoGas;
+ gnap._actionStatus = kAS02UseTruckNoGas;
}
} else {
- _vm->_gnap->_idleFacing = kDirUnk4;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS02UseTruckNoKeys;
+ gnap._idleFacing = kDirUnk4;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ gnap._actionStatus = kAS02UseTruckNoKeys;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -582,22 +585,22 @@ void Scene02::run() {
break;
case kHS02TruckGrill:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 4);
+ gnap.playMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS02GrabTruckGrill;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -605,10 +608,10 @@ void Scene02::run() {
break;
case kHS02ExitHouse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
@@ -617,10 +620,10 @@ void Scene02::run() {
break;
case kHS02ExitBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
@@ -629,10 +632,10 @@ void Scene02::run() {
break;
case kHS02ExitCreek:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
@@ -640,10 +643,10 @@ void Scene02::run() {
break;
case kHS02ExitPigpen:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS02LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
@@ -654,13 +657,13 @@ void Scene02::run() {
case kHS02WalkArea2:
case kHS02WalkArea3:
case kHS02WalkArea4:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -674,8 +677,8 @@ void Scene02::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
@@ -684,7 +687,7 @@ void Scene02::run() {
else
gameSys.insertSequence(0x154, 256, 0, 0, kSeqNone, 0, 0, 0);
}
- if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && _vm->_gnap->_actionStatus != 7 && _vm->_gnap->_actionStatus != 8) {
+ if (!_vm->_timers[5] && _nextChickenSequenceId == -1 && gnap._actionStatus != 7 && gnap._actionStatus != 8) {
if (_vm->getRandom(6) != 0) {
_nextChickenSequenceId = 0x14B;
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -710,25 +713,26 @@ void Scene02::run() {
void Scene02::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS02UseTruckNoKeys:
- gameSys.insertSequence(0x14E, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x14E, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x14E;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS02UseTruckNoKeysDone;
+ gameSys.insertSequence(0x14E, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x14E, gnap._id, 0);
+ gnap._sequenceId = 0x14E;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS02UseTruckNoKeysDone;
break;
case kAS02UseGasWithTruck:
- gameSys.insertSequence(0x151, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x151, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x151;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x151, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x151, gnap._id, 0);
+ gnap._sequenceId = 0x151;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemGas);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFTruckFilledWithGas);
- _vm->_gnap->_actionStatus = kAS02UseGasWithTruckDone;
+ gnap._actionStatus = kAS02UseGasWithTruckDone;
break;
case kAS02UseTruckGas:
_vm->_timers[5] = 9999;
@@ -736,11 +740,11 @@ void Scene02::updateAnimations() {
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnap->_sequenceId = 0x14F;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x14F;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -752,11 +756,11 @@ void Scene02::updateAnimations() {
_vm->setGrabCursorSprite(-1);
_vm->_timers[4] = 250;
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- gameSys.insertSequence(0x14F, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x14F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.waitForUpdate();
_vm->setFlag(kGFTruckKeysUsed);
- _vm->_gnap->_sequenceId = 0x14F;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x14F;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemKeys);
_vm->setGrabCursorSprite(-1);
}
@@ -777,11 +781,11 @@ void Scene02::updateAnimations() {
break;
}
_truckGrillCtr = (_truckGrillCtr + 1) % 3;
- gameSys.insertSequence(_gnapTruckSequenceId, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(_gnapTruckSequenceId, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = _gnapTruckSequenceId;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(_gnapTruckSequenceId, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(_gnapTruckSequenceId, gnap._id, 0);
+ gnap._sequenceId = _gnapTruckSequenceId;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS02LeaveScene:
_vm->_sceneDone = true;
@@ -794,26 +798,26 @@ void Scene02::updateAnimations() {
_vm->_timers[2] = 100;
break;
case kAS02GrabChickenDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 0x150, 179, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, gnap._id, 0x150, 179, kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
_currChickenSequenceId = 0x14B;
gameSys.setAnimation(0x14B, 179, 2);
gameSys.insertSequence(_currChickenSequenceId, 179, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->_timers[5] = 30;
break;
case kAS02UseTwigWithChicken:
- _vm->_gnap->playShowItem(5, 0, 0);
+ gnap.playShowItem(5, 0, 0);
gameSys.insertSequence(0x155, 179, _currChickenSequenceId, 179, kSeqSyncExists, 0, 0, 0);
_currChickenSequenceId = 0x155;
_nextChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS02UseTruckNoKeysDone:
case kAS02UseGasWithTruckDone:
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -821,18 +825,18 @@ void Scene02::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextChickenSequenceId == 0x150) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 0);
- gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextChickenSequenceId, 179, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(_currChickenSequenceId, 179, true);
_nextChickenSequenceId = -1;
_currChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = kAS02GrabChickenDone;
+ gnap._actionStatus = kAS02GrabChickenDone;
_vm->_timers[5] = 500;
} else if (_nextChickenSequenceId == 0x14C) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 179, 2);
gameSys.insertSequence(_nextChickenSequenceId, 179, _currChickenSequenceId, 179, kSeqSyncWait, 0, 0, 0);
@@ -885,6 +889,7 @@ void Scene03::updateHotspots() {
void Scene03::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10925, true);
_vm->startSoundTimerC(7);
@@ -893,7 +898,7 @@ void Scene03::run() {
gameSys.insertSequence(0x1CB, 251, 0, 0, kSeqLoop, 0, 0, 0);
_platypusHypnotized = false;
- _vm->_gnap->initPos(3, 4, kDirBottomRight);
+ gnap.initPos(3, 4, kDirBottomRight);
gameSys.insertSequence(0x1C6, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -926,7 +931,7 @@ void Scene03::run() {
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(4, 7), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -937,28 +942,28 @@ void Scene03::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS03Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -966,26 +971,26 @@ void Scene03::run() {
break;
case kHS03Grass:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(9, 6);
+ gnap.playScratchingHead(9, 6);
break;
case GRAB_CURSOR:
- _vm->_gnap->playPullOutDevice(9, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(9, 6);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1B3, 253, 5);
_vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -993,11 +998,11 @@ void Scene03::run() {
break;
case kHS03ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS03LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1009,25 +1014,25 @@ void Scene03::run() {
break;
case kHS03Creek:
- if (_vm->_gnap->_actionStatus == -1) {
+ if (gnap._actionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 8);
+ gnap.playMoan2(2, 8);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS03GrabCreek;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
+ gnap._actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1035,42 +1040,42 @@ void Scene03::run() {
break;
case kHS03TrappedPlatypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 4);
+ gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
- _vm->_gnap->_actionStatus = kAS03FreePlatypus;
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
+ gnap._actionStatus = kAS03FreePlatypus;
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
+ gnap._actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
+ gnap._actionStatus = kAS03GrabPlatypus;
}
break;
case TALK_CURSOR:
if (_platypusHypnotized) {
- _vm->_gnap->playBrainPulsating(8, 4);
+ gnap.playBrainPulsating(8, 4);
} else {
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03HypnotizeScaredPlat;
+ gnap._actionStatus = kAS03HypnotizeScaredPlat;
else
- _vm->_gnap->_actionStatus = kAS03HypnotizePlat;
+ gnap._actionStatus = kAS03HypnotizePlat;
}
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1078,7 +1083,7 @@ void Scene03::run() {
break;
case kHS03Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1087,27 +1092,27 @@ void Scene03::run() {
case kHS03WalkAreas1:
case kHS03WalkAreas2:
case kHS03WalkAreas3:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS03PlatypusWalkArea:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus) || _platypusHypnotized) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107B5, 1);
if (_platypusScared)
- _vm->_gnap->_actionStatus = kAS03GrabScaredPlatypus;
+ gnap._actionStatus = kAS03GrabScaredPlatypus;
else
- _vm->_gnap->_actionStatus = kAS03GrabPlatypus;
+ gnap._actionStatus = kAS03GrabPlatypus;
}
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1122,16 +1127,16 @@ void Scene03::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
_nextPlatSequenceId = 450;
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 30;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
if (_vm->getRandom(5) == 1)
_nextFrogSequenceId = 0x1C6;
else
@@ -1141,12 +1146,12 @@ void Scene03::run() {
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
gameSys.insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 200;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
gameSys.setAnimation(0x1C5, 253, 4);
gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -1171,10 +1176,11 @@ void Scene03::run() {
void Scene03::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS03LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1182,7 +1188,7 @@ void Scene03::updateAnimations() {
_nextPlatSequenceId = 0x1BC;
break;
case kAS03FreePlatypusDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->_plat->_pos = Common::Point(6, 6);
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_plat->_id = 120;
@@ -1196,7 +1202,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizePlat:
- _vm->_gnap->playBrainPulsating(0, 0);
+ gnap.playBrainPulsating(0, 0);
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
@@ -1207,12 +1213,12 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_sequenceId = 0x1BA;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
- _vm->_gnap->playBrainPulsating(0, 0);
+ gnap.playBrainPulsating(0, 0);
gameSys.insertSequence(0x1BF, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
@@ -1227,7 +1233,7 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_sequenceId = 0x1BA;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
@@ -1240,14 +1246,14 @@ void Scene03::updateAnimations() {
_platypusHypnotized = false;
break;
case kAS03GrabCreek:
- gameSys.insertSequence(0x1B4, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x1B4, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x1B4;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS03GrabCreekDone;
+ gameSys.insertSequence(0x1B4, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x1B4, gnap._id, 0);
+ gnap._sequenceId = 0x1B4;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS03GrabCreekDone;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -1256,26 +1262,26 @@ void Scene03::updateAnimations() {
if (_nextPlatSequenceId == 0x1BD || _nextPlatSequenceId == 0x1C0) {
gameSys.setAnimation(0, 0, 1);
_platypusScared = true;
- gameSys.insertSequence(0x1B5, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1B5, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x1B5;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirNone;
+ gnap._sequenceId = 0x1B5;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirNone;
_vm->_plat->_sequenceId = _nextPlatSequenceId;
_vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
- _vm->_gnap->_pos = Common::Point(3, 6);
- gameSys.insertSequence(0x1B6, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gnap._pos = Common::Point(3, 6);
+ gameSys.insertSequence(0x1B6, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1BC, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1BC, 99, 0);
- _vm->_gnap->_id = 20 * _vm->_gnap->_pos.y;
- _vm->_gnap->_sequenceId = 0x1B6;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirNone;
- _vm->_gnap->_actionStatus = kAS03FreePlatypusDone;
+ gnap._id = 20 * gnap._pos.y;
+ gnap._sequenceId = 0x1B6;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirNone;
+ gnap._actionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
gameSys.setAnimation(0, 0, 1);
@@ -1351,6 +1357,7 @@ void Scene04::updateHotspots() {
void Scene04::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(4);
@@ -1379,11 +1386,11 @@ void Scene04::run() {
_vm->_timers[3] = 300;
// TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
- _vm->_gnap->_pos = Common::Point(4, 7);
- _vm->_gnap->_id = 140;
+ gnap._pos = Common::Point(4, 7);
+ gnap._id = 140;
_vm->_plat->_pos = Common::Point(6, 7);
_vm->_plat->_id = 141;
- gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - gnap._gridX, 336 - gnap._gridY);
gameSys.insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x209, 121, 0x208, 121, kSeqSyncWait, 0, 0, 0);
@@ -1395,31 +1402,31 @@ void Scene04::run() {
_vm->_plat->_sequenceId = 0x20C;
_vm->_plat->_sequenceDatNum = 0;
_vm->_plat->_idleFacing = kDirBottomRight;
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
gameSys.waitForUpdate();
} else {
gameSys.insertSequence(0x209, 121, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 2) {
- _vm->_gnap->initPos(5, 11, kDirUpRight);
+ gnap.initPos(5, 11, kDirUpRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
- _vm->_gnap->initPos(5, 7, kDirBottomRight);
+ gnap.initPos(5, 7, kDirBottomRight);
_vm->_plat->initPos(4, 7, kDirNone);
_vm->endSceneInit();
} else {
- _vm->_gnap->initPos(12, 9, kDirBottomRight);
+ gnap.initPos(12, 9, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -1434,38 +1441,38 @@ void Scene04::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS04Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS04Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
else
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1473,23 +1480,23 @@ void Scene04::run() {
break;
case kHS04Twig:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 9, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
break;
case GRAB_CURSOR:
- _vm->_gnap->playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
- _vm->_gnap->playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1FD, 100, 2);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1497,24 +1504,24 @@ void Scene04::run() {
break;
case kHS04Axe:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS04GrabAxe;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1522,31 +1529,31 @@ void Scene04::run() {
break;
case kHS04Dog:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
+ gnap.playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20F;
}
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS04GrabDog;
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1)) {
- _vm->_gnap->playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
+ gnap.playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
_nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1554,30 +1561,30 @@ void Scene04::run() {
break;
case kHS04Door:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playScratchingHead(4, 3);
+ gnap.playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS04OpenDoor;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS04OpenDoor;
_vm->_timers[5] = 300;
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
} else {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS04LeaveScene;
_vm->_newSceneNum = 38;
}
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1585,10 +1592,10 @@ void Scene04::run() {
break;
case kHS04ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -1599,29 +1606,29 @@ void Scene04::run() {
break;
case kHS04Window:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[7], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, gnap.getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
if (_triedWindow) {
- _vm->_gnap->_actionStatus = kAS04GetKeyAnother;
+ gnap._actionStatus = kAS04GetKeyAnother;
} else {
- _vm->_gnap->_actionStatus = kAS04GetKeyFirst;
+ gnap._actionStatus = kAS04GetKeyFirst;
_triedWindow = true;
}
}
break;
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1629,10 +1636,10 @@ void Scene04::run() {
break;
case kHS04ExitBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS04LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
@@ -1644,13 +1651,13 @@ void Scene04::run() {
case kHS04WalkArea1:
case kHS04WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1665,11 +1672,11 @@ void Scene04::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence2();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence2();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(150) + 300;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
gameSys.insertSequence(0x20D, 79, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
@@ -1702,95 +1709,96 @@ void Scene04::run() {
void Scene04::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS04LeaveScene:
_vm->_sceneDone = true;
break;
case kAS04OpenDoor:
- gameSys.insertSequence(0x205, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x205, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x207, 121, 521, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_pos = Common::Point(6, 7);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - _vm->_gnap->_gridX, 336 - _vm->_gnap->_gridY);
- gameSys.setAnimation(0x107B5, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_actionStatus = kAS04OpenDoorDone;
+ gnap._pos = Common::Point(6, 7);
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x205) - 1, 450 - gnap._gridX, 336 - gnap._gridY);
+ gameSys.setAnimation(0x107B5, gnap._id, 0);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._actionStatus = kAS04OpenDoorDone;
break;
case kAS04OpenDoorDone:
gameSys.insertSequence(0x209, 121, 0x207, 121, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS04GetKeyFirst:
- gameSys.insertSequence(0x204, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x204, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x204;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyFirst2;
+ gameSys.insertSequence(0x204, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x204, gnap._id, 0);
+ gnap._sequenceId = 0x204;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyFirst2;
break;
case kAS04GetKeyFirst2:
- gameSys.insertSequence(0x206, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x206, 255, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20B, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20B, 256, 0);
- _vm->_gnap->_sequenceId = 0x206;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyFirstDone;
+ gnap._sequenceId = 0x206;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyFirstDone;
break;
case kAS04GetKeyFirstDone:
gameSys.requestRemoveSequence(0x1FF, 256);
gameSys.requestRemoveSequence(0x20B, 256);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), 255,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._idleFacing = kDirBottomRight;
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._actionStatus = -1;
break;
case kAS04GetKeyAnother:
- gameSys.insertSequence(0x202, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0x202, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceId = 0x202;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyAnother2;
+ gameSys.insertSequence(0x202, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x202, gnap._id, 0);
+ gnap._sequenceId = 0x202;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyAnother2;
break;
case kAS04GetKeyAnother2:
- gameSys.insertSequence(0x203, 255, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x203, 255, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x1FF, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x20A, 256, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(0x20A, 256, 0);
- _vm->_gnap->_sequenceId = 0x203;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS04GetKeyAnotherDone;
+ gnap._sequenceId = 0x203;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS04GetKeyAnotherDone;
break;
case kAS04GetKeyAnotherDone:
gameSys.removeSequence(0x1FF, 256, true);
gameSys.removeSequence(0x20A, 256, true);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), 255,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x107B5, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), 255,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
+ gnap._idleFacing = kDirBottomRight;
+ gnap._actionStatus = -1;
break;
case kAS04GrabDog:
_nextDogSequenceId = 0x201;
break;
case kAS04GrabAxe:
- gameSys.insertSequence(0x211, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x211, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.requestRemoveSequence(0x212, 100);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x211;
- _vm->_gnap->_actionStatus = -1;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x211;
+ gnap._actionStatus = -1;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -1808,13 +1816,13 @@ void Scene04::updateAnimations() {
gameSys.insertSequence(_nextDogSequenceId, 139 - _dogIdCtr,
_currDogSequenceId, 139 - (_dogIdCtr + 1) % 2,
kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x200, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x200, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextDogSequenceId, 139 - _dogIdCtr, 3);
_dogIdCtr = (_dogIdCtr + 1) % 2;
_currDogSequenceId = 0x201;
- _vm->_gnap->_sequenceId = 0x200;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gnap._sequenceId = 0x200;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
_vm->_timers[6] = _vm->getRandom(20) + 60;
_nextDogSequenceId = -1;
} else if (_nextDogSequenceId != -1) {
@@ -1865,6 +1873,7 @@ void Scene05::updateHotspots() {
void Scene05::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
@@ -1884,15 +1893,15 @@ void Scene05::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
- _vm->_gnap->initPos(6, 8, kDirBottomRight);
+ gnap.initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->initPos(7, 9, kDirNone);
_vm->endSceneInit();
@@ -1909,35 +1918,35 @@ void Scene05::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS05Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS05Platypus:
- if (_vm->_gnap->_actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
+ if (gnap._actionStatus < 0 && _vm->isFlag(kGFPlatypus)) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1945,30 +1954,30 @@ void Scene05::run() {
break;
case kHS05Haystack:
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
if (_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
_vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
_vm->_plat->_idleFacing = kDirUnk4;
}
- if (_vm->_gnap->_pos.x == 4 && (_vm->_gnap->_pos.y == 8 || _vm->_gnap->_pos.y == 7))
- _vm->_gnap->walkStep();
- _vm->_gnap->playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ if (gnap._pos.x == 4 && (gnap._pos.y == 8 || gnap._pos.y == 7))
+ gnap.walkStep();
+ gnap.playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
}
break;
}
@@ -1977,31 +1986,31 @@ void Scene05::run() {
break;
case kHS05Chicken:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap._idleFacing = kDirUpRight;
Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
- _vm->_gnap->walkTo(checkPt, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05UseTwigWithChicken;
+ gnap.walkTo(checkPt, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0)
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(9, 7);
+ gnap.playMoan2(9, 7);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05GrabChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05TalkChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2009,22 +2018,22 @@ void Scene05::run() {
break;
case kHS05Ladder:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(2, 4);
+ gnap.playMoan2(2, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05GrabLadder;
+ gnap._idleFacing = kDirBottomLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2035,32 +2044,32 @@ void Scene05::run() {
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_isLeavingScene = true;
Common::Point destPt = _vm->_hotspotsWalkPos[2] + Common::Point(- 1, 1);
- _vm->_gnap->walkTo(destPt, 0, -1, 1);
- _vm->_gnap->_actionStatus = kAS05EnterBarn;
+ gnap.walkTo(destPt, 0, -1, 1);
+ gnap._actionStatus = kAS05EnterBarn;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 6;
else
_vm->_newSceneNum = 36;
- } else if (_vm->_gnap->_actionStatus < 0) {
+ } else if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0,
- _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS05PickPadlock;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0,
+ gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
+ gnap._actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 4);
+ gnap.playScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS05TryPickPadlock;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2068,10 +2077,10 @@ void Scene05::run() {
break;
case kHS05ExitHouse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
@@ -2083,8 +2092,8 @@ void Scene05::run() {
case kHS05WalkArea1:
case kHS05WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS05WalkArea3:
@@ -2092,8 +2101,8 @@ void Scene05::run() {
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2108,10 +2117,10 @@ void Scene05::run() {
if (!_vm->_isLeavingScene) {
if (_vm->isFlag(kGFPlatypus))
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
- if (_vm->_gnap->_actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
+ if (gnap._actionStatus != kAS05TalkChicken && _nextChickenSequenceId == -1) {
if (_vm->getRandom(4) != 0)
_nextChickenSequenceId = 0x142;
else
@@ -2120,7 +2129,7 @@ void Scene05::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(150) + 300;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
gameSys.insertSequence(0x149, 39, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundC();
@@ -2141,36 +2150,37 @@ void Scene05::run() {
void Scene05::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS05LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05TryPickPadlock:
- gameSys.insertSequence(0x148, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x148;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x148, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x148;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS05PickPadlock:
- gameSys.setAnimation(0x147, _vm->_gnap->_id, 0);
- gameSys.insertSequence(0x147, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x147;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.setAnimation(0x147, gnap._id, 0);
+ gameSys.insertSequence(0x147, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x147;
+ gnap._sequenceDatNum = 0;
_vm->setFlag(kGFBarnPadlockOpen);
_vm->setFlag(kGFSceneFlag1);
_vm->setGrabCursorSprite(-1);
_vm->_newSceneNum = 6;
_vm->_timers[2] = 100;
_vm->invRemove(kItemNeedle);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap._actionStatus = kAS05LeaveScene;
break;
case kAS05TalkChicken:
_nextChickenSequenceId = 0x144;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05GrabChicken:
_nextChickenSequenceId = 0x14B;
@@ -2178,25 +2188,25 @@ void Scene05::updateAnimations() {
case kAS05GrabLadder:
while (gameSys.isSequenceActive(0x149, 39))
_vm->gameUpdateTick();
- gameSys.insertSequence(0x14E, _vm->_gnap->_id + 1, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x14D;
- _vm->_gnap->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x14E, gnap._id + 1, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x14D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x14D;
+ gnap._sequenceDatNum = 0;
_vm->_timers[2] = 200;
_vm->_timers[6] = 300;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS05EnterBarn:
gameSys.insertSequence(0x107B1, 1,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
gameSys.setAnimation(0x107B1, 1, 0);
- _vm->_gnap->_actionStatus = kAS05LeaveScene;
+ gnap._actionStatus = kAS05LeaveScene;
break;
case kAS05UseTwigWithChicken:
- _vm->_gnap->playShowItem(5, 0, 0);
+ gnap.playShowItem(5, 0, 0);
_nextChickenSequenceId = 0x14F;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -2232,12 +2242,12 @@ void Scene05::updateAnimations() {
if (_nextChickenSequenceId == 0x14B) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x14C, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x14C;
+ gameSys.insertSequence(0x14C, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x14C;
_currChickenSequenceId = _nextChickenSequenceId;
_nextChickenSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextChickenSequenceId != -1) {
gameSys.setAnimation(_nextChickenSequenceId, 100, 3);
gameSys.insertSequence(_nextChickenSequenceId, 100, _currChickenSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -2292,6 +2302,7 @@ void Scene06::updateHotspots() {
void Scene06::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
bool triedDeviceOnGas = false;
_vm->startSoundTimerC(7);
@@ -2315,12 +2326,12 @@ void Scene06::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gnap->initPos(5, 12, kDirBottomRight);
+ gnap.initPos(5, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -2333,35 +2344,35 @@ void Scene06::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS06Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS06Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
- _vm->_gnap->useDisguiseOnPlatypus();
+ gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2369,33 +2380,33 @@ void Scene06::run() {
break;
case kHS06Gas:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(5, 0);
+ gnap.playScratchingHead(5, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk04)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS06TryToGetGas;
+ gnap._actionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
- _vm->_gnap->playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk04))
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
else
- _vm->_gnap->playScratchingHead(5, 0);
+ gnap.playScratchingHead(5, 0);
break;
}
}
@@ -2403,26 +2414,26 @@ void Scene06::run() {
break;
case kHS06Ladder:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 4);
+ gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFGasTaken))
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS06TryToClimbLadder;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
+ gnap._actionStatus = kAS06TryToClimbLadder;
_vm->setFlag(kGFGasTaken);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2430,37 +2441,37 @@ void Scene06::run() {
break;
case kHS06Horse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig && _horseTurnedBack) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
_vm->_plat->walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->_actionStatus = kAS06UseTwigOnHorse;
+ gnap._actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 2);
+ gnap.playScratchingHead(3, 2);
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
} else {
- _vm->_gnap->_idleFacing = kDirBottomLeft;
+ gnap._idleFacing = kDirBottomLeft;
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS06TalkToHorse;
+ gnap._actionStatus = kAS06TalkToHorse;
}
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2468,10 +2479,10 @@ void Scene06::run() {
break;
case kHS06ExitOutsideBarn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS06LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS06LeaveScene;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -2484,13 +2495,13 @@ void Scene06::run() {
case kHS06WalkArea3:
case kHS06WalkArea4:
case kHS06WalkArea5:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2502,11 +2513,11 @@ void Scene06::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
if (_horseTurnedBack) {
_nextHorseSequenceId = 0xF5;
} else {
@@ -2543,31 +2554,32 @@ void Scene06::run() {
void Scene06::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS06LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS06TryToGetGas:
- gameSys.insertSequence(0xFC, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0xFC;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0xFC, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0xFC;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS06TryToClimbLadder:
gameSys.insertSequence(0xFF, 20, 0xFE, 20, kSeqSyncWait, 0, 0, 0);
- gameSys.setAnimation(0xFD, _vm->_gnap->_id, 0);
- gameSys.insertSequence(0xFD, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0xFD;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = kAS06TryToClimbLadderDone;
+ gameSys.setAnimation(0xFD, gnap._id, 0);
+ gameSys.insertSequence(0xFD, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0xFD;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS06TryToClimbLadderDone;
break;
case kAS06TryToClimbLadderDone:
- _vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnap->_actionStatus = -1;
+ gnap._pos = Common::Point(6, 7);
+ gnap._actionStatus = -1;
break;
case kAS06TalkToHorse:
_nextHorseSequenceId = 0xF6;
@@ -2576,7 +2588,7 @@ void Scene06::updateAnimations() {
_nextPlatSequenceId = 0xFB;
break;
default:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -2595,7 +2607,7 @@ void Scene06::updateAnimations() {
_vm->_plat->_sequenceId = 0x7C1;
_vm->_plat->_sequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->showCursor();
}
if (_nextPlatSequenceId == 0xFB) {
@@ -2612,16 +2624,16 @@ void Scene06::updateAnimations() {
_vm->hideCursor();
gameSys.setAnimation(0xFA, 256, 1);
gameSys.insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x100, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x100, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xFB, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xFA, 256, 0xFB, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
_vm->_plat->_sequenceId = 0xFA;
_vm->_plat->_sequenceDatNum = 0;
- gameSys.insertSequence(0x107B7, _vm->_gnap->_id, 0x100, _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B7;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x107B7, gnap._id, 0x100, gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B7;
+ gnap._sequenceDatNum = 1;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
_nextPlatSequenceId = -1;
@@ -2633,7 +2645,7 @@ void Scene06::updateAnimations() {
_horseTurnedBack = true;
_currHorseSequenceId = _nextHorseSequenceId;
_nextHorseSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
default:
gameSys.setAnimation(_nextHorseSequenceId, 120, 2);
@@ -2669,6 +2681,7 @@ void Scene07::updateHotspots() {
void Scene07::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
@@ -2681,18 +2694,18 @@ void Scene07::run() {
gameSys.insertSequence(0x8D, 1, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->_gnap->initPos(7, 7, kDirBottomLeft);
+ gnap.initPos(7, 7, kDirBottomLeft);
_vm->_plat->initPos(9, 7, kDirUnk4);
_vm->endSceneInit();
} else {
- _vm->_gnap->_pos = Common::Point(6, 7);
- _vm->_gnap->_id = 140;
- _vm->_gnap->_sequenceId = 0x8F;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap._pos = Common::Point(6, 7);
+ gnap._id = 140;
+ gnap._sequenceId = 0x8F;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirBottomRight;
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS07Wait;
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS07Wait;
_vm->_plat->_pos = Common::Point(3, 8);
_vm->_plat->_id = 160;
_vm->_plat->_sequenceId = 0x91;
@@ -2722,13 +2735,13 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -2738,16 +2751,16 @@ void Scene07::run() {
case kHS07ExitHouse:
_vm->_isLeavingScene = true;
- if (_vm->_gnap->_pos.x > 8)
- _vm->_gnap->walkTo(Common::Point(_vm->_gnap->_pos.x, 7), 0, 0x107AD, 1);
+ if (gnap._pos.x > 8)
+ gnap.walkTo(Common::Point(gnap._pos.x, 7), 0, 0x107AD, 1);
else
- _vm->_gnap->walkTo(Common::Point(8, 7), 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS07LeaveScene;
+ gnap.walkTo(Common::Point(8, 7), 0, 0x107AD, 1);
+ gnap._actionStatus = kAS07LeaveScene;
break;
case kHS07Dice:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 8, 3, 3);
+ gnap.playShowCurrItem(4, 8, 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2756,25 +2769,25 @@ void Scene07::run() {
_vm->setFlag(kGFPlatypus);
_vm->invAdd(kItemDice);
updateHotspots();
- _vm->_gnap->playPullOutDevice(3, 3);
+ gnap.playPullOutDevice(3, 3);
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = _vm->_gnap->getSequenceId(gskUseDevice, Common::Point(0, 0));
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(gnap.getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = gnap.getSequenceId(gskUseDevice, Common::Point(0, 0));
+ gnap._sequenceDatNum = 1;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
break;
case kHS07Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(40) + 50;
@@ -2783,7 +2796,7 @@ void Scene07::run() {
case kHS07WalkArea1:
case kHS07WalkArea2:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS07WalkArea3:
@@ -2792,7 +2805,7 @@ void Scene07::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2801,8 +2814,8 @@ void Scene07::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_gnap->updateIdleSequence();
- if (_vm->_plat->_actionStatus < 0 && _vm->_gnap->_actionStatus < 0) {
+ gnap.updateIdleSequence();
+ if (_vm->_plat->_actionStatus < 0 && gnap._actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
@@ -2856,16 +2869,17 @@ void Scene07::run() {
void Scene07::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS07LeaveScene:
_vm->_newSceneNum = 8;
_vm->_sceneDone = true;
break;
}
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2922,6 +2936,7 @@ void Scene08::updateAnimationsCb() {
void Scene08::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
@@ -2951,12 +2966,12 @@ void Scene08::run() {
if (!_vm->isFlag(kGFTruckKeysUsed))
gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -2975,7 +2990,7 @@ void Scene08::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS08Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(50) + 75;
@@ -2985,21 +3000,21 @@ void Scene08::run() {
case kH08SPlatypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->kissPlatypus(8);
+ gnap.actionIdle(0x14D);
+ gnap.kissPlatypus(8);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3010,49 +3025,49 @@ void Scene08::run() {
case kHS08ExitBackdoor:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS08LeaveScene;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
case kHS08ExitCrash:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS08LeaveScene;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS08LeaveScene;
_vm->_plat->walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
case kHS08Man:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(6, 6, 7, 0);
+ gnap.playShowCurrItem(6, 6, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS08LookMan;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS08LookMan;
+ gnap._idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(8, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS08TalkMan;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(8, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x14D);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithMan;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playIdle(6, 6);
+ gnap.playIdle(6, 6);
break;
}
}
@@ -3060,35 +3075,35 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 7, 5, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS08GrabDog;
+ gnap.playShowCurrItem(4, 7, 5, 0);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS08LookDog;
+ gnap.playScratchingHead(6, 0);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS08LookDog;
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS08GrabDog;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(4, 7), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS08GrabDog;
+ gnap._idleFacing = kDirUpRight;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS08TalkDog;
+ gnap._idleFacing = kDirUpRight;
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
_vm->setFlag(kGFSceneFlag1);
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x14D);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS08PlatWithDog;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playIdle(3, 7);
+ gnap.playIdle(3, 7);
break;
}
}
@@ -3096,25 +3111,25 @@ void Scene08::run() {
case kHS08Meat:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(6, 8, 5, 6);
+ gnap.playShowCurrItem(6, 8, 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 7);
+ gnap.playScratchingHead(6, 7);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(6, 7);
+ gnap.playScratchingHead(6, 7);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(6, 7);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(6, 7);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x149;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3122,25 +3137,25 @@ void Scene08::run() {
case kHS08Bone:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(2, 7, 3, 6);
+ gnap.playShowCurrItem(2, 7, 3, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 6);
+ gnap.playScratchingHead(3, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(3, 6);
+ gnap.playScratchingHead(3, 6);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(3, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(3, 6);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14A;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3148,25 +3163,25 @@ void Scene08::run() {
case kHS08Toy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(8, 7, 7, 6);
+ gnap.playShowCurrItem(8, 7, 7, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 6);
+ gnap.playScratchingHead(7, 6);
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- _vm->_gnap->playScratchingHead(7, 6);
+ gnap.playScratchingHead(7, 6);
} else {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->playPullOutDevice(7, 6);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.actionIdle(0x14D);
+ gnap.playPullOutDevice(7, 6);
+ gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14B;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3174,14 +3189,14 @@ void Scene08::run() {
case kHS08WalkArea1:
case kHS08WalkArea2:
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(-1, 6), -1, -1, 1);
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(-1, 6), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->actionIdle(0x14D);
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.actionIdle(0x14D);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3191,10 +3206,10 @@ void Scene08::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
(_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
@@ -3232,39 +3247,40 @@ void Scene08::run() {
void Scene08::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS08LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08TalkMan:
_nextManSequenceId = 0x13F;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08LookMan:
_nextManSequenceId = 0x140;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08LookDog:
_nextManSequenceId = 0x137;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08GrabDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS08TalkDog:
if (_currDogSequenceId == 0x135)
_nextDogSequenceId = 0x133;
else
_nextDogSequenceId = 0x13C;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -3332,8 +3348,8 @@ void Scene08::updateAnimations() {
_vm->_plat->_sequenceId = 0x148;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_plat->_sequenceDatNum = 0;
- if (_vm->_gnap->_pos == Common::Point(1, 8))
- _vm->_gnap->walkStep();
+ if (gnap._pos == Common::Point(1, 8))
+ gnap.walkStep();
} else if (_nextDogSequenceId != -1) {
gameSys.setAnimation(_nextDogSequenceId, 100, 3);
gameSys.insertSequence(_nextDogSequenceId, 100, _currDogSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -3343,11 +3359,11 @@ void Scene08::updateAnimations() {
if (_currDogSequenceId == 0x133) {
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- gameSys.insertSequence(0x14D, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x14D;
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x14D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x14D;
+ gnap._idleFacing = kDirUpRight;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
}
}
}
@@ -3376,6 +3392,7 @@ void Scene09::updateHotspots() {
void Scene09::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
@@ -3383,13 +3400,13 @@ void Scene09::run() {
gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 8) {
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
- _vm->_gnap->initPos(4, 7, kDirBottomRight);
+ gnap.initPos(4, 7, kDirBottomRight);
_vm->_plat->initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
@@ -3411,7 +3428,7 @@ void Scene09::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS09Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(150) + 50;
@@ -3422,13 +3439,13 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -3439,8 +3456,8 @@ void Scene09::run() {
case kHS09ExitKitchen:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 10;
- _vm->_gnap->walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
- _vm->_gnap->_actionStatus = kAS09LeaveScene;
+ gnap.walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
+ gnap._actionStatus = kAS09LeaveScene;
_vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
@@ -3448,27 +3465,27 @@ void Scene09::run() {
case kHS09ExitHouse:
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 8;
- _vm->_gnap->walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS09LeaveScene;
+ gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
+ gnap._actionStatus = kAS09LeaveScene;
_vm->_plat->walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
_vm->_plat->_idleFacing = kDirUnk4;
break;
case kHS09Trash:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(9, 6, 8, 0);
+ gnap.playShowCurrItem(9, 6, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 3);
+ gnap.playScratchingHead(8, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->_actionStatus = kAS09SearchTrash;
- _vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS09SearchTrash;
+ gnap.walkTo(Common::Point(9, 6), 0, 0x107BC, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3477,12 +3494,12 @@ void Scene09::run() {
case kHS09WalkArea1:
case kHS09WalkArea2:
case kHS09WalkArea3:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3490,9 +3507,9 @@ void Scene09::run() {
updateAnimations();
- if (!_vm->_isLeavingScene && _vm->_gnap->_actionStatus != 1 && _vm->_gnap->_actionStatus != 2) {
+ if (!_vm->_isLeavingScene && gnap._actionStatus != 1 && gnap._actionStatus != 2) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(150) + 100;
if (_vm->_timers[4] & 1)
@@ -3519,30 +3536,31 @@ void Scene09::run() {
void Scene09::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS09LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS09SearchTrash:
gameSys.setAnimation(0x4C, 120, 0);
- gameSys.insertSequence(0x4C, 120, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x4C, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x4B, 2, true);
- _vm->_gnap->_sequenceId = 0x4C;
- _vm->_gnap->_id = 120;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_pos = Common::Point(9, 6);
- _vm->_gnap->_actionStatus = kAS09SearchTrashDone;
+ gnap._sequenceId = 0x4C;
+ gnap._id = 120;
+ gnap._idleFacing = kDirUpLeft;
+ gnap._sequenceDatNum = 0;
+ gnap._pos = Common::Point(9, 6);
+ gnap._actionStatus = kAS09SearchTrashDone;
break;
case kAS09SearchTrashDone:
gameSys.insertSequence(0x4B, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[2] = 360;
_vm->_timers[4] = _vm->getRandom(150) + 100;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index aa55e1d..d8b2a3c 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -59,6 +59,7 @@ void Scene10::updateHotspots() {
void Scene10::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_currCookSequenceId = 0x103;
@@ -72,16 +73,16 @@ void Scene10::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 9) {
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
- _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ gnap.initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(1, 7), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(1, 7), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
@@ -107,20 +108,20 @@ void Scene10::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS10Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
else
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(10);
+ gnap.kissPlatypus(10);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -131,48 +132,48 @@ void Scene10::run() {
case kHS10ExitBar:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(0, 7), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS10LeaveScene;
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(0, 7), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS10LeaveScene;
_vm->_plat->walkTo(Common::Point(0, 7), -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
break;
case kHS10ExitBackdoor:
_vm->_isLeavingScene = true;
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(2, 9), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS10LeaveScene;
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(2, 9), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS10LeaveScene;
_vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
break;
case kHS10Cook:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 8, 6, 0);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap.playShowCurrItem(4, 8, 6, 0);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 0);
+ gnap.playScratchingHead(6, 0);
break;
case GRAB_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap.playImpossible(0, 0);
+ gnap._idleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap._idleFacing = kDirUpRight;
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(4, 8), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x10C);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(4, 6), -1, -1, 1);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS10AnnoyCook;
break;
}
}
@@ -180,36 +181,36 @@ void Scene10::run() {
case kHS10Tongs:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(3, 7, 4, 0);
+ gnap.playShowCurrItem(3, 7, 4, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->_gnap->playMoan2(-1, -1);
+ gnap.playMoan2(-1, -1);
else
- _vm->_gnap->playScratchingHead(4, 3);
+ gnap.playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->_gnap->playMoan2(-1, -1);
+ gnap.playMoan2(-1, -1);
else {
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS10AnnoyCook;
}
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->_gnap->playMoan2(-1, -1);
+ gnap.playMoan2(-1, -1);
else {
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x10C);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), -1, -1, 1);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS10AnnoyCook;
}
break;
}
@@ -218,33 +219,33 @@ void Scene10::run() {
case kHS10Box:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(7, 6, 6, 0);
+ gnap.playShowCurrItem(7, 6, 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 3);
+ gnap.playScratchingHead(7, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS10AnnoyCook;
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- _vm->_gnap->playMoan2(-1, -1);
+ gnap.playMoan2(-1, -1);
else {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.actionIdle(0x10C);
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS10PlatWithBox;
_vm->_plat->_idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
- _vm->_gnap->playIdle(7, 6);
+ gnap.playIdle(7, 6);
}
break;
}
@@ -253,26 +254,26 @@ void Scene10::run() {
case kHS10Oven:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(9, 6, 10, 0);
+ gnap.playShowCurrItem(9, 6, 10, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(10, 5)) | 0x10000);
+ gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(10, 5)) | 0x10000);
break;
case GRAB_CURSOR:
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(9, 6), 0, 0x107BB, 1);
- 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_pos = Common::Point(9, 6);
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(9, 6), 0, 0x107BB, 1);
+ gameSys.insertSequence(0x10E, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x10E;
+ gnap._id = 120;
+ gnap._idleFacing = kDirUpRight;
+ gnap._sequenceDatNum = 0;
+ gnap._pos = Common::Point(9, 6);
_vm->_timers[2] = 360;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -282,12 +283,12 @@ void Scene10::run() {
case kHS10WalkArea2:
case kHS10WalkArea3:
case kHS10WalkArea4:
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS10Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -295,8 +296,8 @@ void Scene10::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->actionIdle(0x10C);
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.actionIdle(0x10C);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -306,7 +307,7 @@ void Scene10::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(80) + 150;
_vm->playSound(0x12B, false);
@@ -342,10 +343,11 @@ void Scene10::run() {
void Scene10::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS10LeaveScene:
_vm->_sceneDone = true;
break;
@@ -400,8 +402,8 @@ void Scene10::updateAnimations() {
_vm->setGrabCursorSprite(kItemTongs);
if (_vm->_plat->_actionStatus == kAS10PlatWithBox)
_vm->_plat->_actionStatus = -1;
- if (_vm->_gnap->_pos == Common::Point(4, 8))
- _vm->_gnap->walkStep();
+ if (gnap._pos == Common::Point(4, 8))
+ gnap.walkStep();
break;
default:
gameSys.insertSequence(_nextCookSequenceId, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
@@ -411,7 +413,7 @@ void Scene10::updateAnimations() {
switch (_currCookSequenceId) {
case 0x106:
- if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else {
int rnd = _vm->getRandom(7);
@@ -432,7 +434,7 @@ void Scene10::updateAnimations() {
}
break;
case 0x103:
- if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x104;
@@ -440,7 +442,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
break;
case 0x104:
- if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x103;
@@ -448,7 +450,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
break;
case 0x105:
- if (_vm->_gnap->_actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
_nextCookSequenceId = 0x106;
else {
int rnd = _vm->getRandom(7);
@@ -465,11 +467,11 @@ void Scene10::updateAnimations() {
}
_vm->_timers[2] = _vm->getRandom(30) + 20;
_vm->_timers[3] = 300;
- 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_actionStatus = -1;
+ gameSys.insertSequence(0x10C, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x10C;
+ gnap._idleFacing = kDirUpRight;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
_vm->_plat->_actionStatus = -1;
break;
}
@@ -533,6 +535,8 @@ void Scene11::updateHotspots() {
void Scene11::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
+
bool flag = true;
_vm->_timers[7] = 50;
@@ -543,22 +547,22 @@ void Scene11::run() {
switch (_vm->_prevSceneNum) {
case 13:
- _vm->_gnap->initPos(8, 5, kDirBottomLeft);
+ gnap.initPos(8, 5, kDirBottomLeft);
_vm->_plat->initPos(9, 6, kDirUnk4);
break;
case 47:
- _vm->_gnap->initPos(8, 5, kDirBottomLeft);
+ gnap.initPos(8, 5, kDirBottomLeft);
_vm->_plat->initPos(9, 5, kDirUnk4);
_currGoggleGuySequenceId = 0x1FA;
_currHookGuySequenceId = 0x1FF;
_vm->_timers[7] = 180;
break;
case 12:
- _vm->_gnap->initPos(-1, 9, kDirBottomRight);
+ gnap.initPos(-1, 9, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
break;
default:
- _vm->_gnap->initPos(6, 6, kDirBottomLeft);
+ gnap.initPos(6, 6, kDirBottomLeft);
_vm->_plat->initPos(6, 5, kDirUnk4);
break;
}
@@ -582,7 +586,7 @@ void Scene11::run() {
_vm->endSceneInit();
if (_vm->_prevSceneNum == 12) {
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
@@ -600,17 +604,17 @@ void Scene11::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS11Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -621,49 +625,49 @@ void Scene11::run() {
case kHS11ExitKitchen:
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(6, 5), 0, 0x107BF, 1);
- _vm->_gnap->_actionStatus = kAS11LeaveScene;
+ gnap.walkTo(Common::Point(6, 5), 0, 0x107BF, 1);
+ gnap._actionStatus = kAS11LeaveScene;
_vm->_plat->walkTo(Common::Point(6, 6), -1, -1, 1);
_vm->_newSceneNum = 10;
break;
case kHS11ExitToilet:
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(8, 5), 0, 0x107BF, 1);
- _vm->_gnap->_actionStatus = kAS11LeaveScene;
+ gnap.walkTo(Common::Point(8, 5), 0, 0x107BF, 1);
+ gnap._actionStatus = kAS11LeaveScene;
_vm->_plat->walkTo(Common::Point(8, 6), -1, -1, 1);
_vm->_newSceneNum = 13;
break;
case kHS11ExitLeft:
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS11LeaveScene;
+ gnap.walkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS11LeaveScene;
_vm->_plat->walkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
break;
case kHS11GoggleGuy:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemMagazine) {
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS11ShowMagazineToGoggleGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS11ShowMagazineToGoggleGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(3, 7, 2, 0);
+ gnap.playShowCurrItem(3, 7, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 6);
+ gnap.playScratchingHead(1, 6);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS11TalkGoggleGuy;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS11TalkGoggleGuy;
break;
}
}
@@ -671,28 +675,28 @@ void Scene11::run() {
break;
case kHS11HookGuy:
- if (_vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->_idleFacing = kDirUpRight;
+ if (gnap._actionStatus < 0) {
+ gnap._idleFacing = kDirUpRight;
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 9);
- _vm->_gnap->_actionStatus = kAS11ShowItemToHookGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
+ gnap.walkTo(Common::Point(5, 6), 0, 0x107BC, 9);
+ gnap._actionStatus = kAS11ShowItemToHookGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 4, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(3, 6)) | 0x10000);
+ gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(3, 6)) | 0x10000);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS11GrabHookGuy;
+ gnap.walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS11GrabHookGuy;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnap->walkTo(Common::Point(5, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS11TalkHookGuy;
+ gnap._idleFacing = kDirBottomLeft;
+ gnap.walkTo(Common::Point(5, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -700,21 +704,21 @@ void Scene11::run() {
break;
case kHS11Billard:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(9, 8);
+ gnap.playImpossible(9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(9, 8);
+ gnap.playScratchingHead(9, 8);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(9, 8), 0, 0x107BA, 1);
- _vm->_gnap->_actionStatus = kAS11GrabBillardBall;
+ gnap.walkTo(Common::Point(9, 8), 0, 0x107BA, 1);
+ gnap._actionStatus = kAS11GrabBillardBall;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(9, 8);
+ gnap.playImpossible(9, 8);
break;
}
}
@@ -726,20 +730,20 @@ void Scene11::run() {
case kHS11WalkArea3:
case kHS11WalkArea4:
case kHS11WalkArea5:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS11Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -755,10 +759,10 @@ void Scene11::run() {
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->_plat->updateIdleSequence2();
- _vm->_gnap->updateIdleSequence2();
+ gnap.updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
if (_vm->getRandom(2))
_nextGoggleGuySequenceId = 0x1F6;
else
@@ -767,7 +771,7 @@ void Scene11::run() {
}
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHookGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHookGuySequenceId == -1) {
if (_currHookGuySequenceId == 0x201) {
switch (_vm->getRandom(7)) {
case 0:
@@ -821,11 +825,12 @@ void Scene11::run() {
void Scene11::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
- if (_vm->_gnap->_actionStatus != kAS11GrabBillardBall)
+ if (gnap._actionStatus != kAS11GrabBillardBall)
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS11LeaveScene:
_vm->_sceneDone = true;
break;
@@ -849,10 +854,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->_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.insertSequence(0x1F4, 255, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x1F4;
+ gnap._id = 255;
+ gnap._sequenceDatNum = 0;
gameSys.removeSequence(0x207, 257, true);
gameSys.removeSequence(0x208, 256, true);
_nextGoggleGuySequenceId = 0x1F8;
@@ -882,7 +887,7 @@ void Scene11::updateAnimations() {
_vm->_hotspots[kHS11Billard]._flags |= SF_DISABLED;
gameSys.setAnimation(0x207, 257, 4);
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(0x1FE), 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
break;
}
@@ -894,32 +899,32 @@ void Scene11::updateAnimations() {
gameSys.setAnimation(_nextGoggleGuySequenceId, 121, 2);
_currGoggleGuySequenceId = _nextGoggleGuySequenceId;
_nextGoggleGuySequenceId = -1;
- if (_vm->_gnap->_actionStatus >= 1 && _vm->_gnap->_actionStatus <= 4)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus >= 1 && gnap._actionStatus <= 4)
+ gnap._actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2) {
if (_nextHookGuySequenceId == 0x204) {
gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
gameSys.insertSequence(0x204, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x1F5, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1F5, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
_currHookGuySequenceId = 0x204;
_nextHookGuySequenceId = -1;
- _vm->_gnap->_sequenceId = 0x1F5;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x1F5;
+ gnap._sequenceDatNum = 0;
_vm->_timers[4] = _vm->getRandom(40) + 20;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnap->_actionStatus == kAS11GrabHookGuy)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus == kAS11GrabHookGuy)
+ gnap._actionStatus = -1;
} else if (_nextHookGuySequenceId != -1) {
gameSys.insertSequence(_nextHookGuySequenceId, 120, _currHookGuySequenceId, 120, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextHookGuySequenceId, 120, 3);
_currHookGuySequenceId = _nextHookGuySequenceId;
_nextHookGuySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(40) + 20;
- if (_vm->_gnap->_actionStatus >= 6 && _vm->_gnap->_actionStatus <= 9)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus >= 6 && gnap._actionStatus <= 9)
+ gnap._actionStatus = -1;
}
}
@@ -961,6 +966,7 @@ void Scene12::updateHotspots() {
void Scene12::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
int v18 = 1;
_vm->queueInsertDeviceIcon();
@@ -991,14 +997,14 @@ void Scene12::run() {
_vm->_timers[7] = _vm->getRandom(100) + 100;
if (_vm->_prevSceneNum == 15) {
- _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ gnap.initPos(5, 6, kDirBottomRight);
_vm->_plat->initPos(3, 7, kDirNone);
_vm->endSceneInit();
} else {
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
}
@@ -1014,7 +1020,7 @@ void Scene12::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS12Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1023,13 +1029,13 @@ void Scene12::run() {
case kHS12Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -1039,8 +1045,8 @@ void Scene12::run() {
case kHS12ExitRight:
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS12LeaveScene;
+ gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
+ gnap._actionStatus = kAS12LeaveScene;
_vm->_plat->walkTo(Common::Point(10, -1), -1, -1, 1);
_vm->_newSceneNum = 11;
break;
@@ -1048,41 +1054,41 @@ void Scene12::run() {
case kHS12ToothGuy:
if (_vm->_grabCursorSpriteIndex == kItemQuarter) {
_vm->_largeSprite = gameSys.createSurface(0x141);
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->_actionStatus = kAS12QuarterToToothGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ gnap._idleFacing = kDirUpLeft;
+ gnap._actionStatus = kAS12QuarterToToothGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->_actionStatus = kAS12QuarterWithHoleToToothGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ gnap._idleFacing = kDirUpLeft;
+ gnap._actionStatus = kAS12QuarterWithHoleToToothGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->_actionStatus = kAS12ShowItemToToothGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
+ gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 9);
+ gnap._idleFacing = kDirUpLeft;
+ gnap._actionStatus = kAS12ShowItemToToothGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 2);
+ gnap.playScratchingHead(1, 2);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS12GrabToothGuy;
+ gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS12GrabToothGuy;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(3, 7), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS12TalkToothGuy;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
_vm->_plat->_idleFacing = kDirUnk4;
- _vm->_gnap->playIdle(2, 7);
+ gnap.playIdle(2, 7);
break;
}
}
@@ -1090,34 +1096,34 @@ void Scene12::run() {
case kHS12Barkeeper:
if (_vm->_grabCursorSpriteIndex == kItemQuarter || _vm->_grabCursorSpriteIndex == kItemQuarterWithHole) {
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12QuarterWithBarkeeper;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ gnap.walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12QuarterWithBarkeeper;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12ShowItemToBarkeeper;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
+ gnap.walkTo(Common::Point(6, 6), 0, 0x107BB, 9);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12ShowItemToBarkeeper;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12LookBarkeeper;
+ gnap.walkTo(Common::Point(6, 6), 0, 0x107BB, 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12LookBarkeeper;
break;
case GRAB_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(6, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS12TalkBarkeeper;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(6, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
- _vm->_gnap->playPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- gameSys.setAnimation(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0);
- _vm->_gnap->_actionStatus = kAS12PlatWithBarkeeper;
+ gnap.playPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gnap._actionStatus = kAS12PlatWithBarkeeper;
break;
}
}
@@ -1125,34 +1131,34 @@ void Scene12::run() {
case kHS12BeardGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 9);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12ShowItemToBeardGuy;
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107BB, 9);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12ShowItemToBeardGuy;
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12LookBeardGuy;
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12LookBeardGuy;
break;
case GRAB_CURSOR:
// NOTE Bug in the original. It has 9 as flags which seems wrong here.
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_actionStatus = kAS12GrabBeardGuy;
+ gnap.walkTo(Common::Point(7, 6), 0, 0x107BB, 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap._actionStatus = kAS12GrabBeardGuy;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS12TalkBeardGuy;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
_vm->_plat->_idleFacing = kDirNone;
- _vm->_gnap->playIdle(7, 6);
+ gnap.playIdle(7, 6);
break;
}
}
@@ -1161,21 +1167,21 @@ void Scene12::run() {
case kHS12Jukebox:
_vm->_newSceneNum = 15;
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS12LeaveScene;
+ gnap.walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS12LeaveScene;
break;
case kHS12WalkArea1:
case kHS12WalkArea2:
case kHS12WalkArea3:
case kHS12WalkArea4:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1186,11 +1192,11 @@ void Scene12::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = 15;
if (_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextToothGuySequenceId = 0x1EC;
else
@@ -1202,8 +1208,8 @@ void Scene12::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_nextBarkeeperSequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (_nextBarkeeperSequenceId == -1 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextBarkeeperSequenceId = 0x208;
else
@@ -1215,8 +1221,8 @@ void Scene12::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(30) + 15;
- if (_nextBeardGuySequenceId == -1 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && _vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (_nextBeardGuySequenceId == -1 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
_nextBeardGuySequenceId = 0x1F2;
else
_nextBeardGuySequenceId = 0x202;
@@ -1257,10 +1263,11 @@ void Scene12::run() {
void Scene12::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS12LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1308,7 +1315,7 @@ void Scene12::updateAnimations() {
}
break;
case kAS12QuarterToToothGuyDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->showCursor();
gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->deleteSurface(&_vm->_largeSprite);
@@ -1367,13 +1374,13 @@ void Scene12::updateAnimations() {
gameSys.setAnimation(0, 0, 2);
_vm->hideCursor();
gameSys.setAnimation(0x10843, 301, 0);
- _vm->_gnap->_actionStatus = kAS12QuarterToToothGuyDone;
+ gnap._actionStatus = kAS12QuarterToToothGuyDone;
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
- 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->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B7;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x10843, 301, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x107B7, gnap._id, 0x10843, 301,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B7;
+ gnap._sequenceDatNum = 1;
_vm->setFlag(kGFTwigTaken);
_vm->invAdd(kItemQuarterWithHole);
_vm->invRemove(kItemQuarter);
@@ -1381,34 +1388,34 @@ 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->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
- _vm->_gnap->_sequenceId = 0x205;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x205;
+ gnap._sequenceDatNum = 0;
_vm->_timers[4] = 40;
_vm->_timers[2] = _vm->getRandom(20) + 70;
_vm->_timers[3] = _vm->getRandom(50) + 200;
- if (_vm->_gnap->_actionStatus == kAS12GrabToothGuy)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus == kAS12GrabToothGuy)
+ gnap._actionStatus = -1;
} else if (_nextToothGuySequenceId != -1) {
gameSys.insertSequence(_nextToothGuySequenceId, 50, _currToothGuySequenceId, 50, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextToothGuySequenceId, 50, 2);
_currToothGuySequenceId = _nextToothGuySequenceId;
_nextToothGuySequenceId = -1;
_vm->_timers[4] = 50;
- if (_vm->_gnap->_actionStatus >= kAS12TalkToothGuy && _vm->_gnap->_actionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
+ if (gnap._actionStatus >= kAS12TalkToothGuy && gnap._actionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
_currToothGuySequenceId != 0x1EC && _currToothGuySequenceId != 0x200)
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
if (_vm->_plat->_actionStatus == kAS12PlatWithToothGuy)
_vm->_plat->_actionStatus = -1;
}
}
if (gameSys.getAnimationStatus(3) == 2) {
- if (_vm->_gnap->_actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
- _vm->_gnap->_actionStatus = -1;
- _vm->_gnap->playIdle(7, 6);
+ if (gnap._actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
+ gnap._actionStatus = -1;
+ gnap.playIdle(7, 6);
_vm->_timers[5] = 0;
}
if (_nextBarkeeperSequenceId != -1) {
@@ -1417,9 +1424,9 @@ void Scene12::updateAnimations() {
_currBarkeeperSequenceId = _nextBarkeeperSequenceId;
_nextBarkeeperSequenceId = -1;
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_vm->_gnap->_actionStatus >= kAS12TalkBarkeeper && _vm->_gnap->_actionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 &&
+ if (gnap._actionStatus >= kAS12TalkBarkeeper && gnap._actionStatus <= kAS12QuarterWithBarkeeper && _currBarkeeperSequenceId != 0x203 &&
_currBarkeeperSequenceId != 0x1FB && _currBarkeeperSequenceId != 0x208)
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
}
@@ -1429,8 +1436,8 @@ void Scene12::updateAnimations() {
_currBeardGuySequenceId = _nextBeardGuySequenceId;
_nextBeardGuySequenceId = -1;
_vm->_timers[6] = _vm->getRandom(30) + 20;
- if (_vm->_gnap->_actionStatus >= kAS12TalkBeardGuy && _vm->_gnap->_actionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus >= kAS12TalkBeardGuy && gnap._actionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
+ gnap._actionStatus = -1;
if (_vm->_plat->_actionStatus == kAS12PlatWithBeardGuy)
_vm->_plat->_actionStatus = -1;
}
@@ -1488,17 +1495,18 @@ void Scene13::showScribble() {
void Scene13::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
+
int currSoundId = 0;
_vm->queueInsertDeviceIcon();
-
gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 14) {
- _vm->_gnap->initPos(6, 6, kDirBottomLeft);
+ gnap.initPos(6, 6, kDirBottomLeft);
_vm->_plat->initPos(9, 8, kDirNone);
} else {
- _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ gnap.initPos(3, 7, kDirBottomRight);
_vm->_plat->initPos(2, 7, kDirNone);
}
@@ -1521,7 +1529,7 @@ void Scene13::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS13Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -1532,13 +1540,13 @@ void Scene13::run() {
case kHS13Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
@@ -1548,8 +1556,8 @@ void Scene13::run() {
case kHS13ExitBar:
_vm->_isLeavingScene = true;
- _vm->_gnap->walkTo(Common::Point(2, 7), 0, 0x107C0, 1);
- _vm->_gnap->_actionStatus = kAS13LeaveScene;
+ gnap.walkTo(Common::Point(2, 7), 0, 0x107C0, 1);
+ gnap._actionStatus = kAS13LeaveScene;
_vm->_plat->walkTo(Common::Point(2, 8), -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
_vm->_newSceneNum = 11;
@@ -1561,30 +1569,30 @@ void Scene13::run() {
case kHS13BackToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(5, 5, 6, 0);
+ gnap.playShowCurrItem(5, 5, 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
case TALK_CURSOR:
- if (_vm->_gnap->_pos == Common::Point(5, 5)) {
+ if (gnap._pos == Common::Point(5, 5)) {
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- 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,
+ gameSys.setAnimation(_backToiletCtr + 0xA3, gnap._id, 0);
+ gameSys.insertSequence(_backToiletCtr + 0xA3, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
kSeqScale | kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS13Wait;
- _vm->_gnap->_sequenceId = _backToiletCtr + 0xA3;
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._actionStatus = kAS13Wait;
+ gnap._sequenceId = _backToiletCtr + 0xA3;
+ gnap._idleFacing = kDirUpRight;
+ gnap._sequenceDatNum = 0;
} else {
- _vm->_gnap->walkTo(Common::Point(5, 5), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS13BackToilet;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(5, 5), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS13BackToilet;
+ gnap._idleFacing = kDirUpRight;
}
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1592,16 +1600,16 @@ void Scene13::run() {
case kHS13FrontToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(6, 7, 7, 0);
+ gnap.playShowCurrItem(6, 7, 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->walkTo(Common::Point(6, 7), 0, 0xA9, 5);
- _vm->_gnap->_actionStatus = kAS13FrontToilet;
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap.walkTo(Common::Point(6, 7), 0, 0xA9, 5);
+ gnap._actionStatus = kAS13FrontToilet;
+ gnap._idleFacing = kDirBottomRight;
break;
}
}
@@ -1609,23 +1617,23 @@ void Scene13::run() {
case kHS13Scribble:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(7, 7, 8, 0);
+ gnap.playShowCurrItem(7, 7, 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS13LookScribble;
- _vm->_gnap->_idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS13LookScribble;
+ gnap._idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(0, 0);
+ gnap.playScratchingHead(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(Common::Point(7, 7), -1, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)), 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(Common::Point(7, 7), -1, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)), 1);
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1633,21 +1641,21 @@ void Scene13::run() {
case kHS13Urinal:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(8, 7, 9, 0);
+ gnap.playShowCurrItem(8, 7, 9, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(9, 6)));
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1);
- _vm->_gnap->_actionStatus = kAS13Wait;
+ gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(9, 6)));
+ gnap.walkTo(gnap._pos, 0, -1, 1);
+ gnap._actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(8, 7), 0, -1, 1);
- _vm->_gnap->_actionStatus = kAS13GrabUrinal;
+ gnap.walkTo(Common::Point(8, 7), 0, -1, 1);
+ gnap._actionStatus = kAS13GrabUrinal;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1655,21 +1663,21 @@ void Scene13::run() {
case kHS13Sink:
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playSequence(_vm->_gnap->getSequenceId(gskDeflect, Common::Point(5, 9)));
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, -1, 1);
- _vm->_gnap->_actionStatus = kAS13Wait;
+ gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(5, 9)));
+ gnap.walkTo(gnap._pos, 0, -1, 1);
+ gnap._actionStatus = kAS13Wait;
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(Common::Point(4, 8), 0, 0x107B9, 1);
- _vm->_gnap->_actionStatus = kAS13GrabSink;
+ gnap.walkTo(Common::Point(4, 8), 0, 0x107B9, 1);
+ gnap._actionStatus = kAS13GrabSink;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1683,7 +1691,7 @@ void Scene13::run() {
case kHS13WalkArea7:
case kHS13WalkArea8:
case kHS13WalkArea9:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
case kHS13WalkArea1:
@@ -1692,7 +1700,7 @@ void Scene13::run() {
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1704,8 +1712,8 @@ void Scene13::run() {
_vm->_plat->updateIdleSequence();
if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
_vm->_plat->walkTo(Common::Point(-1, 7), -1, -1, 1);
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
switch (_vm->getRandom(5)) {
@@ -1769,58 +1777,59 @@ void Scene13::run() {
void Scene13::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS13LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS13BackToilet:
_backToiletCtr = MIN(5, _backToiletCtr + 1);
- 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;
+ gameSys.insertSequence(_backToiletCtr + 0xA3, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 9, 0, 0, 0);
+ gnap._sequenceId = _backToiletCtr + 0xA3;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
break;
case kAS13FrontToilet:
_vm->_sceneDone = true;
_vm->_newSceneNum = 14;
break;
case kAS13LookScribble:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
showScribble();
break;
case kAS13GrabSink:
gameSys.setAnimation(0xAB, 160, 0);
- gameSys.insertSequence(0xAB, 160, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xAB, 160, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0xAA, 256, true);
- _vm->_gnap->_sequenceId = 0xAB;
- _vm->_gnap->_id = 160;
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_pos = Common::Point(4, 8);
+ gnap._sequenceId = 0xAB;
+ gnap._id = 160;
+ gnap._idleFacing = kDirBottomRight;
+ gnap._sequenceDatNum = 0;
+ gnap._pos = Common::Point(4, 8);
_vm->_timers[2] = 360;
- _vm->_gnap->_actionStatus = kAS13GrabSinkDone;
+ gnap._actionStatus = kAS13GrabSinkDone;
break;
case kAS13GrabSinkDone:
gameSys.insertSequence(0xAA, 256, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS13Wait:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS13GrabUrinal:
gameSys.setAnimation(0xA2, 120, 0);
- 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_pos = Common::Point(4, 6);
+ gameSys.insertSequence(0xA2, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0xA2;
+ gnap._id = 120;
+ gnap._idleFacing = kDirBottomLeft;
+ gnap._sequenceDatNum = 0;
+ gnap._pos = Common::Point(4, 6);
_vm->_timers[2] = 360;
- _vm->_gnap->_actionStatus = kAS13Wait;
+ gnap._actionStatus = kAS13Wait;
break;
}
}
@@ -1857,6 +1866,7 @@ void Scene14::updateHotspots() {
void Scene14::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->_largeSprite = nullptr;
_vm->queueInsertDeviceIcon();
@@ -1871,7 +1881,7 @@ void Scene14::run() {
if (!_vm->isFlag(kGFNeedleTaken)) {
gameSys.insertSequence(0x24, 10, 0x23, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x24;
+ gnap._sequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -1884,7 +1894,7 @@ void Scene14::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS14Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -1902,7 +1912,7 @@ void Scene14::run() {
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
gameSys.setAnimation(0x26, 10, 0);
- gameSys.insertSequence(0x26, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x26, 10, gnap._sequenceId, 10, kSeqSyncWait, 0, 0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
_vm->playSound(0x108E9, false);
} else {
@@ -1911,15 +1921,15 @@ void Scene14::run() {
_vm->playSound(0x108E9, false);
break;
case GRAB_CURSOR:
- gameSys.insertSequence(0x25, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x25, 10, gnap._sequenceId, 10, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x23, 10, 0x25, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x23;
+ gnap._sequenceId = 0x23;
break;
case TALK_CURSOR:
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -1927,7 +1937,7 @@ void Scene14::run() {
case kHS14Toilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1938,7 +1948,7 @@ void Scene14::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -1953,8 +1963,8 @@ void Scene14::run() {
_vm->checkGameKeys();
if (!_vm->isFlag(kGFNeedleTaken) && !_vm->_timers[2]) {
- gameSys.insertSequence(0x24, 10, _vm->_gnap->_sequenceId, 10, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_sequenceId = 0x24;
+ gameSys.insertSequence(0x24, 10, gnap._sequenceId, 10, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x24;
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
@@ -2029,6 +2039,7 @@ void Scene15::updateHotspots() {
void Scene15::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_currSlotSequenceId = -1;
_currUpperButtonSequenceId = -1;
@@ -2060,7 +2071,7 @@ void Scene15::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS15Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
@@ -2077,7 +2088,7 @@ void Scene15::run() {
} else if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_nextSlotSequenceId = 0xDB;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2088,7 +2099,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -2096,7 +2107,7 @@ void Scene15::run() {
case kHS15PlayButton:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2115,7 +2126,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -2128,7 +2139,7 @@ void Scene15::run() {
case kHS15Button5:
case kHS15Button6:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2141,7 +2152,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -2154,7 +2165,7 @@ void Scene15::run() {
case kHS15ButtonE:
case kHS15ButtonF:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2167,7 +2178,7 @@ void Scene15::run() {
_vm->playSound((_vm->getRandom(5) + 0x8D5) | 0x10000, false);
break;
case PLAT_CURSOR:
- gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - _vm->_gnap->_gridX, 576 - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107A8, 1, 0, 0, kSeqNone, 0, 900 - gnap._gridX, 576 - gnap._gridY);
break;
}
}
@@ -2338,10 +2349,12 @@ void Scene17::update() {
void Scene17::platHangUpPhone() {
GameSys& gameSys = *_vm->_gameSys;
- int savedGnapActionStatus = _vm->_gnap->_actionStatus;
+ PlayerGnap& gnap = *_vm->_gnap;
+
+ int savedGnapActionStatus = gnap._actionStatus;
if (_vm->_plat->_actionStatus == kAS17PlatPhoningAssistant) {
- _vm->_gnap->_actionStatus = kAS17PlatHangUpPhone;
+ gnap._actionStatus = kAS17PlatHangUpPhone;
_vm->updateMouseCursor();
_platPhoneCtr = 0;
_vm->_plat->_actionStatus = -1;
@@ -2358,7 +2371,7 @@ void Scene17::platHangUpPhone() {
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
- _vm->_gnap->_actionStatus = savedGnapActionStatus;
+ gnap._actionStatus = savedGnapActionStatus;
_vm->updateMouseCursor();
}
updateHotspots();
@@ -2366,6 +2379,7 @@ void Scene17::platHangUpPhone() {
void Scene17::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -2424,13 +2438,13 @@ void Scene17::run() {
if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
if (_vm->_prevSceneNum == 20) {
- _vm->_gnap->initPos(4, 6, kDirBottomRight);
+ gnap.initPos(4, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
- _vm->_gnap->initPos(3, 9, kDirUpLeft);
+ gnap.initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(0x25A, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2450,12 +2464,12 @@ void Scene17::run() {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
_vm->_plat->initPos(7, 9, kDirNone);
- _vm->_gnap->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_gnap->_id = 20 * _vm->_hotspotsWalkPos[2].y;
+ gnap._pos = _vm->_hotspotsWalkPos[2];
+ gnap._id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 601;
- _vm->_gnap->_actionStatus = kAS17GnapHangUpPhone;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 601;
+ gnap._actionStatus = kAS17GnapHangUpPhone;
_vm->clearFlag(kGFUnk25);
gameSys.insertSequence(0x251, 254, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -2465,7 +2479,7 @@ void Scene17::run() {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
_vm->_sceneWaiting = true;
- _vm->_gnap->initPos(3, 9, kDirUpLeft);
+ gnap.initPos(3, 9, kDirUpLeft);
_vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
_vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
_currPhoneSequenceId = 0x251;
@@ -2478,18 +2492,18 @@ void Scene17::run() {
_vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
- _vm->_gnap->initPos(6, 6, kDirBottomRight);
+ gnap.initPos(6, 6, kDirBottomRight);
_vm->_plat->initPos(5, 6, kDirNone);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
- _vm->_gnap->initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
+ gnap.initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
_vm->_plat->initPos(1, 9, kDirNone);
_vm->endSceneInit();
} else {
- _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ gnap.initPos(3, 7, kDirBottomRight);
_vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -2498,12 +2512,12 @@ void Scene17::run() {
_vm->endSceneInit();
}
} else {
- _vm->_gnap->_pos = Common::Point(3, 6);
- _vm->_gnap->_id = 120;
- _vm->_gnap->_sequenceId = 0x23D;
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_idleFacing = kDirBottomRight;
- gameSys.insertSequence(makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
+ gnap._pos = Common::Point(3, 6);
+ gnap._id = 120;
+ gnap._sequenceId = 0x23D;
+ gnap._sequenceDatNum = 0;
+ gnap._idleFacing = kDirBottomRight;
+ gameSys.insertSequence(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0, 0, kSeqNone, 0, 0, 0);
_vm->_plat->_pos = Common::Point(-1, 8);
_vm->_plat->_id = 160;
gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
@@ -2527,41 +2541,41 @@ void Scene17::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS17Device:
- if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == 3) {
+ if (gnap._actionStatus < 0 || gnap._actionStatus == 3) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS17Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else {
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
_vm->_plat->_actionStatus = kAS17GetWrench1;
- _vm->_gnap->_actionStatus = kAS17GetWrench1;
+ gnap._actionStatus = kAS17GetWrench1;
_vm->_timers[5] = _vm->getRandom(30) + 80;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemJoint);
}
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2569,30 +2583,30 @@ void Scene17::run() {
break;
case kHS17Wrench:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(8, 7);
+ gnap.playScratchingHead(8, 7);
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_canTryGetWrench) {
platHangUpPhone();
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
_vm->_plat->_actionStatus = kAS17TryGetWrench;
- _vm->_gnap->_actionStatus = kAS17TryGetWrench;
+ gnap._actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2600,40 +2614,40 @@ void Scene17::run() {
break;
case kHS17Phone1:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 3);
+ gnap.playScratchingHead(1, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS17GetCoinFromPhone;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
+ gnap._actionStatus = kAS17GetCoinFromPhone;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
- _vm->_gnap->_actionStatus = kAS17PlatUsePhone;
+ gnap._actionStatus = kAS17PlatUsePhone;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2641,43 +2655,43 @@ void Scene17::run() {
break;
case kHS17Phone2:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhone;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 3);
+ gnap.playScratchingHead(1, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[2], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS17GnapUsePhone;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
_vm->_isLeavingScene = true;
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->_idleFacing = kDirUpLeft;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
_vm->_plat->_actionStatus = kAS17PlatUsePhone;
- _vm->_gnap->_actionStatus = kAS17PlatUsePhone;
+ gnap._actionStatus = kAS17PlatUsePhone;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2685,25 +2699,25 @@ void Scene17::run() {
break;
case kHS17ExitToyStore:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS17LeaveScene;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
+ gnap._actionStatus = kAS17LeaveScene;
if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
case kHS17ExitGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
platHangUpPhone();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS17LeaveScene;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS17LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -2711,13 +2725,13 @@ void Scene17::run() {
case kHS17WalkArea1:
case kHS17WalkArea2:
case kHS17WalkArea3:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
break;
@@ -2731,15 +2745,15 @@ void Scene17::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
_vm->_plat->updateIdleSequence2();
- _vm->_gnap->updateIdleSequence2();
+ gnap.updateIdleSequence2();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
gameSys.insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -2829,51 +2843,52 @@ void Scene17::updateAnimations() {
};
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS17GetWrench1:
- _vm->_gnap->_actionStatus = kAS17GetWrenchGnapReady;
+ gnap._actionStatus = kAS17GetWrenchGnapReady;
break;
case kAS17GetCoinFromPhone:
- _vm->_gnap->playPullOutDevice(1, 3);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(1, 3);
+ gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x250, 100, 0);
gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemDiceQuarterHole);
_vm->clearFlag(kGFUnk18);
- _vm->_gnap->_actionStatus = kAS17GetCoinFromPhoneDone;
+ gnap._actionStatus = kAS17GetCoinFromPhoneDone;
break;
case kAS17GetCoinFromPhoneDone:
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS17PutCoinIntoPhone:
- 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;
+ gameSys.setAnimation(0x24C, gnap._id, 0);
+ gameSys.insertSequence(0x24C, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x24C;
_vm->invRemove(kItemDiceQuarterHole);
_vm->setGrabCursorSprite(-1);
_vm->setFlag(kGFUnk18);
- _vm->_gnap->_actionStatus = kAS17PutCoinIntoPhoneDone;
+ gnap._actionStatus = kAS17PutCoinIntoPhoneDone;
break;
case kAS17PutCoinIntoPhoneDone:
gameSys.insertSequence(0x24F, 100, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS17GnapUsePhone:
- 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;
+ gameSys.setAnimation(0x24D, gnap._id, 0);
+ gameSys.insertSequence(0x24D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._actionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
case kAS17GnapHangUpPhone:
- 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;
+ gameSys.insertSequence(0x258, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x258;
+ gnap._actionStatus = -1;
break;
case kAS17LeaveScene:
_vm->_sceneDone = true;
@@ -2944,7 +2959,7 @@ void Scene17::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextWrenchSequenceId) {
case 0x233:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
gameSys.insertSequence(0x243, _vm->_plat->_id,
_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, 0, 0, 0);
@@ -2956,7 +2971,7 @@ void Scene17::updateAnimations() {
gameSys.setAnimation(0x243, _vm->_plat->_id, 1);
break;
case 0x234:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
gameSys.insertSequence(0x242, _vm->_plat->_id,
_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
kSeqSyncWait, 0, 0, 0);
@@ -2991,7 +3006,7 @@ void Scene17::updateAnimations() {
_nextWrenchSequenceId = -1;
break;
case 0x230:
- if (_vm->_gnap->_actionStatus == kAS17GetWrenchGnapReady) {
+ if (gnap._actionStatus == kAS17GetWrenchGnapReady) {
gameSys.setAnimation(0, 0, 2);
if (_canTryGetWrench) {
gameSys.insertSequence(0x22E, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -2999,15 +3014,15 @@ void Scene17::updateAnimations() {
_canTryGetWrench = false;
}
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(0x10875, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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->_gnap->_sequenceDatNum = 1;
+ gnap._sequenceDatNum = 1;
_vm->_plat->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x875;
+ gnap._sequenceId = 0x875;
_vm->_plat->_sequenceId = 0x23F;
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->_plat->_actionStatus = kAS17GetWrench2;
}
break;
@@ -3050,9 +3065,9 @@ void Scene17::updateAnimations() {
gameSys.insertSequence(0x230, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextCarWindowSequenceId, 40, _currCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 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;
+ gameSys.insertSequence(0x23E, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x23E;
+ gnap._sequenceDatNum = 0;
_vm->_plat->_sequenceId = 0x240;
_vm->_plat->_sequenceDatNum = 0;
gameSys.setAnimation(0x24A, 40, 3);
@@ -3072,7 +3087,7 @@ void Scene17::updateAnimations() {
_currWrenchSequenceId = 0x22D;
_nextWrenchSequenceId = -1;
_vm->setFlag(kGFGrassTaken);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->_plat->_actionStatus = 2;
updateHotspots();
_vm->_timers[5] = _vm->getRandom(30) + 80;
@@ -3160,13 +3175,14 @@ void Scene18::updateHotspots() {
void Scene18::gnapCarryGarbageCanTo(int gridX) {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
int gnapSeqId, gnapId, gnapDatNum, gnapGridX;
int destGridX, direction;
int curGridX = (_vm->_leftClickMouseX - _vm->_gridMinX + 37) / 75;
- if (curGridX >= _vm->_gnap->_pos.x)
+ if (curGridX >= gnap._pos.x)
destGridX = curGridX - 1;
else
destGridX = curGridX + 1;
@@ -3181,30 +3197,30 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
if (nextGridX >= destGridX)
nextGridX = destGridX;
- if (nextGridX == _vm->_gnap->_pos.x) {
- gnapSeqId = _vm->_gnap->_sequenceId;
- gnapId = _vm->_gnap->_id;
- gnapDatNum = _vm->_gnap->_sequenceDatNum;
- gnapGridX = _vm->_gnap->_pos.x;
- if (_vm->_gnap->_pos.x <= curGridX)
+ if (nextGridX == gnap._pos.x) {
+ gnapSeqId = gnap._sequenceId;
+ gnapId = gnap._id;
+ gnapDatNum = gnap._sequenceDatNum;
+ gnapGridX = gnap._pos.x;
+ if (gnap._pos.x <= curGridX)
direction = 1;
else
direction = -1;
} else {
- if (_vm->_gnap->_pos.y == _vm->_plat->_pos.y) {
- if (nextGridX >= _vm->_gnap->_pos.x) {
- if (nextGridX >= _vm->_plat->_pos.x && _vm->_gnap->_pos.x <= _vm->_plat->_pos.x)
+ if (gnap._pos.y == _vm->_plat->_pos.y) {
+ if (nextGridX >= gnap._pos.x) {
+ if (nextGridX >= _vm->_plat->_pos.x && gnap._pos.x <= _vm->_plat->_pos.x)
_vm->_plat->makeRoom();
- } else if (nextGridX <= _vm->_plat->_pos.x && _vm->_gnap->_pos.x >= _vm->_plat->_pos.x) {
+ } else if (nextGridX <= _vm->_plat->_pos.x && gnap._pos.x >= _vm->_plat->_pos.x) {
_vm->_plat->makeRoom();
}
}
- gnapSeqId = _vm->_gnap->_sequenceId;
- gnapId = _vm->_gnap->_id;
- gnapDatNum = _vm->_gnap->_sequenceDatNum;
- gnapGridX = _vm->_gnap->_pos.x;
+ gnapSeqId = gnap._sequenceId;
+ gnapId = gnap._id;
+ gnapDatNum = gnap._sequenceDatNum;
+ gnapGridX = gnap._pos.x;
int seqId;
- if (nextGridX < _vm->_gnap->_pos.x) {
+ if (nextGridX < gnap._pos.x) {
direction = -1;
seqId = 0x204;
} else {
@@ -3212,14 +3228,14 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
seqId = 0x203;
}
- int seqId2 = 20 * _vm->_gnap->_pos.y + 1;
+ int seqId2 = 20 * gnap._pos.y + 1;
do {
- if (_vm->isPointBlocked(gnapGridX + direction, _vm->_gnap->_pos.y))
+ if (_vm->isPointBlocked(gnapGridX + direction, gnap._pos.y))
break;
seqId2 += direction;
gameSys.insertSequence(seqId, seqId2,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
+ kSeqSyncWait, 0, 75 * gnapGridX - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
gnapSeqId = seqId;
gnapId = seqId2;
gnapDatNum = 0;
@@ -3228,51 +3244,52 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
}
if (direction == 1)
- _vm->_gnap->_sequenceId = 0x20A;
+ gnap._sequenceId = 0x20A;
else
- _vm->_gnap->_sequenceId = 0x209;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._sequenceId = 0x209;
+ gnap._sequenceDatNum = 0;
if (direction == 1)
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap._idleFacing = kDirBottomRight;
else
- _vm->_gnap->_idleFacing = kDirBottomLeft;
+ gnap._idleFacing = kDirBottomLeft;
- _vm->_gnap->_id = 20 * _vm->_gnap->_pos.y + 1;
+ gnap._id = 20 * gnap._pos.y + 1;
- 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,
+ gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
+ gameSys.insertSequence(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
gnapSeqId | (gnapDatNum << 16), gnapId,
- kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
+ kSeqScale | kSeqSyncWait, 0, 75 * gnapGridX - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
- _vm->_gnap->_pos.x = gnapGridX;
+ gnap._pos.x = gnapGridX;
}
void Scene18::putDownGarbageCan(int animationIndex) {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (animationIndex >= 0) {
while (gameSys.getAnimationStatus(animationIndex) != 2)
_vm->gameUpdateTick();
}
- if (_vm->_gnap->_idleFacing != kDirNone && _vm->_gnap->_idleFacing != kDirBottomRight && _vm->_gnap->_idleFacing != kDirUpRight)
- _vm->_s18GarbageCanPos = _vm->_gnap->_pos.x - 1;
+ if (gnap._idleFacing != kDirNone && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight)
+ _vm->_s18GarbageCanPos = gnap._pos.x - 1;
else
- _vm->_s18GarbageCanPos = _vm->_gnap->_pos.x + 1;
+ _vm->_s18GarbageCanPos = gnap._pos.x + 1;
_vm->clearFlag(kGFPlatypusDisguised);
updateHotspots();
- if (_vm->_gnap->_idleFacing != kDirNone && _vm->_gnap->_idleFacing != kDirBottomRight && _vm->_gnap->_idleFacing != kDirUpRight) {
- gameSys.insertSequence(0x107BA, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7BA;
+ if (gnap._idleFacing != kDirNone && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight) {
+ gameSys.insertSequence(0x107BA, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7BA;
} else {
- gameSys.insertSequence(0x107B9, _vm->_gnap->_id,
- makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id,
- kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B9;
+ gameSys.insertSequence(0x107B9, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B9;
}
- _vm->_gnap->_sequenceDatNum = 1;
+ 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);
@@ -3308,26 +3325,30 @@ void Scene18::platEndPhoning(bool platFl) {
}
void Scene18::closeHydrantValve() {
- _vm->_gnap->_actionStatus = kAS18LeaveScene;
+ PlayerGnap& gnap = *_vm->_gnap;
+
+ gnap._actionStatus = kAS18LeaveScene;
_vm->updateMouseCursor();
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
+ gnap._actionStatus = kAS18CloseRightValveWithGarbageCan;
waitForGnapAction();
} else {
- _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan;
+ gnap._actionStatus = kAS18CloseRightValveNoGarbageCan;
waitForGnapAction();
}
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
- _vm->_gnap->_actionStatus = kAS18CloseTopValve;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
+ gnap._actionStatus = kAS18CloseTopValve;
waitForGnapAction();
}
}
void Scene18::waitForGnapAction() {
- while (_vm->_gnap->_actionStatus >= 0) {
+ PlayerGnap& gnap = *_vm->_gnap;
+
+ while (gnap._actionStatus >= 0) {
updateAnimations();
_vm->gameUpdateTick();
}
@@ -3335,6 +3356,7 @@ void Scene18::waitForGnapAction() {
void Scene18::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_cowboyHatSurface = nullptr;
@@ -3370,9 +3392,9 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
if (_vm->_prevSceneNum == 17)
- _vm->_gnap->initPos(4, 11, kDirBottomRight);
+ gnap.initPos(4, 11, kDirBottomRight);
else
- _vm->_gnap->initPos(4, 7, kDirBottomRight);
+ gnap.initPos(4, 7, kDirBottomRight);
_platPhoneCtr = _vm->getRandom(5);
if (_vm->isFlag(kGFUnk27)) {
gameSys.insertSequence(0x21E, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -3393,7 +3415,7 @@ void Scene18::run() {
} else {
gameSys.setAnimation(_currPhoneSequenceId, 254, 3);
}
- _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFGnapControlsToyUFO)) {
_vm->clearFlag(kGFGnapControlsToyUFO);
@@ -3401,22 +3423,22 @@ void Scene18::run() {
_vm->_prevSceneNum = 19;
}
if (_vm->_prevSceneNum == 17) {
- _vm->_gnap->initPos(4, 11, kDirBottomRight);
+ gnap.initPos(4, 11, kDirBottomRight);
_vm->_plat->initPos(5, 11, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
- _vm->_gnap->initPos(7, 7, kDirBottomRight);
+ gnap.initPos(7, 7, kDirBottomRight);
_vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
- _vm->_gnap->initPos(-1, 10, kDirBottomRight);
+ gnap.initPos(-1, 10, kDirBottomRight);
_vm->_plat->initPos(-1, 10, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(3, 7), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 7), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
}
@@ -3432,36 +3454,36 @@ void Scene18::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS18Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS18Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3469,27 +3491,27 @@ void Scene18::run() {
break;
case kHS18CowboyHat:
- if (_vm->_gnap->_actionStatus == kAS18StandingOnHydrant) {
- _vm->_gnap->_actionStatus = kAS18GrabCowboyHat;
+ if (gnap._actionStatus == kAS18StandingOnHydrant) {
+ gnap._actionStatus = kAS18GrabCowboyHat;
_vm->_sceneWaiting = false;
- } else if (_vm->_gnap->_actionStatus < 0) {
+ } else if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 2);
+ gnap.playScratchingHead(3, 2);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, _vm->_gnap->getSequenceId(gskPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, gnap.getSequenceId(gskPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3497,43 +3519,43 @@ void Scene18::run() {
break;
case kHS18GarbageCan:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex >= 0)
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(true);
if (_vm->_grabCursorSpriteIndex >= 0) {
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
_vm->_hotspotsWalkPos[kHS18GarbageCan].y, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnap->playScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
else if (!_vm->isFlag(kGFTruckFilledWithGas))
- _vm->_gnap->playScratchingHead(2, 4);
+ gnap.playScratchingHead(2, 4);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((_vm->_gnap->_pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
-1, -1, 1);
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(_vm->_s18GarbageCanPos, _vm->_gnap->_pos.y)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromStreet;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(_vm->_s18GarbageCanPos, gnap._pos.y)) | 0x10000, 1);
+ gnap._actionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
- _vm->_gnap->_actionStatus = kAS18GrabGarbageCanFromHydrant;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
+ gnap._actionStatus = kAS18GrabGarbageCanFromHydrant;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3542,64 +3564,64 @@ void Scene18::run() {
break;
case kHS18HydrantTopValve:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
// While carrying garbage can
if (_vm->_grabCursorSpriteIndex >= 0) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->_gnap->playScratchingHead(0, 0);
+ gnap.playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
gnapCarryGarbageCanTo(2);
- _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant;
+ gnap._actionStatus = kAS18PutGarbageCanOnRunningHydrant;
} else if (!_vm->isFlag(kGFBarnPadlockOpen)) {
gnapCarryGarbageCanTo(2);
- _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnHydrant;
+ gnap._actionStatus = kAS18PutGarbageCanOnHydrant;
} else {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS18OpenTopValve;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
+ gnap._actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 5);
+ gnap.playScratchingHead(1, 5);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS18CloseTopValve;
+ gnap._actionStatus = kAS18CloseTopValve;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3608,12 +3630,12 @@ void Scene18::run() {
break;
case kHS18HydrantRightValve:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex == -1) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
}
} else {
if (_vm->isFlag(kGFPlatypusDisguised)) {
@@ -3621,30 +3643,30 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCan;
+ gnap._actionStatus = kAS18OpenRightValveWithGarbageCan;
else
- _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCan;
+ gnap._actionStatus = kAS18OpenRightValveNoGarbageCan;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 5);
+ gnap.playScratchingHead(1, 5);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
- _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCan;
+ gnap._actionStatus = kAS18CloseRightValveWithGarbageCan;
else
- _vm->_gnap->_actionStatus = kAS18CloseRightValveNoGarbageCan;
+ gnap._actionStatus = kAS18CloseRightValveNoGarbageCan;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3653,18 +3675,18 @@ void Scene18::run() {
break;
case kHS18ExitToyStore:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
}
if (_vm->isFlag(kGFPictureTaken)) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
- _vm->_gnap->_actionStatus = kAS18LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
+ gnap._actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
}
@@ -3672,7 +3694,7 @@ void Scene18::run() {
break;
case kHS18ExitPhoneBooth:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3680,8 +3702,8 @@ void Scene18::run() {
closeHydrantValve();
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS18LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
@@ -3690,7 +3712,7 @@ void Scene18::run() {
break;
case kHS18ExitGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
@@ -3699,8 +3721,8 @@ void Scene18::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity], 0, 0x107B2, 1);
- _vm->_gnap->_actionStatus = kAS18LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity], 0, 0x107B2, 1);
+ gnap._actionStatus = kAS18LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
else
@@ -3711,24 +3733,24 @@ void Scene18::run() {
case kHS18WalkArea1:
case kHS18WalkArea2:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
break;
default:
- if (_vm->_gnap->_actionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
+ if (gnap._actionStatus != kAS18StandingOnHydrant && _vm->_mouseClickState._left) {
if (_vm->isFlag(kGFPlatypusDisguised)) {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
} else {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
}
_vm->_mouseClickState._left = false;
}
@@ -3741,9 +3763,9 @@ void Scene18::run() {
_vm->playSound(0x10940, true);
if ((_vm->isFlag(kGFTruckFilledWithGas) || _vm->isFlag(kGFBarnPadlockOpen)) && !_vm->isSoundPlaying(0x22B) &&
- _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCanDone && _vm->_gnap->_actionStatus != kAS18OpenRightValveNoGarbageCan &&
- _vm->_gnap->_actionStatus != kAS18OpenTopValve && _vm->_gnap->_actionStatus != kAS18OpenTopValveDone &&
- _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCan && _vm->_gnap->_actionStatus != kAS18OpenRightValveWithGarbageCanDone)
+ gnap._actionStatus != kAS18OpenRightValveNoGarbageCanDone && gnap._actionStatus != kAS18OpenRightValveNoGarbageCan &&
+ gnap._actionStatus != kAS18OpenTopValve && gnap._actionStatus != kAS18OpenTopValveDone &&
+ gnap._actionStatus != kAS18OpenRightValveWithGarbageCan && gnap._actionStatus != kAS18OpenRightValveWithGarbageCanDone)
_vm->playSound(0x22B, true);
if (!_vm->_isLeavingScene) {
@@ -3765,7 +3787,7 @@ void Scene18::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 100;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->getRandom(2) == 1)
gameSys.insertSequence(0x220, 255, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -3775,7 +3797,7 @@ void Scene18::run() {
_vm->playSoundA();
}
if (!_vm->isFlag(kGFPlatypusDisguised))
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
}
_vm->checkGameKeys();
@@ -3795,67 +3817,68 @@ void Scene18::run() {
void Scene18::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS18GrabGarbageCanFromStreet:
- if (_vm->_gnap->_idleFacing != kDirUpRight && _vm->_gnap->_idleFacing != kDirBottomRight) {
- 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x1FC;
+ if (gnap._idleFacing != kDirUpRight && gnap._idleFacing != kDirBottomRight) {
+ gameSys.insertSequence(0x1FC, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - 675, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x1FC;
} else {
- 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x1FD;
+ gameSys.insertSequence(0x1FD, gnap._id,
+ makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
+ kSeqSyncWait, 0, 75 * gnap._pos.x - 525, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x1FD;
}
gameSys.removeSequence(0x1FA, 19, true);
_vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18GrabGarbageCanFromHydrant:
- gameSys.insertSequence(0x1FE, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1FE, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x1F9, 19, true);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x1FE;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x1FE;
_vm->clearFlag(kGFTruckKeysUsed);
_vm->setFlag(kGFPlatypusDisguised);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18CloseRightValveNoGarbageCan:
- gameSys.insertSequence(0x205, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x205;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x205;
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18OpenTopValve:
_vm->setFlag(kGFBarnPadlockOpen);
updateHotspots();
- _vm->_gnap->playPullOutDevice(2, 7);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(2, 7);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS18OpenTopValveDone;
+ gnap._actionStatus = kAS18OpenTopValveDone;
break;
case kAS18OpenTopValveDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x208, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x208, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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);
@@ -3864,32 +3887,32 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x208;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x208;
_vm->invRemove(kItemWrench);
_vm->setGrabCursorSprite(-1);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18CloseTopValve:
- gameSys.insertSequence(0x206, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x206, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x206;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x206;
_vm->clearFlag(kGFBarnPadlockOpen);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18GrabCowboyHat:
- 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;
+ gameSys.setAnimation(0x200, gnap._id, 0);
+ gameSys.insertSequence(0x200, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x200;
+ gnap._actionStatus = kAS18GrabCowboyHatDone;
break;
case kAS18GrabCowboyHatDone:
_vm->hideCursor();
@@ -3908,55 +3931,55 @@ void Scene18::updateAnimations() {
_vm->setFlag(kGFTruckKeysUsed);
_vm->setFlag(kGFUnk14); // Useless, already set
updateHotspots();
- _vm->_gnap->_actionStatus = kAS18LeaveScene;
+ gnap._actionStatus = kAS18LeaveScene;
break;
case kAS18LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18PutGarbageCanOnRunningHydrant:
_vm->setFlag(kGFTruckKeysUsed);
_vm->clearFlag(kGFPlatypusDisguised);
gameSys.requestRemoveSequence(0x211, 39);
gameSys.requestRemoveSequence(0x212, 39);
- gameSys.insertSequence(0x210, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x210, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
- gameSys.setAnimation(0x210, _vm->_gnap->_id, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x210;
- _vm->_gnap->_actionStatus = kAS18PutGarbageCanOnRunningHydrant2;
+ gameSys.setAnimation(0x210, gnap._id, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x210;
+ gnap._actionStatus = kAS18PutGarbageCanOnRunningHydrant2;
break;
case kAS18PutGarbageCanOnRunningHydrant2:
_vm->playSound(0x22B, true);
- 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;
+ gameSys.setAnimation(0x1FF, gnap._id, 0);
+ gameSys.insertSequence(0x1FF, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x1FF;
_vm->_sceneWaiting = true;
- _vm->_gnap->_actionStatus = kAS18StandingOnHydrant;
+ gnap._actionStatus = kAS18StandingOnHydrant;
break;
case kAS18StandingOnHydrant:
- 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);
+ gameSys.setAnimation(0x1FF, gnap._id, 0);
+ gameSys.insertSequence(0x1FF, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
break;
case kAS18OpenRightValveNoGarbageCan:
case kAS18OpenRightValveWithGarbageCan:
_vm->setFlag(kGFTruckFilledWithGas);
updateHotspots();
- _vm->_gnap->playPullOutDevice(2, 7);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(2, 7);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
- if (_vm->_gnap->_actionStatus == kAS18OpenRightValveNoGarbageCan)
- _vm->_gnap->_actionStatus = kAS18OpenRightValveNoGarbageCanDone;
+ if (gnap._actionStatus == kAS18OpenRightValveNoGarbageCan)
+ gnap._actionStatus = kAS18OpenRightValveNoGarbageCanDone;
else
- _vm->_gnap->_actionStatus = kAS18OpenRightValveWithGarbageCanDone;
+ gnap._actionStatus = kAS18OpenRightValveWithGarbageCanDone;
break;
case kAS18OpenRightValveWithGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x207, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x207, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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);
@@ -3966,14 +3989,14 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x207;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x207;
_vm->invRemove(kItemWrench);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18OpenRightValveNoGarbageCanDone:
_vm->setGrabCursorSprite(-1);
- gameSys.insertSequence(0x207, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x207, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), 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);
@@ -3982,13 +4005,13 @@ void Scene18::updateAnimations() {
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x207;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x207;
_vm->invRemove(kItemWrench);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18CloseRightValveWithGarbageCan:
- gameSys.insertSequence(0x205, _vm->_gnap->_id, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x205, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.removeSequence(0x20D, 39, true);
gameSys.insertSequence(0x215, 39, 0x214, 39, kSeqSyncWait, 0, 0, 0);
_vm->stopSound(0x22B);
@@ -3997,28 +4020,28 @@ void Scene18::updateAnimations() {
_vm->clearFlag(kGFTruckFilledWithGas);
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 517, _vm->_gnap->_id, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
+ gameSys.insertSequence(0x107B5, gnap._id, 517, gnap._id, kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
updateHotspots();
- _vm->_gnap->_sequenceDatNum = 1;
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_actionStatus = kAS18CloseRightValveWithGarbageCanDone;
+ gnap._sequenceDatNum = 1;
+ gnap._sequenceId = 0x7B5;
+ gnap._actionStatus = kAS18CloseRightValveWithGarbageCanDone;
break;
case kAS18CloseRightValveWithGarbageCanDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS18PutGarbageCanOnHydrant:
_vm->setFlag(kGFTruckKeysUsed);
_vm->clearFlag(kGFPlatypusDisguised);
- 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;
+ gameSys.insertSequence(0x20F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.setAnimation(0x20F, gnap._id, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x20F;
+ gnap._actionStatus = kAS18PutGarbageCanOnHydrantDone;
break;
case kAS18PutGarbageCanOnHydrantDone:
- gameSys.insertSequence(0x1F9, 19, 0x20F, _vm->_gnap->_id, kSeqNone, 0, 0, 0);
+ gameSys.insertSequence(0x1F9, 19, 0x20F, gnap._id, kSeqNone, 0, 0, 0);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -4096,6 +4119,7 @@ void Scene19::updateHotspots() {
void Scene19::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->queueInsertDeviceIcon();
_toyGrabCtr = 0;
@@ -4108,7 +4132,7 @@ void Scene19::run() {
gameSys.insertSequence(0x69, 19, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->_gnap->initPos(3, 6, kDirBottomRight);
+ gnap.initPos(3, 6, kDirBottomRight);
_currShopAssistantSequenceId = kS19ShopAssistantSequenceIds[_vm->getRandom(5)];
_nextShopAssistantSequenceId = _currShopAssistantSequenceId;
gameSys.setAnimation(_currShopAssistantSequenceId, 20, 4);
@@ -4116,7 +4140,7 @@ void Scene19::run() {
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_shopAssistantCtr = 0;
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
updateHotspots();
} else {
_currShopAssistantSequenceId = 0x6D;
@@ -4124,10 +4148,10 @@ void Scene19::run() {
gameSys.setAnimation(0x6D, 20, 4);
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(40) + 50;
- _vm->_gnap->initPos(3, 6, kDirBottomRight);
+ gnap.initPos(3, 6, kDirBottomRight);
_vm->_plat->initPos(4, 6, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
}
@@ -4142,32 +4166,32 @@ void Scene19::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS19Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS19Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -4175,12 +4199,12 @@ void Scene19::run() {
break;
case kHS19ExitOutsideToyStore:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS19WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107B2, 1);
- _vm->_gnap->_actionStatus = kAS19LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107B2, 1);
+ gnap._actionStatus = kAS19LeaveScene;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
@@ -4190,23 +4214,23 @@ void Scene19::run() {
break;
case kHS19Picture:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 2);
+ gnap.playScratchingHead(6, 2);
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS19GrabPicture;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]) | 0x10000, 1);
+ gnap._actionStatus = kAS19GrabPicture;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -4214,22 +4238,22 @@ void Scene19::run() {
break;
case kHS19ShopAssistant:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 2);
+ gnap.playScratchingHead(6, 2);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS19TalkShopAssistant;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -4243,22 +4267,22 @@ void Scene19::run() {
case kHS19Toy5:
case kHS19Toy6:
case kHS19Toy7:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap.playImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- _vm->_gnap->playIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
- _vm->_gnap->_actionStatus = kAS19GrabToy;
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
+ gnap.playIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap._actionStatus = kAS19GrabToy;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -4266,22 +4290,22 @@ void Scene19::run() {
break;
case kHS19Phone:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(9, 1);
+ gnap.playScratchingHead(9, 1);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- _vm->_gnap->playIdle(8, 2);
- _vm->_gnap->_actionStatus = kAS19UsePhone;
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
+ gnap.playIdle(8, 2);
+ gnap._actionStatus = kAS19UsePhone;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -4291,13 +4315,13 @@ void Scene19::run() {
case kHS19WalkArea1:
case kHS19WalkArea2:
case kHS19WalkArea3:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
}
@@ -4305,7 +4329,7 @@ void Scene19::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_vm->_plat->updateIdleSequence();
if (!_vm->_timers[6] && _nextShopAssistantSequenceId == -1) {
@@ -4338,10 +4362,11 @@ void Scene19::run() {
void Scene19::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS19UsePhone:
_nextShopAssistantSequenceId = 0x67;
break;
@@ -4363,14 +4388,14 @@ void Scene19::updateAnimations() {
}
break;
case kAS19GrabPicture:
- _vm->_gnap->playPullOutDevice(6, 2);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(6, 2);
+ gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x68, 19, 0);
gameSys.insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemPicture);
_vm->setFlag(kGFPictureTaken);
updateHotspots();
- _vm->_gnap->_actionStatus = kAS19GrabPictureDone;
+ gnap._actionStatus = kAS19GrabPictureDone;
break;
case kAS19GrabPictureDone:
_vm->setGrabCursorSprite(-1);
@@ -4391,7 +4416,7 @@ void Scene19::updateAnimations() {
break;
case kAS19TalkShopAssistant:
_nextShopAssistantSequenceId = 0x6D;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS19LeaveScene:
_vm->_sceneDone = true;
@@ -4424,24 +4449,24 @@ void Scene19::updateAnimations() {
while (_vm->_timers[5]) {
_vm->gameUpdateTick();
}
- _vm->_gnap->playIdle(6, 2);
- _vm->_gnap->_actionStatus = -1;
+ gnap.playIdle(6, 2);
+ gnap._actionStatus = -1;
break;
case 0x67:
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case 0x65:
- _vm->_gnap->playIdle(6, 2);
+ gnap.playIdle(6, 2);
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 0);
gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_newSceneNum = 18;
- _vm->_gnap->_actionStatus = kAS19LeaveScene;
+ gnap._actionStatus = kAS19LeaveScene;
break;
case 0x6D:
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 4);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 8c49bf6..c4f578d 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -55,6 +55,7 @@ void Scene20::updateHotspots() {
void Scene20::updateAnimationsCb() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(2) == 2) {
switch (_nextStonerGuySequenceId) {
@@ -68,8 +69,8 @@ void Scene20::updateAnimationsCb() {
break;
case 0x16A:
// Grab joint
- _vm->_gnap->playPullOutDevice(4, 4);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(4, 4);
+ gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x16A, 21, 0);
gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16A;
@@ -77,7 +78,7 @@ void Scene20::updateAnimationsCb() {
_vm->invAdd(kItemJoint);
_vm->setFlag(kGFJointTaken);
_stonerGuyShowingJoint = false;
- _vm->_gnap->_actionStatus = kAS20GrabJointDone;
+ gnap._actionStatus = kAS20GrabJointDone;
break;
case 0x16E:
gameSys.setAnimation(0x16E, 21, 2);
@@ -92,7 +93,7 @@ void Scene20::updateAnimationsCb() {
gameSys.insertSequence(_nextStonerGuySequenceId, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = _nextStonerGuySequenceId;
_nextStonerGuySequenceId = -1;
- _vm->_gnap->_actionStatus = kAS20ActionDone;
+ gnap._actionStatus = kAS20ActionDone;
break;
case 0x16F:
gameSys.setAnimation(_nextStonerGuySequenceId, 21, 2);
@@ -158,6 +159,7 @@ void Scene20::stopSounds() {
void Scene20::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -206,46 +208,46 @@ void Scene20::run() {
// checkGameAppStatus();
_vm->gameUpdateTick();
}
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
- _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ gnap.initPos(5, 11, kDirBottomRight);
_vm->_plat->initPos(6, 11, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 18:
- _vm->_gnap->initPos(11, 8, kDirBottomLeft);
+ gnap.initPos(11, 8, kDirBottomLeft);
_vm->_plat->initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 21:
- _vm->_gnap->initPos(-1, 8, kDirBottomLeft);
+ gnap.initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 22:
- _vm->_gnap->initPos(7, 6, kDirBottomRight);
+ gnap.initPos(7, 6, kDirBottomRight);
_vm->_plat->initPos(8, 6, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
break;
default:
- _vm->_gnap->initPos(8, 6, kDirBottomLeft);
+ gnap.initPos(8, 6, kDirBottomLeft);
_vm->_plat->initPos(9, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
break;
@@ -264,32 +266,32 @@ void Scene20::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS20Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS20Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(20);
+ gnap.kissPlatypus(20);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -297,96 +299,96 @@ void Scene20::run() {
break;
case kHS20ExitParkingLot:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 21;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS20LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS20LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
case kHS20ExitPhone:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 17;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS20LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS20LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS20ExitOutsideToyStore:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 18;
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS20LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS20LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
case kHS20ExitInsideGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS20LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS20LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_plat->_idleFacing = kDirUnk4;
}
break;
case kHS20ExitOutsideCircusWorld:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_stonerGuyShowingJoint)
_vm->_timers[4] = 0;
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS20LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
+ gnap._actionStatus = kAS20LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS20StonerGuy:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(5, 4);
+ gnap.playMoan2(5, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_stonerGuyShowingJoint)
- _vm->_gnap->_actionStatus = kAS20GrabJoint;
+ gnap._actionStatus = kAS20GrabJoint;
else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
if (_vm->isFlag(kGFJointTaken))
- _vm->_gnap->_actionStatus = kAS20TalkStonerGuyNoJoint;
+ gnap._actionStatus = kAS20TalkStonerGuyNoJoint;
else
- _vm->_gnap->_actionStatus = kAS20TalkStonerGuyHasJoint;
+ gnap._actionStatus = kAS20TalkStonerGuyHasJoint;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -394,27 +396,27 @@ void Scene20::run() {
break;
case kHS20GroceryStoreGuy:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 3);
+ gnap.playScratchingHead(2, 3);
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS20GrabGroceryStoreGuy;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS20GrabGroceryStoreGuy;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS20TalkGroceryStoreGuy;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -422,27 +424,27 @@ void Scene20::run() {
break;
case kHS20GroceryStoreHat:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHat;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(1, 6);
+ gnap.playScratchingHead(1, 6);
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS20GrabGroceryStoreHat;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -451,12 +453,12 @@ void Scene20::run() {
case kHS20WalkArea1:
case kHS20WalkArea2:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -474,9 +476,9 @@ void Scene20::run() {
_vm->_plat->updateIdleSequence();
_vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
}
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
+ if (gnap._actionStatus < 0 && !_vm->_timers[5] && _nextGroceryStoreGuySequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(50) + 130;
if (_vm->getRandom(4) != 0)
_nextGroceryStoreGuySequenceId = 0x17C;
@@ -485,7 +487,7 @@ void Scene20::run() {
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (_vm->_gnap->_actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -515,10 +517,11 @@ void Scene20::run() {
void Scene20::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS20LeaveScene:
_vm->_sceneDone = true;
break;
@@ -552,13 +555,13 @@ void Scene20::updateAnimations() {
_vm->_timers[6] = 200;
_vm->_timers[4] = 100;
_stonerGuyShowingJoint = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS20GrabJoint:
_nextStonerGuySequenceId = 0x16A;
break;
case kAS20ActionDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS20TalkGroceryStoreGuy:
gameSys.setAnimation(0x170, 21, 2);
@@ -603,13 +606,13 @@ void Scene20::updateAnimations() {
break;
case kAS20SwitchGroceryStoreHat:
_vm->setGrabCursorSprite(-1);
- 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;
+ gameSys.setAnimation(0x180, gnap._id, 0);
+ gameSys.insertSequence(0x180, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x180;
+ gnap._sequenceDatNum = 0;
_vm->invRemove(kItemCowboyHat);
_vm->invAdd(kItemGroceryStoreHat);
- _vm->_gnap->_actionStatus = kAS20SwitchGroceryStoreHatDone;
+ gnap._actionStatus = kAS20SwitchGroceryStoreHatDone;
break;
case kAS20SwitchGroceryStoreHatDone:
gameSys.insertSequence(0x17F, 20, 372, 20, kSeqSyncWait, 0, 0, 0);
@@ -624,13 +627,13 @@ void Scene20::updateAnimations() {
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = -1;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(Common::Point(3, 8), -1, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = -1;
break;
case kAS20GrabJointDone:
_vm->setGrabCursorSprite(kItemJoint);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -647,12 +650,12 @@ void Scene20::updateAnimations() {
break;
case 0x178:
gameSys.setAnimation(_nextGroceryStoreGuySequenceId, 20, 3);
- gameSys.setAnimation(0x17D, _vm->_gnap->_id, 0);
+ gameSys.setAnimation(0x17D, gnap._id, 0);
gameSys.insertSequence(_nextGroceryStoreGuySequenceId, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 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.insertSequence(0x17D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x17D;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
@@ -664,17 +667,17 @@ 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->_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.insertSequence(0x17E, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x17E;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS20ActionDone;
gameSys.setAnimation(0x16D, 21, 2);
gameSys.insertSequence(0x16D, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16D;
_currGroceryStoreGuySequenceId = 377;
_nextGroceryStoreGuySequenceId = -1;
_nextStonerGuySequenceId = -1;
- _vm->_gnap->walkTo(Common::Point(4, 8), -1, 0x107BB, 1);
+ gnap.walkTo(Common::Point(4, 8), -1, 0x107BB, 1);
break;
case 0x17C:
gameSys.setAnimation(0, 0, 3);
@@ -690,7 +693,7 @@ void Scene20::updateAnimations() {
gameSys.insertSequence(0x175, 20, _currGroceryStoreGuySequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currGroceryStoreGuySequenceId = 0x175;
_nextGroceryStoreGuySequenceId = -1;
- _vm->_gnap->_actionStatus = kAS20ActionDone;
+ gnap._actionStatus = kAS20ActionDone;
break;
default:
if (_nextGroceryStoreGuySequenceId != -1) {
@@ -736,6 +739,7 @@ void Scene21::updateHotspots() {
void Scene21::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(6);
@@ -744,7 +748,7 @@ void Scene21::run() {
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
- _vm->_gnap->initPos(5, 8, kDirBottomRight);
+ gnap.initPos(5, 8, kDirBottomRight);
_vm->_plat->initPos(6, 8, kDirNone);
gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
@@ -752,16 +756,16 @@ void Scene21::run() {
_vm->endSceneInit();
_vm->clearFlag(kGFKeysTaken);
} else {
- _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ gnap.initPos(5, 11, kDirBottomRight);
_vm->_plat->initPos(6, 11, kDirNone);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
} else {
- _vm->_gnap->initPos(5, 11, kDirBottomRight);
+ gnap.initPos(5, 11, kDirBottomRight);
_vm->_plat->initPos(6, 11, kDirNone);
_currOldLadySequenceId = 0x89;
gameSys.setAnimation(0x89, 79, 3);
@@ -769,7 +773,7 @@ void Scene21::run() {
_nextOldLadySequenceId = -1;
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
@@ -782,32 +786,32 @@ void Scene21::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS21Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS21Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -815,19 +819,19 @@ void Scene21::run() {
break;
case kHS21Banana:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 5);
+ gnap.playScratchingHead(2, 5);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
- _vm->_gnap->playPullOutDevice(2, 5);
- _vm->_gnap->playUseDevice(0, 0);
- _vm->_gnap->_actionStatus = kAS21GrabBanana;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
+ gnap.playPullOutDevice(2, 5);
+ gnap.playUseDevice(0, 0);
+ gnap._actionStatus = kAS21GrabBanana;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -838,32 +842,32 @@ void Scene21::run() {
break;
case kHS21OldLady:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
_vm->_newSceneNum = 47;
- _vm->_gnap->walkTo(Common::Point(4, 6), 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS21UseHatWithOldLady;
+ gnap.walkTo(Common::Point(4, 6), 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(4, 6, 7, 4);
+ gnap.playShowCurrItem(4, 6, 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(7, 4);
+ gnap.playScratchingHead(7, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
_vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(Common::Point(7, 6), 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS21GrabOldLady;
+ gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS21GrabOldLady;
_vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS21TalkOldLady;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -871,23 +875,23 @@ void Scene21::run() {
break;
case kHS21ExitOutsideGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
- _vm->_gnap->_actionStatus = kAS21LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
+ gnap._actionStatus = kAS21LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS21WalkArea1:
case kHS21WalkArea2:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -901,8 +905,8 @@ void Scene21::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
- if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
+ gnap.updateIdleSequence();
+ if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(30) + 50;
switch (_vm->getRandom(5)) {
case 0:
@@ -937,13 +941,14 @@ void Scene21::run() {
void Scene21::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS21TalkOldLady:
_nextOldLadySequenceId = 0x8B;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS21GrabBanana:
gameSys.setAnimation(0x8C, 59, 0);
@@ -951,22 +956,22 @@ void Scene21::updateAnimations() {
_vm->setFlag(kGFUnk04);
_vm->invAdd(kItemBanana);
updateHotspots();
- _vm->_gnap->_actionStatus = kAS21GrabBananaDone;
+ gnap._actionStatus = kAS21GrabBananaDone;
break;
case kAS21GrabBananaDone:
_vm->setGrabCursorSprite(kItemBanana);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS21GrabOldLady:
_vm->_timers[4] = _vm->getRandom(30) + 50;
_nextOldLadySequenceId = 0x87;
break;
case kAS21UseHatWithOldLady:
- 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;
+ gameSys.setAnimation(0x8F, gnap._id, 0);
+ gameSys.insertSequence(0x8F, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x8F;
+ gnap._actionStatus = kAS21UseHatWithOldLadyDone;
_vm->invAdd(kItemTickets);
_vm->invRemove(kItemGroceryStoreHat);
_vm->setGrabCursorSprite(-1);
@@ -984,16 +989,16 @@ 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->_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;
+ gameSys.insertSequence(0x86, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x86;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = -1;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else if (_nextOldLadySequenceId == 0x91) {
gameSys.setAnimation(0x91, 79, 0);
gameSys.insertSequence(_nextOldLadySequenceId, 79, _currOldLadySequenceId, 79, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS21LeaveScene;
+ gnap._actionStatus = kAS21LeaveScene;
_currOldLadySequenceId = _nextOldLadySequenceId;
_nextOldLadySequenceId = -1;
} else {
@@ -1029,6 +1034,7 @@ void Scene22::updateHotspots() {
void Scene22::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
gameSys.insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -1043,14 +1049,14 @@ void Scene22::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 20) {
- _vm->_gnap->initPos(2, 8, kDirBottomRight);
+ gnap.initPos(2, 8, kDirBottomRight);
_vm->_plat->initPos(1, 8, kDirNone);
_vm->endSceneInit();
} else {
- _vm->_gnap->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
+ gnap.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
_vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
}
@@ -1098,32 +1104,32 @@ void Scene22::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS22Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS22Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1131,44 +1137,44 @@ void Scene22::run() {
break;
case kHS22ExitOutsideGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS22LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS22LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
case kHS22ExitBackGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 23;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS22LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS22LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
case kHS22Cashier:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 4);
+ gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS22TalkCashier;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
break;
}
}
@@ -1177,12 +1183,12 @@ void Scene22::run() {
case kHS22WalkArea1:
case kHS22WalkArea2:
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1192,7 +1198,7 @@ void Scene22::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[6] && _nextCashierSequenceId == -1) {
_vm->_timers[6] = _vm->getRandom(30) + 20;
if (_vm->getRandom(8) != 0) {
@@ -1235,10 +1241,11 @@ void Scene22::run() {
void Scene22::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS22LeaveScene:
_vm->_sceneDone = true;
break;
@@ -1246,7 +1253,7 @@ void Scene22::updateAnimations() {
_nextCashierSequenceId = 0x5C;
break;
}
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextCashierSequenceId != -1) {
@@ -1280,6 +1287,7 @@ void Scene23::updateHotspots() {
void Scene23::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->_timers[4] = _vm->getRandom(100) + 200;
_vm->_timers[5] = _vm->getRandom(100) + 200;
@@ -1292,7 +1300,7 @@ void Scene23::run() {
_vm->queueInsertDeviceIcon();
- _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ gnap.initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 7, kDirNone);
gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
@@ -1301,9 +1309,9 @@ void Scene23::run() {
_vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
- _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else {
- _vm->_gnap->walkTo(Common::Point(2, 7), 0, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 7), 0, 0x107B9, 1);
while (gameSys.getAnimationStatus(0) != 2)
_vm->gameUpdateTick();
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
@@ -1321,32 +1329,32 @@ void Scene23::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS23Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS23Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1354,33 +1362,33 @@ void Scene23::run() {
break;
case kHS23Cereals:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->_gnap->playMoan2(0, 0);
+ gnap.playMoan2(0, 0);
else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS23LookCereals;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS23LookCereals;
}
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
else {
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
- _vm->_gnap->_actionStatus = kAS23GrabCereals;
+ gnap._actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1388,24 +1396,24 @@ void Scene23::run() {
break;
case kHS23ExitFrontGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 22;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS23LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
+ gnap._actionStatus = kAS23LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
}
break;
case kHS23WalkArea1:
case kHS23WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1415,8 +1423,8 @@ void Scene23::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
- if (!_vm->_timers[4] && _vm->_gnap->_actionStatus == -1) {
+ gnap.updateIdleSequence();
+ if (!_vm->_timers[4] && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
switch (_vm->getRandom(4)) {
case 0:
@@ -1461,25 +1469,26 @@ void Scene23::run() {
void Scene23::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS23LookCereals:
_vm->showFullScreenSprite(0x48);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS23GrabCereals:
- 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.setAnimation(0xBE, gnap._id, 0);
+ gameSys.insertSequence(0xBE, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.requestRemoveSequence(0xBF, 2);
- _vm->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0xBE;
- _vm->_gnap->_actionStatus = kAS23GrabCerealsDone;
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0xBE;
+ gnap._actionStatus = kAS23GrabCerealsDone;
break;
case kAS23GrabCerealsDone:
_vm->setGrabCursorSprite(kItemCereals);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS23LeaveScene:
_vm->_sceneDone = true;
@@ -1536,6 +1545,7 @@ void Scene24::updateHotspots() {
void Scene24::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
int counter = 0;
_vm->playSound(0x10940, true);
@@ -1563,16 +1573,16 @@ void Scene24::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 20) {
- _vm->_gnap->initPos(1, 8, kDirBottomRight);
+ gnap.initPos(1, 8, kDirBottomRight);
_vm->_plat->initPos(2, 8, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(1, 9), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(1, 9), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
} else {
- _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ gnap.initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
@@ -1588,32 +1598,32 @@ void Scene24::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS24Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS24Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1621,22 +1631,22 @@ void Scene24::run() {
break;
case kHS24ExitCircusWorld:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS24LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS24LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS24ExitOutsideGrubCity:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS24LeaveScene;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS24LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1644,13 +1654,13 @@ void Scene24::run() {
case kHS24WalkArea1:
case kHS24WalkArea2:
case kHS24WalkArea3:
- if (_vm->_gnap->_actionStatus == -1)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus == -1)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1663,7 +1673,7 @@ void Scene24::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 50;
gameSys.insertSequence(0x37, 20, _girlSequenceId, 20, kSeqSyncWait, 0, 0, 0);
@@ -1723,12 +1733,13 @@ void Scene24::run() {
void Scene24::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnap->_actionStatus == kAS24LeaveScene)
+ if (gnap._actionStatus == kAS24LeaveScene)
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
}
@@ -1798,6 +1809,7 @@ void Scene25::playAnims(int index) {
void Scene25::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(5);
@@ -1812,16 +1824,16 @@ void Scene25::run() {
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 24) {
- _vm->_gnap->initPos(5, 11, kDirUpLeft);
+ gnap.initPos(5, 11, kDirUpLeft);
_vm->_plat->initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 7), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(5, 7), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(6, 7), -1, 0x107C2, 1);
} else {
- _vm->_gnap->initPos(5, 6, kDirBottomRight);
+ gnap.initPos(5, 6, kDirBottomRight);
_vm->_plat->initPos(6, 6, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
@@ -1834,32 +1846,32 @@ void Scene25::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS25Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS25Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1867,29 +1879,29 @@ void Scene25::run() {
break;
case kHS25TicketVendor:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
- _vm->_gnap->_actionStatus = kAS25ShowTicketToVendor;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap._actionStatus = kAS25ShowTicketToVendor;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
_nextTicketVendorSequenceId = 0x5B;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 1);
+ gnap.playScratchingHead(6, 1);
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS25TalkTicketVendor;
+ gnap._idleFacing = kDirUpRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -1897,29 +1909,29 @@ void Scene25::run() {
break;
case kHS25ExitOutsideCircusWorld:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 24;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
- _vm->_gnap->_actionStatus = kAS25LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
+ gnap._actionStatus = kAS25LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS25ExitInsideCircusWorld:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFNeedleTaken)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
- _vm->_gnap->_actionStatus = kAS25LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
+ gnap._actionStatus = kAS25LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(Common::Point(4, 5), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicket;
+ gnap.walkTo(Common::Point(4, 5), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS25EnterCircusWihoutTicket;
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
}
}
@@ -1929,26 +1941,26 @@ void Scene25::run() {
case kHS25Posters2:
case kHS25Posters3:
case kHS25Posters4:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], -1, -1, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], -1, -1, 1);
if (_vm->_sceneClickedHotspot == 5 || _vm->_sceneClickedHotspot == 6)
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap._idleFacing = kDirUpLeft;
else if (_vm->_sceneClickedHotspot == 8)
- _vm->_gnap->_idleFacing = kDirBottomRight;
+ gnap._idleFacing = kDirBottomRight;
else
- _vm->_gnap->_idleFacing = kDirUpRight;
- _vm->_gnap->playIdle(0, 0);
+ gnap._idleFacing = kDirUpRight;
+ gnap.playIdle(0, 0);
playAnims(8 - _vm->_sceneClickedHotspot + 1);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playMoan2(0, 0);
+ gnap.playMoan2(0, 0);
break;
}
}
@@ -1957,13 +1969,13 @@ void Scene25::run() {
case kHS25WalkArea1:
case kHS25WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -1973,8 +1985,8 @@ void Scene25::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
- if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && _vm->_gnap->_actionStatus == -1) {
+ gnap.updateIdleSequence();
+ if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
switch (_vm->getRandom(13)) {
case 0:
@@ -2026,13 +2038,14 @@ void Scene25::run() {
void Scene25::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS25TalkTicketVendor:
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x57 : 0x5F;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS25EnterCircusWihoutTicket:
_nextTicketVendorSequenceId = 0x5E;
@@ -2043,13 +2056,13 @@ void Scene25::updateAnimations() {
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->playIdle(0, 0);
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
+ gnap.playIdle(0, 0);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS25EnterCircusWihoutTicketDone;
+ gnap._actionStatus = kAS25EnterCircusWihoutTicketDone;
break;
case kAS25EnterCircusWihoutTicketDone:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS25ShowTicketToVendor:
_vm->setGrabCursorSprite(-1);
@@ -2057,7 +2070,7 @@ void Scene25::updateAnimations() {
_vm->setFlag(kGFNeedleTaken);
gameSys.setAnimation(0x61, 40, 0);
gameSys.insertSequence(0x61, 40, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS25ShowTicketToVendorDone;
+ gnap._actionStatus = kAS25ShowTicketToVendorDone;
break;
case kAS25ShowTicketToVendorDone:
_nextTicketVendorSequenceId = 0x53;
@@ -2073,7 +2086,7 @@ void Scene25::updateAnimations() {
gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
} else if (_nextTicketVendorSequenceId != -1) {
gameSys.setAnimation(_nextTicketVendorSequenceId, 39, 3);
gameSys.insertSequence(_nextTicketVendorSequenceId, 39, _currTicketVendorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
@@ -2109,6 +2122,7 @@ void Scene26::updateHotspots() {
void Scene26::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->startSoundTimerB(7);
_vm->playSound(0x1093B, true);
@@ -2130,13 +2144,13 @@ void Scene26::run() {
gameSys.insertSequence(0x5E, 40, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 25) {
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-2, 8, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else {
- _vm->_gnap->initPos(2, 8, kDirBottomRight);
+ gnap.initPos(2, 8, kDirBottomRight);
_vm->_plat->initPos(3, 8, kDirNone);
_vm->endSceneInit();
}
@@ -2150,32 +2164,32 @@ void Scene26::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS26Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS26Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2183,59 +2197,59 @@ void Scene26::run() {
break;
case kHS26ExitOutsideCircusWorld:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 25;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS26LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideCircusWorld].y), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitOutsideClown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS26LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitOutsideClown].y), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitArcade:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS26LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitArcade].y), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitElephant:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 30;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitElephant].y), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS26LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitElephant].y), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS26LeaveScene;
}
break;
case kHS26ExitBeerStand:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y), 0, 0x107BB, 1);
- _vm->_gnap->_actionStatus = kAS26LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS26ExitBeerStand].y), 0, 0x107BB, 1);
+ gnap._actionStatus = kAS26LeaveScene;
}
break;
case kHS26WalkArea1:
case kHS26WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2248,7 +2262,7 @@ void Scene26::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[5] && _nextKidSequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(20) + 50;
if (_vm->getRandom(5) != 0)
@@ -2281,12 +2295,13 @@ void Scene26::run() {
void Scene26::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- if (_vm->_gnap->_actionStatus == kAS26LeaveScene)
+ if (gnap._actionStatus == kAS26LeaveScene)
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
if (gameSys.getAnimationStatus(3) == 2 && _nextKidSequenceId != -1) {
@@ -2325,6 +2340,7 @@ void Scene27::updateHotspots() {
void Scene27::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(4);
@@ -2347,28 +2363,28 @@ void Scene27::run() {
switch (_vm->_prevSceneNum) {
case 26:
- _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ gnap.initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
case 29:
- _vm->_gnap->initPos(-1, 8, kDirBottomRight);
+ gnap.initPos(-1, 8, kDirBottomRight);
_vm->_plat->initPos(-1, 9, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 31:
- _vm->_gnap->initPos(12, 8, kDirBottomLeft);
+ gnap.initPos(12, 8, kDirBottomLeft);
_vm->_plat->initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(8, 9), -1, 0x107C2, 1);
break;
default:
- _vm->_gnap->initPos(6, 8, kDirBottomRight);
+ gnap.initPos(6, 8, kDirBottomRight);
_vm->_plat->initPos(5, 9, kDirNone);
_vm->endSceneInit();
break;
@@ -2378,38 +2394,38 @@ void Scene27::run() {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
_vm->_sceneClickedHotspot = -1;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
case kHS27Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS27Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2417,26 +2433,26 @@ void Scene27::run() {
break;
case kHS27Janitor:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemPicture) {
- _vm->_gnap->_idleFacing = kDirUpLeft;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
- _vm->_gnap->_actionStatus = kAS27ShowPictureToJanitor;
+ gnap._idleFacing = kDirUpLeft;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
+ gnap._actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 3);
+ gnap.playScratchingHead(6, 3);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS27TalkJanitor;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2444,22 +2460,22 @@ void Scene27::run() {
break;
case kHS27Bucket:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(3, 3);
+ gnap.playScratchingHead(3, 3);
break;
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket]) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS27GrabBucket;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket]) | 0x10000, 1);
+ gnap._actionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2467,60 +2483,60 @@ void Scene27::run() {
break;
case kHS27ExitCircus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS27LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS27LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
}
break;
case kHS27ExitArcade:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 29;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS27LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS27LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
case kHS27ExitBeerStand:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 31;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS27LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
+ gnap._actionStatus = kAS27LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
}
break;
case kHS27ExitClown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFPlatypus)) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 28;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
- _vm->_gnap->_actionStatus = kAS27LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
+ gnap._actionStatus = kAS27LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
+ gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS27TryEnterClownTent;
+ gnap._actionStatus = kAS27TryEnterClownTent;
}
}
break;
case kHS27WalkArea1:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2534,13 +2550,13 @@ void Scene27::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (_vm->_debugLevel == 4)
_vm->updateIdleTimer();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 60;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->getRandom(3) != 0)
_nextJanitorSequenceId = 0xCB;
else
@@ -2549,7 +2565,7 @@ void Scene27::run() {
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 300;
- if (_vm->_gnap->_actionStatus < 0)
+ if (gnap._actionStatus < 0)
gameSys.insertSequence(0xD4, 120, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->playSoundB();
@@ -2569,10 +2585,11 @@ void Scene27::run() {
void Scene27::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS27TalkJanitor:
switch (_vm->getRandom(3)) {
case 0:
@@ -2587,18 +2604,18 @@ void Scene27::updateAnimations() {
}
break;
case kAS27GrabBucket:
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
_vm->setFlag(kGFUnk13);
gameSys.setAnimation(0xD2, 39, 0);
gameSys.insertSequence(0xD2, 39, 211, 39, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS27GrabBucketDone;
+ gnap._actionStatus = kAS27GrabBucketDone;
break;
case kAS27GrabBucketDone:
_vm->setGrabCursorSprite(kItemEmptyBucket);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS27ShowPictureToJanitor:
_nextJanitorSequenceId = 0xD0;
@@ -2610,17 +2627,17 @@ void Scene27::updateAnimations() {
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
- _vm->_gnap->_actionStatus = kAS27TryEnterClownTentDone;
+ gnap._actionStatus = kAS27TryEnterClownTentDone;
break;
case kAS27TryEnterClownTentDone:
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(Common::Point(_vm->_hotspotsWalkPos[7].x, 9), -1, 0x107BC, 1);
+ gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[7].x, 9), -1, 0x107BC, 1);
_vm->_hotspots[kHS27WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS27EnterClownTent:
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107B2, 1);
- _vm->_gnap->_actionStatus = kAS27LeaveScene;
+ gnap.walkTo(gnap._pos, 0, 0x107B2, 1);
+ gnap._actionStatus = kAS27LeaveScene;
break;
case kAS27LeaveScene:
_vm->_sceneDone = true;
@@ -2640,7 +2657,7 @@ void Scene27::updateAnimations() {
case 0xCC:
case 0xCD:
case 0xCE:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 3);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
@@ -2649,11 +2666,11 @@ void Scene27::updateAnimations() {
break;
case 0xD0:
// Show picture to janitor
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
- _vm->_gnap->_actionStatus = kAS27EnterClownTent;
+ gnap._actionStatus = kAS27EnterClownTent;
_currJanitorSequenceId = _nextJanitorSequenceId;
_nextJanitorSequenceId = -1;
_vm->setFlag(kGFPlatypus);
@@ -2701,6 +2718,7 @@ void Scene28::updateHotspots() {
void Scene28::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1093C, true);
_nextClownSequenceId = -1;
@@ -2723,12 +2741,12 @@ void Scene28::run() {
gameSys.insertSequence(_currClownSequenceId, 39, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
- _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ gnap.initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
} else {
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->initPos(8, 8, kDirBottomLeft);
+ gnap.initPos(8, 8, kDirBottomLeft);
_vm->_plat->initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
@@ -2738,12 +2756,12 @@ void Scene28::run() {
gameSys.insertSequence(_currClownSequenceId, 39, 0x11B, 39, kSeqSyncWait, 0, 0, 0);
_nextClownSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 80;
- _vm->_gnap->_actionStatus = kAS28GnapWaiting;
+ gnap._actionStatus = kAS28GnapWaiting;
while (gameSys.getAnimationStatus(3) != 2) {
_vm->gameUpdateTick();
_vm->updateMouseCursor();
}
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
}
while (!_vm->_sceneDone) {
@@ -2755,32 +2773,32 @@ void Scene28::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS28Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS28Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2788,32 +2806,32 @@ void Scene28::run() {
break;
case kHS28Horn:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(2, 8, 3, 4);
+ gnap.playShowCurrItem(2, 8, 3, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 4);
+ gnap.playScratchingHead(2, 4);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn]) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS28GrabHornSuccess;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn]) | 0x10000, 1);
+ gnap._actionStatus = kAS28GrabHornSuccess;
}
} else {
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(2, 8), 0, 0x107BB, 1);
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(Common::Point(2, 8), 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Horn], 0, 0x107BB, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Horn], 0, 0x107BB, 1);
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS28GrabHornFails;
+ gnap._actionStatus = kAS28GrabHornFails;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2821,39 +2839,39 @@ void Scene28::run() {
break;
case kHS28Clown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk21)) {
if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->_gnap->playScratchingHead(5, 2);
+ gnap.playScratchingHead(5, 2);
else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
- _vm->_gnap->_actionStatus = kAS28UseBeerBucketWithClown;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
+ gnap._actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
- _vm->_gnap->_actionStatus = kAS28UsePillBucketWithClown;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
+ gnap._actionStatus = kAS28UsePillBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(5, 2);
+ gnap.playScratchingHead(5, 2);
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirUpLeft;
- _vm->_gnap->walkTo(Common::Point(5, 8), 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS28TalkClown;
+ gnap._idleFacing = kDirUpLeft;
+ gnap.walkTo(Common::Point(5, 8), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2861,35 +2879,35 @@ void Scene28::run() {
break;
case kHS28ExitOutsideClown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
_vm->_hotspots[kHS28WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
- _vm->_gnap->_actionStatus = kAS28LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
+ gnap._actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
case kHS28EmptyBucket:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
} else if (_vm->isFlag(kGFUnk21)) {
- _vm->_gnap->playImpossible(8, 6);
+ gnap.playImpossible(8, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(8, 6);
+ gnap.playScratchingHead(8, 6);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS28GrabEmptyBucket;
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
+ gnap._actionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -2898,13 +2916,13 @@ void Scene28::run() {
case kHS28WalkArea1:
case kHS28WalkArea2:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -2917,10 +2935,10 @@ void Scene28::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- _vm->_gnap->updateIdleSequence();
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 80;
- if (_vm->_gnap->_actionStatus < 0 && !_vm->isFlag(kGFUnk21))
+ if (gnap._actionStatus < 0 && !_vm->isFlag(kGFUnk21))
_nextClownSequenceId = 0x114;
}
}
@@ -2939,10 +2957,11 @@ void Scene28::run() {
void Scene28::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS28UseBeerBucketWithClown:
_vm->setFlag(kGFUnk22);
_nextClownSequenceId = 0x113;
@@ -2960,11 +2979,11 @@ void Scene28::updateAnimations() {
_nextClownSequenceId = 0x119;
break;
case kAS28GrabHornSuccess:
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x117, 59, 0);
gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS28GrabHornSuccessDone;
+ gnap._actionStatus = kAS28GrabHornSuccessDone;
break;
case kAS28GrabHornSuccessDone:
_vm->hideCursor();
@@ -2979,31 +2998,31 @@ void Scene28::updateAnimations() {
_vm->setGrabCursorSprite(kItemHorn);
_vm->invAdd(kItemHorn);
updateHotspots();
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS28GrabEmptyBucket:
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x111, 99, 0);
gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS28GrabEmptyBucketDone;
+ gnap._actionStatus = kAS28GrabEmptyBucketDone;
break;
case kAS28GrabEmptyBucketDone:
_vm->setGrabCursorSprite(kItemEmptyBucket);
_vm->clearFlag(kGFUnk22);;
updateHotspots();
_vm->invAdd(kItemEmptyBucket);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS28GrabHornFailsDone:
- gameSys.insertSequence(0x107B5, _vm->_gnap->_id, 281, 39, kSeqSyncWait, 0, 75 * _vm->_gnap->_pos.x - _vm->_gnap->_gridX, 48 * _vm->_gnap->_pos.y - _vm->_gnap->_gridY);
- _vm->_gnap->_sequenceId = 0x7B5;
- _vm->_gnap->_sequenceDatNum = 1;
+ gameSys.insertSequence(0x107B5, gnap._id, 281, 39, kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
+ gnap._sequenceId = 0x7B5;
+ gnap._sequenceDatNum = 1;
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107BB, 1);
+ gnap._actionStatus = -1;
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107BB, 1);
break;
case kAS28TalkClown:
_clownTalkCtr = (_clownTalkCtr + 1) % 2;
@@ -3015,7 +3034,7 @@ void Scene28::updateAnimations() {
_nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
break;
case kAS28GnapWaiting:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case kAS28LeaveScene:
_vm->_sceneDone = true;
@@ -3033,7 +3052,7 @@ void Scene28::updateAnimations() {
gameSys.insertSequence(0x11B, 39, _nextClownSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClownSequenceId = 0x11B;
_nextClownSequenceId = -1;
- _vm->_gnap->_actionStatus = kAS28GnapWaiting;
+ gnap._actionStatus = kAS28GnapWaiting;
break;
case 0x116:
_vm->setGrabCursorSprite(-1);
@@ -3044,20 +3063,20 @@ void Scene28::updateAnimations() {
gameSys.insertSequence(0x118, 59, 0, 0, kSeqNone, _vm->getSequenceTotalDuration(_nextClownSequenceId), 0, 0);
_currClownSequenceId = _nextClownSequenceId;
_nextClownSequenceId = -1;
- _vm->_gnap->_actionStatus = kAS28GnapWaiting;
+ gnap._actionStatus = kAS28GnapWaiting;
break;
case 0x11D:
case 0x11E:
case 0x11F:
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case 0x119:
- gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(_vm->_gnap->_sequenceDatNum, _vm->_gnap->_sequenceId), _vm->_gnap->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextClownSequenceId, 39, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextClownSequenceId, 39, 0);
gameSys.removeSequence(_currClownSequenceId, 39, true);
- _vm->_gnap->_actionStatus = kAS28GrabHornFailsDone;
- _vm->_gnap->_sequenceId = _nextClownSequenceId;
- _vm->_gnap->_sequenceDatNum = 0;
+ gnap._actionStatus = kAS28GrabHornFailsDone;
+ gnap._sequenceId = _nextClownSequenceId;
+ gnap._sequenceDatNum = 0;
_nextClownSequenceId = -1;
break;
}
@@ -3098,6 +3117,7 @@ void Scene29::updateHotspots() {
void Scene29::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
@@ -3124,16 +3144,16 @@ void Scene29::run() {
gameSys.insertSequence(0xF5, 38, 0, 0, kSeqLoop, 0, 0, 0);
if (_vm->_prevSceneNum == 27) {
- _vm->_gnap->initPos(12, 7, kDirBottomRight);
+ gnap.initPos(12, 7, kDirBottomRight);
_vm->_plat->initPos(12, 8, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 7), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(8, 7), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
- _vm->_gnap->initPos(-1, 7, kDirBottomRight);
+ gnap.initPos(-1, 7, kDirBottomRight);
_vm->_plat->initPos(-2, 7, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
}
@@ -3146,32 +3166,32 @@ void Scene29::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS29Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS29Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3179,27 +3199,27 @@ void Scene29::run() {
break;
case kHS29Monkey:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS29UseBananaWithMonkey;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(5, 6);
+ gnap.playScratchingHead(5, 6);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
+ gnap.playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3207,45 +3227,45 @@ void Scene29::run() {
break;
case kHS29ExitCircus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS29LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
+ gnap._actionStatus = kAS29LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
case kHS29ExitOutsideClown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS29LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS29LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
}
break;
case kHS29Aracde:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->setGrabCursorSprite(-1);
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
- _vm->_gnap->playIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
- _vm->_gnap->_actionStatus = kAS29LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
+ gnap.playIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
+ gnap._actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan2(0, 0);
+ gnap.playMoan2(0, 0);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -3253,13 +3273,13 @@ void Scene29::run() {
break;
case kHS29WalkArea1:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -3271,14 +3291,14 @@ void Scene29::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0) {
+ gnap.updateIdleSequence();
_vm->_plat->updateIdleSequence();
}
if (!_vm->_timers[4]) {
if (_vm->invHas(kItemHorn)) {
_vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
switch (_vm->getRandom(5)) {
case 0:
_nextManSequenceId = 0xED;
@@ -3316,10 +3336,11 @@ void Scene29::run() {
void Scene29::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS29UseBananaWithMonkey:
_nextMonkeySequenceId = 0xE5;
break;
@@ -3338,14 +3359,14 @@ void Scene29::updateAnimations() {
if (gameSys.getAnimationStatus(4) == 2) {
if (_nextMonkeySequenceId == 0xE5) {
- 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.insertSequence(0xF2, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0xF2;
gameSys.setAnimation(0xE6, 159, 0);
gameSys.setAnimation(0, 159, 4);
gameSys.insertSequence(_nextMonkeySequenceId, 159, _currMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xE6, 159, _nextMonkeySequenceId, 159, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = kAS29LeaveScene;
+ gnap._actionStatus = kAS29LeaveScene;
_currMonkeySequenceId = 0xE6;
_nextMonkeySequenceId = -1;
_vm->_timers[5] = 30;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 871177b..c0050c1 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -46,6 +46,8 @@ void Scene30::updateHotspots() {
void Scene30::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
+
bool hasTakenPill = false;
_vm->playSound(0x1093B, true);
@@ -64,10 +66,10 @@ void Scene30::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
_kidSequenceId = 0x101;
- _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ gnap.initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
@@ -79,32 +81,32 @@ void Scene30::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS30Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS30Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -112,27 +114,27 @@ void Scene30::run() {
break;
case kHS30PillMachine:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole && !_vm->isFlag(kGFUnk23)) {
_vm->_hotspots[kHS30WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine], 0, 0x107BC, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine], 0, 0x107BC, 1);
_vm->_hotspots[kHS30WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS30UsePillMachine;
+ gnap._actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->walkTo(Common::Point(9, 8), 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS30LookPillMachine;
+ gnap.walkTo(Common::Point(9, 8), 0, 0x107BC, 1);
+ gnap._actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
- _vm->_gnap->playScratchingHead(8, 5);
+ gnap.playScratchingHead(8, 5);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(8, 5);
+ gnap.playImpossible(8, 5);
break;
}
}
@@ -140,26 +142,26 @@ void Scene30::run() {
break;
case kHS30ExitCircus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
if (hasTakenPill)
_vm->_newSceneNum = 47;
else
_vm->_newSceneNum = 26;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS30LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS30LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
case kHS30WalkArea1:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -172,11 +174,11 @@ void Scene30::run() {
if (!_vm->_isLeavingScene) {
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->getRandom(5) == 1) {
gameSys.insertSequence(0xFF, 40, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x100, 40, _kidSequenceId, 40, kSeqSyncWait, 0, 0, 0);
@@ -188,7 +190,7 @@ void Scene30::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (!_vm->isFlag(kGFUnk23) || hasTakenPill)
gameSys.insertSequence(0x109, 20, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -212,57 +214,58 @@ void Scene30::run() {
void Scene30::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS30LeaveScene:
_vm->_sceneDone = true;
break;
case kAS30UsePillMachine:
_vm->setGrabCursorSprite(-1);
- 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;
+ gameSys.setAnimation(0x105, gnap._id, 0);
+ gameSys.insertSequence(0x105, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x105;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS30UsePillMachine2;
break;
case kAS30UsePillMachine2:
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
_vm->addFullScreenSprite(0x3F, 255);
- gameSys.removeSequence(0x105, _vm->_gnap->_id, true);
+ gameSys.removeSequence(0x105, 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->_gnap->_id, 0);
- gameSys.insertSequence(0x103, _vm->_gnap->_id, 0, 0, kSeqNone, 0, 0, 0);
+ gameSys.setAnimation(0x103, gnap._id, 0);
+ gameSys.insertSequence(0x103, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
_vm->removeFullScreenSprite();
_vm->showCursor();
- _vm->_gnap->_actionStatus = kAS30UsePillMachine3;
+ gnap._actionStatus = kAS30UsePillMachine3;
_vm->invAdd(kItemPill);
_vm->setFlag(kGFUnk23);
break;
case kAS30UsePillMachine3:
- 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;
+ gameSys.setAnimation(0x104, gnap._id, 0);
+ gameSys.insertSequence(0x104, gnap._id, makeRid(gnap._sequenceDatNum, 0x103), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._sequenceId = 0x104;
+ gnap._sequenceDatNum = 0;
+ gnap._actionStatus = kAS30UsePillMachine4;
_vm->setGrabCursorSprite(kItemDiceQuarterHole);
break;
case kAS30UsePillMachine4:
gameSys.insertSequence(0x106, 1, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine] + Common::Point(0, 1), -1, 0x107BC, 1);
- _vm->_gnap->_actionStatus = -1;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS30PillMachine] + Common::Point(0, 1), -1, 0x107BC, 1);
+ gnap._actionStatus = -1;
break;
case kAS30LookPillMachine:
if (_vm->isFlag(kGFUnk23))
_vm->showFullScreenSprite(0xE3);
else
_vm->showFullScreenSprite(0xE2);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -295,6 +298,7 @@ void Scene31::updateHotspots() {
void Scene31::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
@@ -312,16 +316,16 @@ void Scene31::run() {
_vm->_timers[5] = _vm->getRandom(50) + 180;
if (_vm->_prevSceneNum == 27) {
- _vm->_gnap->initPos(-1, 8, kDirBottomLeft);
+ gnap.initPos(-1, 8, kDirBottomLeft);
_vm->_plat->initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
- _vm->_gnap->initPos(7, 12, kDirBottomRight);
+ gnap.initPos(7, 12, kDirBottomRight);
_vm->_plat->initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
}
@@ -334,32 +338,32 @@ void Scene31::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS31Device:
- if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
+ if (gnap._actionStatus < 0 || gnap._actionStatus == kAS31PlatMeasuringClown) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS31Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
- _vm->_gnap->useJointOnPlatypus();
+ gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -367,42 +371,42 @@ void Scene31::run() {
break;
case kHS31MeasuringClown:
- if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
- if (_vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
+ if (gnap._actionStatus < 0 || gnap._actionStatus == kAS31PlatMeasuringClown) {
+ if (gnap._actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_verbCursor == LOOK_CURSOR)
- _vm->_gnap->playScratchingHead(2, 2);
+ gnap.playScratchingHead(2, 2);
else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(2, 2);
+ gnap.playScratchingHead(2, 2);
break;
case GRAB_CURSOR:
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 0, 0x107B9, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 0, 0x107B9, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_gnap->_actionStatus = kAS31UseMeasuringClown;
+ gnap._actionStatus = kAS31UseMeasuringClown;
_vm->_timers[4] = 300;
break;
case TALK_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
- _vm->_gnap->useDeviceOnPlatypus();
+ gnap.useDeviceOnPlatypus();
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
_vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
- _vm->_gnap->_actionStatus = kAS31PlatMeasuringClown;
+ gnap._actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -410,36 +414,36 @@ void Scene31::run() {
break;
case kHS31BeerBarrel:
- if (_vm->_gnap->_actionStatus < 0 || _vm->_gnap->_actionStatus == kAS31PlatMeasuringClown) {
+ if (gnap._actionStatus < 0 || gnap._actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) {
_vm->setGrabCursorSprite(-1);
- _vm->_gnap->walkTo(_vm->_gnap->_pos, -1, _vm->_gnap->getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, -1, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_gnap->playPullOutDevice(6, 8);
- _vm->_gnap->playUseDevice(0, 0);
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeer;
+ gnap.playPullOutDevice(6, 8);
+ gnap.playUseDevice(0, 0);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playScratchingHead(6, 2);
+ gnap.playScratchingHead(6, 2);
break;
case GRAB_CURSOR:
if (_beerGuyDistracted) {
- _vm->_gnap->playScratchingHead(6, 2);
+ gnap.playScratchingHead(6, 2);
} else {
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
- _vm->_gnap->_actionStatus = kAS31UseBeerBarrel;
- _vm->_gnap->_idleFacing = kDirUpLeft;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
+ gnap._actionStatus = kAS31UseBeerBarrel;
+ gnap._idleFacing = kDirUpLeft;
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -447,33 +451,33 @@ void Scene31::run() {
break;
case kHS31ExitCircus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 26;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
- _vm->_gnap->_actionStatus = kAS31LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
+ gnap._actionStatus = kAS31LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
case kHS31ExitOutsideClown:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 27;
- _vm->_gnap->walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
- _vm->_gnap->_actionStatus = kAS31LeaveScene;
+ gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
+ gnap._actionStatus = kAS31LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
case kHS31WalkArea1:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
default:
if (_vm->_mouseClickState._left) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = false;
}
break;
@@ -487,11 +491,11 @@ void Scene31::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 60;
- if (_vm->_gnap->_actionStatus < 0 && _nextClerkSequenceId == -1) {
+ if (gnap._actionStatus < 0 && _nextClerkSequenceId == -1) {
switch (_vm->getRandom(6)){
case 0:
_nextClerkSequenceId = 0xFF;
@@ -510,7 +514,7 @@ void Scene31::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 180;
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->getRandom(2) != 0)
gameSys.insertSequence(0x104, 20, 0, 0, kSeqNone, 0, 0, 0);
else
@@ -534,28 +538,29 @@ void Scene31::run() {
void Scene31::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
- switch (_vm->_gnap->_actionStatus) {
+ switch (gnap._actionStatus) {
case kAS31UseBeerBarrel:
_nextClerkSequenceId = 0xFE;
break;
case kAS31FillEmptyBucketWithBeer:
gameSys.setAnimation(0x102, 59, 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->_gnap->_sequenceDatNum = 0;
- _vm->_gnap->_sequenceId = 0x102;
- _vm->_gnap->_id = 59;
- _vm->_gnap->_actionStatus = kAS31FillEmptyBucketWithBeerDone;
+ gameSys.insertSequence(0x102, 59, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
+ gnap._pos = Common::Point(5, 7);
+ gnap._sequenceDatNum = 0;
+ gnap._sequenceId = 0x102;
+ gnap._id = 59;
+ gnap._actionStatus = kAS31FillEmptyBucketWithBeerDone;
break;
case kAS31FillEmptyBucketWithBeerDone:
- _vm->_gnap->_idleFacing = kDirBottomLeft;
- _vm->_gnap->playPullOutDevice(0, 0);
- _vm->_gnap->playUseDevice(0, 0);
+ gnap._idleFacing = kDirBottomLeft;
+ gnap.playPullOutDevice(0, 0);
+ gnap.playUseDevice(0, 0);
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
_vm->invRemove(kItemEmptyBucket);
_vm->setGrabCursorSprite(kItemBucketWithBeer);
@@ -566,7 +571,7 @@ void Scene31::updateAnimations() {
break;
case kAS31LeaveScene:
_vm->_sceneDone = true;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
}
}
@@ -593,14 +598,14 @@ void Scene31::updateAnimations() {
case 0xFC:
++_clerkMeasureCtr;
if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) {
- if (_vm->_gnap->_actionStatus != 5)
+ if (gnap._actionStatus != 5)
_vm->_plat->_actionStatus = -1;
_vm->_timers[0] = 40;
gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
_nextClerkSequenceId = -1;
- if (_vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeerDone && _vm->_gnap->_actionStatus != kAS31FillEmptyBucketWithBeer)
- _vm->_gnap->_actionStatus = -1;
+ if (gnap._actionStatus != kAS31FillEmptyBucketWithBeerDone && gnap._actionStatus != kAS31FillEmptyBucketWithBeer)
+ gnap._actionStatus = -1;
_beerGuyDistracted = false;
_clerkMeasureMaxCtr = 3;
gameSys.setAnimation(0xFD, 39, 3);
@@ -617,7 +622,7 @@ void Scene31::updateAnimations() {
gameSys.setAnimation(_nextClerkSequenceId, 39, 3);
_currClerkSequenceId = _nextClerkSequenceId;
_nextClerkSequenceId = -1;
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
default:
if (_nextClerkSequenceId != -1) {
@@ -657,6 +662,7 @@ void Scene32::updateHotspots() {
void Scene32::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -664,13 +670,13 @@ void Scene32::run() {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->_prevSceneNum == 33) {
- _vm->_gnap->initPos(11, 6, kDirBottomLeft);
+ gnap.initPos(11, 6, kDirBottomLeft);
_vm->_plat->initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
- _vm->_gnap->walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
- _vm->_gnap->initPos(1, 6, kDirBottomRight);
+ gnap.initPos(1, 6, kDirBottomRight);
_vm->_plat->initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -685,30 +691,30 @@ void Scene32::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS32Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS32Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -716,11 +722,11 @@ void Scene32::run() {
break;
case kHS32ExitTruck:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
- _vm->_gnap->_actionStatus = kAS32LeaveScene;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
+ gnap._actionStatus = kAS32LeaveScene;
_vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
@@ -734,14 +740,14 @@ void Scene32::run() {
case kHS32WalkArea6:
case kHS32WalkArea7:
case kHS32WalkArea8:
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (gnap._actionStatus < 0)
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
break;
}
- if (_vm->_mouseClickState._left && _vm->_gnap->_actionStatus < 0) {
- _vm->_gnap->walkTo(Common::Point(-1, -1), -1, -1, 1);
+ if (_vm->_mouseClickState._left && gnap._actionStatus < 0) {
+ gnap.walkTo(Common::Point(-1, -1), -1, -1, 1);
_vm->_mouseClickState._left = 0;
}
@@ -753,8 +759,8 @@ void Scene32::run() {
if (!_vm->_isLeavingScene) {
if (_vm->_plat->_actionStatus < 0)
_vm->_plat->updateIdleSequence();
- if (_vm->_gnap->_actionStatus < 0)
- _vm->_gnap->updateIdleSequence();
+ if (gnap._actionStatus < 0)
+ gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 300;
if (_vm->getRandom(2) != 0)
@@ -812,6 +818,7 @@ void Scene33::updateHotspots() {
void Scene33::run() {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerGnap& gnap = *_vm->_gnap;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -826,26 +833,26 @@ void Scene33::run() {
switch (_vm->_prevSceneNum) {
case 34:
- _vm->_gnap->initPos(11, 7, kDirBottomLeft);
+ gnap.initPos(11, 7, kDirBottomLeft);
_vm->_plat->initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
- _vm->_gnap->walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
+ gnap.walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
_vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
- _vm->_gnap->initPos(7, 7, kDirBottomRight);
+ gnap.initPos(7, 7, kDirBottomRight);
_vm->_plat->initPos(8, 7, kDirNone);
_vm->endSceneInit();
break;
case 32:
- _vm->_gnap->initPos(-1, 6, kDirBottomRight);
+ gnap.initPos(-1, 6, kDirBottomRight);
_vm->_plat->initPos(-1, 7, kDirNone);
_vm->endSceneInit();
_vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
- _vm->_gnap->walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
+ gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
- _vm->_gnap->initPos(3, 7, kDirBottomRight);
+ gnap.initPos(3, 7, kDirBottomRight);
_vm->_plat->initPos(2, 7, kDirNone);
_vm->endSceneInit();
break;
@@ -861,30 +868,30 @@ void Scene33::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS33Device:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
case kHS33Platypus:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- _vm->_gnap->playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
case GRAB_CURSOR:
- _vm->_gnap->kissPlatypus(0);
+ gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- _vm->_gnap->playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
_vm->_plat->playSequence(_vm->_plat->getSequenceId());
break;
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
break;
}
}
@@ -892,26 +899,26 @@ void Scene33::run() {
break;
case kHS33Chicken:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- _vm->_gnap->playShowCurrItem(7, 9, 9, 8);
+ gnap.playShowCurrItem(7, 9, 9, 8);
} else {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- if (_vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
- _vm->_gnap->_actionStatus = kAS33UseChicken;
+ gnap._idleFacing = kDirBottomRight;
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ gnap._actionStatus = kAS33UseChicken;
else
- _vm->_gnap->_actionStatus = -1;
+ gnap._actionStatus = -1;
break;
case TALK_CURSOR:
- _vm->_gnap->_idleFacing = kDirBottomRight;
- _vm->_gnap->walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, _vm->_gnap->getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
- _vm->_gnap->_actionStatus = kAS33TalkChicken;
+ gnap._idleFacing = kDirBottomRight;
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap._actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
- _vm->_gnap->playImpossible(0, 0);
+ gnap.playImpossible(0, 0);
break;
}
}
@@ -919,44 +926,44 @@ void Scene33::run() {
break;
case kHS33ExitHouse:
- if (_vm->_gnap->_actionStatus < 0) {
+ if (gnap._actionStatus < 0) {
_vm->_isLeavingScene = true;
- _vm->_gnap->_actionStatus = kAS33LeaveScene;
+ gnap._actionStatus = kAS33LeaveScene;
_vm->_newSceneNum = 37;
- if (_vm->_gnap->_pos.x > 6)
- _vm->_gnap->walkTo(_vm->_gnap->_pos, 0, 0x107AD, 1);
+ if (gnap._pos.x > 6)
+ gnap.walkTo(gnap._pos, 0, 0x107AD, 1);
else
- _vm->_gnap->walkTo(Common::Point(6, 7), 0, 0x107B1, 1);
+ gnap.walkTo(Common::Point(6, 7), 0, 0x107B1, 1);
}
break;
Commit: 6e9243d125153cac1a342d716b0c18f06c88323e
https://github.com/scummvm/scummvm/commit/6e9243d125153cac1a342d716b0c18f06c88323e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:55+02:00
Commit Message:
GNAP: Reduce dereferencing of _plat
Changed paths:
engines/gnap/character.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 3d74d1e..0946913 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -461,22 +461,24 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
void PlayerGnap::useJointOnPlatypus() {
+ PlayerPlat& plat = *_vm->_plat;
+
_vm->setGrabCursorSprite(-1);
if (doPlatypusAction(1, 0, 0x107C1, 0)) {
_actionStatus = 100;
_vm->_gameSys->setAnimation(0, 0, 1);
- _vm->_gameSys->setAnimation(0x10876, _vm->_plat->_id, 0);
+ _vm->_gameSys->setAnimation(0x10876, 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->_gameSys->insertSequence(0x10876, plat._id,
+ plat._sequenceId | (plat._sequenceDatNum << 16), plat._id,
+ kSeqSyncWait, 0, 15 * (5 * plat._pos.x - 25), 48 * (plat._pos.y - 7));
+ plat._sequenceDatNum = 1;
+ plat._sequenceId = 0x876;
+ plat._idleFacing = kDirNone;
playSequence(0x107B5);
walkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
@@ -486,11 +488,13 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, plat._pos) | 0x10000);
}
}
void PlayerGnap::kissPlatypus(int callback) {
+ PlayerPlat& plat = *_vm->_plat;
+
if (doPlatypusAction(-1, 0, 0x107D1, callback)) {
_actionStatus = 100;
_vm->_gameSys->setAnimation(0, 0, 1);
@@ -500,12 +504,12 @@ void PlayerGnap::kissPlatypus(int callback) {
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->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
- _vm->_plat->_sequenceDatNum = 1;
- _vm->_plat->_sequenceId = 0x7CB;
- _vm->_plat->_idleFacing = kDirNone;
+ _vm->_gameSys->insertSequence(0x107CB, plat._id,
+ makeRid(plat._sequenceDatNum, plat._sequenceId), plat._id,
+ kSeqSyncWait, _vm->getSequenceTotalDuration(0x10847), 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
+ plat._sequenceDatNum = 1;
+ plat._sequenceId = 0x7CB;
+ plat._idleFacing = kDirNone;
playSequence(0x107B5);
while (_vm->_gameSys->getAnimationStatus(0) != 2) {
_vm->updateMouseCursor();
@@ -515,25 +519,27 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, _vm->_plat->_pos) | 0x10000);
+ playSequence(getSequenceId(gskScratchingHead, plat._pos) | 0x10000);
}
}
void PlayerGnap::useDeviceOnPlatypus() {
- playSequence(makeRid(1, getSequenceId(gskPullOutDevice, _vm->_plat->_pos)));
-
- 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->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
- _vm->_plat->_sequenceId = 0x7D5;
- _vm->_plat->_sequenceDatNum = 1;
+ PlayerPlat& plat = *_vm->_plat;
+
+ playSequence(makeRid(1, getSequenceId(gskPullOutDevice, plat._pos)));
+
+ if (plat._idleFacing != kDirNone) {
+ _vm->_gameSys->insertSequence(makeRid(1, 0x7D5), plat._id,
+ makeRid(plat._sequenceDatNum, plat._sequenceId), plat._id,
+ kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
+ plat._sequenceId = 0x7D5;
+ 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->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
- _vm->_plat->_sequenceId = 0x7D4;
- _vm->_plat->_sequenceDatNum = 1;
+ _vm->_gameSys->insertSequence(makeRid(1, 0x7D4), plat._id,
+ makeRid(plat._sequenceDatNum, plat._sequenceId), plat._id,
+ kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
+ plat._sequenceId = 0x7D4;
+ plat._sequenceDatNum = 1;
}
int newSequenceId = getSequenceId(gskUseDevice, Common::Point(0, 0));
@@ -675,6 +681,7 @@ int PlayerGnap::getWalkSequenceId(int deltaX, int deltaY) {
}
bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
+ PlayerPlat& plat = *_vm->_plat;
int datNum = flags & 3;
_vm->_timers[2] = 200;
@@ -691,8 +698,8 @@ bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
_walkDestX = CLIP(gridX, 0, _vm->_gridMaxX - 1);
_walkDestY = CLIP(gridY, 0, _vm->_gridMaxY - 1);
- if (animationIndex >= 0 && _walkDestX == _vm->_plat->_pos.x && _walkDestY == _vm->_plat->_pos.y)
- _vm->_plat->makeRoom();
+ if (animationIndex >= 0 && _walkDestX == plat._pos.x && _walkDestY == plat._pos.y)
+ plat.makeRoom();
bool done = findPath1(_pos.x, _pos.y, 0);
@@ -1091,21 +1098,24 @@ void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
}
void PlayerGnap::playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
- if (_vm->_plat->_pos.x == gridX && _vm->_plat->_pos.y == gridY)
- _vm->_plat->makeRoom();
+ PlayerPlat& plat = *_vm->_plat;
+
+ if (plat._pos.x == gridX && plat._pos.y == gridY)
+ plat.makeRoom();
walkTo(Common::Point(gridX, gridY), -1, -1, 1);
playShowItem(_vm->_grabCursorSpriteIndex, gridLookX, gridLookY);
}
bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int callback) {
+ PlayerPlat& plat = *_vm->_plat;
bool result = false;
- if (_actionStatus <= -1 && _vm->_plat->_actionStatus <= -1) {
+ if (_actionStatus <= -1 && plat._actionStatus <= -1) {
_actionStatus = 100;
- Common::Point checkPt = _vm->_plat->_pos + Common::Point(gridX, gridY);
+ Common::Point checkPt = plat._pos + Common::Point(gridX, gridY);
if (_vm->isPointBlocked(checkPt) && (_pos != checkPt)) {
- _vm->_plat->walkStep();
- checkPt = _vm->_plat->_pos + Common::Point(gridX, gridY);
+ plat.walkStep();
+ checkPt = plat._pos + Common::Point(gridX, gridY);
}
if (!_vm->isPointBlocked(checkPt) && (_pos != checkPt)) {
@@ -1116,9 +1126,9 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int
_vm->gameUpdateTick();
}
_vm->_gameSys->setAnimation(0, 0, 0);
- if (_pos == _vm->_plat->_pos + Common::Point(gridX, gridY)) {
- _vm->_gameSys->setAnimation(platSequenceId, _vm->_plat->_id, 1);
- _vm->_plat->playSequence(platSequenceId);
+ if (_pos == plat._pos + Common::Point(gridX, gridY)) {
+ _vm->_gameSys->setAnimation(platSequenceId, plat._id, 1);
+ plat.playSequence(platSequenceId);
while (_vm->_gameSys->getAnimationStatus(1) != 2) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index f5e8307..972bbfa 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -73,6 +73,7 @@ void Scene01::run() {
// which is also set in the global game flags.
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -93,15 +94,15 @@ void Scene01::run() {
if (_vm->_prevSceneNum == 2) {
gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(8, 6), -1, 0x107B9, 1);
} else {
gnap.initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -132,16 +133,16 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -229,7 +230,7 @@ void Scene01::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107AB, 1);
gnap._actionStatus = kAS01LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 2;
}
break;
@@ -261,8 +262,8 @@ void Scene01::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (_vm->_timers[4] == 0) {
@@ -399,6 +400,7 @@ void Scene02::updateHotspots() {
void Scene02::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -417,42 +419,42 @@ void Scene02::run() {
case 3:
gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
break;
case 4:
gnap.initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
+ plat.initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(8, 6), 1, 0x107C2, 1);
+ plat.walkTo(Common::Point(8, 6), 1, 0x107C2, 1);
updateHotspots();
gameSys.waitForUpdate();
break;
case 47:
_vm->clearFlag(kGFUnk25);
gnap.initPos(5, 6, kDirBottomLeft);
- _vm->_plat->initPos(6, 7, kDirUnk4);
+ plat.initPos(6, 7, kDirUnk4);
_vm->endSceneInit();
break;
case 49:
gnap.initPos(5, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(6, 7, kDirNone);
+ plat.initPos(6, 7, kDirNone);
_vm->endSceneInit();
break;
default:
gnap.initPos(-1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
}
@@ -484,16 +486,16 @@ void Scene02::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -613,7 +615,7 @@ void Scene02::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[6], 0, 0x107AD, 1);
gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 4;
}
@@ -625,7 +627,7 @@ void Scene02::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, 0x107AD, 1);
gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[7] + Common::Point(1, 0), -1, 0x107C1, 1);
updateHotspots();
_vm->_newSceneNum = 5;
}
@@ -637,7 +639,7 @@ void Scene02::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[8], -1, 0x107CD, 1);
_vm->_newSceneNum = 3;
}
break;
@@ -648,7 +650,7 @@ void Scene02::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[9], 0, 0x107AF, 1);
gnap._actionStatus = kAS02LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[9], -1, 0x107CF, 1);
_vm->_newSceneNum = 1;
}
break;
@@ -675,8 +677,8 @@ void Scene02::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -890,6 +892,7 @@ void Scene03::updateHotspots() {
void Scene03::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x10925, true);
_vm->startSoundTimerC(7);
@@ -911,13 +914,13 @@ void Scene03::run() {
_vm->_timers[5] = _vm->getRandom(100) + 200;
if (_vm->isFlag(kGFPlatypus)) {
- _vm->_plat->initPos(5, 4, kDirNone);
+ plat.initPos(5, 4, kDirNone);
} else {
_vm->_timers[1] = _vm->getRandom(40) + 20;
gameSys.setAnimation(0x1C2, 99, 1);
gameSys.insertSequence(0x1C2, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_plat->_sequenceId = 0x1C2;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = 0x1C2;
+ plat._sequenceDatNum = 0;
}
gameSys.insertSequence(0x1C4, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -930,7 +933,7 @@ void Scene03::run() {
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(4, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(4, 7), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(3, 6), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
@@ -951,16 +954,16 @@ void Scene03::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1004,7 +1007,7 @@ void Scene03::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107AD, 1);
gnap._actionStatus = kAS03LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[2], -1, 0x107C2, 1);
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
@@ -1125,18 +1128,18 @@ void Scene03::run() {
_vm->playSound(0x10925, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[1] && !_platypusScared) {
_vm->_timers[1] = _vm->getRandom(40) + 20;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && !_vm->isFlag(kGFPlatypus) && !_platypusHypnotized)
_nextPlatSequenceId = 450;
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(20) + 30;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextFrogSequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextFrogSequenceId == -1) {
if (_vm->getRandom(5) == 1)
_nextFrogSequenceId = 0x1C6;
else
@@ -1146,12 +1149,12 @@ void Scene03::run() {
if (!_vm->_timers[4]) {
// Update bird animation
_vm->_timers[4] = _vm->getRandom(100) + 300;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0)
gameSys.insertSequence(_vm->getRandom(2) != 0 ? 0x1C8 : 0x1C3, 253, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 200;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0) {
gameSys.setAnimation(0x1C5, 253, 4);
gameSys.insertSequence(0x1C5, 253, 0, 0, kSeqNone, 0, 0, 0);
}
@@ -1177,6 +1180,7 @@ void Scene03::run() {
void Scene03::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -1189,14 +1193,14 @@ void Scene03::updateAnimations() {
break;
case kAS03FreePlatypusDone:
gnap._actionStatus = -1;
- _vm->_plat->_pos = Common::Point(6, 6);
- _vm->_plat->_idleFacing = kDirUnk4;
- _vm->_plat->_id = 120;
- gameSys.insertSequence(0x107CA, _vm->_plat->_id, 0x1BC, 99,
- kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
+ plat._pos = Common::Point(6, 6);
+ plat._idleFacing = kDirUnk4;
+ plat._id = 120;
+ gameSys.insertSequence(0x107CA, plat._id, 0x1BC, 99,
+ kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
gameSys.insertSequence(0x1B7, 99, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_plat->_sequenceDatNum = 1;
- _vm->_plat->_sequenceId = 0x7CA;
+ plat._sequenceDatNum = 1;
+ plat._sequenceId = 0x7CA;
_vm->setFlag(kGFPlatypus);
_nextPlatSequenceId = -1;
updateHotspots();
@@ -1210,16 +1214,16 @@ void Scene03::updateAnimations() {
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
- gameSys.insertSequence(0x1BA, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_sequenceId = 0x1BA;
+ gameSys.insertSequence(0x1BA, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ plat._sequenceDatNum = 0;
+ plat._sequenceId = 0x1BA;
gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
gnap.playBrainPulsating(0, 0);
- gameSys.insertSequence(0x1BF, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
+ gameSys.insertSequence(0x1BF, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
_vm->gameUpdateTick();
@@ -1231,8 +1235,8 @@ void Scene03::updateAnimations() {
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
gameSys.insertSequence(0x1BA, 99, 447, 99, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_sequenceId = 0x1BA;
+ plat._sequenceDatNum = 0;
+ plat._sequenceId = 0x1BA;
gnap._actionStatus = -1;
_platypusHypnotized = true;
updateHotspots();
@@ -1263,19 +1267,19 @@ void Scene03::updateAnimations() {
gameSys.setAnimation(0, 0, 1);
_platypusScared = true;
gameSys.insertSequence(0x1B5, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(_nextPlatSequenceId, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(_nextPlatSequenceId, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0x1B5;
gnap._sequenceDatNum = 0;
gnap._idleFacing = kDirNone;
- _vm->_plat->_sequenceId = _nextPlatSequenceId;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = _nextPlatSequenceId;
+ plat._sequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
_nextPlatSequenceId = -1;
gnap._actionStatus = -1;
} else if (_nextPlatSequenceId == 0x1BC) {
gnap._pos = Common::Point(3, 6);
gameSys.insertSequence(0x1B6, 120, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x1BC, 99, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x1BC, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1BC, 99, 0);
gnap._id = 20 * gnap._pos.y;
gnap._sequenceId = 0x1B6;
@@ -1285,17 +1289,17 @@ void Scene03::updateAnimations() {
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
gameSys.setAnimation(0, 0, 1);
- 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.insertSequence(0x1C2, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0x1C2;
+ 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->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0x1BE;
- _vm->_plat->_sequenceDatNum = 0;
+ gameSys.insertSequence(0x1BE, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0x1BE;
+ plat._sequenceDatNum = 0;
_nextPlatSequenceId = -1;
}
}
@@ -1358,6 +1362,7 @@ void Scene04::updateHotspots() {
void Scene04::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(4);
@@ -1388,8 +1393,8 @@ void Scene04::run() {
_vm->setGrabCursorSprite(kItemKeys);
gnap._pos = Common::Point(4, 7);
gnap._id = 140;
- _vm->_plat->_pos = Common::Point(6, 7);
- _vm->_plat->_id = 141;
+ plat._pos = Common::Point(6, 7);
+ plat._id = 141;
gameSys.insertSequence(0x107B5, 140, 0, 0, kSeqNone, 0, 300 - gnap._gridX, 336 - gnap._gridY);
gameSys.insertSequence(0x20C, 141, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x208, 121, 0, 0, kSeqNone, 0, 0, 0);
@@ -1399,9 +1404,9 @@ void Scene04::run() {
_vm->invAdd(kItemKeys);
_vm->setFlag(kGFKeysTaken);
_vm->clearFlag(kGFPlatypusDisguised);
- _vm->_plat->_sequenceId = 0x20C;
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_idleFacing = kDirBottomRight;
+ plat._sequenceId = 0x20C;
+ plat._sequenceDatNum = 0;
+ plat._idleFacing = kDirBottomRight;
gnap._sequenceId = 0x7B5;
gnap._sequenceDatNum = 1;
gameSys.waitForUpdate();
@@ -1410,22 +1415,22 @@ void Scene04::run() {
if (_vm->_prevSceneNum == 2) {
gnap.initPos(5, 11, kDirUpRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
gnap.initPos(5, 7, kDirBottomRight);
- _vm->_plat->initPos(4, 7, kDirNone);
+ plat.initPos(4, 7, kDirNone);
_vm->endSceneInit();
} else {
gnap.initPos(12, 9, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(12, 8, kDirNone);
+ plat.initPos(12, 8, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(9, 9), -1, 0x107BA, 1);
}
}
@@ -1457,19 +1462,19 @@ void Scene04::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
gnap.kissPlatypus(0);
else
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1597,7 +1602,7 @@ void Scene04::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107AE, 1);
gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[5], -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 2;
else
@@ -1641,7 +1646,7 @@ void Scene04::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[8], 0, 0x107AB, 1);
gnap._actionStatus = kAS04LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[8] + Common::Point(0, 1), -1, 0x107C1, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 5;
else
@@ -1670,8 +1675,8 @@ void Scene04::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && _vm->isFlag(kGFPlatypus))
- _vm->_plat->updateIdleSequence2();
+ if (plat._actionStatus < 0 && _vm->isFlag(kGFPlatypus))
+ plat.updateIdleSequence2();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence2();
if (!_vm->_timers[5]) {
@@ -1874,6 +1879,7 @@ void Scene05::updateHotspots() {
void Scene05::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(7);
@@ -1895,15 +1901,15 @@ void Scene05::run() {
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
gnap.initPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(-1, 9, kDirNone);
+ plat.initPos(-1, 9, kDirNone);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 9), -1, 0x107B9, 1);
} else {
gnap.initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->initPos(7, 9, kDirNone);
+ plat.initPos(7, 9, kDirNone);
_vm->endSceneInit();
}
@@ -1934,16 +1940,16 @@ void Scene05::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1954,7 +1960,7 @@ void Scene05::run() {
break;
case kHS05Haystack:
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
@@ -1971,13 +1977,13 @@ void Scene05::run() {
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
gnap.useDeviceOnPlatypus();
- if (_vm->_plat->walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
- _vm->_plat->_actionStatus = kAS05PlatSearchHaystack;
- _vm->_plat->_idleFacing = kDirUnk4;
+ if (plat.walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
+ plat._actionStatus = kAS05PlatSearchHaystack;
+ plat._idleFacing = kDirUnk4;
}
if (gnap._pos.x == 4 && (gnap._pos.y == 8 || gnap._pos.y == 7))
gnap.walkStep();
- gnap.playIdle(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playIdle(plat._pos.x, plat._pos.y);
}
break;
}
@@ -2082,7 +2088,7 @@ void Scene05::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, 0x107AF, 1);
gnap._actionStatus = kAS05LeaveScene;
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[4] + Common::Point(0, 1), -1, 0x107C7, 1);
if (_vm->_cursorValue == 1)
_vm->_newSceneNum = 4;
else
@@ -2116,7 +2122,7 @@ void Scene05::run() {
if (!_vm->_isLeavingScene) {
if (_vm->isFlag(kGFPlatypus))
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -2212,27 +2218,28 @@ void Scene05::updateAnimations() {
}
if (gameSys.getAnimationStatus(1) == 2) {
- if (_vm->_plat->_sequenceId == 0x146) {
- _vm->_plat->_pos = Common::Point(4, 8);
- gameSys.insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - _vm->_plat->_gridX, 384 - _vm->_plat->_gridY);
- _vm->_plat->_sequenceId = 0x7C1;
- _vm->_plat->_sequenceDatNum = 1;
- _vm->_plat->_id = 20 * _vm->_plat->_pos.y;
+ PlayerPlat& plat = *_vm->_plat;
+ if (plat._sequenceId == 0x146) {
+ plat._pos = Common::Point(4, 8);
+ gameSys.insertSequence(0x107C1, 160, 0x146, 256, kSeqSyncWait, 0, 300 - plat._gridX, 384 - plat._gridY);
+ plat._sequenceId = 0x7C1;
+ plat._sequenceDatNum = 1;
+ plat._id = 20 * plat._pos.y;
_vm->invAdd(kItemNeedle);
_vm->setFlag(kGFNeedleTaken);
_vm->setGrabCursorSprite(kItemNeedle);
_vm->showCursor();
_vm->_timers[1] = 30;
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
}
- if (_vm->_plat->_actionStatus == kAS05PlatSearchHaystack) {
+ if (plat._actionStatus == kAS05PlatSearchHaystack) {
gameSys.setAnimation(0, 0, 1);
- 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);
+ gameSys.insertSequence(0x145, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x146, 256, 0x145, plat._id, kSeqSyncWait, 0, 0, 0);
_vm->hideCursor();
_vm->setGrabCursorSprite(-1);
- _vm->_plat->_sequenceId = 0x146;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = 0x146;
+ plat._sequenceDatNum = 0;
gameSys.setAnimation(0x146, 256, 1);
_vm->_timers[1] = 300;
}
@@ -2303,6 +2310,8 @@ void Scene06::updateHotspots() {
void Scene06::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
+
bool triedDeviceOnGas = false;
_vm->startSoundTimerC(7);
@@ -2327,10 +2336,10 @@ void Scene06::run() {
_vm->queueInsertDeviceIcon();
gnap.initPos(5, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
while (!_vm->_sceneDone) {
@@ -2360,16 +2369,16 @@ void Scene06::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -2447,8 +2456,8 @@ void Scene06::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
gnap._idleFacing = kDirUpLeft;
- _vm->_plat->walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
- _vm->_plat->_idleFacing = kDirNone;
+ plat.walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
+ plat._idleFacing = kDirNone;
gnap._actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2511,13 +2520,13 @@ void Scene06::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 25;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHorseSequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextHorseSequenceId == -1) {
if (_horseTurnedBack) {
_nextHorseSequenceId = 0xF5;
} else {
@@ -2555,6 +2564,7 @@ void Scene06::run() {
void Scene06::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2595,17 +2605,17 @@ void Scene06::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_plat->_sequenceId == 0xFA) {
+ if (plat._sequenceId == 0xFA) {
gameSys.setAnimation(0, 0, 1);
_vm->invAdd(kItemGas);
_vm->setFlag(kGFGasTaken);
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
_vm->setGrabCursorSprite(kItemGas);
- _vm->_plat->_actionStatus = -1;
- _vm->_plat->_pos = Common::Point(6, 8);
- gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0, 0, kSeqNone, 0, 450 - _vm->_plat->_gridX, 384 - _vm->_plat->_gridY);
- _vm->_plat->_sequenceId = 0x7C1;
- _vm->_plat->_sequenceDatNum = 1;
+ plat._actionStatus = -1;
+ plat._pos = Common::Point(6, 8);
+ gameSys.insertSequence(0x107C1, plat._id, 0, 0, kSeqNone, 0, 450 - plat._gridX, 384 - plat._gridY);
+ plat._sequenceId = 0x7C1;
+ plat._sequenceDatNum = 1;
_vm->setFlag(kGFUnk04);
gnap._actionStatus = -1;
_vm->showCursor();
@@ -2613,7 +2623,7 @@ void Scene06::updateAnimations() {
if (_nextPlatSequenceId == 0xFB) {
gameSys.setAnimation(0, 0, 1);
_nextHorseSequenceId = 0xF2;
- _vm->_plat->_actionStatus = 6;
+ plat._actionStatus = 6;
}
}
@@ -2626,10 +2636,10 @@ void Scene06::updateAnimations() {
gameSys.insertSequence(0xF2, 120, _currHorseSequenceId, 120, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x100, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0xF7, 20, 0xF8, 20, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0xFB, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0xFA, 256, 0xFB, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0xFA;
- _vm->_plat->_sequenceDatNum = 0;
+ gameSys.insertSequence(0xFB, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0xFA, 256, 0xFB, plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xFA;
+ plat._sequenceDatNum = 0;
gameSys.insertSequence(0x107B7, gnap._id, 0x100, gnap._id,
kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
gnap._sequenceId = 0x7B7;
@@ -2682,6 +2692,7 @@ void Scene07::updateHotspots() {
void Scene07::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x8C, 1, 0, 0, kSeqLoop, 0, 0, 0);
@@ -2695,7 +2706,7 @@ void Scene07::run() {
if (_vm->_prevSceneNum == 8) {
gnap.initPos(7, 7, kDirBottomLeft);
- _vm->_plat->initPos(9, 7, kDirUnk4);
+ plat.initPos(9, 7, kDirUnk4);
_vm->endSceneInit();
} else {
gnap._pos = Common::Point(6, 7);
@@ -2706,11 +2717,11 @@ void Scene07::run() {
gameSys.insertSequence(0x8F, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS07Wait;
- _vm->_plat->_pos = Common::Point(3, 8);
- _vm->_plat->_id = 160;
- _vm->_plat->_sequenceId = 0x91;
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_idleFacing = kDirNone;
+ plat._pos = Common::Point(3, 8);
+ plat._id = 160;
+ plat._sequenceId = 0x91;
+ plat._sequenceDatNum = 0;
+ plat._idleFacing = kDirNone;
gameSys.insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
}
@@ -2735,14 +2746,14 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -2815,38 +2826,38 @@ void Scene07::run() {
if (!_vm->_isLeavingScene) {
gnap.updateIdleSequence();
- if (_vm->_plat->_actionStatus < 0 && gnap._actionStatus < 0) {
+ if (plat._actionStatus < 0 && gnap._actionStatus < 0) {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
int gnapRandomValue = _vm->getRandom(20);
// TODO Cleanup
- if (_vm->_plat->_idleFacing != kDirNone) {
- if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7CA) {
- if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7CA) {
- if (_vm->_plat->_pos.y == 9)
- _vm->_plat->playSequence(0x107CA);
+ if (plat._idleFacing != kDirNone) {
+ if (gnapRandomValue != 0 || plat._sequenceId != 0x7CA) {
+ if (gnapRandomValue != 1 || plat._sequenceId != 0x7CA) {
+ if (plat._pos.y == 9)
+ plat.playSequence(0x107CA);
} else {
- _vm->_plat->playSequence(0x10845);
+ plat.playSequence(0x10845);
}
} else {
- _vm->_plat->playSequence(0x107CC);
+ plat.playSequence(0x107CC);
}
- } else if (gnapRandomValue != 0 || _vm->_plat->_sequenceId != 0x7C9) {
- if (gnapRandomValue != 1 || _vm->_plat->_sequenceId != 0x7C9) {
- if (_vm->_plat->_pos.y == 9)
- _vm->_plat->playSequence(0x107C9);
+ } else if (gnapRandomValue != 0 || plat._sequenceId != 0x7C9) {
+ if (gnapRandomValue != 1 || plat._sequenceId != 0x7C9) {
+ if (plat._pos.y == 9)
+ plat.playSequence(0x107C9);
} else {
- _vm->_plat->playSequence(0x10844);
+ plat.playSequence(0x10844);
}
} else {
- _vm->_plat->playSequence(0x107CB);
+ plat.playSequence(0x107CB);
}
- gameSys.setAnimation(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, 1);
+ gameSys.setAnimation(plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, 1);
}
} else {
_vm->_timers[0] = _vm->getRandom(75) + 75;
- _vm->_plat->makeRoom();
+ plat.makeRoom();
}
} else {
_vm->_timers[0] = 100;
@@ -2937,6 +2948,7 @@ void Scene08::updateAnimationsCb() {
void Scene08::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -2967,12 +2979,12 @@ void Scene08::run() {
gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
gnap.initPos(-1, 8, kDirBottomRight);
- _vm->_plat->initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(1, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
_vm->_timers[5] = _vm->getRandom(40) + 50;
@@ -3005,17 +3017,17 @@ void Scene08::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.actionIdle(0x14D);
gnap.kissPlatypus(8);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -3028,7 +3040,7 @@ void Scene08::run() {
gnap.actionIdle(0x14D);
gnap.walkTo(Common::Point(0, 6), 0, 0x107AF, 1);
gnap._actionStatus = kAS08LeaveScene;
- _vm->_plat->walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
+ plat.walkTo(Common::Point(0, 7), 1, 0x107CF, 1);
_vm->_newSceneNum = 9;
break;
@@ -3037,7 +3049,7 @@ void Scene08::run() {
gnap.actionIdle(0x14D);
gnap.walkTo(Common::Point(3, 9), 0, 0x107AE, 1);
gnap._actionStatus = kAS08LeaveScene;
- _vm->_plat->walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
+ plat.walkTo(Common::Point(4, 9), 1, 0x107C1, 1);
_vm->_newSceneNum = 7;
break;
@@ -3064,9 +3076,9 @@ void Scene08::run() {
case PLAT_CURSOR:
gnap.actionIdle(0x14D);
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
- _vm->_plat->_actionStatus = kAS08PlatWithMan;
- _vm->_plat->_idleFacing = kDirNone;
+ plat.walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
+ plat._actionStatus = kAS08PlatWithMan;
+ plat._idleFacing = kDirNone;
gnap.playIdle(6, 6);
break;
}
@@ -3100,9 +3112,9 @@ void Scene08::run() {
_vm->setFlag(kGFSceneFlag1);
gnap.actionIdle(0x14D);
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
- _vm->_plat->_actionStatus = kAS08PlatWithDog;
- _vm->_plat->_idleFacing = kDirNone;
+ plat.walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
+ plat._actionStatus = kAS08PlatWithDog;
+ plat._idleFacing = kDirNone;
gnap.playIdle(3, 7);
break;
}
@@ -3205,11 +3217,11 @@ void Scene08::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 125;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextManSequenceId == -1 &&
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextManSequenceId == -1 &&
(_currDogSequenceId == 0x134 || _currDogSequenceId == 0x135)) {
int _gnapRandomValue = _vm->getRandom(4);
switch (_gnapRandomValue) {
@@ -3248,6 +3260,7 @@ void Scene08::run() {
void Scene08::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -3287,13 +3300,13 @@ void Scene08::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_plat->_actionStatus) {
+ switch (plat._actionStatus) {
case kAS08PlatWithDog:
_nextDogSequenceId = 0x147;
break;
case kAS08PlatWithMan:
_nextManSequenceId = 0x140;
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
break;
}
}
@@ -3307,7 +3320,7 @@ void Scene08::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2) {
if (_currDogSequenceId == 0x147)
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
if (_currDogSequenceId == 0x149 || _currDogSequenceId == 0x14A || _currDogSequenceId == 0x14B) {
if (_vm->getRandom(2) != 0)
_nextManSequenceId = 0x13D;
@@ -3340,14 +3353,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->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x148, 160, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
_currDogSequenceId = _nextDogSequenceId;
_nextDogSequenceId = 0x134;
- _vm->_plat->_pos = Common::Point(1, 8);
- _vm->_plat->_id = 160;
- _vm->_plat->_sequenceId = 0x148;
- _vm->_plat->_idleFacing = kDirUnk4;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._pos = Common::Point(1, 8);
+ plat._id = 160;
+ plat._sequenceId = 0x148;
+ plat._idleFacing = kDirUnk4;
+ plat._sequenceDatNum = 0;
if (gnap._pos == Common::Point(1, 8))
gnap.walkStep();
} else if (_nextDogSequenceId != -1) {
@@ -3393,6 +3406,7 @@ void Scene09::updateHotspots() {
void Scene09::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -3401,13 +3415,13 @@ void Scene09::run() {
if (_vm->_prevSceneNum == 8) {
gnap.initPos(11, 8, kDirBottomLeft);
- _vm->_plat->initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
gnap.initPos(4, 7, kDirBottomRight);
- _vm->_plat->initPos(5, 7, kDirNone);
+ plat.initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
@@ -3439,14 +3453,14 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -3458,8 +3472,8 @@ void Scene09::run() {
_vm->_newSceneNum = 10;
gnap.walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
gnap._actionStatus = kAS09LeaveScene;
- _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
+ plat._idleFacing = kDirUnk4;
break;
case kHS09ExitHouse:
@@ -3467,8 +3481,8 @@ void Scene09::run() {
_vm->_newSceneNum = 8;
gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
gnap._actionStatus = kAS09LeaveScene;
- _vm->_plat->walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
+ plat._idleFacing = kDirUnk4;
break;
case kHS09Trash:
@@ -3508,7 +3522,7 @@ void Scene09::run() {
updateAnimations();
if (!_vm->_isLeavingScene && gnap._actionStatus != 1 && gnap._actionStatus != 2) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(150) + 100;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index d8b2a3c..a4e4e9f 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -60,6 +60,7 @@ void Scene10::updateHotspots() {
void Scene10::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_currCookSequenceId = 0x103;
@@ -74,16 +75,16 @@ void Scene10::run() {
if (_vm->_prevSceneNum == 9) {
gnap.initPos(11, 8, kDirBottomLeft);
- _vm->_plat->initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
gnap.initPos(-1, 7, kDirBottomRight);
- _vm->_plat->initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(1, 7), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
_vm->_timers[4] = _vm->getRandom(80) + 150;
@@ -113,16 +114,16 @@ void Scene10::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
else
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(10);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -135,7 +136,7 @@ void Scene10::run() {
gnap.actionIdle(0x10C);
gnap.walkTo(Common::Point(0, 7), 0, 0x107AF, 1);
gnap._actionStatus = kAS10LeaveScene;
- _vm->_plat->walkTo(Common::Point(0, 7), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(0, 7), -1, 0x107CF, 1);
_vm->_newSceneNum = 11;
break;
@@ -144,7 +145,7 @@ void Scene10::run() {
gnap.actionIdle(0x10C);
gnap.walkTo(Common::Point(2, 9), 0, 0x107AE, 1);
gnap._actionStatus = kAS10LeaveScene;
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C7, 1);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107C7, 1);
_vm->_newSceneNum = 9;
break;
@@ -171,7 +172,7 @@ void Scene10::run() {
case PLAT_CURSOR:
gnap.actionIdle(0x10C);
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(4, 6), -1, -1, 1);
+ plat.walkTo(Common::Point(4, 6), -1, -1, 1);
gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
gnap._actionStatus = kAS10AnnoyCook;
break;
@@ -208,7 +209,7 @@ void Scene10::run() {
else {
gnap.actionIdle(0x10C);
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(3, 7), -1, -1, 1);
+ plat.walkTo(Common::Point(3, 7), -1, -1, 1);
gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
gnap._actionStatus = kAS10AnnoyCook;
}
@@ -241,9 +242,9 @@ void Scene10::run() {
_vm->setFlag(kGFMudTaken);
gnap.actionIdle(0x10C);
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
- _vm->_plat->_actionStatus = kAS10PlatWithBox;
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
+ plat._actionStatus = kAS10PlatWithBox;
+ plat._idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
gnap.playIdle(7, 6);
}
@@ -306,7 +307,7 @@ void Scene10::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(80) + 150;
@@ -344,6 +345,7 @@ void Scene10::run() {
void Scene10::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -359,7 +361,7 @@ void Scene10::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_plat->_actionStatus) {
+ switch (plat._actionStatus) {
case kAS10PlatWithBox:
_nextCookSequenceId = 0x109;
break;
@@ -370,19 +372,19 @@ void Scene10::updateAnimations() {
switch (_nextCookSequenceId) {
case 0x109:
- _vm->_plat->_pos = Common::Point(4, 8);
+ plat._pos = Common::Point(4, 8);
gameSys.insertSequence(0x109, 100, _currCookSequenceId, 100, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x107C9, 160,
- _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
+ plat._sequenceId | (plat._sequenceDatNum << 16), plat._id,
kSeqSyncWait, _vm->getSequenceTotalDuration(0x109) + _vm->getSequenceTotalDuration(0x10A) + _vm->getSequenceTotalDuration(0x10843),
- 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
+ 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
gameSys.removeSequence(0x107, 100, true);
_currCookSequenceId = 0x109;
_nextCookSequenceId = 0x843;
- _vm->_plat->_sequenceId = 0x7C9;
- _vm->_plat->_id = 160;
- _vm->_plat->_idleFacing = kDirNone;
- _vm->_plat->_sequenceDatNum = 1;
+ plat._sequenceId = 0x7C9;
+ plat._id = 160;
+ plat._idleFacing = kDirNone;
+ plat._sequenceDatNum = 1;
break;
case 0x843:
_vm->hideCursor();
@@ -400,8 +402,8 @@ void Scene10::updateAnimations() {
_vm->delayTicksCursor(5);
_vm->deleteSurface(&_vm->_largeSprite);
_vm->setGrabCursorSprite(kItemTongs);
- if (_vm->_plat->_actionStatus == kAS10PlatWithBox)
- _vm->_plat->_actionStatus = -1;
+ if (plat._actionStatus == kAS10PlatWithBox)
+ plat._actionStatus = -1;
if (gnap._pos == Common::Point(4, 8))
gnap.walkStep();
break;
@@ -413,7 +415,7 @@ void Scene10::updateAnimations() {
switch (_currCookSequenceId) {
case 0x106:
- if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || plat._actionStatus >= 0)
_nextCookSequenceId = 0x106;
else {
int rnd = _vm->getRandom(7);
@@ -434,7 +436,7 @@ void Scene10::updateAnimations() {
}
break;
case 0x103:
- if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || plat._actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x104;
@@ -442,7 +444,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
break;
case 0x104:
- if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || plat._actionStatus >= 0)
_nextCookSequenceId = 0x106;
else if (_vm->getRandom(7) == 0)
_nextCookSequenceId = 0x103;
@@ -450,7 +452,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x106;
break;
case 0x105:
- if (gnap._actionStatus >= 0 || _vm->_plat->_actionStatus >= 0)
+ if (gnap._actionStatus >= 0 || plat._actionStatus >= 0)
_nextCookSequenceId = 0x106;
else {
int rnd = _vm->getRandom(7);
@@ -472,7 +474,7 @@ void Scene10::updateAnimations() {
gnap._idleFacing = kDirUpRight;
gnap._sequenceDatNum = 0;
gnap._actionStatus = -1;
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
break;
}
if (_currCookSequenceId == 0x843)
@@ -536,6 +538,7 @@ void Scene11::updateHotspots() {
void Scene11::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
bool flag = true;
@@ -548,22 +551,22 @@ void Scene11::run() {
switch (_vm->_prevSceneNum) {
case 13:
gnap.initPos(8, 5, kDirBottomLeft);
- _vm->_plat->initPos(9, 6, kDirUnk4);
+ plat.initPos(9, 6, kDirUnk4);
break;
case 47:
gnap.initPos(8, 5, kDirBottomLeft);
- _vm->_plat->initPos(9, 5, kDirUnk4);
+ plat.initPos(9, 5, kDirUnk4);
_currGoggleGuySequenceId = 0x1FA;
_currHookGuySequenceId = 0x1FF;
_vm->_timers[7] = 180;
break;
case 12:
gnap.initPos(-1, 9, kDirBottomRight);
- _vm->_plat->initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirNone);
break;
default:
gnap.initPos(6, 6, kDirBottomLeft);
- _vm->_plat->initPos(6, 5, kDirUnk4);
+ plat.initPos(6, 5, kDirUnk4);
break;
}
@@ -587,7 +590,7 @@ void Scene11::run() {
if (_vm->_prevSceneNum == 12) {
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
}
gameSys.insertSequence(0x208, 256, 0, 0, kSeqNone, 40, 0, 0);
@@ -608,14 +611,14 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -627,7 +630,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(6, 5), 0, 0x107BF, 1);
gnap._actionStatus = kAS11LeaveScene;
- _vm->_plat->walkTo(Common::Point(6, 6), -1, -1, 1);
+ plat.walkTo(Common::Point(6, 6), -1, -1, 1);
_vm->_newSceneNum = 10;
break;
@@ -635,7 +638,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(8, 5), 0, 0x107BF, 1);
gnap._actionStatus = kAS11LeaveScene;
- _vm->_plat->walkTo(Common::Point(8, 6), -1, -1, 1);
+ plat.walkTo(Common::Point(8, 6), -1, -1, 1);
_vm->_newSceneNum = 13;
break;
@@ -643,7 +646,7 @@ void Scene11::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(-1, 8), 0, 0x107AF, 1);
gnap._actionStatus = kAS11LeaveScene;
- _vm->_plat->walkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(-1, 9), -1, 0x107CF, 1);
_vm->_newSceneNum = 12;
break;
@@ -758,11 +761,11 @@ void Scene11::run() {
gameSys.setAnimation(0x207, 257, 4);
gameSys.insertSequence(0x207, 257, 0, 0, kSeqNone, 0, 0, 0);
}
- _vm->_plat->updateIdleSequence2();
+ plat.updateIdleSequence2();
gnap.updateIdleSequence2();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 75;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextGoggleGuySequenceId == -1) {
if (_vm->getRandom(2))
_nextGoggleGuySequenceId = 0x1F6;
else
@@ -771,7 +774,7 @@ void Scene11::run() {
}
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(40) + 20;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextHookGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextHookGuySequenceId == -1) {
if (_currHookGuySequenceId == 0x201) {
switch (_vm->getRandom(7)) {
case 0:
@@ -967,6 +970,8 @@ void Scene12::updateHotspots() {
void Scene12::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
+
int v18 = 1;
_vm->queueInsertDeviceIcon();
@@ -998,14 +1003,14 @@ void Scene12::run() {
if (_vm->_prevSceneNum == 15) {
gnap.initPos(5, 6, kDirBottomRight);
- _vm->_plat->initPos(3, 7, kDirNone);
+ plat.initPos(3, 7, kDirNone);
_vm->endSceneInit();
} else {
gnap.initPos(11, 8, kDirBottomLeft);
- _vm->_plat->initPos(12, 8, kDirUnk4);
+ plat.initPos(12, 8, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -1029,14 +1034,14 @@ void Scene12::run() {
case kHS12Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1047,7 +1052,7 @@ void Scene12::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
gnap._actionStatus = kAS12LeaveScene;
- _vm->_plat->walkTo(Common::Point(10, -1), -1, -1, 1);
+ plat.walkTo(Common::Point(10, -1), -1, -1, 1);
_vm->_newSceneNum = 11;
break;
@@ -1085,9 +1090,9 @@ void Scene12::run() {
break;
case PLAT_CURSOR:
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
- _vm->_plat->_actionStatus = kAS12PlatWithToothGuy;
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
+ plat._actionStatus = kAS12PlatWithToothGuy;
+ plat._idleFacing = kDirUnk4;
gnap.playIdle(2, 7);
break;
}
@@ -1121,7 +1126,7 @@ void Scene12::run() {
gnap._actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
- gnap.playPullOutDevice(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playPullOutDevice(plat._pos.x, plat._pos.y);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS12PlatWithBarkeeper;
break;
@@ -1155,9 +1160,9 @@ void Scene12::run() {
break;
case PLAT_CURSOR:
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
- _vm->_plat->_actionStatus = kAS12PlatWithBeardGuy;
- _vm->_plat->_idleFacing = kDirNone;
+ plat.walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
+ plat._actionStatus = kAS12PlatWithBeardGuy;
+ plat._idleFacing = kDirNone;
gnap.playIdle(7, 6);
break;
}
@@ -1191,12 +1196,12 @@ void Scene12::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = 15;
if (_nextToothGuySequenceId == -1) {
- if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (v18 == 0 && _currBeardGuySequenceId == 0x202 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && plat._actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextToothGuySequenceId = 0x1EC;
else
@@ -1208,8 +1213,8 @@ void Scene12::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (_nextBarkeeperSequenceId == -1 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (_nextBarkeeperSequenceId == -1 && gnap._actionStatus < 0 && plat._actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBeardGuySequenceId == 0x202 && gnap._actionStatus < 0 && plat._actionStatus < 0) {
if (_vm->getRandom(2) != 0)
_nextBarkeeperSequenceId = 0x208;
else
@@ -1221,8 +1226,8 @@ void Scene12::run() {
}
if (!_vm->_timers[6]) {
_vm->_timers[6] = _vm->getRandom(30) + 15;
- if (_nextBeardGuySequenceId == -1 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
- if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (_nextBeardGuySequenceId == -1 && gnap._actionStatus < 0 && plat._actionStatus < 0) {
+ if (v18 == 0 && _currToothGuySequenceId == 0x200 && _currBarkeeperSequenceId == 0x203 && gnap._actionStatus < 0 && plat._actionStatus < 0)
_nextBeardGuySequenceId = 0x1F2;
else
_nextBeardGuySequenceId = 0x202;
@@ -1264,6 +1269,7 @@ void Scene12::run() {
void Scene12::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -1359,7 +1365,7 @@ void Scene12::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_plat->_actionStatus) {
+ switch (plat._actionStatus) {
case kAS12PlatWithToothGuy:
_nextToothGuySequenceId = 0x1EB;
break;
@@ -1407,8 +1413,8 @@ void Scene12::updateAnimations() {
if (gnap._actionStatus >= kAS12TalkToothGuy && gnap._actionStatus <= kAS12QuarterToToothGuy && _currToothGuySequenceId != 0x1E9 &&
_currToothGuySequenceId != 0x1EC && _currToothGuySequenceId != 0x200)
gnap._actionStatus = -1;
- if (_vm->_plat->_actionStatus == kAS12PlatWithToothGuy)
- _vm->_plat->_actionStatus = -1;
+ if (plat._actionStatus == kAS12PlatWithToothGuy)
+ plat._actionStatus = -1;
}
}
@@ -1438,8 +1444,8 @@ void Scene12::updateAnimations() {
_vm->_timers[6] = _vm->getRandom(30) + 20;
if (gnap._actionStatus >= kAS12TalkBeardGuy && gnap._actionStatus <= kAS12ShowItemToBeardGuy && _currBeardGuySequenceId != 0x202 && _currBeardGuySequenceId != 0x1F2)
gnap._actionStatus = -1;
- if (_vm->_plat->_actionStatus == kAS12PlatWithBeardGuy)
- _vm->_plat->_actionStatus = -1;
+ if (plat._actionStatus == kAS12PlatWithBeardGuy)
+ plat._actionStatus = -1;
}
}
@@ -1496,6 +1502,7 @@ void Scene13::showScribble() {
void Scene13::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
int currSoundId = 0;
@@ -1504,10 +1511,10 @@ void Scene13::run() {
if (_vm->_prevSceneNum == 14) {
gnap.initPos(6, 6, kDirBottomLeft);
- _vm->_plat->initPos(9, 8, kDirNone);
+ plat.initPos(9, 8, kDirNone);
} else {
gnap.initPos(3, 7, kDirBottomRight);
- _vm->_plat->initPos(2, 7, kDirNone);
+ plat.initPos(2, 7, kDirNone);
}
_vm->endSceneInit();
@@ -1540,14 +1547,14 @@ void Scene13::run() {
case kHS13Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
break;
@@ -1558,7 +1565,7 @@ void Scene13::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(2, 7), 0, 0x107C0, 1);
gnap._actionStatus = kAS13LeaveScene;
- _vm->_plat->walkTo(Common::Point(2, 8), -1, -1, 1);
+ plat.walkTo(Common::Point(2, 8), -1, -1, 1);
if (_vm->isFlag(kGFUnk14) || _vm->isFlag(kGFSpringTaken)) {
_vm->_newSceneNum = 11;
} else {
@@ -1709,9 +1716,9 @@ void Scene13::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
- if (_vm->_plat->_pos.y == 5 || _vm->_plat->_pos.y == 6)
- _vm->_plat->walkTo(Common::Point(-1, 7), -1, -1, 1);
+ plat.updateIdleSequence();
+ if (plat._pos.y == 5 || plat._pos.y == 6)
+ plat.walkTo(Common::Point(-1, 7), -1, -1, 1);
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -2350,22 +2357,23 @@ void Scene17::update() {
void Scene17::platHangUpPhone() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
int savedGnapActionStatus = gnap._actionStatus;
- if (_vm->_plat->_actionStatus == kAS17PlatPhoningAssistant) {
+ if (plat._actionStatus == kAS17PlatPhoningAssistant) {
gnap._actionStatus = kAS17PlatHangUpPhone;
_vm->updateMouseCursor();
_platPhoneCtr = 0;
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
gameSys.setAnimation(0x257, 254, 4);
gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
while (gameSys.getAnimationStatus(4) != 2)
_vm->gameUpdateTick();
- 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;
+ gameSys.setAnimation(0x25B, plat._id, 1);
+ gameSys.insertSequence(0x25B, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0x25B;
+ plat._sequenceDatNum = 0;
_currPhoneSequenceId = -1;
_nextPhoneSequenceId = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
@@ -2380,6 +2388,7 @@ void Scene17::platHangUpPhone() {
void Scene17::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -2439,22 +2448,22 @@ void Scene17::run() {
if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(4, 6, kDirBottomRight);
- _vm->_plat->initPos(5, 6, kDirNone);
+ plat.initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else if (_vm->isFlag(kGFUnk27)) {
gnap.initPos(3, 9, kDirUpLeft);
- _vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
+ plat._pos = _vm->_hotspotsWalkPos[2];
+ 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->_plat->_sequenceId = 0x25A;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = 0x25A;
+ plat._sequenceDatNum = 0;
_vm->endSceneInit();
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
- _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
+ plat._actionStatus = kAS17PlatPhoningAssistant;
platHangUpPhone();
gameSys.setAnimation(0, 0, 4);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
@@ -2463,7 +2472,7 @@ void Scene17::run() {
} else if (_vm->isFlag(kGFUnk25)) {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
- _vm->_plat->initPos(7, 9, kDirNone);
+ plat.initPos(7, 9, kDirNone);
gnap._pos = _vm->_hotspotsWalkPos[2];
gnap._id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2480,31 +2489,31 @@ void Scene17::run() {
_vm->clearFlag(kGFUnk16);
_vm->_sceneWaiting = true;
gnap.initPos(3, 9, kDirUpLeft);
- _vm->_plat->_pos = _vm->_hotspotsWalkPos[2];
- _vm->_plat->_id = 20 * _vm->_hotspotsWalkPos[2].y;
+ plat._pos = _vm->_hotspotsWalkPos[2];
+ 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->_plat->_sequenceId = 0x25A;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = 0x25A;
+ plat._sequenceDatNum = 0;
_vm->endSceneInit();
gameSys.setAnimation(_currPhoneSequenceId, 254, 1);
- _vm->_plat->_actionStatus = kAS17PlatPhoningAssistant;
+ plat._actionStatus = kAS17PlatPhoningAssistant;
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
gnap.initPos(6, 6, kDirBottomRight);
- _vm->_plat->initPos(5, 6, kDirNone);
+ plat.initPos(5, 6, kDirNone);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
gnap.initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
- _vm->_plat->initPos(1, 9, kDirNone);
+ plat.initPos(1, 9, kDirNone);
_vm->endSceneInit();
} else {
gnap.initPos(3, 7, kDirBottomRight);
- _vm->_plat->initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
_vm->clearFlag(kGFSpringTaken);
@@ -2518,18 +2527,18 @@ void Scene17::run() {
gnap._sequenceDatNum = 0;
gnap._idleFacing = kDirBottomRight;
gameSys.insertSequence(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_plat->_pos = Common::Point(-1, 8);
- _vm->_plat->_id = 160;
+ plat._pos = Common::Point(-1, 8);
+ plat._id = 160;
gameSys.insertSequence(0x241, 160, 0, 0, kSeqNone, 0, 0, 0);
- gameSys.insertSequence(0x107C1, _vm->_plat->_id, 0x241, _vm->_plat->_id,
- kSeqScale | kSeqSyncWait, 0, 75 * _vm->_plat->_pos.x - _vm->_plat->_gridX, 48 * _vm->_plat->_pos.y - _vm->_plat->_gridY);
+ gameSys.insertSequence(0x107C1, plat._id, 0x241, plat._id,
+ kSeqScale | kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
gameSys.insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
// TODO delayTicksA(2, 9);
_vm->endSceneInit();
- _vm->_plat->_sequenceId = 0x7C1;
- _vm->_plat->_sequenceDatNum = 1;
- _vm->_plat->_idleFacing = kDirBottomRight;
- _vm->_plat->walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
+ plat._sequenceId = 0x7C1;
+ plat._sequenceDatNum = 1;
+ plat._idleFacing = kDirBottomRight;
+ plat.walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -2554,25 +2563,25 @@ void Scene17::run() {
gnap.useJointOnPlatypus();
} else {
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[6], 1, 0x107C2, 1);
gnap.walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 0, 0x107BA, 1);
- _vm->_plat->_actionStatus = kAS17GetWrench1;
+ plat._actionStatus = kAS17GetWrench1;
gnap._actionStatus = kAS17GetWrench1;
_vm->_timers[5] = _vm->getRandom(30) + 80;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemJoint);
}
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -2601,8 +2610,8 @@ void Scene17::run() {
if (_canTryGetWrench) {
platHangUpPhone();
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
- _vm->_plat->_actionStatus = kAS17TryGetWrench;
+ plat.walkTo(_vm->_hotspotsWalkPos[6] + Common::Point(1, 0), 1, 0x107C2, 1);
+ plat._actionStatus = kAS17TryGetWrench;
gnap._actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
} else
@@ -2641,10 +2650,10 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
gnap.useDeviceOnPlatypus();
- _vm->_plat->_idleFacing = kDirUpLeft;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
+ plat._idleFacing = kDirUpLeft;
+ plat.walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
- _vm->_plat->_actionStatus = kAS17PlatUsePhone;
+ plat._actionStatus = kAS17PlatUsePhone;
gnap._actionStatus = kAS17PlatUsePhone;
} else
gnap.playImpossible(0, 0);
@@ -2685,10 +2694,10 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
gnap.useDeviceOnPlatypus();
- _vm->_plat->_idleFacing = kDirUpLeft;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
+ plat._idleFacing = kDirUpLeft;
+ plat.walkTo(_vm->_hotspotsWalkPos[2], 1, 0x107C2, 1);
_vm->setFlag(kGFUnk16);
- _vm->_plat->_actionStatus = kAS17PlatUsePhone;
+ plat._actionStatus = kAS17PlatUsePhone;
gnap._actionStatus = kAS17PlatUsePhone;
} else
gnap.playImpossible(0, 0);
@@ -2705,8 +2714,8 @@ void Scene17::run() {
gnap._idleFacing = kDirUpRight;
gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, 0x107BB, 1);
gnap._actionStatus = kAS17LeaveScene;
- if (_vm->_plat->_actionStatus != kAS17PlatPhoningAssistant)
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
+ if (plat._actionStatus != kAS17PlatPhoningAssistant)
+ plat.walkTo(_vm->_hotspotsWalkPos[5] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -2718,7 +2727,7 @@ void Scene17::run() {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, 0x107BC, 1);
gnap._actionStatus = kAS17LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[3] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -2743,17 +2752,17 @@ void Scene17::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence2();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence2();
gnap.updateIdleSequence2();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0)
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0)
gameSys.insertSequence(0x22B, 21, 0, 0, kSeqNone, 0, 0, 0);
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x25C, 255, 0, 0, kSeqNone, 0, 0, 0);
@@ -2767,7 +2776,7 @@ void Scene17::run() {
}
}
}
- if (_vm->_plat->_actionStatus < 0 && !_vm->_timers[5]) {
+ if (plat._actionStatus < 0 && !_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 80;
if (_vm->isFlag(kGFGrassTaken) && _nextWrenchSequenceId == -1) {
_nextWrenchSequenceId = 0x236;
@@ -2844,6 +2853,7 @@ void Scene17::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2898,9 +2908,9 @@ void Scene17::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_plat->_actionStatus) {
+ switch (plat._actionStatus) {
case kAS17TryGetWrench:
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
++_platTryGetWrenchCtr;
if (_platTryGetWrenchCtr % 2 != 0)
_nextWrenchSequenceId = 0x233;
@@ -2915,16 +2925,16 @@ void Scene17::updateAnimations() {
_nextCarWindowSequenceId = 0x249;
break;
case kAS17GetWrenchDone:
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
_vm->invAdd(kItemWrench);
_vm->setGrabCursorSprite(kItemWrench);
break;
case kAS17PlatUsePhone:
- 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;
+ gameSys.setAnimation(0x24E, plat._id, 1);
+ gameSys.insertSequence(0x24E, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceDatNum = 0;
+ plat._sequenceId = 0x24E;
+ plat._actionStatus = kAS17LeaveScene;
_vm->_newSceneNum = 53;
break;
case kAS17PlatPhoningAssistant:
@@ -2933,10 +2943,10 @@ void Scene17::updateAnimations() {
_platPhoneCtr = 0;
_nextPhoneSequenceId = -1;
_currPhoneSequenceId = -1;
- 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;
+ gameSys.insertSequence(0x25B, plat._id, 0x25A, plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceDatNum = 0;
+ plat._sequenceId = 0x25B;
+ plat._actionStatus = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
_vm->_sceneWaiting = false;
updateHotspots();
@@ -2944,9 +2954,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->_plat->_id, 0x25A, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_sequenceId = 0x25A;
+ gameSys.insertSequence(0x25A, plat._id, 0x25A, plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceDatNum = 0;
+ plat._sequenceId = 0x25A;
_currPhoneSequenceId = _nextPhoneSequenceId;
}
break;
@@ -2960,27 +2970,27 @@ void Scene17::updateAnimations() {
switch (_nextWrenchSequenceId) {
case 0x233:
gnap._actionStatus = -1;
- gameSys.insertSequence(0x243, _vm->_plat->_id,
- _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
+ gameSys.insertSequence(0x243, plat._id,
+ plat._sequenceId | (plat._sequenceDatNum << 16), plat._id,
kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
- _vm->_plat->_sequenceId = 0x243;
- _vm->_plat->_sequenceDatNum = 0;
- gameSys.setAnimation(0x243, _vm->_plat->_id, 1);
+ plat._sequenceId = 0x243;
+ plat._sequenceDatNum = 0;
+ gameSys.setAnimation(0x243, plat._id, 1);
break;
case 0x234:
gnap._actionStatus = -1;
- gameSys.insertSequence(0x242, _vm->_plat->_id,
- _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
+ gameSys.insertSequence(0x242, plat._id,
+ plat._sequenceId | (plat._sequenceDatNum << 16), plat._id,
kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(_nextWrenchSequenceId, 40, _currWrenchSequenceId, 40, kSeqSyncWait, 0, 0, 0);
_currWrenchSequenceId = _nextWrenchSequenceId;
_nextWrenchSequenceId = -1;
- _vm->_plat->_sequenceId = 0x242;
- _vm->_plat->_sequenceDatNum = 0;
- gameSys.setAnimation(0x242, _vm->_plat->_id, 1);
+ plat._sequenceId = 0x242;
+ plat._sequenceDatNum = 0;
+ gameSys.setAnimation(0x242, plat._id, 1);
break;
case 0x231:
if (_vm->getRandom(2) != 0)
@@ -3013,17 +3023,17 @@ void Scene17::updateAnimations() {
_currWrenchSequenceId = 0x22E;
_canTryGetWrench = false;
}
- gameSys.setAnimation(0x23F, _vm->_plat->_id, 1);
+ gameSys.setAnimation(0x23F, plat._id, 1);
gameSys.insertSequence(0x10875, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(0x23F, _vm->_plat->_id,
- _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id,
+ gameSys.insertSequence(0x23F, plat._id,
+ plat._sequenceId | (plat._sequenceDatNum << 16), plat._id,
kSeqSyncWait, 0, 0, 0);
gnap._sequenceDatNum = 1;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceDatNum = 0;
gnap._sequenceId = 0x875;
- _vm->_plat->_sequenceId = 0x23F;
+ plat._sequenceId = 0x23F;
gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->_plat->_actionStatus = kAS17GetWrench2;
+ plat._actionStatus = kAS17GetWrench2;
}
break;
default:
@@ -3061,15 +3071,15 @@ void Scene17::updateAnimations() {
break;
case 0x249:
gameSys.setAnimation(0x230, 40, 2);
- gameSys.setAnimation(0x240, _vm->_plat->_id, 1);
+ gameSys.setAnimation(0x240, 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->_plat->_id, _vm->_plat->_sequenceId, _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
+ gameSys.insertSequence(0x240, plat._id, plat._sequenceId, plat._id, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(0x23E, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0x23E;
gnap._sequenceDatNum = 0;
- _vm->_plat->_sequenceId = 0x240;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._sequenceId = 0x240;
+ plat._sequenceDatNum = 0;
gameSys.setAnimation(0x24A, 40, 3);
gameSys.insertSequence(0x24A, 40, _nextCarWindowSequenceId, 40, kSeqSyncWait, 0, 0, 0);
while (gameSys.getAnimationStatus(2) != 2) {
@@ -3088,7 +3098,7 @@ void Scene17::updateAnimations() {
_nextWrenchSequenceId = -1;
_vm->setFlag(kGFGrassTaken);
gnap._actionStatus = -1;
- _vm->_plat->_actionStatus = 2;
+ plat._actionStatus = 2;
updateHotspots();
_vm->_timers[5] = _vm->getRandom(30) + 80;
break;
@@ -3207,12 +3217,13 @@ void Scene18::gnapCarryGarbageCanTo(int gridX) {
else
direction = -1;
} else {
- if (gnap._pos.y == _vm->_plat->_pos.y) {
+ PlayerPlat& plat = *_vm->_plat;
+ if (gnap._pos.y == plat._pos.y) {
if (nextGridX >= gnap._pos.x) {
- if (nextGridX >= _vm->_plat->_pos.x && gnap._pos.x <= _vm->_plat->_pos.x)
- _vm->_plat->makeRoom();
- } else if (nextGridX <= _vm->_plat->_pos.x && gnap._pos.x >= _vm->_plat->_pos.x) {
- _vm->_plat->makeRoom();
+ if (nextGridX >= plat._pos.x && gnap._pos.x <= plat._pos.x)
+ plat.makeRoom();
+ } else if (nextGridX <= plat._pos.x && gnap._pos.x >= plat._pos.x) {
+ plat.makeRoom();
}
}
gnapSeqId = gnap._sequenceId;
@@ -3299,11 +3310,12 @@ void Scene18::putDownGarbageCan(int animationIndex) {
void Scene18::platEndPhoning(bool platFl) {
GameSys& gameSys = *_vm->_gameSys;
+ PlayerPlat& plat = *_vm->_plat;
if (_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
_platPhoneIter = 0;
_platPhoneCtr = 0;
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
if (_currPhoneSequenceId != -1) {
gameSys.setAnimation(0x21E, 254, 3);
gameSys.insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
@@ -3314,7 +3326,7 @@ void Scene18::platEndPhoning(bool platFl) {
gameSys.setAnimation(0, 0, 3);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
if (platFl) {
- _vm->_plat->_actionStatus = kAS18PlatComesHere;
+ plat._actionStatus = kAS18PlatComesHere;
_vm->_timers[6] = 50;
_vm->_sceneWaiting = true;
}
@@ -3357,6 +3369,7 @@ void Scene18::waitForGnapAction() {
void Scene18::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_cowboyHatSurface = nullptr;
@@ -3424,22 +3437,22 @@ void Scene18::run() {
}
if (_vm->_prevSceneNum == 17) {
gnap.initPos(4, 11, kDirBottomRight);
- _vm->_plat->initPos(5, 11, kDirNone);
+ plat.initPos(5, 11, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
gnap.initPos(7, 7, kDirBottomRight);
- _vm->_plat->initPos(8, 7, kDirNone);
+ plat.initPos(8, 7, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(-1, 10, kDirBottomRight);
- _vm->_plat->initPos(-1, 10, kDirNone);
+ plat.initPos(-1, 10, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 7), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
}
@@ -3469,18 +3482,18 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowItem(_vm->_grabCursorSpriteIndex, _vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playShowItem(_vm->_grabCursorSpriteIndex, plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -3688,7 +3701,7 @@ void Scene18::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore], 0, 0x107C0, 1);
gnap._actionStatus = kAS18LeaveScene;
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant))
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS18ExitToyStore] + Common::Point(1, 0), -1, 0x107C2, 1);
}
}
break;
@@ -3707,7 +3720,7 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS18ExitPhoneBooth] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -3726,7 +3739,7 @@ void Scene18::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(false);
else
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity] + Common::Point(0, -1), -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS18ExitGrubCity] + Common::Point(0, -1), -1, 0x107CF, 1);
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -3770,18 +3783,18 @@ void Scene18::run() {
if (!_vm->_isLeavingScene) {
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- if (_vm->_plat->_actionStatus == kAS18PlatComesHere) {
+ if (plat._actionStatus == kAS18PlatComesHere) {
if (!_vm->_timers[6]) {
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
_vm->_sceneWaiting = false;
- _vm->_plat->initPos(-1, 10, kDirNone);
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ plat.initPos(-1, 10, kDirNone);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
_vm->_hotspots[kHS18WalkArea1]._y2 += 48;
_vm->_hotspots[kHS18WalkArea2]._x1 += 75;
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
_vm->_hotspots[kHS18WalkArea2]._x1 -= 75;
_vm->_hotspots[kHS18WalkArea1]._y2 -= 48;
}
@@ -4120,6 +4133,7 @@ void Scene19::updateHotspots() {
void Scene19::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
_toyGrabCtr = 0;
@@ -4149,10 +4163,10 @@ void Scene19::run() {
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(40) + 50;
gnap.initPos(3, 6, kDirBottomRight);
- _vm->_plat->initPos(4, 6, kDirNone);
+ plat.initPos(4, 6, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -4177,18 +4191,18 @@ void Scene19::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -4208,7 +4222,7 @@ void Scene19::run() {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
_vm->setFlag(kGFUnk27);
else
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(1, 0), -1, 0x107C5, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[1] + Common::Point(1, 0), -1, 0x107C5, 1);
_vm->_hotspots[kHS19WalkArea1]._flags &= ~SF_WALKABLE;
}
break;
@@ -4331,7 +4345,7 @@ void Scene19::run() {
if (!_vm->_isLeavingScene) {
gnap.updateIdleSequence();
if (!_vm->isFlag(kGFPlatypusTalkingToAssistant)) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
if (!_vm->_timers[6] && _nextShopAssistantSequenceId == -1) {
_vm->_timers[6] = _vm->getRandom(40) + 50;
if (_vm->getRandom(4) != 0) {
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index c4f578d..f3a677a 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -160,6 +160,7 @@ void Scene20::stopSounds() {
void Scene20::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(8);
@@ -209,46 +210,46 @@ void Scene20::run() {
_vm->gameUpdateTick();
}
gnap.initPos(11, 8, kDirBottomLeft);
- _vm->_plat->initPos(11, 9, kDirUnk4);
+ plat.initPos(11, 9, kDirUnk4);
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
gnap.initPos(5, 11, kDirBottomRight);
- _vm->_plat->initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 18:
gnap.initPos(11, 8, kDirBottomLeft);
- _vm->_plat->initPos(11, 9, kDirUnk4);
+ plat.initPos(11, 9, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 21:
gnap.initPos(-1, 8, kDirBottomLeft);
- _vm->_plat->initPos(-1, 9, kDirUnk4);
+ plat.initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 22:
gnap.initPos(7, 6, kDirBottomRight);
- _vm->_plat->initPos(8, 6, kDirNone);
+ plat.initPos(8, 6, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
break;
default:
gnap.initPos(8, 6, kDirBottomLeft);
- _vm->_plat->initPos(9, 6, kDirUnk4);
+ plat.initPos(9, 6, kDirUnk4);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
break;
}
@@ -281,14 +282,14 @@ void Scene20::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(20);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -306,8 +307,8 @@ void Scene20::run() {
_vm->_newSceneNum = 21;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
gnap._actionStatus = kAS20LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
+ plat._idleFacing = kDirUnk4;
}
break;
@@ -319,7 +320,7 @@ void Scene20::run() {
_vm->_newSceneNum = 17;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone], 0, 0x107AE, 1);
gnap._actionStatus = kAS20LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitPhone] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -332,7 +333,7 @@ void Scene20::run() {
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore], 0, 0x107AB, 1);
gnap._actionStatus = kAS20LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideToyStore] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_hotspots[kHS20WalkArea2]._flags &= ~SF_WALKABLE;
}
break;
@@ -345,8 +346,8 @@ void Scene20::run() {
_vm->_newSceneNum = 22;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
gnap._actionStatus = kAS20LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
- _vm->_plat->_idleFacing = kDirUnk4;
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat._idleFacing = kDirUnk4;
}
break;
@@ -358,7 +359,7 @@ void Scene20::run() {
_vm->_newSceneNum = 24;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld], 0, 0x107BB, 1);
gnap._actionStatus = kAS20LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -471,9 +472,9 @@ void Scene20::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0) {
+ if (plat._actionStatus < 0) {
_vm->_hotspots[kHS20WalkArea1]._y2 += 48;
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
_vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
}
if (gnap._actionStatus < 0)
@@ -487,7 +488,7 @@ void Scene20::run() {
}
if (!_vm->_timers[7]) {
_vm->_timers[7] = _vm->getRandom(100) + 100;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0) {
switch (_vm->getRandom(3)) {
case 0:
gameSys.insertSequence(0x183, 253, 0, 0, kSeqNone, 0, 0, 0);
@@ -740,6 +741,7 @@ void Scene21::updateHotspots() {
void Scene21::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(6);
@@ -749,7 +751,7 @@ void Scene21::run() {
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
gnap.initPos(5, 8, kDirBottomRight);
- _vm->_plat->initPos(6, 8, kDirNone);
+ plat.initPos(6, 8, kDirNone);
gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
@@ -757,16 +759,16 @@ void Scene21::run() {
_vm->clearFlag(kGFKeysTaken);
} else {
gnap.initPos(5, 11, kDirBottomRight);
- _vm->_plat->initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirNone);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
} else {
gnap.initPos(5, 11, kDirBottomRight);
- _vm->_plat->initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirNone);
_currOldLadySequenceId = 0x89;
gameSys.setAnimation(0x89, 79, 3);
gameSys.insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
@@ -774,7 +776,7 @@ void Scene21::run() {
_vm->_timers[4] = _vm->getRandom(30) + 50;
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -801,14 +803,14 @@ void Scene21::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -880,7 +882,7 @@ void Scene21::run() {
_vm->_newSceneNum = 20;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity], 0, 0x107B3, 1);
gnap._actionStatus = kAS21LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS21ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -904,7 +906,7 @@ void Scene21::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->isFlag(kGFTwigTaken) && !_vm->_timers[4] && _nextOldLadySequenceId == -1 && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(30) + 50;
@@ -1035,6 +1037,7 @@ void Scene22::updateHotspots() {
void Scene22::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
gameSys.insertSequence(0x5D, 254, 0, 0, kSeqNone, 0, 0, 0);
@@ -1050,14 +1053,14 @@ void Scene22::run() {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(2, 8, kDirBottomRight);
- _vm->_plat->initPos(1, 8, kDirNone);
+ plat.initPos(1, 8, kDirNone);
_vm->endSceneInit();
} else {
gnap.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
- _vm->_plat->initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
+ plat.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
}
if (_vm->isFlag(kGFSceneFlag1)) {
@@ -1119,14 +1122,14 @@ void Scene22::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1142,7 +1145,7 @@ void Scene22::run() {
_vm->_newSceneNum = 20;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity], 0, 0x107AF, 1);
gnap._actionStatus = kAS22LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS22ExitOutsideGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1152,7 +1155,7 @@ void Scene22::run() {
_vm->_newSceneNum = 23;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity], 0, 0x107AB, 1);
gnap._actionStatus = kAS22LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS22ExitBackGrubCity] + Common::Point(0, 1), -1, 0x107C2, 1);
}
break;
@@ -1197,7 +1200,7 @@ void Scene22::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[6] && _nextCashierSequenceId == -1) {
_vm->_timers[6] = _vm->getRandom(30) + 20;
@@ -1288,6 +1291,7 @@ void Scene23::updateHotspots() {
void Scene23::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->_timers[4] = _vm->getRandom(100) + 200;
_vm->_timers[5] = _vm->getRandom(100) + 200;
@@ -1301,12 +1305,12 @@ void Scene23::run() {
_vm->queueInsertDeviceIcon();
gnap.initPos(-1, 7, kDirBottomRight);
- _vm->_plat->initPos(-2, 7, kDirNone);
+ plat.initPos(-2, 7, kDirNone);
gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
if (_vm->isFlag(kGFUnk24)) {
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
@@ -1344,14 +1348,14 @@ void Scene23::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1401,7 +1405,7 @@ void Scene23::run() {
_vm->_newSceneNum = 22;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity], 0, 0x107AF, 1);
gnap._actionStatus = kAS23LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS23ExitFrontGrubCity] + Common::Point(0, -1), -1, 0x107C2, 1);
}
break;
@@ -1422,7 +1426,7 @@ void Scene23::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4] && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(100) + 200;
@@ -1546,6 +1550,8 @@ void Scene24::updateHotspots() {
void Scene24::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
+
int counter = 0;
_vm->playSound(0x10940, true);
@@ -1574,16 +1580,16 @@ void Scene24::run() {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(1, 8, kDirBottomRight);
- _vm->_plat->initPos(2, 8, kDirNone);
+ plat.initPos(2, 8, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(1, 9), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
} else {
gnap.initPos(8, 8, kDirBottomLeft);
- _vm->_plat->initPos(8, 8, kDirUnk4);
+ plat.initPos(8, 8, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1613,14 +1619,14 @@ void Scene24::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1636,7 +1642,7 @@ void Scene24::run() {
_vm->_newSceneNum = 25;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld], 0, 0x107AB, 1);
gnap._actionStatus = kAS24LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS24ExitCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1647,7 +1653,7 @@ void Scene24::run() {
gnap._idleFacing = kDirUpRight;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS24LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1672,7 +1678,7 @@ void Scene24::run() {
_vm->playSound(0x10940, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 50;
@@ -1810,6 +1816,7 @@ void Scene25::playAnims(int index) {
void Scene25::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x10940, true);
_vm->startSoundTimerA(5);
@@ -1825,16 +1832,16 @@ void Scene25::run() {
if (_vm->_prevSceneNum == 24) {
gnap.initPos(5, 11, kDirUpLeft);
- _vm->_plat->initPos(6, 11, kDirUnk4);
+ plat.initPos(6, 11, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 7), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 7), -1, 0x107C2, 1);
} else {
gnap.initPos(5, 6, kDirBottomRight);
- _vm->_plat->initPos(6, 6, kDirNone);
+ plat.initPos(6, 6, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -1861,14 +1868,14 @@ void Scene25::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -1914,7 +1921,7 @@ void Scene25::run() {
_vm->_newSceneNum = 24;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld], 0, 0x107B4, 1);
gnap._actionStatus = kAS25LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS25ExitOutsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -1926,7 +1933,7 @@ void Scene25::run() {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld], 0, 0x107B1, 1);
gnap._actionStatus = kAS25LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS25ExitInsideCircusWorld] + Common::Point(1, 0), -1, 0x107C2, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
} else {
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
@@ -1984,7 +1991,7 @@ void Scene25::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4] && _nextTicketVendorSequenceId == -1 && gnap._actionStatus == -1) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -2123,6 +2130,7 @@ void Scene26::updateHotspots() {
void Scene26::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->startSoundTimerB(7);
_vm->playSound(0x1093B, true);
@@ -2145,13 +2153,13 @@ void Scene26::run() {
if (_vm->_prevSceneNum == 25) {
gnap.initPos(-1, 8, kDirBottomRight);
- _vm->_plat->initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(2, 8, kDirBottomRight);
- _vm->_plat->initPos(3, 8, kDirNone);
+ plat.initPos(3, 8, kDirNone);
_vm->endSceneInit();
}
@@ -2179,14 +2187,14 @@ void Scene26::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -2261,7 +2269,7 @@ void Scene26::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[5] && _nextKidSequenceId == -1) {
_vm->_timers[5] = _vm->getRandom(20) + 50;
@@ -2341,6 +2349,7 @@ void Scene27::updateHotspots() {
void Scene27::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(4);
@@ -2364,28 +2373,28 @@ void Scene27::run() {
switch (_vm->_prevSceneNum) {
case 26:
gnap.initPos(7, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
case 29:
gnap.initPos(-1, 8, kDirBottomRight);
- _vm->_plat->initPos(-1, 9, kDirNone);
+ plat.initPos(-1, 9, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 31:
gnap.initPos(12, 8, kDirBottomLeft);
- _vm->_plat->initPos(12, 9, kDirUnk4);
+ plat.initPos(12, 9, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(8, 9), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(8, 9), -1, 0x107C2, 1);
break;
default:
gnap.initPos(6, 8, kDirBottomRight);
- _vm->_plat->initPos(5, 9, kDirNone);
+ plat.initPos(5, 9, kDirNone);
_vm->endSceneInit();
break;
}
@@ -2415,14 +2424,14 @@ void Scene27::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -2488,7 +2497,7 @@ void Scene27::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitCircus].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS27LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS27ExitCircus] + Common::Point(1, 0), -1, 0x107C7, 1);
}
break;
@@ -2498,7 +2507,7 @@ void Scene27::run() {
_vm->_newSceneNum = 29;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitArcade].y), 0, 0x107AF, 1);
gnap._actionStatus = kAS27LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS27ExitArcade] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -2508,7 +2517,7 @@ void Scene27::run() {
_vm->_newSceneNum = 31;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS27ExitBeerStand].y), 0, 0x107AB, 1);
gnap._actionStatus = kAS27LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS27ExitBeerStand] + Common::Point(0, 1), -1, 0x107CD, 1);
}
break;
@@ -2519,7 +2528,7 @@ void Scene27::run() {
_vm->_newSceneNum = 28;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown], 0, 0x107AD, 1);
gnap._actionStatus = kAS27LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS27ExitClown] + Common::Point(1, 0), -1, 0x107C4, 1);
} else {
_vm->_hotspots[kHS27WalkArea1]._flags |= SF_WALKABLE;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS27ExitClown].x, 7), 0, 0x107BC, 1);
@@ -2549,7 +2558,7 @@ void Scene27::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (_vm->_debugLevel == 4)
@@ -2719,6 +2728,7 @@ void Scene28::updateHotspots() {
void Scene28::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1093C, true);
_nextClownSequenceId = -1;
@@ -2742,12 +2752,12 @@ void Scene28::run() {
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
gnap.initPos(8, 8, kDirBottomLeft);
- _vm->_plat->initPos(9, 8, kDirUnk4);
+ plat.initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
} else {
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
gnap.initPos(8, 8, kDirBottomLeft);
- _vm->_plat->initPos(9, 8, kDirUnk4);
+ plat.initPos(9, 8, kDirUnk4);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_currClownSequenceId = 0x115;
@@ -2788,14 +2798,14 @@ void Scene28::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -2886,7 +2896,7 @@ void Scene28::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown], 0, 0x107BF, 1);
gnap._actionStatus = kAS28LeaveScene;
_vm->_hotspots[kHS28WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS28ExitOutsideClown] + Common::Point(-1, 0), -1, 0x107C2, 1);
}
break;
@@ -2934,7 +2944,7 @@ void Scene28::run() {
_vm->playSound(0x1093C, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 80;
@@ -3118,6 +3128,7 @@ void Scene29::updateHotspots() {
void Scene29::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
@@ -3145,16 +3156,16 @@ void Scene29::run() {
if (_vm->_prevSceneNum == 27) {
gnap.initPos(12, 7, kDirBottomRight);
- _vm->_plat->initPos(12, 8, kDirNone);
+ plat.initPos(12, 8, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 7), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(-1, 7, kDirBottomRight);
- _vm->_plat->initPos(-2, 7, kDirNone);
+ plat.initPos(-2, 7, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -3181,14 +3192,14 @@ void Scene29::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -3232,7 +3243,7 @@ void Scene29::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus], 0, 0x107AE, 1);
gnap._actionStatus = kAS29LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS29ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -3242,7 +3253,7 @@ void Scene29::run() {
_vm->_newSceneNum = 27;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown], 0, 0x107AB, 1);
gnap._actionStatus = kAS29LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS29ExitOutsideClown] + Common::Point(0, -1), -1, 0x107CD, 1);
}
break;
@@ -3293,7 +3304,7 @@ void Scene29::run() {
if (!_vm->_isLeavingScene) {
if (gnap._actionStatus < 0) {
gnap.updateIdleSequence();
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
}
if (!_vm->_timers[4]) {
if (_vm->invHas(kItemHorn)) {
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index c0050c1..a740d21 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -47,6 +47,7 @@ void Scene30::updateHotspots() {
void Scene30::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
bool hasTakenPill = false;
@@ -67,10 +68,10 @@ void Scene30::run() {
_kidSequenceId = 0x101;
gnap.initPos(7, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
while (!_vm->_sceneDone) {
_vm->updateMouseCursor();
@@ -96,14 +97,14 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -150,7 +151,7 @@ void Scene30::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS30ExitCircus].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS30LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS30ExitCircus] + Common::Point(1, 0), -1, 0x107C2, 1);
}
break;
@@ -173,7 +174,7 @@ void Scene30::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -299,6 +300,7 @@ void Scene31::updateHotspots() {
void Scene31::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1093B, true);
_vm->startSoundTimerB(6);
@@ -317,16 +319,16 @@ void Scene31::run() {
if (_vm->_prevSceneNum == 27) {
gnap.initPos(-1, 8, kDirBottomLeft);
- _vm->_plat->initPos(-1, 9, kDirUnk4);
+ plat.initPos(-1, 9, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
gnap.initPos(7, 12, kDirBottomRight);
- _vm->_plat->initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirNone);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
}
while (!_vm->_sceneDone) {
@@ -353,14 +355,14 @@ void Scene31::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
gnap.playImpossible(0, 0);
@@ -398,11 +400,11 @@ void Scene31::run() {
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags |= SF_WALKABLE;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown], 1, 0x107C2, 1);
_vm->_hotspots[kHS31WalkArea1]._flags &= ~SF_WALKABLE;
- _vm->_plat->_actionStatus = kAS31PlatMeasuringClown;
+ plat._actionStatus = kAS31PlatMeasuringClown;
gnap._actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
@@ -456,7 +458,7 @@ void Scene31::run() {
_vm->_newSceneNum = 26;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitCircus].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS31LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31ExitCircus] + Common::Point(1, 0), -1, -1, 1);
}
break;
@@ -466,7 +468,7 @@ void Scene31::run() {
_vm->_newSceneNum = 27;
gnap.walkTo(Common::Point(-1, _vm->_hotspotsWalkPos[kHS31ExitOutsideClown].y), 0, 0x107AF, 1);
gnap._actionStatus = kAS31LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS31ExitOutsideClown] + Common::Point(0, 1), -1, 0x107CF, 1);
}
break;
@@ -489,8 +491,8 @@ void Scene31::run() {
_vm->playSound(0x1093B, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -539,6 +541,7 @@ void Scene31::run() {
void Scene31::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -578,7 +581,7 @@ void Scene31::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_plat->_actionStatus == kAS31PlatMeasuringClown) {
+ if (plat._actionStatus == kAS31PlatMeasuringClown) {
_vm->_sceneWaiting = true;
_beerGuyDistracted = true;
_nextClerkSequenceId = 0xFA;
@@ -599,7 +602,7 @@ void Scene31::updateAnimations() {
++_clerkMeasureCtr;
if (_clerkMeasureCtr >= _clerkMeasureMaxCtr) {
if (gnap._actionStatus != 5)
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
_vm->_timers[0] = 40;
gameSys.insertSequence(0xFD, 39, _currClerkSequenceId, 39, kSeqSyncWait, 0, 0, 0);
_currClerkSequenceId = 0xFD;
@@ -663,6 +666,7 @@ void Scene32::updateHotspots() {
void Scene32::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(5);
@@ -671,13 +675,13 @@ void Scene32::run() {
if (_vm->_prevSceneNum == 33) {
gnap.initPos(11, 6, kDirBottomLeft);
- _vm->_plat->initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirUnk4);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
gnap.initPos(1, 6, kDirBottomRight);
- _vm->_plat->initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirNone);
_vm->endSceneInit();
}
@@ -700,21 +704,21 @@ void Scene32::run() {
case kHS32Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -727,7 +731,7 @@ void Scene32::run() {
_vm->setGrabCursorSprite(-1);
gnap.walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck], 0, 0x107AB, 1);
gnap._actionStatus = kAS32LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS32ExitTruck] + Common::Point(0, 1), -1, 0x107CD, 1);
_vm->_newSceneNum = 33;
}
break;
@@ -757,8 +761,8 @@ void Scene32::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -819,6 +823,7 @@ void Scene33::updateHotspots() {
void Scene33::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->playSound(0x1091C, true);
_vm->startSoundTimerC(6);
@@ -834,26 +839,26 @@ void Scene33::run() {
switch (_vm->_prevSceneNum) {
case 34:
gnap.initPos(11, 7, kDirBottomLeft);
- _vm->_plat->initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirUnk4);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
gnap.initPos(7, 7, kDirBottomRight);
- _vm->_plat->initPos(8, 7, kDirNone);
+ plat.initPos(8, 7, kDirNone);
_vm->endSceneInit();
break;
case 32:
gnap.initPos(-1, 6, kDirBottomRight);
- _vm->_plat->initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirNone);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
gnap.initPos(3, 7, kDirBottomRight);
- _vm->_plat->initPos(2, 7, kDirNone);
+ plat.initPos(2, 7, kDirNone);
_vm->endSceneInit();
break;
}
@@ -877,21 +882,21 @@ void Scene33::run() {
case kHS33Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -954,7 +959,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], 0, 0x107AB, 1);
gnap._actionStatus = kAS33LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS33ExitCreek], -1, 0x107CD, 1);
_vm->_newSceneNum = 34;
}
break;
@@ -964,7 +969,7 @@ void Scene33::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], 0, 0x107AF, 1);
gnap._actionStatus = kAS33LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS33ExitPigpen], -1, 0x107CF, 1);
_vm->_newSceneNum = 32;
}
break;
@@ -989,8 +994,8 @@ void Scene33::run() {
_vm->playSound(0x1091C, true);
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
@@ -1094,6 +1099,7 @@ int Scene38::init() {
void Scene38::updateHotspots() {
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->setHotspot(kHS38Platypus, 0, 0, 0, 0, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR);
_vm->setHotspot(kHS38ExitHouse, 150, 585, 650, 600, SF_EXIT_D_CURSOR, 0, 8);
@@ -1108,37 +1114,38 @@ void Scene38::updateHotspots() {
_vm->setHotspot(kHS38WalkArea5, 770, 0, 799, 445);
_vm->setHotspot(kHS38WalkArea6, 393, 0, 698, 445, SF_WALKABLE | SF_DISABLED);
_vm->setDeviceHotspot(kHS38Device, -1, -1, -1, -1);
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38Platypus]._flags = SF_WALKABLE | SF_DISABLED;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38ExitCave]._flags = SF_EXIT_D_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_DISABLED;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid1]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_DISABLED;
else if (gnap._actionStatus == kAS38HoldingHuntingTrophy)
_vm->_hotspots[kHS38TrapDoorLid2]._flags = SF_PLAT_CURSOR | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_hotspots[kHS38WalkArea6]._flags = SF_NONE;
_vm->_hotspotsCount = 13;
}
void Scene38::run() {
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
_vm->_gameSys->insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
if (_vm->_prevSceneNum == 39) {
gnap.initPos(3, 7, kDirBottomLeft);
- _vm->_plat->initPos(4, 7, kDirUnk4);
+ plat.initPos(4, 7, kDirUnk4);
} else {
gnap.initPos(3, 8, kDirBottomRight);
- _vm->_plat->initPos(4, 8, kDirNone);
+ plat.initPos(4, 8, kDirNone);
}
_vm->endSceneInit();
@@ -1159,21 +1166,21 @@ void Scene38::run() {
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1193,9 +1200,9 @@ void Scene38::run() {
case kHS38ExitCave:
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
_vm->_isLeavingScene = true;
- } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ } else if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
_vm->_sceneWaiting = false;
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(5, 7), 0, 0x107BB, 1);
@@ -1207,7 +1214,7 @@ void Scene38::run() {
case kHS38TrapDoorLid1:
case kHS38TrapDoorLid2:
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
- if (_vm->_verbCursor == PLAT_CURSOR && _vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
+ if (_vm->_verbCursor == PLAT_CURSOR && plat._actionStatus != kAS38PlatypusHoldingTrapDoor)
gnap._actionStatus = kAS38UsePlatypusWithTrapDoor;
else
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
@@ -1224,11 +1231,11 @@ void Scene38::run() {
gnap.playScratchingHead(0, 0);
break;
case GRAB_CURSOR:
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
gnap.playImpossible(0, 0);
else {
gnap.walkTo(Common::Point(3, 6), 0, 0x107BB, 1);
- _vm->_plat->walkTo(Common::Point(4, 8), -1, -1, 1);
+ plat.walkTo(Common::Point(4, 8), -1, -1, 1);
gnap._actionStatus = kAS38UseHuntingTrophy;
}
break;
@@ -1272,7 +1279,7 @@ void Scene38::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- _vm->_plat->updateIdleSequence();
+ plat.updateIdleSequence();
gnap.updateIdleSequence();
}
@@ -1291,6 +1298,7 @@ void Scene38::run() {
void Scene38::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -1299,7 +1307,7 @@ void Scene38::updateAnimations() {
_vm->_sceneDone = true;
break;
case kAS38ExitCave:
- gameSys.removeSequence(_vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, true);
+ gameSys.removeSequence(plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, true);
gameSys.insertSequence(0xA3, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0xA3;
gnap._sequenceDatNum = 0;
@@ -1316,7 +1324,7 @@ void Scene38::updateAnimations() {
updateHotspots();
break;
case kAS38HoldingHuntingTrophy:
- if (_vm->_plat->_actionStatus != kAS38PlatypusHoldingTrapDoor)
+ if (plat._actionStatus != kAS38PlatypusHoldingTrapDoor)
_vm->_sceneWaiting = true;
if (gnap._sequenceId == 0xA4) {
gameSys.insertSequence(0x9D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
@@ -1332,7 +1340,7 @@ void Scene38::updateAnimations() {
if (gnap._sequenceId == 0x9E) {
gameSys.insertSequence(0x9B, 0, 0, 0, kSeqNone, 0, 0, 0);
gnap._actionStatus = -1;
- } else if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ } else if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
gameSys.insertSequence(0xA0, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0xA0;
gnap._sequenceDatNum = 0;
@@ -1364,17 +1372,17 @@ void Scene38::updateAnimations() {
gnap._sequenceDatNum = 0;
gameSys.setAnimation(0x9F, gnap._id, 0);
gnap._actionStatus = kAS38HoldingHuntingTrophy;
- if (_vm->_plat->_idleFacing != kDirNone)
- _vm->_plat->playSequence(0x107D5);
+ if (plat._idleFacing != kDirNone)
+ plat.playSequence(0x107D5);
else
- _vm->_plat->playSequence(0x107D4);
- _vm->_plat->walkTo(Common::Point(8, 7), -1, 0x107D2, 1);
- gameSys.insertSequence(0xA1, gnap._id + 1, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0xA1;
- _vm->_plat->_sequenceDatNum = 0;
- _vm->_plat->_id = gnap._id + 1;
+ plat.playSequence(0x107D4);
+ plat.walkTo(Common::Point(8, 7), -1, 0x107D2, 1);
+ gameSys.insertSequence(0xA1, gnap._id + 1, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xA1;
+ plat._sequenceDatNum = 0;
+ plat._id = gnap._id + 1;
gameSys.setAnimation(0xA1, gnap._id + 1, 1);
- _vm->_plat->_actionStatus = kAS38PlatypusHoldingTrapDoor;
+ plat._actionStatus = kAS38PlatypusHoldingTrapDoor;
updateHotspots();
break;
}
@@ -1382,10 +1390,10 @@ void Scene38::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- if (_vm->_plat->_actionStatus == kAS38PlatypusHoldingTrapDoor) {
- gameSys.insertSequence(0xA2, _vm->_plat->_id, _vm->_plat->_sequenceId | (_vm->_plat->_sequenceDatNum << 16), _vm->_plat->_id, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->_sequenceId = 0xA2;
- _vm->_plat->_sequenceDatNum = 0;
+ if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor) {
+ gameSys.insertSequence(0xA2, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xA2;
+ plat._sequenceDatNum = 0;
updateHotspots();
_vm->_sceneWaiting = true;
}
@@ -1421,6 +1429,7 @@ void Scene39::updateHotspots() {
void Scene39::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
// Bug in the original? Timer was never initialized.
_vm->_timers[5] = 0;
@@ -1435,11 +1444,11 @@ void Scene39::run() {
_nextGuySequenceId = -1;
if (_vm->_prevSceneNum == 38) {
gnap.initPos(3, 7, kDirUpRight);
- _vm->_plat->initPos(2, 7, kDirUpLeft);
+ plat.initPos(2, 7, kDirUpLeft);
_vm->endSceneInit();
} else {
gnap.initPos(4, 7, kDirBottomRight);
- _vm->_plat->initPos(5, 7, kDirNone);
+ plat.initPos(5, 7, kDirNone);
_vm->endSceneInit();
}
@@ -1467,21 +1476,21 @@ void Scene39::run() {
case kHS39Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1544,8 +1553,8 @@ void Scene39::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
if (!_vm->_timers[5]) {
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 154f837..3cbfe4d 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -53,6 +53,7 @@ void Scene40::updateHotspots() {
void Scene40::run() {
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
_vm->endSceneInit();
@@ -78,21 +79,21 @@ void Scene40::run() {
case kHS40Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -224,6 +225,7 @@ void Scene41::updateHotspots() {
void Scene41::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -274,23 +276,23 @@ void Scene41::run() {
gnap._id = 140;
gameSys.insertSequence(0x120, 140, 0, 0, kSeqNone, 0, 0, 0);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
- _vm->_plat->initPos(8, 10, kDirBottomLeft);
+ plat.initPos(8, 10, kDirBottomLeft);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 45) {
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-2, 8, kDirUpLeft);
+ plat.initPos(-2, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 42) {
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(11, 9, kDirUpLeft);
+ plat.initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
gnap.initPos(5, 8, kDirBottomRight);
- _vm->_plat->initPos(6, 8, kDirBottomLeft);
+ plat.initPos(6, 8, kDirBottomLeft);
_vm->endSceneInit();
}
@@ -355,21 +357,21 @@ void Scene41::run() {
case kHS41Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -387,7 +389,7 @@ void Scene41::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), 0, 0x107AF, 1);
gnap._actionStatus = kAS41LeaveScene;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41Exit].x, -1), -1, 0x107CF, 1);
_vm->_newSceneNum = 45;
break;
@@ -395,7 +397,7 @@ void Scene41::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), 0, 0x107AB, 1);
gnap._actionStatus = kAS41LeaveScene;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), -1, 0x107CD, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS41ExitBBQ].x, -1), -1, 0x107CD, 1);
_vm->_newSceneNum = 42;
break;
@@ -514,13 +516,13 @@ void Scene41::run() {
updateAnimations();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextToyVendorSequenceId == -1) {
switch (_vm->getRandom(3)) {
case 0:
_nextToyVendorSequenceId = 0x113;
@@ -538,7 +540,7 @@ void Scene41::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(30) + 20;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _vm->_toyUfoActionStatus == -1 && _nextKidSequenceId == -1) {
if (_vm->isFlag(kGFGnapControlsToyUFO))
_nextKidSequenceId = 0x11B;
else if (_vm->getRandom(3) != 0)
@@ -756,6 +758,7 @@ void Scene42::updateHotspots() {
void Scene42::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -792,22 +795,22 @@ void Scene42::run() {
_vm->setGrabCursorSprite(-1);
} else if (_vm->_prevSceneNum == 41) {
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-1, 9, kDirUpLeft);
+ plat.initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 43) {
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(11, 9, kDirUpLeft);
+ plat.initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
gnap.initPos(5, 11, kDirUpRight);
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
}
while (!_vm->_sceneDone) {
@@ -869,21 +872,21 @@ void Scene42::run() {
case kHS42Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -894,7 +897,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(gnap._pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), 0, 0x107AE, 1);
gnap._actionStatus = kAS42LeaveScene;
- _vm->_plat->walkTo(Common::Point(_vm->_plat->_pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), -1, 0x107C7, 1);
+ plat.walkTo(Common::Point(plat._pos.x, _vm->_hotspotsWalkPos[kHS42ExitUfoParty].y), -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -902,7 +905,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitToyStand].x, gnap._pos.y), 0, 0x107AF, 1);
gnap._actionStatus = kAS42LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand], -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS42ExitToyStand], -1, 0x107CF, 1);
_vm->_newSceneNum = 41;
break;
@@ -910,7 +913,7 @@ void Scene42::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS42ExitUfo].x, gnap._pos.y), 0, 0x107AB, 1);
gnap._actionStatus = kAS42LeaveScene;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo], -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS42ExitUfo], -1, 0x107CD, 1);
_vm->_newSceneNum = 43;
break;
@@ -918,8 +921,8 @@ void Scene42::run() {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, 0x107BB, 1);
gnap._actionStatus = kAS42UseQuarterWithBBQVendor;
- if (_vm->_plat->_pos.y < 9)
- _vm->_plat->walkTo(Common::Point(_vm->_plat->_pos.x, 9), -1, -1, 1);
+ if (plat._pos.y < 9)
+ plat.walkTo(Common::Point(plat._pos.x, 9), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
@@ -984,13 +987,13 @@ void Scene42::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 30;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextBBQVendorSequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextBBQVendorSequenceId == -1) {
switch (_vm->getRandom(8)) {
case 0:
_nextBBQVendorSequenceId = 0x14C;
@@ -1208,6 +1211,7 @@ void Scene43::updateHotspots() {
void Scene43::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -1236,30 +1240,30 @@ void Scene43::run() {
switch (_vm->_prevSceneNum) {
case 42:
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-1, 9, kDirUpLeft);
+ plat.initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 44:
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(11, 9, kDirUpLeft);
+ plat.initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
case 54:
gnap.initPos(4, 7, kDirBottomLeft);
- _vm->_plat->initPos(11, 8, kDirUpLeft);
+ plat.initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
break;
default:
gnap.initPos(5, 11, kDirUpRight);
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
}
}
@@ -1329,21 +1333,21 @@ void Scene43::run() {
case kHS43Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1354,7 +1358,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], 0, 0x107AE, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], -1, 0x107C7, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS43ExitUfoParty], -1, 0x107C7, 1);
_vm->_newSceneNum = 40;
break;
@@ -1362,7 +1366,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitBBQ].x, gnap._pos.y), 0, 0x107AF, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ], -1, 0x107CF, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS43ExitBBQ], -1, 0x107CF, 1);
_vm->_newSceneNum = 42;
break;
@@ -1370,7 +1374,7 @@ void Scene43::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth].x, gnap._pos.y), 0, 0x107AB, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth], -1, 0x107CD, 1);
+ plat.walkTo(_vm->_hotspotsWalkPos[kHS43ExitKissinBooth], -1, 0x107CD, 1);
_vm->_newSceneNum = 44;
break;
@@ -1440,13 +1444,13 @@ void Scene43::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
gnap.updateIdleSequence();
if (!_vm->_timers[4] && (!_vm->isFlag(kGFGnapControlsToyUFO) || !_vm->isFlag(kGFGroceryStoreHatTaken))) {
_vm->_timers[4] = _vm->getRandom(100) + 100;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextTwoHeadedGuySequenceId == -1) {
switch (_vm->getRandom(5)) {
case 0:
_nextTwoHeadedGuySequenceId = 0x13C;
@@ -1643,6 +1647,7 @@ void Scene44::updateHotspots() {
void Scene44::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
@@ -1692,39 +1697,39 @@ void Scene44::run() {
switch (_vm->_prevSceneNum) {
case 43:
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-1, 7, kDirUpLeft);
+ plat.initPos(-1, 7, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
break;
case 46:
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(11, 8, kDirUpLeft);
+ plat.initPos(11, 8, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(6, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(7, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(7, 8), -1, 0x107D2, 1);
break;
case 50:
gnap.initPos(4, 8, kDirBottomRight);
if (_vm->_sceneSavegameLoaded) {
- _vm->_plat->initPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
+ plat.initPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
} else if (!_vm->isFlag(kGFUnk13)) {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
- _vm->_plat->_pos = Common::Point(5, 8);
- _vm->_plat->_sequenceId = 0xFD;
- _vm->_plat->_idleFacing = kDirNone;
- _vm->_plat->_id = 160;
- _vm->_plat->_sequenceDatNum = 0;
+ plat._pos = Common::Point(5, 8);
+ plat._sequenceId = 0xFD;
+ plat._idleFacing = kDirNone;
+ plat._id = 160;
+ plat._sequenceDatNum = 0;
gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
}
_vm->endSceneInit();
break;
default:
gnap.initPos(5, 11, kDirUpRight);
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
break;
}
@@ -1779,21 +1784,21 @@ void Scene44::run() {
case kHS44Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -1811,7 +1816,7 @@ void Scene44::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, gnap._pos.y), 0, 0x107AF, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS44ExitUfo].x, plat._pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 43;
break;
@@ -1842,11 +1847,11 @@ void Scene44::run() {
break;
case PLAT_CURSOR:
gnap.useDeviceOnPlatypus();
- _vm->_plat->walkTo(Common::Point(6, 7), 1, 0x107D2, 1);
+ plat.walkTo(Common::Point(6, 7), 1, 0x107D2, 1);
if (gnap._pos == Common::Point(7, 7))
gnap.walkStep();
gnap.playIdle(5, 7);
- _vm->_plat->_actionStatus = 4;
+ plat._actionStatus = 4;
break;
}
}
@@ -1924,13 +1929,13 @@ void Scene44::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO) && _currKissingLadySequenceId != 0xF5)
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(20) + 20;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextKissingLadySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextKissingLadySequenceId == -1) {
switch (_vm->getRandom(20)) {
case 0:
_nextKissingLadySequenceId = 0xED;
@@ -1957,7 +1962,7 @@ void Scene44::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 20;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSpringGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextSpringGuySequenceId == -1) {
if (_vm->getRandom(5) != 0) {
if (!_vm->isFlag(kGFSpringTaken))
_nextSpringGuySequenceId = 0xF9;
@@ -1987,6 +1992,7 @@ void Scene44::run() {
void Scene44::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2006,15 +2012,15 @@ void Scene44::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
- switch (_vm->_plat->_actionStatus) {
+ switch (plat._actionStatus) {
case 4:
if (gameSys.getAnimationStatus(2) == 2) {
- 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.insertSequence(0xFE, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
+ plat._sequenceId = 0xFE;
+ plat._sequenceDatNum = 0;
+ gameSys.setAnimation(0xFE, plat._id, 1);
gameSys.removeSequence(_currKissingLadySequenceId, 1, true);
- _vm->_plat->_actionStatus = 5;
+ plat._actionStatus = 5;
}
break;
case 5:
@@ -2022,7 +2028,7 @@ void Scene44::updateAnimations() {
_vm->_newSceneNum = 50;
break;
default:
- _vm->_plat->_actionStatus = -1;
+ plat._actionStatus = -1;
break;
}
}
@@ -2030,7 +2036,7 @@ void Scene44::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextKissingLadySequenceId == 0xF6) {
gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- _vm->_plat->initPos(5, 8, kDirNone);
+ plat.initPos(5, 8, kDirNone);
_currKissingLadySequenceId = _nextKissingLadySequenceId;
_nextKissingLadySequenceId = -1;
gameSys.setAnimation(0, 0, 2);
@@ -2126,6 +2132,7 @@ void Scene45::updateHotspots() {
void Scene45::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (!_vm->isSoundPlaying(0x1094A))
_vm->playSound(0x1094A, true);
@@ -2159,25 +2166,25 @@ void Scene45::run() {
gameSys.setAnimation(0x9E, 1, 0);
gnap._actionStatus = 1;
gameSys.insertSequence(gnap._sequenceId, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
- _vm->_plat->initPos(4, 8, kDirNone);
+ plat.initPos(4, 8, kDirNone);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 46) {
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-1, 9, kDirUpLeft);
+ plat.initPos(-1, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 41) {
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(11, 9, kDirUpLeft);
+ plat.initPos(11, 9, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
gnap.walkTo(Common::Point(10, 9), -1, 0x107BA, 1);
} else {
gnap.initPos(2, 11, kDirUpRight);
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(4, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
}
@@ -2220,8 +2227,8 @@ void Scene45::run() {
gnap._sequenceDatNum = 1;
}
- _vm->_plat->playSequence(0x9A);
- gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
+ plat.playSequence(0x9A);
+ gameSys.setAnimation(plat._sequenceId, plat._id, 1);
while (!_vm->_sceneDone) {
if (!_vm->isSoundPlaying(0x1094A))
@@ -2270,23 +2277,23 @@ void Scene45::run() {
case kHS45Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
- _vm->_plat->playSequence(0x9A);
- gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
+ plat.playSequence(0x9A);
+ gameSys.setAnimation(plat._sequenceId, plat._id, 1);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -2307,7 +2314,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, gnap._pos.y), 0, 0x107AF, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitShoe].x, plat._pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 46;
}
break;
@@ -2317,7 +2324,7 @@ void Scene45::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, gnap._pos.y), 0, 0x107AB, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS45ExitRight].x, plat._pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 41;
}
break;
@@ -2393,6 +2400,7 @@ void Scene45::run() {
void Scene45::updateAnimations() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
if (gameSys.getAnimationStatus(0) == 2) {
gameSys.setAnimation(0, 0, 0);
@@ -2418,10 +2426,10 @@ void Scene45::updateAnimations() {
if (gameSys.getAnimationStatus(1) == 2) {
gameSys.setAnimation(0, 0, 1);
if (_vm->getRandom(2) != 0)
- _vm->_plat->playSequence(0x9B);
+ plat.playSequence(0x9B);
else
- _vm->_plat->playSequence(0x9C);
- gameSys.setAnimation(_vm->_plat->_sequenceId, _vm->_plat->_id, 1);
+ plat.playSequence(0x9C);
+ gameSys.setAnimation(plat._sequenceId, plat._id, 1);
}
if (gameSys.getAnimationStatus(2) == 2) {
@@ -2501,6 +2509,7 @@ void Scene46::updateHotspots() {
void Scene46::run() {
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
+ PlayerPlat& plat = *_vm->_plat;
_vm->queueInsertDeviceIcon();
gameSys.insertSequence(0x4D, 0, 0, 0, kSeqLoop, 0, 0, 0);
@@ -2529,21 +2538,21 @@ void Scene46::run() {
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 44) {
gnap.initPos(-1, 8, kDirUpRight);
- _vm->_plat->initPos(-1, 8, kDirUpLeft);
+ plat.initPos(-1, 8, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
} else if (_vm->_prevSceneNum == 45) {
gnap.initPos(11, 8, kDirUpRight);
- _vm->_plat->initPos(12, 8, kDirUpLeft);
+ plat.initPos(12, 8, kDirUpLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
- _vm->_plat->walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
+ plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
} else {
gnap.initPos(5, 11, kDirUpRight);
- _vm->_plat->initPos(6, 11, kDirUpLeft);
+ plat.initPos(6, 11, kDirUpLeft);
_vm->endSceneInit();
- _vm->_plat->walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
+ plat.walkTo(Common::Point(5, 8), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(6, 8), -1, 0x107BA, 1);
}
@@ -2597,21 +2606,21 @@ void Scene46::run() {
case kHS46Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
- _vm->_plat->playSequence(_vm->_plat->getSequenceId());
+ gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(_vm->_plat->_pos.x, _vm->_plat->_pos.y);
+ gnap.playImpossible(plat._pos.x, plat._pos.y);
break;
}
}
@@ -2671,7 +2680,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, gnap._pos.y), 0, 0x107AF, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, _vm->_plat->_pos.y), -1, 0x107CF, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitKissinBooth].x, plat._pos.y), -1, 0x107CF, 1);
_vm->_newSceneNum = 44;
break;
@@ -2679,7 +2688,7 @@ void Scene46::run() {
_vm->_isLeavingScene = true;
gnap.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, gnap._pos.y), 0, 0x107AB, 1);
gnap._actionStatus = 0;
- _vm->_plat->walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, _vm->_plat->_pos.y), -1, 0x107CD, 1);
+ plat.walkTo(Common::Point(_vm->_hotspotsWalkPos[kHS46ExitDisco].x, plat._pos.y), -1, 0x107CD, 1);
_vm->_newSceneNum = 45;
break;
@@ -2704,13 +2713,13 @@ void Scene46::run() {
_vm->toyUfoCheckTimer();
if (!_vm->_isLeavingScene) {
- if (_vm->_plat->_actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
- _vm->_plat->updateIdleSequence();
+ if (plat._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
+ plat.updateIdleSequence();
if (gnap._actionStatus < 0 && !_vm->isFlag(kGFGnapControlsToyUFO))
gnap.updateIdleSequence();
if (!_vm->_timers[4]) {
_vm->_timers[4] = _vm->getRandom(50) + 80;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextItchyGuySequenceId == -1) {
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextItchyGuySequenceId == -1) {
if (_vm->getRandom(2) != 0)
_nextItchyGuySequenceId = 0x49;
else
@@ -2719,7 +2728,7 @@ void Scene46::run() {
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(50) + 80;
- if (gnap._actionStatus < 0 && _vm->_plat->_actionStatus < 0 && _nextSackGuySequenceId == -1)
+ if (gnap._actionStatus < 0 && plat._actionStatus < 0 && _nextSackGuySequenceId == -1)
_nextSackGuySequenceId = 0x4C;
}
}
Commit: b605baef85cab9d562d541a4b14e8fbf564a8267
https://github.com/scummvm/scummvm/commit/b605baef85cab9d562d541a4b14e8fbf564a8267
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:55+02:00
Commit Message:
GNAP: Reorder functions in grid.cpp
Changed paths:
engines/gnap/grid.cpp
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index b817b65..076705c 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -38,26 +38,6 @@ void GnapEngine::initSceneGrid(int gridMinX, int gridMinY, int gridMaxX, int gri
_plat->_gridY = 347 - gridMinY;
}
-int PlayerGnap::getWalkStopSequenceId(int deltaX, int deltaY) {
- static const int gnapWalkStopSequenceIds[9] = {
- 0x7BC, 0x7BA, 0x7BA,
- 0x7BC, 0x000, 0x7BA,
- 0x7BB, 0x7B9, 0x7B9
- };
- // CHECKME This is a little weird
- return gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
-}
-
-Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
- static const Facing gnapWalkFacings[9] = {
- kDirUpLeft, kDirBottomLeft, kDirBottomLeft,
- kDirUpLeft, kDirNone, kDirBottomLeft,
- kDirUpRight, kDirBottomRight, kDirBottomRight
- };
- // CHECKME This is a little weird
- return gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
-}
-
bool GnapEngine::isPointBlocked(Common::Point gridPos) {
return isPointBlocked(gridPos.x, gridPos.y);
}
@@ -85,6 +65,26 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
/******************************************************************************/
+int PlayerGnap::getWalkStopSequenceId(int deltaX, int deltaY) {
+ static const int gnapWalkStopSequenceIds[9] = {
+ 0x7BC, 0x7BA, 0x7BA,
+ 0x7BC, 0x000, 0x7BA,
+ 0x7BB, 0x7B9, 0x7B9
+ };
+ // CHECKME This is a little weird
+ return gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+}
+
+Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
+ static const Facing gnapWalkFacings[9] = {
+ kDirUpLeft, kDirBottomLeft, kDirBottomLeft,
+ kDirUpLeft, kDirNone, kDirBottomLeft,
+ kDirUpRight, kDirBottomRight, kDirBottomRight
+ };
+ // CHECKME This is a little weird
+ return gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
+}
+
bool PlayerGnap::findPath1(int gridX, int gridY, int index) {
_walkNodesCount = index;
_walkDirXIncr = 0;
Commit: a67a9923a928965feb33e86b2c9cb0f18af25ae5
https://github.com/scummvm/scummvm/commit/a67a9923a928965feb33e86b2c9cb0f18af25ae5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:56+02:00
Commit Message:
GNAP: Refactoring of playBrainPulsating, playIdle and playImpossible
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group2.h
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 0946913..32f3946 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1057,8 +1057,8 @@ void PlayerGnap::actionIdle(int sequenceId) {
}
}
-void PlayerGnap::playImpossible(int gridX, int gridY) {
- playSequence(getSequenceId(gskImpossible, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playImpossible(Common::Point gridPos) {
+ playSequence(getSequenceId(gskImpossible, gridPos) | 0x10000);
}
void PlayerGnap::playScratchingHead(int gridX, int gridY) {
@@ -1073,8 +1073,8 @@ void PlayerGnap::playMoan2(int gridX, int gridY) {
playSequence(getSequenceId(gskMoan2, Common::Point(gridX, gridY)) | 0x10000);
}
-void PlayerGnap::playBrainPulsating(int gridX, int gridY) {
- playSequence(getSequenceId(gskBrainPulsating, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playBrainPulsating(Common::Point gridPos) {
+ playSequence(getSequenceId(gskBrainPulsating, gridPos) | 0x10000);
}
void PlayerGnap::playPullOutDevice(int gridX, int gridY) {
@@ -1089,8 +1089,8 @@ void PlayerGnap::playUseDevice(int gridX, int gridY) {
playSequence(getSequenceId(gskUseDevice, Common::Point(gridX, gridY)) | 0x10000);
}
-void PlayerGnap::playIdle(int gridX, int gridY) {
- playSequence(getSequenceId(gskIdle, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playIdle(Common::Point gridPos) {
+ playSequence(getSequenceId(gskIdle, gridPos) | 0x10000);
}
void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index f1fc0ec..a1fb6cf 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -96,9 +96,9 @@ public:
void idle();
void initBrainPulseRndValue();
void kissPlatypus(int callback);
- void playBrainPulsating(int gridX, int gridY);
- void playIdle(int gridX, int gridY);
- void playImpossible(int gridX, int gridY);
+ void playBrainPulsating(Common::Point gridPos = Common::Point(0, 0));
+ void playIdle(Common::Point gridPos = Common::Point(0, 0));
+ void playImpossible(Common::Point gridPos = Common::Point(0, 0));
void playMoan1(int gridX, int gridY);
void playMoan2(int gridX, int gridY);
void playPullOutDevice(int gridX, int gridY);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 972bbfa..b282751 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -128,7 +128,7 @@ void Scene01::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -141,11 +141,11 @@ void Scene01::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -166,7 +166,7 @@ void Scene01::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -188,7 +188,7 @@ void Scene01::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -217,7 +217,7 @@ void Scene01::run() {
gnap._actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -481,7 +481,7 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -494,11 +494,11 @@ void Scene02::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -532,7 +532,7 @@ void Scene02::run() {
gnap._actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -579,7 +579,7 @@ void Scene02::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -602,7 +602,7 @@ void Scene02::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -949,7 +949,7 @@ void Scene03::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -962,11 +962,11 @@ void Scene03::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -993,7 +993,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1019,7 +1019,7 @@ void Scene03::run() {
case kHS03Creek:
if (gnap._actionStatus == -1) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1035,7 +1035,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1067,7 +1067,7 @@ void Scene03::run() {
break;
case TALK_CURSOR:
if (_platypusHypnotized) {
- gnap.playBrainPulsating(8, 4);
+ gnap.playBrainPulsating(Common::Point(8, 4));
} else {
gnap._idleFacing = kDirBottomRight;
gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
@@ -1078,7 +1078,7 @@ void Scene03::run() {
}
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1206,7 +1206,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizePlat:
- gnap.playBrainPulsating(0, 0);
+ gnap.playBrainPulsating();
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
@@ -1222,7 +1222,7 @@ void Scene03::updateAnimations() {
updateHotspots();
break;
case kAS03HypnotizeScaredPlat:
- gnap.playBrainPulsating(0, 0);
+ gnap.playBrainPulsating();
gameSys.insertSequence(0x1BF, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
while (gameSys.getAnimationStatus(1) != 2)
@@ -1457,7 +1457,7 @@ void Scene04::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1473,11 +1473,11 @@ void Scene04::run() {
gnap.playMoan1(plat._pos.x, plat._pos.y);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1501,7 +1501,7 @@ void Scene04::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1526,7 +1526,7 @@ void Scene04::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1553,12 +1553,12 @@ void Scene04::run() {
case TALK_CURSOR:
gnap._idleFacing = kDirBottomRight;
if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
- gnap.playBrainPulsating(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ gnap.playBrainPulsating(_vm->_hotspotsWalkPos[2]);
_nextDogSequenceId = 0x20E;
}
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1589,7 +1589,7 @@ void Scene04::run() {
}
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1615,7 +1615,7 @@ void Scene04::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1633,7 +1633,7 @@ void Scene04::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1935,7 +1935,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1948,11 +1948,11 @@ void Scene05::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1964,7 +1964,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1972,7 +1972,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFPlatypus)) {
@@ -1983,7 +1983,7 @@ void Scene05::run() {
}
if (gnap._pos.x == 4 && (gnap._pos.y == 8 || gnap._pos.y == 7))
gnap.walkStep();
- gnap.playIdle(plat._pos.x, plat._pos.y);
+ gnap.playIdle(plat._pos);
}
break;
}
@@ -2016,7 +2016,7 @@ void Scene05::run() {
gnap._actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2039,7 +2039,7 @@ void Scene05::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2075,7 +2075,7 @@ void Scene05::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2364,7 +2364,7 @@ void Scene06::run() {
if (_vm->_grabCursorSpriteIndex == kItemDisguise) {
gnap.useDisguiseOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2377,11 +2377,11 @@ void Scene06::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2399,7 +2399,7 @@ void Scene06::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk04)) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else if (triedDeviceOnGas) {
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, 0x107BC, 1);
@@ -2413,7 +2413,7 @@ void Scene06::run() {
case TALK_CURSOR:
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk04))
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
else
gnap.playScratchingHead(5, 0);
break;
@@ -2433,7 +2433,7 @@ void Scene06::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFGasTaken))
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
else {
gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, 0x107BB, 1);
gnap._actionStatus = kAS06TryToClimbLadder;
@@ -2442,7 +2442,7 @@ void Scene06::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2480,7 +2480,7 @@ void Scene06::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2752,7 +2752,7 @@ void Scene07::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -2791,7 +2791,7 @@ void Scene07::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3012,7 +3012,7 @@ void Scene08::run() {
case kH08SPlatypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3026,7 +3026,7 @@ void Scene08::run() {
gnap.kissPlatypus(8);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -3065,7 +3065,7 @@ void Scene08::run() {
gnap._idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -3079,7 +3079,7 @@ void Scene08::run() {
plat.walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
plat._actionStatus = kAS08PlatWithMan;
plat._idleFacing = kDirNone;
- gnap.playIdle(6, 6);
+ gnap.playIdle(Common::Point(6, 6));
break;
}
}
@@ -3115,7 +3115,7 @@ void Scene08::run() {
plat.walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
plat._actionStatus = kAS08PlatWithDog;
plat._idleFacing = kDirNone;
- gnap.playIdle(3, 7);
+ gnap.playIdle(Common::Point(3, 7));
break;
}
}
@@ -3141,7 +3141,7 @@ void Scene08::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3167,7 +3167,7 @@ void Scene08::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3193,7 +3193,7 @@ void Scene08::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3459,7 +3459,7 @@ void Scene09::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -3499,7 +3499,7 @@ void Scene09::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index a4e4e9f..db244f2 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -109,7 +109,7 @@ void Scene10::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS10Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -122,7 +122,7 @@ void Scene10::run() {
gnap.kissPlatypus(10);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -160,7 +160,7 @@ void Scene10::run() {
gnap.playScratchingHead(6, 0);
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
gnap._idleFacing = kDirBottomRight;
break;
case TALK_CURSOR:
@@ -201,7 +201,7 @@ void Scene10::run() {
}
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
@@ -232,7 +232,7 @@ void Scene10::run() {
gnap._actionStatus = kAS10AnnoyCook;
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
@@ -246,7 +246,7 @@ void Scene10::run() {
plat._actionStatus = kAS10PlatWithBox;
plat._idleFacing = kDirUnk4;
_vm->_largeSprite = gameSys.createSurface(0xC3);
- gnap.playIdle(7, 6);
+ gnap.playIdle(Common::Point(7, 6));
}
break;
}
@@ -274,7 +274,7 @@ void Scene10::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -607,7 +607,7 @@ void Scene11::run() {
switch (_vm->_sceneClickedHotspot) {
case kHS11Platypus:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -617,7 +617,7 @@ void Scene11::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -665,7 +665,7 @@ void Scene11::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -699,7 +699,7 @@ void Scene11::run() {
gnap._actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -709,7 +709,7 @@ void Scene11::run() {
case kHS11Billard:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(9, 8);
+ gnap.playImpossible(Common::Point(9, 8));
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -721,7 +721,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(9, 8);
+ gnap.playImpossible(Common::Point(9, 8));
break;
}
}
@@ -1040,7 +1040,7 @@ void Scene12::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -1093,7 +1093,7 @@ void Scene12::run() {
plat.walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
plat._actionStatus = kAS12PlatWithToothGuy;
plat._idleFacing = kDirUnk4;
- gnap.playIdle(2, 7);
+ gnap.playIdle(Common::Point(2, 7));
break;
}
}
@@ -1118,7 +1118,7 @@ void Scene12::run() {
gnap._actionStatus = kAS12LookBarkeeper;
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1163,7 +1163,7 @@ void Scene12::run() {
plat.walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
plat._actionStatus = kAS12PlatWithBeardGuy;
plat._idleFacing = kDirNone;
- gnap.playIdle(7, 6);
+ gnap.playIdle(Common::Point(7, 6));
break;
}
}
@@ -1421,7 +1421,7 @@ void Scene12::updateAnimations() {
if (gameSys.getAnimationStatus(3) == 2) {
if (gnap._actionStatus == kAS12PlatWithBarkeeper && _currBarkeeperSequenceId == 0x1F9) {
gnap._actionStatus = -1;
- gnap.playIdle(7, 6);
+ gnap.playIdle(Common::Point(7, 6));
_vm->_timers[5] = 0;
}
if (_nextBarkeeperSequenceId != -1) {
@@ -1553,7 +1553,7 @@ void Scene13::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
@@ -1599,7 +1599,7 @@ void Scene13::run() {
}
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1640,7 +1640,7 @@ void Scene13::run() {
gnap.walkTo(Common::Point(7, 7), -1, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)), 1);
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1662,7 +1662,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1670,7 +1670,7 @@ void Scene13::run() {
case kHS13Sink:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1684,7 +1684,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2580,11 +2580,11 @@ void Scene17::run() {
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2594,7 +2594,7 @@ void Scene17::run() {
case kHS17Wrench:
if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFGrassTaken)) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
} else {
@@ -2604,7 +2604,7 @@ void Scene17::run() {
gnap.playScratchingHead(8, 7);
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_canTryGetWrench) {
@@ -2615,7 +2615,7 @@ void Scene17::run() {
gnap._actionStatus = kAS17TryGetWrench;
_vm->_timers[5] = _vm->getRandom(30) + 80;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2640,10 +2640,10 @@ void Scene17::run() {
gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
gnap._actionStatus = kAS17GetCoinFromPhone;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2656,7 +2656,7 @@ void Scene17::run() {
plat._actionStatus = kAS17PlatUsePhone;
gnap._actionStatus = kAS17PlatUsePhone;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2684,10 +2684,10 @@ void Scene17::run() {
gnap._actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2700,7 +2700,7 @@ void Scene17::run() {
plat._actionStatus = kAS17PlatUsePhone;
gnap._actionStatus = kAS17PlatUsePhone;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3492,11 +3492,11 @@ void Scene18::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3524,7 +3524,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3537,7 +3537,7 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex >= 0)
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(true);
@@ -3568,7 +3568,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3601,14 +3601,14 @@ void Scene18::run() {
} else {
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
}
break;
case TALK_CURSOR:
case PLAT_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3630,11 +3630,11 @@ void Scene18::run() {
_vm->_hotspots[kHS18WalkArea2]._flags &= ~SF_WALKABLE;
gnap._actionStatus = kAS18CloseTopValve;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3646,7 +3646,7 @@ void Scene18::run() {
if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex == -1) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
}
@@ -3679,7 +3679,7 @@ void Scene18::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3694,7 +3694,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->isFlag(kGFPictureTaken)) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 19;
@@ -4191,7 +4191,7 @@ void Scene19::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -4201,11 +4201,11 @@ void Scene19::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -4244,7 +4244,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -4267,7 +4267,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -4283,7 +4283,7 @@ void Scene19::run() {
case kHS19Toy7:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap.playImpossible(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -4291,12 +4291,12 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- gnap.playIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap.playIdle(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]);
gnap._actionStatus = kAS19GrabToy;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -4314,12 +4314,12 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
- gnap.playIdle(8, 2);
+ gnap.playIdle(Common::Point(8, 2));
gnap._actionStatus = kAS19UsePhone;
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -4463,7 +4463,7 @@ void Scene19::updateAnimations() {
while (_vm->_timers[5]) {
_vm->gameUpdateTick();
}
- gnap.playIdle(6, 2);
+ gnap.playIdle(Common::Point(6, 2));
gnap._actionStatus = -1;
break;
case 0x67:
@@ -4474,7 +4474,7 @@ void Scene19::updateAnimations() {
gnap._actionStatus = -1;
break;
case 0x65:
- gnap.playIdle(6, 2);
+ gnap.playIdle(Common::Point(6, 2));
gameSys.setAnimation(_nextShopAssistantSequenceId, 20, 0);
gameSys.insertSequence(_nextShopAssistantSequenceId, 20, _currShopAssistantSequenceId, 20, kSeqSyncWait, 0, 0, 0);
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index f3a677a..33322cc 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -278,7 +278,7 @@ void Scene20::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -288,11 +288,11 @@ void Scene20::run() {
gnap.kissPlatypus(20);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -378,7 +378,7 @@ void Scene20::run() {
if (_stonerGuyShowingJoint)
gnap._actionStatus = kAS20GrabJoint;
else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -389,7 +389,7 @@ void Scene20::run() {
gnap._actionStatus = kAS20TalkStonerGuyHasJoint;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -417,7 +417,7 @@ void Scene20::run() {
gnap._actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -445,7 +445,7 @@ void Scene20::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -799,7 +799,7 @@ void Scene21::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -809,11 +809,11 @@ void Scene21::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -869,7 +869,7 @@ void Scene21::run() {
gnap._actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1118,7 +1118,7 @@ void Scene22::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1128,11 +1128,11 @@ void Scene22::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1169,7 +1169,7 @@ void Scene22::run() {
gnap.playScratchingHead(8, 4);
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1344,7 +1344,7 @@ void Scene23::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1354,11 +1354,11 @@ void Scene23::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1381,7 +1381,7 @@ void Scene23::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
else {
gnap._idleFacing = kDirBottomRight;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
@@ -1392,7 +1392,7 @@ void Scene23::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1615,7 +1615,7 @@ void Scene24::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1625,11 +1625,11 @@ void Scene24::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1864,7 +1864,7 @@ void Scene25::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1874,11 +1874,11 @@ void Scene25::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1908,7 +1908,7 @@ void Scene25::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1950,7 +1950,7 @@ void Scene25::run() {
case kHS25Posters4:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1961,7 +1961,7 @@ void Scene25::run() {
gnap._idleFacing = kDirBottomRight;
else
gnap._idleFacing = kDirUpRight;
- gnap.playIdle(0, 0);
+ gnap.playIdle();
playAnims(8 - _vm->_sceneClickedHotspot + 1);
break;
case GRAB_CURSOR:
@@ -2063,7 +2063,7 @@ void Scene25::updateAnimations() {
_currTicketVendorSequenceId = _nextTicketVendorSequenceId;
_nextTicketVendorSequenceId = -1;
_vm->_hotspots[kHS25WalkArea1]._flags |= SF_WALKABLE;
- gnap.playIdle(0, 0);
+ gnap.playIdle();
gnap.walkTo(_vm->_hotspotsWalkPos[3], -1, 0x107BB, 1);
_vm->_hotspots[kHS25WalkArea1]._flags &= ~SF_WALKABLE;
gnap._actionStatus = kAS25EnterCircusWihoutTicketDone;
@@ -2183,7 +2183,7 @@ void Scene26::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2193,11 +2193,11 @@ void Scene26::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2420,7 +2420,7 @@ void Scene27::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2430,11 +2430,11 @@ void Scene27::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2461,7 +2461,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2484,7 +2484,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2794,7 +2794,7 @@ void Scene28::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2804,11 +2804,11 @@ void Scene28::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2841,7 +2841,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2854,7 +2854,7 @@ void Scene28::run() {
if (_vm->_verbCursor == LOOK_CURSOR)
gnap.playScratchingHead(5, 2);
else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
@@ -2881,7 +2881,7 @@ void Scene28::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2905,7 +2905,7 @@ void Scene28::run() {
if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowItem(_vm->_grabCursorSpriteIndex, 8, 6);
} else if (_vm->isFlag(kGFUnk21)) {
- gnap.playImpossible(8, 6);
+ gnap.playImpossible(Common::Point(8, 6));
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2917,7 +2917,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3117,7 +3117,7 @@ void Scene29::updateHotspots() {
_vm->setHotspot(kHS29Monkey, 410, 374, 518, 516, SF_WALKABLE | SF_DISABLED, 3, 7);
_vm->setHotspot(kHS29ExitCircus, 150, 585, 650, 600, SF_EXIT_D_CURSOR | SF_WALKABLE, 5, 9);
_vm->setHotspot(kHS29ExitOutsideClown, 785, 0, 800, 600, SF_EXIT_R_CURSOR | SF_WALKABLE, 11, 9);
- _vm->setHotspot(kHS29Aracde, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
+ _vm->setHotspot(kHS29Arcade, 88, 293, 155, 384, SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR, 3, 8);
_vm->setHotspot(kHS29WalkArea1, 0, 0, 800, 478);
_vm->setDeviceHotspot(kHS29Device, -1, -1, -1, -1);
if (_vm->invHas(kItemHorn))
@@ -3188,7 +3188,7 @@ void Scene29::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3198,11 +3198,11 @@ void Scene29::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3226,11 +3226,11 @@ void Scene29::run() {
gnap.playScratchingHead(5, 6);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y);
+ gnap.playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey]);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -3257,17 +3257,17 @@ void Scene29::run() {
}
break;
- case kHS29Aracde:
+ case kHS29Arcade:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
_vm->setGrabCursorSprite(-1);
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 52;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Aracde], 0, -1, 1);
- gnap.playIdle(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Arcade], 0, -1, 1);
+ gnap.playIdle(_vm->_hotspotsWalkPos[kHS29Arcade]);
gnap._actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Aracde].x, _vm->_hotspotsWalkPos[kHS29Aracde].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Arcade].x, _vm->_hotspotsWalkPos[kHS29Arcade].y, 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3276,7 +3276,7 @@ void Scene29::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
diff --git a/engines/gnap/scenes/group2.h b/engines/gnap/scenes/group2.h
index 3b74d85..da4ff70 100644
--- a/engines/gnap/scenes/group2.h
+++ b/engines/gnap/scenes/group2.h
@@ -136,7 +136,7 @@ enum {
kHS29Device = 2,
kHS29ExitCircus = 3,
kHS29ExitOutsideClown = 4,
- kHS29Aracde = 5,
+ kHS29Arcade = 5,
kHS29WalkArea1 = 6
};
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index a740d21..c650ec7 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -93,7 +93,7 @@ void Scene30::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -103,11 +103,11 @@ void Scene30::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -135,7 +135,7 @@ void Scene30::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(8, 5);
+ gnap.playImpossible(Common::Point(8, 5));
break;
}
}
@@ -351,7 +351,7 @@ void Scene31::run() {
if (_vm->_grabCursorSpriteIndex == kItemJoint) {
gnap.useJointOnPlatypus();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -361,11 +361,11 @@ void Scene31::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -378,7 +378,7 @@ void Scene31::run() {
if (_vm->_verbCursor == LOOK_CURSOR)
gnap.playScratchingHead(2, 2);
else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
} else {
@@ -395,7 +395,7 @@ void Scene31::run() {
_vm->_timers[4] = 300;
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
if (!_vm->invHas(kItemBucketWithBeer)) {
@@ -408,7 +408,7 @@ void Scene31::run() {
gnap._actionStatus = kAS31PlatMeasuringClown;
_vm->_timers[4] = 300;
} else
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -445,7 +445,7 @@ void Scene31::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -704,7 +704,7 @@ void Scene32::run() {
case kHS32Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -714,11 +714,11 @@ void Scene32::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -882,7 +882,7 @@ void Scene33::run() {
case kHS33Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -892,11 +892,11 @@ void Scene33::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -923,7 +923,7 @@ void Scene33::run() {
break;
case LOOK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1166,7 +1166,7 @@ void Scene38::run() {
if (gnap._actionStatus == kAS38HoldingHuntingTrophy) {
gnap._actionStatus = kAS38ReleaseHuntingTrophy;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1176,11 +1176,11 @@ void Scene38::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -1232,7 +1232,7 @@ void Scene38::run() {
break;
case GRAB_CURSOR:
if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
else {
gnap.walkTo(Common::Point(3, 6), 0, 0x107BB, 1);
plat.walkTo(Common::Point(4, 8), -1, -1, 1);
@@ -1240,10 +1240,10 @@ void Scene38::run() {
}
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(2, 0);
+ gnap.playBrainPulsating(Common::Point(2, 0));
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1476,7 +1476,7 @@ void Scene39::run() {
case kHS39Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1486,11 +1486,11 @@ void Scene39::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -1510,18 +1510,18 @@ void Scene39::run() {
case kHS39Sign:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[kHS39Sign], 0, -1, 1);
- gnap.playIdle(_vm->_hotspotsWalkPos[kHS39Sign].x, _vm->_hotspotsWalkPos[kHS39Sign].y);
+ gnap.playIdle(_vm->_hotspotsWalkPos[kHS39Sign]);
_vm->showFullScreenSprite(0x1C);
break;
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 3cbfe4d..4f07279 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -79,7 +79,7 @@ void Scene40::run() {
case kHS40Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -89,11 +89,11 @@ void Scene40::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -357,7 +357,7 @@ void Scene41::run() {
case kHS41Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -367,11 +367,11 @@ void Scene41::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -414,7 +414,7 @@ void Scene41::run() {
gnap.playMoan1(5, 0);
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -422,7 +422,7 @@ void Scene41::run() {
gnap._actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -450,7 +450,7 @@ void Scene41::run() {
gnap.walkTo(Common::Point(7, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -872,7 +872,7 @@ void Scene42::run() {
case kHS42Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -882,11 +882,11 @@ void Scene42::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -937,7 +937,7 @@ void Scene42::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -957,7 +957,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1333,7 +1333,7 @@ void Scene43::run() {
case kHS43Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1343,11 +1343,11 @@ void Scene43::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -1393,7 +1393,7 @@ void Scene43::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1415,7 +1415,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1784,7 +1784,7 @@ void Scene44::run() {
case kHS44Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1794,11 +1794,11 @@ void Scene44::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -1838,7 +1838,7 @@ void Scene44::run() {
gnap.playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -1850,7 +1850,7 @@ void Scene44::run() {
plat.walkTo(Common::Point(6, 7), 1, 0x107D2, 1);
if (gnap._pos == Common::Point(7, 7))
gnap.walkStep();
- gnap.playIdle(5, 7);
+ gnap.playIdle(Common::Point(5, 7));
plat._actionStatus = 4;
break;
}
@@ -1874,10 +1874,10 @@ void Scene44::run() {
updateHotspots();
break;
case TALK_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -1900,7 +1900,7 @@ void Scene44::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2277,7 +2277,7 @@ void Scene45::run() {
case kHS45Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2289,11 +2289,11 @@ void Scene45::run() {
gameSys.setAnimation(plat._sequenceId, plat._id, 1);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -2353,7 +2353,7 @@ void Scene45::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2606,7 +2606,7 @@ void Scene46::run() {
case kHS46Platypus:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2616,11 +2616,11 @@ void Scene46::run() {
gnap.kissPlatypus(0);
break;
case TALK_CURSOR:
- gnap.playBrainPulsating(plat._pos.x, plat._pos.y);
+ gnap.playBrainPulsating(plat._pos);
plat.playSequence(plat.getSequenceId());
break;
case PLAT_CURSOR:
- gnap.playImpossible(plat._pos.x, plat._pos.y);
+ gnap.playImpossible(plat._pos);
break;
}
}
@@ -2642,7 +2642,7 @@ void Scene46::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
@@ -2663,7 +2663,7 @@ void Scene46::run() {
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
- gnap.playImpossible(0, 0);
+ gnap.playImpossible();
break;
}
}
Commit: cf32e654a712915ee9d40c6595e0f30911833479
https://github.com/scummvm/scummvm/commit/cf32e654a712915ee9d40c6595e0f30911833479
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:56+02:00
Commit Message:
GNAP: Refactoring of playMoan1&2, playPullOutDevice and playPullOutDeviceNonWorking
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 32f3946..c8ad186 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1065,24 +1065,24 @@ void PlayerGnap::playScratchingHead(int gridX, int gridY) {
playSequence(getSequenceId(gskScratchingHead, Common::Point(gridX, gridY)) | 0x10000);
}
-void PlayerGnap::playMoan1(int gridX, int gridY) {
- playSequence(getSequenceId(gskMoan1, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playMoan1(Common::Point gridPos) {
+ playSequence(getSequenceId(gskMoan1, gridPos) | 0x10000);
}
-void PlayerGnap::playMoan2(int gridX, int gridY) {
- playSequence(getSequenceId(gskMoan2, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playMoan2(Common::Point gridPos) {
+ playSequence(getSequenceId(gskMoan2, gridPos) | 0x10000);
}
void PlayerGnap::playBrainPulsating(Common::Point gridPos) {
playSequence(getSequenceId(gskBrainPulsating, gridPos) | 0x10000);
}
-void PlayerGnap::playPullOutDevice(int gridX, int gridY) {
- playSequence(getSequenceId(gskPullOutDevice, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playPullOutDevice(Common::Point gridPos) {
+ playSequence(getSequenceId(gskPullOutDevice, gridPos) | 0x10000);
}
-void PlayerGnap::playPullOutDeviceNonWorking(int gridX, int gridY) {
- playSequence(getSequenceId(gskPullOutDeviceNonWorking, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playPullOutDeviceNonWorking(Common::Point gridPos) {
+ playSequence(getSequenceId(gskPullOutDeviceNonWorking, gridPos) | 0x10000);
}
void PlayerGnap::playUseDevice(int gridX, int gridY) {
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index a1fb6cf..4494aa8 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -99,10 +99,10 @@ public:
void playBrainPulsating(Common::Point gridPos = Common::Point(0, 0));
void playIdle(Common::Point gridPos = Common::Point(0, 0));
void playImpossible(Common::Point gridPos = Common::Point(0, 0));
- void playMoan1(int gridX, int gridY);
- void playMoan2(int gridX, int gridY);
- void playPullOutDevice(int gridX, int gridY);
- void playPullOutDeviceNonWorking(int gridX, int gridY);
+ void playMoan1(Common::Point gridPos = Common::Point(0, 0));
+ void playMoan2(Common::Point gridPos = Common::Point(0, 0));
+ void playPullOutDevice(Common::Point gridPos = Common::Point(0, 0));
+ void playPullOutDeviceNonWorking(Common::Point gridPos = Common::Point(0, 0));
void playScratchingHead(int gridX, int gridY);
void playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
void playShowItem(int itemIndex, int gridLookX, int gridLookY);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index b282751..a0bdba2 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -133,7 +133,7 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -315,7 +315,7 @@ void Scene01::updateAnimations() {
break;
case kAS01TakeMud:
- gnap.playPullOutDevice(2, 3);
+ gnap.playPullOutDevice(Common::Point(2, 3));
gnap.playUseDevice(0, 0);
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
@@ -330,7 +330,7 @@ void Scene01::updateAnimations() {
break;
case kAS01UsePigs:
- gnap.playPullOutDevice(7, 2);
+ gnap.playPullOutDevice(Common::Point(7, 2));
gnap.playUseDevice(0, 0);
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
gnap._actionStatus = -1;
@@ -486,7 +486,7 @@ void Scene02::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -517,7 +517,7 @@ void Scene02::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(9, 8);
+ gnap.playMoan2(Common::Point(9, 8));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
@@ -593,7 +593,7 @@ void Scene02::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(2, 4);
+ gnap.playMoan2(Common::Point(2, 4));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -954,7 +954,7 @@ void Scene03::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -985,7 +985,7 @@ void Scene03::run() {
gnap.playScratchingHead(9, 6);
break;
case GRAB_CURSOR:
- gnap.playPullOutDevice(9, 6);
+ gnap.playPullOutDevice(Common::Point(9, 6));
gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1B3, 253, 5);
@@ -1023,7 +1023,7 @@ void Scene03::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(2, 8);
+ gnap.playMoan2(Common::Point(2, 8));
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
@@ -1462,7 +1462,7 @@ void Scene04::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -1470,7 +1470,7 @@ void Scene04::run() {
if (_vm->_cursorValue == 4)
gnap.kissPlatypus(0);
else
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case TALK_CURSOR:
gnap.playBrainPulsating(plat._pos);
@@ -1494,7 +1494,7 @@ void Scene04::run() {
gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
break;
case GRAB_CURSOR:
- gnap.playPullOutDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDevice(_vm->_hotspotsWalkPos[1]);
gnap.playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1FD, 100, 2);
@@ -1515,7 +1515,7 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[3]);
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1541,7 +1541,7 @@ void Scene04::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (gnap.walkTo(gnap._pos, 0, -1, 1)) {
- gnap.playMoan2(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[2]);
_nextDogSequenceId = 0x20F;
}
break;
@@ -1940,7 +1940,7 @@ void Scene05::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -2003,7 +2003,7 @@ void Scene05::run() {
else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(9, 7);
+ gnap.playMoan2(Common::Point(9, 7));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
@@ -2030,7 +2030,7 @@ void Scene05::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(2, 4);
+ gnap.playMoan2(Common::Point(2, 4));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomLeft;
@@ -2369,7 +2369,7 @@ void Scene06::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFKeysTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -2407,7 +2407,7 @@ void Scene06::run() {
gnap._actionStatus = kAS06TryToGetGas;
} else {
triedDeviceOnGas = true;
- gnap.playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playPullOutDeviceNonWorking(_vm->_hotspotsWalkPos[1]);
}
break;
case TALK_CURSOR:
@@ -2746,7 +2746,7 @@ void Scene07::run() {
case kHS07Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2780,7 +2780,7 @@ void Scene07::run() {
_vm->setFlag(kGFPlatypus);
_vm->invAdd(kItemDice);
updateHotspots();
- gnap.playPullOutDevice(3, 3);
+ gnap.playPullOutDevice(Common::Point(3, 3));
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
gameSys.insertSequence(gnap.getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, gnap._id,
@@ -3017,7 +3017,7 @@ void Scene08::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -3134,7 +3134,7 @@ void Scene08::run() {
gnap.playScratchingHead(6, 7);
} else {
gnap.actionIdle(0x14D);
- gnap.playPullOutDevice(6, 7);
+ gnap.playPullOutDevice(Common::Point(6, 7));
gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x149;
}
@@ -3160,7 +3160,7 @@ void Scene08::run() {
gnap.playScratchingHead(3, 6);
} else {
gnap.actionIdle(0x14D);
- gnap.playPullOutDevice(3, 6);
+ gnap.playPullOutDevice(Common::Point(3, 6));
gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14A;
}
@@ -3186,7 +3186,7 @@ void Scene08::run() {
gnap.playScratchingHead(7, 6);
} else {
gnap.actionIdle(0x14D);
- gnap.playPullOutDevice(7, 6);
+ gnap.playPullOutDevice(Common::Point(7, 6));
gnap.playUseDevice(0, 0);
_nextDogSequenceId = 0x14B;
}
@@ -3453,7 +3453,7 @@ void Scene09::run() {
case kHS09Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index db244f2..0560cfd 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -114,7 +114,7 @@ void Scene10::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
else
gnap.playScratchingHead(plat._pos.x, plat._pos.y);
break;
@@ -187,13 +187,13 @@ void Scene10::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan2(-1, -1);
+ gnap.playMoan2(Common::Point(-1, -1));
else
gnap.playScratchingHead(4, 3);
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan2(-1, -1);
+ gnap.playMoan2(Common::Point(-1, -1));
else {
gnap.actionIdle(0x10C);
gnap.walkTo(Common::Point(4, 8), 0, 0x107BB, 1);
@@ -205,7 +205,7 @@ void Scene10::run() {
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan2(-1, -1);
+ gnap.playMoan2(Common::Point(-1, -1));
else {
gnap.actionIdle(0x10C);
gnap.useDeviceOnPlatypus();
@@ -236,7 +236,7 @@ void Scene10::run() {
break;
case PLAT_CURSOR:
if (_vm->isFlag(kGFMudTaken))
- gnap.playMoan2(-1, -1);
+ gnap.playMoan2(Common::Point(-1, -1));
else {
_vm->invAdd(kItemTongs);
_vm->setFlag(kGFMudTaken);
@@ -611,7 +611,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1034,7 +1034,7 @@ void Scene12::run() {
case kHS12Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1126,7 +1126,7 @@ void Scene12::run() {
gnap._actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
- gnap.playPullOutDevice(plat._pos.x, plat._pos.y);
+ gnap.playPullOutDevice(plat._pos);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS12PlatWithBarkeeper;
break;
@@ -1547,7 +1547,7 @@ void Scene13::run() {
case kHS13Platypus:
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2862,7 +2862,7 @@ void Scene17::updateAnimations() {
gnap._actionStatus = kAS17GetWrenchGnapReady;
break;
case kAS17GetCoinFromPhone:
- gnap.playPullOutDevice(1, 3);
+ gnap.playPullOutDevice(Common::Point(1, 3));
gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x250, 100, 0);
gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
@@ -3486,7 +3486,7 @@ void Scene18::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -3881,7 +3881,7 @@ void Scene18::updateAnimations() {
case kAS18OpenTopValve:
_vm->setFlag(kGFBarnPadlockOpen);
updateHotspots();
- gnap.playPullOutDevice(2, 7);
+ gnap.playPullOutDevice(Common::Point(2, 7));
gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
@@ -3979,7 +3979,7 @@ void Scene18::updateAnimations() {
case kAS18OpenRightValveWithGarbageCan:
_vm->setFlag(kGFTruckFilledWithGas);
updateHotspots();
- gnap.playPullOutDevice(2, 7);
+ gnap.playPullOutDevice(Common::Point(2, 7));
gnap.playUseDevice(0, 0);
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
@@ -4195,7 +4195,7 @@ void Scene19::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -4287,7 +4287,7 @@ void Scene19::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y);
+ gnap.playMoan2(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]);
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
@@ -4402,7 +4402,7 @@ void Scene19::updateAnimations() {
}
break;
case kAS19GrabPicture:
- gnap.playPullOutDevice(6, 2);
+ gnap.playPullOutDevice(Common::Point(6, 2));
gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x68, 19, 0);
gameSys.insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 33322cc..e832f35 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -69,7 +69,7 @@ void Scene20::updateAnimationsCb() {
break;
case 0x16A:
// Grab joint
- gnap.playPullOutDevice(4, 4);
+ gnap.playPullOutDevice(Common::Point(4, 4));
gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x16A, 21, 0);
gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
@@ -370,7 +370,7 @@ void Scene20::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(5, 4);
+ gnap.playMoan2(Common::Point(5, 4));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -831,7 +831,7 @@ void Scene21::run() {
break;
case GRAB_CURSOR:
gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
- gnap.playPullOutDevice(2, 5);
+ gnap.playPullOutDevice(Common::Point(2, 5));
gnap.playUseDevice(0, 0);
gnap._actionStatus = kAS21GrabBanana;
break;
@@ -1373,7 +1373,7 @@ void Scene23::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSceneFlag1))
- gnap.playMoan2(0, 0);
+ gnap.playMoan2();
else {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS23LookCereals;
@@ -1890,7 +1890,7 @@ void Scene25::run() {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
gnap._actionStatus = kAS25ShowTicketToVendor;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
@@ -1967,7 +1967,7 @@ void Scene25::run() {
case GRAB_CURSOR:
case TALK_CURSOR:
case PLAT_CURSOR:
- gnap.playMoan2(0, 0);
+ gnap.playMoan2();
break;
}
}
@@ -2187,7 +2187,7 @@ void Scene26::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2424,7 +2424,7 @@ void Scene27::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2613,7 +2613,7 @@ void Scene27::updateAnimations() {
}
break;
case kAS27GrabBucket:
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
@@ -2675,7 +2675,7 @@ void Scene27::updateAnimations() {
break;
case 0xD0:
// Show picture to janitor
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
@@ -2798,7 +2798,7 @@ void Scene28::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2858,13 +2858,13 @@ void Scene28::run() {
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gnap._actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gnap._actionStatus = kAS28UsePillBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2989,7 +2989,7 @@ void Scene28::updateAnimations() {
_nextClownSequenceId = 0x119;
break;
case kAS28GrabHornSuccess:
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x117, 59, 0);
gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
@@ -3011,7 +3011,7 @@ void Scene28::updateAnimations() {
gnap._actionStatus = -1;
break;
case kAS28GrabEmptyBucket:
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gameSys.setAnimation(0x111, 99, 0);
gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
@@ -3192,7 +3192,7 @@ void Scene29::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -3271,7 +3271,7 @@ void Scene29::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan2(0, 0);
+ gnap.playMoan2();
break;
case GRAB_CURSOR:
case TALK_CURSOR:
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index c650ec7..c29e7c1 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -97,7 +97,7 @@ void Scene30::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -355,7 +355,7 @@ void Scene31::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -422,7 +422,7 @@ void Scene31::run() {
gnap.walkTo(gnap._pos, -1, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
- gnap.playPullOutDevice(6, 8);
+ gnap.playPullOutDevice(Common::Point(6, 8));
gnap.playUseDevice(0, 0);
gnap.walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
gnap._actionStatus = kAS31FillEmptyBucketWithBeer;
@@ -560,7 +560,7 @@ void Scene31::updateAnimations() {
break;
case kAS31FillEmptyBucketWithBeerDone:
gnap._idleFacing = kDirBottomLeft;
- gnap.playPullOutDevice(0, 0);
+ gnap.playPullOutDevice();
gnap.playUseDevice(0, 0);
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
gnap._actionStatus = -1;
@@ -708,7 +708,7 @@ void Scene32::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -886,7 +886,7 @@ void Scene33::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1170,7 +1170,7 @@ void Scene38::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1480,7 +1480,7 @@ void Scene39::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 4f07279..b789b0e 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -83,7 +83,7 @@ void Scene40::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -361,7 +361,7 @@ void Scene41::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -411,7 +411,7 @@ void Scene41::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(5, 0);
+ gnap.playMoan1(Common::Point(5, 0));
break;
case GRAB_CURSOR:
gnap.playImpossible();
@@ -458,7 +458,7 @@ void Scene41::run() {
case kHS41ToyUfo:
if (_vm->_grabCursorSpriteIndex == kItemGum) {
- gnap.playPullOutDevice(9, 0);
+ gnap.playPullOutDevice(Common::Point(9, 0));
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS41UseGumWithToyUfo;
}
@@ -876,7 +876,7 @@ void Scene42::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1337,7 +1337,7 @@ void Scene43::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1788,7 +1788,7 @@ void Scene44::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1866,7 +1866,7 @@ void Scene44::run() {
gnap.playScratchingHead(8, 7);
break;
case GRAB_CURSOR:
- gnap.playPullOutDevice(8, 0);
+ gnap.playPullOutDevice(Common::Point(8, 0));
gnap.playUseDevice(8, 0);
_nextSpringGuySequenceId = 0xFB;
_vm->invAdd(kItemSpring);
@@ -1890,7 +1890,7 @@ void Scene44::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSpringTaken))
- gnap.playMoan1(8, 7);
+ gnap.playMoan1(Common::Point(8, 7));
else
gnap.playScratchingHead(8, 7);
break;
@@ -2281,7 +2281,7 @@ void Scene45::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2610,7 +2610,7 @@ void Scene46::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(plat._pos.x, plat._pos.y);
+ gnap.playMoan1(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2633,7 +2633,7 @@ void Scene46::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0);
+ gnap.playMoan1(Common::Point(_vm->_hotspotsWalkPos[kHS46SackGuy].x + 1, 0));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -2654,7 +2654,7 @@ void Scene46::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playMoan1(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0);
+ gnap.playMoan1(Common::Point(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x - 1, 0));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
Commit: d4053ee11b736255d8e22e8f668904a3c4462549
https://github.com/scummvm/scummvm/commit/d4053ee11b736255d8e22e8f668904a3c4462549
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-10T12:14:56+02:00
Commit Message:
GNAP: Refactoring of playScratchingHead, playShowCurrItem, playUseDevice
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index c8ad186..5226c75 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1061,8 +1061,8 @@ void PlayerGnap::playImpossible(Common::Point gridPos) {
playSequence(getSequenceId(gskImpossible, gridPos) | 0x10000);
}
-void PlayerGnap::playScratchingHead(int gridX, int gridY) {
- playSequence(getSequenceId(gskScratchingHead, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playScratchingHead(Common::Point gridPos) {
+ playSequence(getSequenceId(gskScratchingHead, gridPos) | 0x10000);
}
void PlayerGnap::playMoan1(Common::Point gridPos) {
@@ -1085,8 +1085,8 @@ void PlayerGnap::playPullOutDeviceNonWorking(Common::Point gridPos) {
playSequence(getSequenceId(gskPullOutDeviceNonWorking, gridPos) | 0x10000);
}
-void PlayerGnap::playUseDevice(int gridX, int gridY) {
- playSequence(getSequenceId(gskUseDevice, Common::Point(gridX, gridY)) | 0x10000);
+void PlayerGnap::playUseDevice(Common::Point gridPos) {
+ playSequence(getSequenceId(gskUseDevice, gridPos) | 0x10000);
}
void PlayerGnap::playIdle(Common::Point gridPos) {
@@ -1097,12 +1097,12 @@ void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
playSequence(getShowSequenceId(itemIndex, gridLookX, gridLookY) | 0x10000);
}
-void PlayerGnap::playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY) {
+void PlayerGnap::playShowCurrItem(Common::Point destPos, int gridLookX, int gridLookY) {
PlayerPlat& plat = *_vm->_plat;
- if (plat._pos.x == gridX && plat._pos.y == gridY)
+ if (plat._pos == destPos)
plat.makeRoom();
- walkTo(Common::Point(gridX, gridY), -1, -1, 1);
+ walkTo(destPos, -1, -1, 1);
playShowItem(_vm->_grabCursorSpriteIndex, gridLookX, gridLookY);
}
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 4494aa8..554e980 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -103,10 +103,10 @@ public:
void playMoan2(Common::Point gridPos = Common::Point(0, 0));
void playPullOutDevice(Common::Point gridPos = Common::Point(0, 0));
void playPullOutDeviceNonWorking(Common::Point gridPos = Common::Point(0, 0));
- void playScratchingHead(int gridX, int gridY);
- void playShowCurrItem(int gridX, int gridY, int gridLookX, int gridLookY);
+ void playScratchingHead(Common::Point gridPos = Common::Point(0, 0));
+ void playShowCurrItem(Common::Point destPos, int gridLookX, int gridLookY);
void playShowItem(int itemIndex, int gridLookX, int gridLookY);
- void playUseDevice(int gridX, int gridY);
+ void playUseDevice(Common::Point gridPos = Common::Point(0, 0));
void useDeviceOnPlatypus();
void useDisguiseOnPlatypus();
void useJointOnPlatypus();
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index a0bdba2..b0acf8f 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -135,7 +135,7 @@ void Scene01::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -155,7 +155,7 @@ void Scene01::run() {
case kHS01Spaceship:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 0, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4], 0, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -176,11 +176,11 @@ void Scene01::run() {
case kHS01Mud:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(3, 3);
+ gnap.playScratchingHead(Common::Point(3, 3));
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
@@ -198,7 +198,7 @@ void Scene01::run() {
case kHS01Pigs:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 7, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3], 7, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -316,7 +316,7 @@ void Scene01::updateAnimations() {
case kAS01TakeMud:
gnap.playPullOutDevice(Common::Point(2, 3));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(128, 40, 129, 40, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(128, 40, 3);
gnap._actionStatus = -1;
@@ -331,7 +331,7 @@ void Scene01::updateAnimations() {
case kAS01UsePigs:
gnap.playPullOutDevice(Common::Point(7, 2));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(135, 39, 0, 0, kSeqNone, 25, _vm->getRandom(140) - 40, 0);
gnap._actionStatus = -1;
break;
@@ -488,7 +488,7 @@ void Scene02::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -513,7 +513,7 @@ void Scene02::run() {
gnap.walkTo(destPos, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y + 1, 9, 8);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), 9, 8);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -557,11 +557,11 @@ void Scene02::run() {
gnap._actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 2, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(2, 2);
+ gnap.playScratchingHead(Common::Point(2, 2));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
@@ -589,7 +589,7 @@ void Scene02::run() {
case kHS02TruckGrill:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[4], 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -956,7 +956,7 @@ void Scene03::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -982,11 +982,11 @@ void Scene03::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(9, 6);
+ gnap.playScratchingHead(Common::Point(9, 6));
break;
case GRAB_CURSOR:
gnap.playPullOutDevice(Common::Point(9, 6));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(0x1B3, 253, 0x1B2, 253, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1B3, 253, 5);
_vm->_hotspots[kHS03Grass]._flags |= SF_WALKABLE | SF_DISABLED;
@@ -1051,7 +1051,7 @@ void Scene03::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 4);
+ gnap.playScratchingHead(Common::Point(8, 4));
break;
case GRAB_CURSOR:
if (_platypusHypnotized) {
@@ -1464,7 +1464,7 @@ void Scene04::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 4)
@@ -1491,11 +1491,11 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1]);
break;
case GRAB_CURSOR:
gnap.playPullOutDevice(_vm->_hotspotsWalkPos[1]);
- gnap.playUseDevice(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y);
+ gnap.playUseDevice(_vm->_hotspotsWalkPos[1]);
gameSys.insertSequence(0x1FD, 100, 510, 100, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(0x1FD, 100, 2);
break;
@@ -1511,7 +1511,7 @@ void Scene04::run() {
case kHS04Axe:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3].x, _vm->_hotspotsWalkPos[3].y, 9, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[3], 9, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1536,7 +1536,7 @@ void Scene04::run() {
case kHS04Dog:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 9, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1568,12 +1568,12 @@ void Scene04::run() {
case kHS04Door:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 4, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 4, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case PLAT_CURSOR:
- gnap.playScratchingHead(4, 3);
+ gnap.playScratchingHead(Common::Point(4, 3));
break;
case GRAB_CURSOR:
if (_vm->_cursorValue == 1) {
@@ -1613,7 +1613,7 @@ void Scene04::run() {
case kHS04Window:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 2, 3);
} else if (_vm->isFlag(kGFKeysTaken)) {
gnap.playImpossible();
} else {
@@ -1629,7 +1629,7 @@ void Scene04::run() {
}
break;
case GRAB_CURSOR:
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[7].x, _vm->_hotspotsWalkPos[7].y);
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[7]);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -1942,7 +1942,7 @@ void Scene05::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1962,13 +1962,13 @@ void Scene05::run() {
case kHS05Haystack:
if (gnap._actionStatus < 0 && plat._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1].x - 2, _vm->_hotspotsWalkPos[1].y, 4, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1] + Common::Point(-2, 0), 4, 5);
} else if (_vm->isFlag(kGFNeedleTaken)) {
gnap.playImpossible();
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1);
+ gnap.playScratchingHead(Common::Point(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1));
break;
case GRAB_CURSOR:
case TALK_CURSOR:
@@ -1999,7 +1999,7 @@ void Scene05::run() {
gnap.walkTo(checkPt, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0)
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1, 9, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1), 9, 7);
else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2026,7 +2026,7 @@ void Scene05::run() {
case kHS05Ladder:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 2, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 2, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2062,11 +2062,11 @@ void Scene05::run() {
gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
gnap._actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 7, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(7, 4);
+ gnap.playScratchingHead(Common::Point(7, 4));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -2371,7 +2371,7 @@ void Scene06::run() {
if (_vm->isFlag(kGFKeysTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -2391,11 +2391,11 @@ void Scene06::run() {
case kHS06Gas:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 5, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(5, 0);
+ gnap.playScratchingHead(Common::Point(5, 0));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk04)) {
@@ -2415,7 +2415,7 @@ void Scene06::run() {
if (_vm->isFlag(kGFUnk04))
gnap.playImpossible();
else
- gnap.playScratchingHead(5, 0);
+ gnap.playScratchingHead(Common::Point(5, 0));
break;
}
}
@@ -2425,11 +2425,11 @@ void Scene06::run() {
case kHS06Ladder:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 4);
+ gnap.playScratchingHead(Common::Point(8, 4));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFGasTaken))
@@ -2461,11 +2461,11 @@ void Scene06::run() {
gnap._actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 3, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(3, 2);
+ gnap.playScratchingHead(Common::Point(3, 2));
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
@@ -2771,7 +2771,7 @@ void Scene07::run() {
case kHS07Dice:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(4, 8, 3, 3);
+ gnap.playShowCurrItem(Common::Point(4, 8), 3, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3019,7 +3019,7 @@ void Scene08::run() {
if (_vm->isFlag(kGFSceneFlag1))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.actionIdle(0x14D);
@@ -3055,7 +3055,7 @@ void Scene08::run() {
case kHS08Man:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(6, 6, 7, 0);
+ gnap.playShowCurrItem(Common::Point(6, 6), 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -3087,13 +3087,13 @@ void Scene08::run() {
case kHS08Door:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(4, 7, 5, 0);
+ gnap.playShowCurrItem(Common::Point(4, 7), 5, 0);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS08GrabDog;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 0);
+ gnap.playScratchingHead(Common::Point(6, 0));
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS08LookDog;
break;
@@ -3123,19 +3123,19 @@ void Scene08::run() {
case kHS08Meat:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(6, 8, 5, 6);
+ gnap.playShowCurrItem(Common::Point(6, 8), 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 7);
+ gnap.playScratchingHead(Common::Point(6, 7));
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- gnap.playScratchingHead(6, 7);
+ gnap.playScratchingHead(Common::Point(6, 7));
} else {
gnap.actionIdle(0x14D);
gnap.playPullOutDevice(Common::Point(6, 7));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
_nextDogSequenceId = 0x149;
}
break;
@@ -3149,19 +3149,19 @@ void Scene08::run() {
case kHS08Bone:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(2, 7, 3, 6);
+ gnap.playShowCurrItem(Common::Point(2, 7), 3, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(3, 6);
+ gnap.playScratchingHead(Common::Point(3, 6));
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- gnap.playScratchingHead(3, 6);
+ gnap.playScratchingHead(Common::Point(3, 6));
} else {
gnap.actionIdle(0x14D);
gnap.playPullOutDevice(Common::Point(3, 6));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
_nextDogSequenceId = 0x14A;
}
break;
@@ -3175,19 +3175,19 @@ void Scene08::run() {
case kHS08Toy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(8, 7, 7, 6);
+ gnap.playShowCurrItem(Common::Point(8, 7), 7, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(7, 6);
+ gnap.playScratchingHead(Common::Point(7, 6));
break;
case GRAB_CURSOR:
if (_currDogSequenceId == 0x135) {
- gnap.playScratchingHead(7, 6);
+ gnap.playScratchingHead(Common::Point(7, 6));
} else {
gnap.actionIdle(0x14D);
gnap.playPullOutDevice(Common::Point(7, 6));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
_nextDogSequenceId = 0x14B;
}
break;
@@ -3487,11 +3487,11 @@ void Scene09::run() {
case kHS09Trash:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(9, 6, 8, 0);
+ gnap.playShowCurrItem(Common::Point(9, 6), 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 3);
+ gnap.playScratchingHead(Common::Point(8, 3));
break;
case GRAB_CURSOR:
gnap._actionStatus = kAS09SearchTrash;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 0560cfd..9d6838e 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -116,7 +116,7 @@ void Scene10::run() {
if (_vm->isFlag(kGFMudTaken))
gnap.playMoan1(plat._pos);
else
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(10);
@@ -151,13 +151,13 @@ void Scene10::run() {
case kHS10Cook:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(4, 8, 6, 0);
+ gnap.playShowCurrItem(Common::Point(4, 8), 6, 0);
gameSys.setAnimation(makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, 0);
gnap._actionStatus = kAS10AnnoyCook;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 0);
+ gnap.playScratchingHead(Common::Point(6, 0));
break;
case GRAB_CURSOR:
gnap.playImpossible();
@@ -182,14 +182,14 @@ void Scene10::run() {
case kHS10Tongs:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(3, 7, 4, 0);
+ gnap.playShowCurrItem(Common::Point(3, 7), 4, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFMudTaken))
gnap.playMoan2(Common::Point(-1, -1));
else
- gnap.playScratchingHead(4, 3);
+ gnap.playScratchingHead(Common::Point(4, 3));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFMudTaken))
@@ -220,11 +220,11 @@ void Scene10::run() {
case kHS10Box:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(7, 6, 6, 0);
+ gnap.playShowCurrItem(Common::Point(7, 6), 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(7, 3);
+ gnap.playScratchingHead(Common::Point(7, 3));
break;
case GRAB_CURSOR:
gnap.actionIdle(0x10C);
@@ -255,7 +255,7 @@ void Scene10::run() {
case kHS10Oven:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(9, 6, 10, 0);
+ gnap.playShowCurrItem(Common::Point(9, 6), 10, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -657,11 +657,11 @@ void Scene11::run() {
gnap._actionStatus = kAS11ShowMagazineToGoggleGuy;
gnap.playShowItem(_vm->_grabCursorSpriteIndex, 2, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(3, 7, 2, 0);
+ gnap.playShowCurrItem(Common::Point(3, 7), 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 6);
+ gnap.playScratchingHead(Common::Point(1, 6));
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -713,7 +713,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(9, 8);
+ gnap.playScratchingHead(Common::Point(9, 8));
break;
case GRAB_CURSOR:
gnap.walkTo(Common::Point(9, 8), 0, 0x107BA, 1);
@@ -1077,7 +1077,7 @@ void Scene12::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 2);
+ gnap.playScratchingHead(Common::Point(1, 2));
break;
case GRAB_CURSOR:
gnap.walkTo(Common::Point(3, 7), 0, 0x107BC, 1);
@@ -1576,7 +1576,7 @@ void Scene13::run() {
case kHS13BackToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(5, 5, 6, 0);
+ gnap.playShowCurrItem(Common::Point(5, 5), 6, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1607,7 +1607,7 @@ void Scene13::run() {
case kHS13FrontToilet:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(6, 7, 7, 0);
+ gnap.playShowCurrItem(Common::Point(6, 7), 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1624,7 +1624,7 @@ void Scene13::run() {
case kHS13Scribble:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(7, 7, 8, 0);
+ gnap.playShowCurrItem(Common::Point(7, 7), 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1633,7 +1633,7 @@ void Scene13::run() {
gnap._idleFacing = kDirUpRight;
break;
case GRAB_CURSOR:
- gnap.playScratchingHead(0, 0);
+ gnap.playScratchingHead();
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1648,7 +1648,7 @@ void Scene13::run() {
case kHS13Urinal:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(8, 7, 9, 0);
+ gnap.playShowCurrItem(Common::Point(8, 7), 9, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2572,12 +2572,12 @@ void Scene17::run() {
_vm->invRemove(kItemJoint);
}
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case TALK_CURSOR:
gnap.playBrainPulsating(plat._pos);
@@ -2596,12 +2596,12 @@ void Scene17::run() {
if (_vm->isFlag(kGFGrassTaken)) {
gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 8, 7);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 8, 7);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
case GRAB_CURSOR:
- gnap.playScratchingHead(8, 7);
+ gnap.playScratchingHead(Common::Point(8, 7));
break;
case TALK_CURSOR:
gnap.playImpossible();
@@ -2628,11 +2628,11 @@ void Scene17::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 3);
+ gnap.playScratchingHead(Common::Point(1, 3));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2669,11 +2669,11 @@ void Scene17::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, 1, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 1, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 3);
+ gnap.playScratchingHead(Common::Point(1, 3));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
@@ -2863,7 +2863,7 @@ void Scene17::updateAnimations() {
break;
case kAS17GetCoinFromPhone:
gnap.playPullOutDevice(Common::Point(1, 3));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.setAnimation(0x250, 100, 0);
gameSys.insertSequence(0x250, 100, 591, 100, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemDiceQuarterHole);
@@ -3513,11 +3513,11 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat].x, _vm->_hotspotsWalkPos[kHS18CowboyHat].y, 3, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18CowboyHat], 3, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(3, 2);
+ gnap.playScratchingHead(Common::Point(3, 2));
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, gnap.getSequenceId(gskPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
@@ -3535,25 +3535,27 @@ void Scene18::run() {
if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk14)) {
if (_vm->_grabCursorSpriteIndex >= 0)
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan], 1, 5);
else
gnap.playImpossible();
} else {
if (_vm->isFlag(kGFPlatypusTalkingToAssistant))
platEndPhoning(true);
if (_vm->_grabCursorSpriteIndex >= 0) {
- if (!_vm->isFlag(kGFTruckKeysUsed))
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1),
- _vm->_hotspotsWalkPos[kHS18GarbageCan].y, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
- else
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y, 2, 4);
+ if (!_vm->isFlag(kGFTruckKeysUsed)) {
+ Common::Point destPos;
+ destPos.x = _vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1);
+ destPos.y = _vm->_hotspotsWalkPos[kHS18GarbageCan].y;
+ gnap.playShowCurrItem(destPos, _vm->_hotspotsWalkPos[kHS18GarbageCan].x, _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ } else
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18GarbageCan], 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed))
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y);
+ gnap.playScratchingHead(Common::Point(_vm->_hotspotsWalkPos[kHS18GarbageCan].x - (gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1), _vm->_hotspotsWalkPos[kHS18GarbageCan].y));
else if (!_vm->isFlag(kGFTruckFilledWithGas))
- gnap.playScratchingHead(2, 4);
+ gnap.playScratchingHead(Common::Point(2, 4));
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFTruckKeysUsed)) {
@@ -3589,7 +3591,7 @@ void Scene18::run() {
case LOOK_CURSOR:
gnapCarryGarbageCanTo(-1);
putDownGarbageCan(0);
- gnap.playScratchingHead(0, 0);
+ gnap.playScratchingHead();
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
@@ -3617,11 +3619,11 @@ void Scene18::run() {
gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
gnap._actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve].x, _vm->_hotspotsWalkPos[kHS18HydrantTopValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 5);
+ gnap.playScratchingHead(Common::Point(1, 5));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFBarnPadlockOpen)) {
@@ -3648,7 +3650,7 @@ void Scene18::run() {
if (_vm->_grabCursorSpriteIndex == -1) {
gnap.playImpossible();
} else {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 1, 5);
}
} else {
if (_vm->isFlag(kGFPlatypusDisguised)) {
@@ -3662,11 +3664,11 @@ void Scene18::run() {
else
gnap._actionStatus = kAS18OpenRightValveNoGarbageCan;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve].x, _vm->_hotspotsWalkPos[kHS18HydrantRightValve].y, 1, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 1, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 5);
+ gnap.playScratchingHead(Common::Point(1, 5));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckFilledWithGas)) {
@@ -3882,7 +3884,7 @@ void Scene18::updateAnimations() {
_vm->setFlag(kGFBarnPadlockOpen);
updateHotspots();
gnap.playPullOutDevice(Common::Point(2, 7));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(0x20C, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 0, 0x107BB, 1);
@@ -3980,7 +3982,7 @@ void Scene18::updateAnimations() {
_vm->setFlag(kGFTruckFilledWithGas);
updateHotspots();
gnap.playPullOutDevice(Common::Point(2, 7));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(0x20B, 19, 0, 0, kSeqNone, 0, 0, 0);
_vm->_hotspots[kHS18WalkArea2]._flags |= SF_WALKABLE;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS18HydrantRightValve], 0, 0x107BA, 1);
@@ -4230,11 +4232,11 @@ void Scene19::run() {
case kHS19Picture:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 2);
+ gnap.playScratchingHead(Common::Point(6, 2));
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
@@ -4254,11 +4256,11 @@ void Scene19::run() {
case kHS19ShopAssistant:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 2);
+ gnap.playScratchingHead(Common::Point(6, 2));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -4306,11 +4308,11 @@ void Scene19::run() {
case kHS19Phone:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y, 9, 1);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 9, 1);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(9, 1);
+ gnap.playScratchingHead(Common::Point(9, 1));
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, -1, 1);
@@ -4403,7 +4405,7 @@ void Scene19::updateAnimations() {
break;
case kAS19GrabPicture:
gnap.playPullOutDevice(Common::Point(6, 2));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.setAnimation(0x68, 19, 0);
gameSys.insertSequence(0x68, 19, 105, 19, kSeqSyncWait, 0, 0, 0);
_vm->invAdd(kItemPicture);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index e832f35..ff315c5 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -70,7 +70,7 @@ void Scene20::updateAnimationsCb() {
case 0x16A:
// Grab joint
gnap.playPullOutDevice(Common::Point(4, 4));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.setAnimation(0x16A, 21, 0);
gameSys.insertSequence(0x16A, 21, _currStonerGuySequenceId, 21, kSeqSyncWait, 0, 0, 0);
_currStonerGuySequenceId = 0x16A;
@@ -282,7 +282,7 @@ void Scene20::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(20);
@@ -366,7 +366,7 @@ void Scene20::run() {
case kHS20StonerGuy:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy].x, _vm->_hotspotsWalkPos[kHS20StonerGuy].y, 5, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20StonerGuy], 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -399,11 +399,11 @@ void Scene20::run() {
case kHS20GroceryStoreGuy:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreGuy].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(2, 3);
+ gnap.playScratchingHead(Common::Point(2, 3));
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
@@ -431,11 +431,11 @@ void Scene20::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat].x, _vm->_hotspotsWalkPos[kHS20GroceryStoreHat].y, 1, 6);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 1, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(1, 6);
+ gnap.playScratchingHead(Common::Point(1, 6));
break;
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
@@ -803,7 +803,7 @@ void Scene21::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -827,12 +827,12 @@ void Scene21::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(2, 5);
+ gnap.playScratchingHead(Common::Point(2, 5));
break;
case GRAB_CURSOR:
gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
gnap.playPullOutDevice(Common::Point(2, 5));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gnap._actionStatus = kAS21GrabBanana;
break;
case TALK_CURSOR:
@@ -850,11 +850,11 @@ void Scene21::run() {
gnap.walkTo(Common::Point(4, 6), 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(4, 6, 7, 4);
+ gnap.playShowCurrItem(Common::Point(4, 6), 7, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(7, 4);
+ gnap.playScratchingHead(Common::Point(7, 4));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -1122,7 +1122,7 @@ void Scene22::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1162,11 +1162,11 @@ void Scene22::run() {
case kHS22Cashier:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier].x, _vm->_hotspotsWalkPos[kHS22Cashier].y, 8, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS22Cashier], 8, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 4);
+ gnap.playScratchingHead(Common::Point(8, 4));
break;
case GRAB_CURSOR:
gnap.playImpossible();
@@ -1348,7 +1348,7 @@ void Scene23::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1368,7 +1368,7 @@ void Scene23::run() {
case kHS23Cereals:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals].x, _vm->_hotspotsWalkPos[kHS23Cereals].y, 5, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS23Cereals], 5, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -1619,7 +1619,7 @@ void Scene24::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1868,7 +1868,7 @@ void Scene25::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(plat._pos.x, plat._pos.y);
+ gnap.playScratchingHead(plat._pos);
break;
case GRAB_CURSOR:
gnap.kissPlatypus(0);
@@ -1891,14 +1891,14 @@ void Scene25::run() {
gnap._actionStatus = kAS25ShowTicketToVendor;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor].x, _vm->_hotspotsWalkPos[kHS25TicketVendor].y, 6, 1);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS25TicketVendor], 6, 1);
_nextTicketVendorSequenceId = 0x5B;
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 1);
+ gnap.playScratchingHead(Common::Point(6, 1));
_nextTicketVendorSequenceId = (_vm->getRandom(2) == 1) ? 0x59 : 0x56;
break;
case TALK_CURSOR:
@@ -2448,11 +2448,11 @@ void Scene27::run() {
if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, 0x107BC, 1))
gnap._actionStatus = kAS27ShowPictureToJanitor;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor].x, _vm->_hotspotsWalkPos[kHS27Janitor].y, 7, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS27Janitor], 7, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 3);
+ gnap.playScratchingHead(Common::Point(6, 3));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -2475,7 +2475,7 @@ void Scene27::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(3, 3);
+ gnap.playScratchingHead(Common::Point(3, 3));
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -2614,7 +2614,7 @@ void Scene27::updateAnimations() {
break;
case kAS27GrabBucket:
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
_vm->_hotspots[kHS27Bucket]._flags = SF_DISABLED;
_vm->invAdd(kItemEmptyBucket);
_vm->setFlag(kGFUnk13);
@@ -2676,7 +2676,7 @@ void Scene27::updateAnimations() {
case 0xD0:
// Show picture to janitor
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(_nextJanitorSequenceId, 39, _currJanitorSequenceId, 39, kSeqSyncWait, 0, 0, 0);
gameSys.setAnimation(_nextJanitorSequenceId, 39, 0);
gnap._actionStatus = kAS27EnterClownTent;
@@ -2818,11 +2818,11 @@ void Scene28::run() {
case kHS28Horn:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(2, 8, 3, 4);
+ gnap.playShowCurrItem(Common::Point(2, 8), 3, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(2, 4);
+ gnap.playScratchingHead(Common::Point(2, 4));
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
@@ -2852,27 +2852,27 @@ void Scene28::run() {
if (gnap._actionStatus < 0) {
if (_vm->isFlag(kGFUnk21)) {
if (_vm->_verbCursor == LOOK_CURSOR)
- gnap.playScratchingHead(5, 2);
+ gnap.playScratchingHead(Common::Point(5, 2));
else
gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithBeer) {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gnap._actionStatus = kAS28UseBeerBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex == kItemBucketWithPill) {
gnap._idleFacing = kDirUpLeft;
gnap.walkTo(_vm->_hotspotsWalkPos[kHS28Clown], 0, 0x107BC, 1);
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gnap._actionStatus = kAS28UsePillBucketWithClown;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown].x, _vm->_hotspotsWalkPos[kHS28Clown].y, 2, 4);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS28Clown], 2, 4);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(5, 2);
+ gnap.playScratchingHead(Common::Point(5, 2));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
@@ -2909,7 +2909,7 @@ void Scene28::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 6);
+ gnap.playScratchingHead(Common::Point(8, 6));
break;
case GRAB_CURSOR:
gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
@@ -2990,7 +2990,7 @@ void Scene28::updateAnimations() {
break;
case kAS28GrabHornSuccess:
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.setAnimation(0x117, 59, 0);
gameSys.insertSequence(0x117, 59, 280, 59, kSeqSyncWait, 0, 0, 0);
gnap._actionStatus = kAS28GrabHornSuccessDone;
@@ -3012,7 +3012,7 @@ void Scene28::updateAnimations() {
break;
case kAS28GrabEmptyBucket:
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.setAnimation(0x111, 99, 0);
gameSys.insertSequence(0x111, 99, 274, 99, kSeqSyncWait, 0, 0, 0);
gnap._actionStatus = kAS28GrabEmptyBucketDone;
@@ -3219,11 +3219,11 @@ void Scene29::run() {
_vm->_isLeavingScene = true;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey].x, _vm->_hotspotsWalkPos[kHS29Monkey].y, 5, 6);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Monkey], 5, 6);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(5, 6);
+ gnap.playScratchingHead(Common::Point(5, 6));
break;
case TALK_CURSOR:
gnap.playBrainPulsating(_vm->_hotspotsWalkPos[kHS29Monkey]);
@@ -3267,7 +3267,7 @@ void Scene29::run() {
gnap.playIdle(_vm->_hotspotsWalkPos[kHS29Arcade]);
gnap._actionStatus = kAS29LeaveScene;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Arcade].x, _vm->_hotspotsWalkPos[kHS29Arcade].y, 2, 3);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS29Arcade], 2, 3);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index c29e7c1..4832ce1 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -123,7 +123,7 @@ void Scene30::run() {
gnap._actionStatus = kAS30UsePillMachine;
hasTakenPill = true;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine].x, _vm->_hotspotsWalkPos[kHS30PillMachine].y, 8, 5);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS30PillMachine], 8, 5);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -131,7 +131,7 @@ void Scene30::run() {
gnap._actionStatus = kAS30LookPillMachine;
break;
case GRAB_CURSOR:
- gnap.playScratchingHead(8, 5);
+ gnap.playScratchingHead(Common::Point(8, 5));
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -376,15 +376,15 @@ void Scene31::run() {
if (gnap._actionStatus < 0 || gnap._actionStatus == kAS31PlatMeasuringClown) {
if (gnap._actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_verbCursor == LOOK_CURSOR)
- gnap.playScratchingHead(2, 2);
+ gnap.playScratchingHead(Common::Point(2, 2));
else
gnap.playImpossible();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown].x, _vm->_hotspotsWalkPos[kHS31MeasuringClown].y + 1, 2, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), 2, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(2, 2);
+ gnap.playScratchingHead(Common::Point(2, 2));
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[kHS31MeasuringClown] + Common::Point(0, 1), -1, -1, 1);
@@ -423,20 +423,20 @@ void Scene31::run() {
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
gnap.playPullOutDevice(Common::Point(6, 8));
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gnap.walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
gnap._actionStatus = kAS31FillEmptyBucketWithBeer;
_vm->_timers[4] = 300;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel].x, _vm->_hotspotsWalkPos[kHS31BeerBarrel].y, 6, 2);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 6, 2);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(6, 2);
+ gnap.playScratchingHead(Common::Point(6, 2));
break;
case GRAB_CURSOR:
if (_beerGuyDistracted) {
- gnap.playScratchingHead(6, 2);
+ gnap.playScratchingHead(Common::Point(6, 2));
} else {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS31BeerBarrel], 0, 0x107BC, 1);
gnap._actionStatus = kAS31UseBeerBarrel;
@@ -561,7 +561,7 @@ void Scene31::updateAnimations() {
case kAS31FillEmptyBucketWithBeerDone:
gnap._idleFacing = kDirBottomLeft;
gnap.playPullOutDevice();
- gnap.playUseDevice(0, 0);
+ gnap.playUseDevice();
gameSys.insertSequence(0xF9, 59, 0xF8, 59, kSeqSyncWait, 0, 0, 0);
gnap._actionStatus = -1;
_vm->invAdd(kItemBucketWithBeer);
@@ -906,7 +906,7 @@ void Scene33::run() {
case kHS33Chicken:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(7, 9, 9, 8);
+ gnap.playShowCurrItem(Common::Point(7, 9), 9, 8);
} else {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
@@ -1224,11 +1224,11 @@ void Scene38::run() {
case kHS38HuntingTrophy:
if (gnap._actionStatus != kAS38HoldingHuntingTrophy) {
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(3, 6, 2, 0);
+ gnap.playShowCurrItem(Common::Point(3, 6), 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(0, 0);
+ gnap.playScratchingHead();
break;
case GRAB_CURSOR:
if (plat._actionStatus == kAS38PlatypusHoldingTrapDoor)
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index b789b0e..f6cb57c 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -407,7 +407,7 @@ void Scene41::run() {
gnap.walkTo(Common::Point(4, 7), 0, 0x107BB, 9);
gnap.playShowItem(_vm->_grabCursorSpriteIndex, 5, 0);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(4, 7, 5, 0);
+ gnap.playShowCurrItem(Common::Point(4, 7), 5, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -434,11 +434,11 @@ void Scene41::run() {
gnap._idleFacing = kDirUpRight;
gnap._actionStatus = kAS41UseChickenBucketWithKid;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(7, 7, 8, 0);
+ gnap.playShowCurrItem(Common::Point(7, 7), 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(9, 0);
+ gnap.playScratchingHead(Common::Point(9, 0));
break;
case GRAB_CURSOR:
gnap.walkTo(Common::Point(7, 7), 0, 0x107BB, 1);
@@ -587,7 +587,7 @@ void Scene41::updateAnimations() {
break;
case kAS41UseGumWithToyUfo:
gameSys.setAnimation(0, 0, 0);
- gnap.playUseDevice(9, 0);
+ gnap.playUseDevice(Common::Point(9, 0));
gnap._actionStatus = -1;
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemGum);
@@ -924,11 +924,11 @@ void Scene42::run() {
if (plat._pos.y < 9)
plat.walkTo(Common::Point(plat._pos.x, 9), -1, -1, 1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor].x, _vm->_hotspotsWalkPos[kHS42BBQVendor].y, _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS42BBQVendor], _vm->_hotspotsWalkPos[kHS42BBQVendor].x + 1, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0);
+ gnap.playScratchingHead(Common::Point(_vm->_hotspotsWalkPos[kHS42BBQVendor].x - 1, 0));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -945,11 +945,11 @@ void Scene42::run() {
case kHS42ChickenLeg:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x, _vm->_hotspotsWalkPos[kHS42ChickenLeg].y, _vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS42ChickenLeg], _vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0);
+ gnap.playScratchingHead(Common::Point(_vm->_hotspotsWalkPos[kHS42ChickenLeg].x - 1, 0));
break;
case GRAB_CURSOR:
gnap.walkTo(_vm->_hotspotsWalkPos[kHS42ChickenLeg], 0, 0x107BC, 1);
@@ -1380,11 +1380,11 @@ void Scene43::run() {
case kHS43TwoHeadedGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(6, 8, 7, 0);
+ gnap.playShowCurrItem(Common::Point(6, 8), 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(7, 0);
+ gnap.playScratchingHead(Common::Point(7, 0));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1402,11 +1402,11 @@ void Scene43::run() {
case kHS43Key:
case kHS43Ufo:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(3, 7, 2, 0);
+ gnap.playShowCurrItem(Common::Point(3, 7), 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(0, 0);
+ gnap.playScratchingHead();
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -1835,7 +1835,7 @@ void Scene44::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(4, 3);
+ gnap.playScratchingHead(Common::Point(4, 3));
break;
case GRAB_CURSOR:
gnap.playImpossible();
@@ -1859,15 +1859,15 @@ void Scene44::run() {
case kHS44Spring:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring].x, _vm->_hotspotsWalkPos[kHS44Spring].y, 8, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS44Spring], 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(8, 7);
+ gnap.playScratchingHead(Common::Point(8, 7));
break;
case GRAB_CURSOR:
gnap.playPullOutDevice(Common::Point(8, 0));
- gnap.playUseDevice(8, 0);
+ gnap.playUseDevice(Common::Point(8, 0));
_nextSpringGuySequenceId = 0xFB;
_vm->invAdd(kItemSpring);
_vm->setFlag(kGFSpringTaken);
@@ -1885,14 +1885,14 @@ void Scene44::run() {
case kHS44SpringGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy].x, _vm->_hotspotsWalkPos[kHS44SpringGuy].y, 8, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS44SpringGuy], 8, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
if (_vm->isFlag(kGFSpringTaken))
gnap.playMoan1(Common::Point(8, 7));
else
- gnap.playScratchingHead(8, 7);
+ gnap.playScratchingHead(Common::Point(8, 7));
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
@@ -2348,7 +2348,7 @@ void Scene45::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(5, 0);
+ gnap.playScratchingHead(Common::Point(5, 0));
break;
case GRAB_CURSOR:
case TALK_CURSOR:
@@ -2629,7 +2629,7 @@ void Scene46::run() {
case kHS46SackGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS46SackGuy].x, _vm->_hotspotsWalkPos[kHS46SackGuy].y, 2, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS46SackGuy], 2, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
@@ -2650,7 +2650,7 @@ void Scene46::run() {
case kHS46ItchyGuy:
if (_vm->_grabCursorSpriteIndex >= 0) {
- gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS46ItchyGuy].x, _vm->_hotspotsWalkPos[kHS46ItchyGuy].y, 7, 0);
+ gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 7, 0);
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
Commit: 5981ef48daf09475c089334402316161bb617d81
https://github.com/scummvm/scummvm/commit/5981ef48daf09475c089334402316161bb617d81
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T12:14:56+02:00
Commit Message:
GNAP: Make all relevant destructors virtual
Changed paths:
engines/gnap/character.h
engines/gnap/scenes/group0.h
engines/gnap/scenes/group1.h
engines/gnap/scenes/group2.h
engines/gnap/scenes/group3.h
engines/gnap/scenes/group4.h
engines/gnap/scenes/group5.h
engines/gnap/scenes/groupcs.h
engines/gnap/scenes/intro.h
engines/gnap/scenes/scenecore.h
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 554e980..0a00fe0 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -48,7 +48,7 @@ const int kMaxGridStructs = 30;
class Character {
public:
Character(GnapEngine *vm);
- ~Character();
+ virtual ~Character();
void walkStep();
@@ -124,6 +124,7 @@ private:
class PlayerPlat : public Character {
public:
PlayerPlat(GnapEngine *vm);
+ virtual ~PlayerPlat() {}
virtual int getSequenceId(int kind = 0, Common::Point gridPos = Common::Point(0, 0));
virtual void initPos(int gridX, int gridY, Facing facing);
virtual void playSequence(int sequenceId);
diff --git a/engines/gnap/scenes/group0.h b/engines/gnap/scenes/group0.h
index 38ded68..e063809 100644
--- a/engines/gnap/scenes/group0.h
+++ b/engines/gnap/scenes/group0.h
@@ -251,7 +251,7 @@ class CutScene;
class Scene01: public Scene {
public:
Scene01(GnapEngine *vm);
- ~Scene01();
+ virtual ~Scene01();
virtual int init();
virtual void updateHotspots();
@@ -268,7 +268,7 @@ private:
class Scene02: public Scene {
public:
Scene02(GnapEngine *vm);
- ~Scene02() {}
+ virtual ~Scene02() {}
virtual int init();
virtual void updateHotspots();
@@ -286,7 +286,7 @@ private:
class Scene03: public Scene {
public:
Scene03(GnapEngine *vm);
- ~Scene03() {}
+ virtual ~Scene03() {}
virtual int init();
virtual void updateHotspots();
@@ -305,7 +305,7 @@ private:
class Scene04: public Scene {
public:
Scene04(GnapEngine *vm);
- ~Scene04() {}
+ virtual ~Scene04() {}
virtual int init();
virtual void updateHotspots();
@@ -323,7 +323,7 @@ private:
class Scene05: public Scene {
public:
Scene05(GnapEngine *vm);
- ~Scene05() {}
+ virtual ~Scene05() {}
virtual int init();
virtual void updateHotspots();
@@ -339,7 +339,7 @@ private:
class Scene06: public Scene {
public:
Scene06(GnapEngine *vm);
- ~Scene06() {}
+ virtual ~Scene06() {}
virtual int init();
virtual void updateHotspots();
@@ -357,7 +357,7 @@ private:
class Scene07: public Scene {
public:
Scene07(GnapEngine *vm);
- ~Scene07() {}
+ virtual ~Scene07() {}
virtual int init();
virtual void updateHotspots();
@@ -369,7 +369,7 @@ public:
class Scene08: public Scene {
public:
Scene08(GnapEngine *vm);
- ~Scene08() {}
+ virtual ~Scene08() {}
virtual int init();
virtual void updateHotspots();
@@ -387,7 +387,7 @@ private:
class Scene09: public Scene {
public:
Scene09(GnapEngine *vm);
- ~Scene09() {}
+ virtual ~Scene09() {}
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/group1.h b/engines/gnap/scenes/group1.h
index 568099d..30771d0 100644
--- a/engines/gnap/scenes/group1.h
+++ b/engines/gnap/scenes/group1.h
@@ -273,7 +273,7 @@ class CutScene;
class Scene10: public Scene {
public:
Scene10(GnapEngine *vm);
- ~Scene10() {}
+ virtual ~Scene10() {}
virtual int init();
virtual void updateHotspots();
@@ -289,7 +289,7 @@ private:
class Scene11: public Scene {
public:
Scene11(GnapEngine *vm);
- ~Scene11() {}
+ virtual ~Scene11() {}
virtual int init();
virtual void updateHotspots();
@@ -308,7 +308,7 @@ private:
class Scene12: public Scene {
public:
Scene12(GnapEngine *vm);
- ~Scene12() {}
+ virtual ~Scene12() {}
virtual int init();
virtual void updateHotspots();
@@ -328,7 +328,7 @@ private:
class Scene13: public Scene {
public:
Scene13(GnapEngine *vm);
- ~Scene13() {}
+ virtual ~Scene13() {}
virtual int init();
virtual void updateHotspots();
@@ -345,7 +345,7 @@ private:
class Scene14: public Scene {
public:
Scene14(GnapEngine *vm);
- ~Scene14() {}
+ virtual ~Scene14() {}
virtual int init();
virtual void updateHotspots();
@@ -357,7 +357,7 @@ public:
class Scene15: public Scene {
public:
Scene15(GnapEngine *vm);
- ~Scene15() {}
+ virtual ~Scene15() {}
virtual int init();
virtual void updateHotspots();
@@ -379,7 +379,7 @@ private:
class Scene17: public Scene {
public:
Scene17(GnapEngine *vm);
- ~Scene17() {}
+ virtual ~Scene17() {}
virtual int init();
virtual void updateHotspots();
@@ -406,7 +406,7 @@ private:
class Scene18: public Scene {
public:
Scene18(GnapEngine *vm);
- ~Scene18();
+ virtual ~Scene18();
virtual int init();
virtual void updateHotspots();
@@ -432,7 +432,7 @@ private:
class Scene19: public Scene {
public:
Scene19(GnapEngine *vm);
- ~Scene19();
+ virtual ~Scene19();
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/group2.h b/engines/gnap/scenes/group2.h
index da4ff70..8f56594 100644
--- a/engines/gnap/scenes/group2.h
+++ b/engines/gnap/scenes/group2.h
@@ -229,7 +229,7 @@ class CutScene;
class Scene20: public Scene {
public:
Scene20(GnapEngine *vm);
- ~Scene20() {}
+ virtual ~Scene20() {}
virtual int init();
virtual void updateHotspots();
@@ -252,7 +252,7 @@ private:
class Scene21: public Scene {
public:
Scene21(GnapEngine *vm);
- ~Scene21() {}
+ virtual ~Scene21() {}
virtual int init();
virtual void updateHotspots();
@@ -268,7 +268,7 @@ private:
class Scene22: public Scene {
public:
Scene22(GnapEngine *vm);
- ~Scene22() {}
+ virtual ~Scene22() {}
virtual int init();
virtual void updateHotspots();
@@ -286,7 +286,7 @@ private:
class Scene23: public Scene {
public:
Scene23(GnapEngine *vm);
- ~Scene23() {}
+ virtual ~Scene23() {}
virtual int init();
virtual void updateHotspots();
@@ -302,7 +302,7 @@ private:
class Scene24: public Scene {
public:
Scene24(GnapEngine *vm);
- ~Scene24() {}
+ virtual ~Scene24() {}
virtual int init();
virtual void updateHotspots();
@@ -320,7 +320,7 @@ private:
class Scene25: public Scene {
public:
Scene25(GnapEngine *vm);
- ~Scene25() {}
+ virtual ~Scene25() {}
virtual int init();
virtual void updateHotspots();
@@ -338,7 +338,7 @@ private:
class Scene26: public Scene {
public:
Scene26(GnapEngine *vm);
- ~Scene26() {}
+ virtual ~Scene26() {}
virtual int init();
virtual void updateHotspots();
@@ -354,7 +354,7 @@ private:
class Scene27: public Scene {
public:
Scene27(GnapEngine *vm);
- ~Scene27() {}
+ virtual ~Scene27() {}
virtual int init();
virtual void updateHotspots();
@@ -370,7 +370,7 @@ private:
class Scene28: public Scene {
public:
Scene28(GnapEngine *vm);
- ~Scene28() {}
+ virtual ~Scene28() {}
virtual int init();
virtual void updateHotspots();
@@ -387,7 +387,7 @@ private:
class Scene29: public Scene {
public:
Scene29(GnapEngine *vm);
- ~Scene29() {}
+ virtual ~Scene29() {}
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/group3.h b/engines/gnap/scenes/group3.h
index e80debb..6fbbdd7 100644
--- a/engines/gnap/scenes/group3.h
+++ b/engines/gnap/scenes/group3.h
@@ -148,7 +148,7 @@ class CutScene;
class Scene30: public Scene {
public:
Scene30(GnapEngine *vm);
- ~Scene30() {}
+ virtual ~Scene30() {}
virtual int init();
virtual void updateHotspots();
@@ -163,7 +163,7 @@ private:
class Scene31: public Scene {
public:
Scene31(GnapEngine *vm);
- ~Scene31() {}
+ virtual ~Scene31() {}
virtual int init();
virtual void updateHotspots();
@@ -182,7 +182,7 @@ private:
class Scene32: public Scene {
public:
Scene32(GnapEngine *vm);
- ~Scene32() {}
+ virtual ~Scene32() {}
virtual int init();
virtual void updateHotspots();
@@ -194,7 +194,7 @@ public:
class Scene33: public Scene {
public:
Scene33(GnapEngine *vm);
- ~Scene33() {}
+ virtual ~Scene33() {}
virtual int init();
virtual void updateHotspots();
@@ -210,7 +210,7 @@ private:
class Scene38: public Scene {
public:
Scene38(GnapEngine *vm);
- ~Scene38() {}
+ virtual ~Scene38() {}
virtual int init();
virtual void updateHotspots();
@@ -222,7 +222,7 @@ public:
class Scene39: public Scene {
public:
Scene39(GnapEngine *vm);
- ~Scene39() {}
+ virtual ~Scene39() {}
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/group4.h b/engines/gnap/scenes/group4.h
index 542834d..afcd62e 100644
--- a/engines/gnap/scenes/group4.h
+++ b/engines/gnap/scenes/group4.h
@@ -183,7 +183,7 @@ class CutScene;
class Scene40: public Scene {
public:
Scene40(GnapEngine *vm);
- ~Scene40() {}
+ virtual ~Scene40() {}
virtual int init();
virtual void updateHotspots();
@@ -195,7 +195,7 @@ public:
class Scene41: public Scene {
public:
Scene41(GnapEngine *vm);
- ~Scene41() {}
+ virtual ~Scene41() {}
virtual int init();
virtual void updateHotspots();
@@ -213,7 +213,7 @@ private:
class Scene42: public Scene {
public:
Scene42(GnapEngine *vm);
- ~Scene42() {}
+ virtual ~Scene42() {}
virtual int init();
virtual void updateHotspots();
@@ -229,7 +229,7 @@ private:
class Scene43: public Scene {
public:
Scene43(GnapEngine *vm);
- ~Scene43() {}
+ virtual ~Scene43() {}
virtual int init();
virtual void updateHotspots();
@@ -245,7 +245,7 @@ private:
class Scene44: public Scene {
public:
Scene44(GnapEngine *vm);
- ~Scene44() {}
+ virtual ~Scene44() {}
virtual int init();
virtual void updateHotspots();
@@ -263,7 +263,7 @@ private:
class Scene45: public Scene {
public:
Scene45(GnapEngine *vm);
- ~Scene45() {}
+ virtual ~Scene45() {}
virtual int init();
virtual void updateHotspots();
@@ -278,7 +278,7 @@ private:
class Scene46: public Scene {
public:
Scene46(GnapEngine *vm);
- ~Scene46() {}
+ virtual ~Scene46() {}
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/group5.h b/engines/gnap/scenes/group5.h
index c7d209b..dd238ec 100644
--- a/engines/gnap/scenes/group5.h
+++ b/engines/gnap/scenes/group5.h
@@ -53,7 +53,7 @@ class GnapEngine;
class Scene53: public Scene {
public:
Scene53(GnapEngine *vm);
- ~Scene53() {}
+ virtual ~Scene53() {}
virtual int init();
virtual void updateHotspots();
diff --git a/engines/gnap/scenes/groupcs.h b/engines/gnap/scenes/groupcs.h
index 26f51ab..5803356 100644
--- a/engines/gnap/scenes/groupcs.h
+++ b/engines/gnap/scenes/groupcs.h
@@ -33,7 +33,7 @@ class CutScene;
class Scene16: public CutScene {
public:
Scene16(GnapEngine *vm);
- ~Scene16() {}
+ virtual ~Scene16() {}
virtual int init();
};
@@ -41,7 +41,7 @@ public:
class Scene471: public CutScene {
public:
Scene471(GnapEngine *vm);
- ~Scene471() {}
+ virtual ~Scene471() {}
virtual int init();
};
@@ -49,7 +49,7 @@ public:
class Scene472: public CutScene {
public:
Scene472(GnapEngine *vm);
- ~Scene472() {}
+ virtual ~Scene472() {}
virtual int init();
};
@@ -57,7 +57,7 @@ public:
class Scene473: public CutScene {
public:
Scene473(GnapEngine *vm);
- ~Scene473() {}
+ virtual ~Scene473() {}
virtual int init();
};
@@ -65,7 +65,7 @@ public:
class Scene474: public CutScene {
public:
Scene474(GnapEngine *vm);
- ~Scene474() {}
+ virtual ~Scene474() {}
virtual int init();
};
@@ -73,7 +73,7 @@ public:
class Scene475: public CutScene {
public:
Scene475(GnapEngine *vm);
- ~Scene475() {}
+ virtual ~Scene475() {}
virtual int init();
};
@@ -81,7 +81,7 @@ public:
class Scene476: public CutScene {
public:
Scene476(GnapEngine *vm);
- ~Scene476() {}
+ virtual ~Scene476() {}
virtual int init();
};
@@ -89,7 +89,7 @@ public:
class Scene477: public CutScene {
public:
Scene477(GnapEngine *vm);
- ~Scene477() {}
+ virtual ~Scene477() {}
virtual int init();
};
@@ -97,7 +97,7 @@ public:
class Scene48: public CutScene {
public:
Scene48(GnapEngine *vm);
- ~Scene48() {}
+ virtual ~Scene48() {}
virtual int init();
};
@@ -105,7 +105,7 @@ public:
class Scene541: public CutScene {
public:
Scene541(GnapEngine *vm);
- ~Scene541() {}
+ virtual ~Scene541() {}
virtual int init();
};
@@ -113,7 +113,7 @@ public:
class Scene542: public CutScene {
public:
Scene542(GnapEngine *vm);
- ~Scene542() {}
+ virtual ~Scene542() {}
virtual int init();
};
diff --git a/engines/gnap/scenes/intro.h b/engines/gnap/scenes/intro.h
index c744999..15aedfc 100644
--- a/engines/gnap/scenes/intro.h
+++ b/engines/gnap/scenes/intro.h
@@ -33,7 +33,7 @@ class GnapEngine;
class SceneIntro: public Scene {
public:
SceneIntro(GnapEngine *vm);
- ~SceneIntro() {}
+ virtual ~SceneIntro() {}
virtual int init();
virtual void updateHotspots() {}
diff --git a/engines/gnap/scenes/scenecore.h b/engines/gnap/scenes/scenecore.h
index 209f07a..5bfc80d 100644
--- a/engines/gnap/scenes/scenecore.h
+++ b/engines/gnap/scenes/scenecore.h
@@ -32,7 +32,7 @@ class GnapEngine;
class Scene {
public:
Scene(GnapEngine *vm) : _vm(vm) {};
- ~Scene() {};
+ virtual ~Scene() {};
void playRandomSound(int timerIndex);
bool clearKeyStatus();
@@ -50,7 +50,7 @@ protected:
class CutScene : public Scene {
public:
CutScene(GnapEngine *vm) : Scene(vm) {};
- ~CutScene() {};
+ virtual ~CutScene() {};
virtual int init() = 0;
void updateHotspots() {}
Commit: 7b1c738f0ffe17dff6ca0be36b893d2cda664426
https://github.com/scummvm/scummvm/commit/7b1c738f0ffe17dff6ca0be36b893d2cda664426
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T12:14:57+02:00
Commit Message:
GNAP: Fix initialization and out-of-bounds write
Changed paths:
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index a4bde9f..22f661b 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -1033,7 +1033,7 @@ Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
for (int i = 0; i < 4; i++) {
_digits[i] = 0;
- _digitSequenceIds[4] = -1;
+ _digitSequenceIds[i] = -1;
}
for (int i = 0; i < 6; i++) {
Commit: 3459437d7c41e675f0f496bc8bf997585365e98c
https://github.com/scummvm/scummvm/commit/3459437d7c41e675f0f496bc8bf997585365e98c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-10T12:14:57+02:00
Commit Message:
GNAP: Fix initialization
Changed paths:
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 22f661b..1547a50 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -1038,10 +1038,10 @@ Scene51::Scene51(GnapEngine *vm) : Scene(vm) {
for (int i = 0; i < 6; i++) {
_items[i]._currSequenceId = -1;
- _items[i]._droppedSequenceId;
+ _items[i]._droppedSequenceId = 0;
_items[i]._x = 0;
_items[i]._y = 0;
- _items[i]._collisionX;
+ _items[i]._collisionX = 0;
_items[i]._canCatch = false;
_items[i]._isCollision = false;
_items[i]._x2 = 0;
Commit: b21089f81c04c83c281cfffac0dbfee9da3cc990
https://github.com/scummvm/scummvm/commit/b21089f81c04c83c281cfffac0dbfee9da3cc990
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-11T12:12:02+02:00
Commit Message:
GNAP: Rename GetSequence enums
Changed paths:
engines/gnap/character.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 5226c75..7b55e2b 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -116,7 +116,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
int sequenceId = 0;
switch (kind) {
- case gskPullOutDevice:
+ case kGSPullOutDevice:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -153,7 +153,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskPullOutDeviceNonWorking:
+ case kGSPullOutDeviceNonWorking:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -190,7 +190,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskScratchingHead:
+ case kGSScratchingHead:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -231,7 +231,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskIdle:
+ case kGSIdle:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -268,7 +268,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskBrainPulsating:
+ case kGSBrainPulsating:
_brainPulseNum = (_brainPulseNum + 1) & 1;
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
@@ -306,7 +306,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskImpossible:
+ case kGSImpossible:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -340,7 +340,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskDeflect:
+ case kGSDeflect:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -380,7 +380,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskUseDevice:
+ case kGSUseDevice:
switch (_idleFacing) {
case kDirBottomRight:
sequenceId = 0x83A;
@@ -400,7 +400,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskMoan1:
+ case kGSMoan1:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -428,7 +428,7 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
}
break;
- case gskMoan2:
+ case kGSMoan2:
if (gridPos.x > 0 && gridPos.y > 0) {
if (_pos.y > gridPos.y) {
if (_pos.x > gridPos.x) {
@@ -488,7 +488,7 @@ void PlayerGnap::useJointOnPlatypus() {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, plat._pos) | 0x10000);
+ playSequence(getSequenceId(kGSScratchingHead, plat._pos) | 0x10000);
}
}
@@ -519,14 +519,14 @@ void PlayerGnap::kissPlatypus(int callback) {
_vm->_gameSys->setAnimation(0, 0, 0);
_actionStatus = -1;
} else {
- playSequence(getSequenceId(gskScratchingHead, plat._pos) | 0x10000);
+ playSequence(getSequenceId(kGSScratchingHead, plat._pos) | 0x10000);
}
}
void PlayerGnap::useDeviceOnPlatypus() {
PlayerPlat& plat = *_vm->_plat;
- playSequence(makeRid(1, getSequenceId(gskPullOutDevice, plat._pos)));
+ playSequence(makeRid(1, getSequenceId(kGSPullOutDevice, plat._pos)));
if (plat._idleFacing != kDirNone) {
_vm->_gameSys->insertSequence(makeRid(1, 0x7D5), plat._id,
@@ -542,7 +542,7 @@ void PlayerGnap::useDeviceOnPlatypus() {
plat._sequenceDatNum = 1;
}
- int newSequenceId = getSequenceId(gskUseDevice, Common::Point(0, 0));
+ int newSequenceId = getSequenceId(kGSUseDevice, Common::Point(0, 0));
_vm->_gameSys->insertSequence(makeRid(1, newSequenceId), _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncWait, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
@@ -1024,7 +1024,7 @@ int PlayerGnap::getShowSequenceId(int index, int gridX, int gridY) {
//Skip 29
default:
_idleFacing = facing;
- sequenceId = getSequenceId(gskImpossible, Common::Point(0, 0));
+ sequenceId = getSequenceId(kGSImpossible, Common::Point(0, 0));
break;
}
@@ -1039,58 +1039,58 @@ void PlayerGnap::idle() {
_sequenceId == 0x833 || _sequenceId == 0x834 ||
_sequenceId == 0x885 || _sequenceId == 0x7A8 ||
_sequenceId == 0x831 || _sequenceId == 0x89A)) {
- _vm->_gameSys->insertSequence(getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, _id,
+ _vm->_gameSys->insertSequence(getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
- _sequenceId = getSequenceId(gskIdle, Common::Point(0, 0));
+ _sequenceId = getSequenceId(kGSIdle, Common::Point(0, 0));
_sequenceDatNum = 1;
}
}
void PlayerGnap::actionIdle(int sequenceId) {
if (_sequenceId != -1 && ridToDatIndex(sequenceId) == _sequenceDatNum && ridToEntryIndex(sequenceId) == _sequenceId) {
- _vm->_gameSys->insertSequence(getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, _id,
+ _vm->_gameSys->insertSequence(getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, _id,
makeRid(_sequenceDatNum, _sequenceId), _id,
kSeqSyncExists, 0, 75 * _pos.x - _gridX, 48 * _pos.y - _gridY);
- _sequenceId = getSequenceId(gskIdle, Common::Point(0, 0));
+ _sequenceId = getSequenceId(kGSIdle, Common::Point(0, 0));
_sequenceDatNum = 1;
}
}
void PlayerGnap::playImpossible(Common::Point gridPos) {
- playSequence(getSequenceId(gskImpossible, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSImpossible, gridPos) | 0x10000);
}
void PlayerGnap::playScratchingHead(Common::Point gridPos) {
- playSequence(getSequenceId(gskScratchingHead, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSScratchingHead, gridPos) | 0x10000);
}
void PlayerGnap::playMoan1(Common::Point gridPos) {
- playSequence(getSequenceId(gskMoan1, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSMoan1, gridPos) | 0x10000);
}
void PlayerGnap::playMoan2(Common::Point gridPos) {
- playSequence(getSequenceId(gskMoan2, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSMoan2, gridPos) | 0x10000);
}
void PlayerGnap::playBrainPulsating(Common::Point gridPos) {
- playSequence(getSequenceId(gskBrainPulsating, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSBrainPulsating, gridPos) | 0x10000);
}
void PlayerGnap::playPullOutDevice(Common::Point gridPos) {
- playSequence(getSequenceId(gskPullOutDevice, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSPullOutDevice, gridPos) | 0x10000);
}
void PlayerGnap::playPullOutDeviceNonWorking(Common::Point gridPos) {
- playSequence(getSequenceId(gskPullOutDeviceNonWorking, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSPullOutDeviceNonWorking, gridPos) | 0x10000);
}
void PlayerGnap::playUseDevice(Common::Point gridPos) {
- playSequence(getSequenceId(gskUseDevice, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSUseDevice, gridPos) | 0x10000);
}
void PlayerGnap::playIdle(Common::Point gridPos) {
- playSequence(getSequenceId(gskIdle, gridPos) | 0x10000);
+ playSequence(getSequenceId(kGSIdle, gridPos) | 0x10000);
}
void PlayerGnap::playShowItem(int itemIndex, int gridLookX, int gridLookY) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 0bda4b4..c727307 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -120,16 +120,16 @@ enum {
};
enum {
- gskPullOutDevice = 0,
- gskPullOutDeviceNonWorking = 1,
- gskIdle = 2,
- gskBrainPulsating = 3,
- gskImpossible = 4,
- gskScratchingHead = 5,
- gskDeflect = 6,
- gskUseDevice = 7,
- gskMoan1 = 8,
- gskMoan2 = 9
+ kGSPullOutDevice = 0,
+ kGSPullOutDeviceNonWorking = 1,
+ kGSIdle = 2,
+ kGSBrainPulsating = 3,
+ kGSImpossible = 4,
+ kGSScratchingHead = 5,
+ kGSDeflect = 6,
+ kGSUseDevice = 7,
+ kGSMoan1 = 8,
+ kGSMoan2 = 9
};
enum {
@@ -200,47 +200,6 @@ enum {
kGFUnk31 = 31
};
-/*
- Game flags
- 0 1 With Platypus
- 1 2 Mud taken
- 2 4 Needle taken
- 3 8 Twig taken
- 4 0x10
- 5 0x20 Keys taken
- 6 0x40 Grass taken
- 7 0x80 Barn padlock open
- 8 0x100 Truck filled with gas
- 9 0x200 Truck keys used
- 10 0x400 Platypus disguised
- 11 0x800 Scene flag 1
- 12 0x1000 Gnap controls toy ufo
- 13 0x2000
- 14 0x4000
- 15 0x8000 Spring taken
- 16 0x10000
- 17 0x20000 Joint taken
- 18 0x40000
- 19 0x80000 Grocery store hat taken
- 20 0x100000 Picture taken
- 21 0x200000
- 22 0x400000
- 23 0x800000
- 24 0x1000000
- 25 0x2000000
- 26 0x4000000 Platypus talking with toy shop assistant
- 27 0x8000000
- 28 0x10000000
- 29 0x20000000 Gas taken
- 30 0x40000000
- 31 0x80000000
-*/
-
- // 0x7AB Gnap walks to the right 1
- // 0x7AC Gnap walks to the right 2
- // 0x7AF Gnap walks to the left 1
- // 0x7B0 Gnap walks to the left 2
-
struct GnapSavegameHeader {
uint8 _version;
Common::String _saveName;
@@ -263,7 +222,6 @@ private:
public:
Common::RandomSource *_random;
-
Common::PEResources *_exe;
DatManager *_dat;
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index b0acf8f..f9bc451 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -160,7 +160,7 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1))
gnap._actionStatus = kAS01LookSpaceship;
break;
case GRAB_CURSOR:
@@ -183,7 +183,7 @@ void Scene01::run() {
gnap.playScratchingHead(Common::Point(3, 3));
break;
case GRAB_CURSOR:
- gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 3)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 3)) | 0x10000, 1);
gnap._actionStatus = kAS01TakeMud;
break;
case TALK_CURSOR:
@@ -203,17 +203,17 @@ void Scene01::run() {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(7, 2)) | 0x10000, 1);
gnap._actionStatus = kAS01LookPigs;
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(7, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(7, 2)) | 0x10000, 1);
gnap._actionStatus = kAS01UsePigs;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(7, 2)) | 0x10000, 1);
gnap._actionStatus = kAS01LookPigs;
break;
case PLAT_CURSOR:
@@ -510,7 +510,7 @@ void Scene02::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
gnap._idleFacing = kDirUpRight;
Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
- gnap.walkTo(destPos, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(destPos, 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[1] + Common::Point(0, 1), 9, 8);
@@ -521,14 +521,14 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1))
gnap._actionStatus = kAS02GrabChicken;
else
gnap._actionStatus = -1;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[1], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS02TalkChicken;
break;
case PLAT_CURSOR:
@@ -543,7 +543,7 @@ void Scene02::run() {
case kHS02Truck2:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemKeys) {
- if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 2)) | 0x10000, 1)) {
_vm->setGrabCursorSprite(-1);
_vm->invRemove(kItemKeys);
if (_vm->isFlag(kGFTruckFilledWithGas))
@@ -553,7 +553,7 @@ void Scene02::run() {
}
} else if (_vm->_grabCursorSpriteIndex == kItemGas) {
_vm->_hotspots[kHS02WalkArea4]._flags |= SF_WALKABLE;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 2)) | 0x10000, 1))
gnap._actionStatus = kAS02UseGasWithTruck;
_vm->_hotspots[kHS02WalkArea4]._flags &= ~SF_WALKABLE;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -565,7 +565,7 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
if (_vm->isFlag(kGFTruckKeysUsed)) {
- if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 2)) | 0x10000, 1)) {
if (_vm->isFlag(kGFTruckFilledWithGas))
gnap._actionStatus = kAS02UseTruckGas;
else
@@ -573,7 +573,7 @@ void Scene02::run() {
}
} else {
gnap._idleFacing = kDirUnk4;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(2, 2)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 2)) | 0x10000, 1))
gnap._actionStatus = kAS02UseTruckNoKeys;
}
break;
@@ -597,7 +597,7 @@ void Scene02::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS02GrabTruckGrill;
break;
case TALK_CURSOR:
@@ -1028,7 +1028,7 @@ void Scene03::run() {
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags |= SF_WALKABLE;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[3] + Common::Point(1, 1)) | 0x10000, 1))
gnap._actionStatus = kAS03GrabCreek;
if (!_vm->isFlag(kGFPlatypus))
_vm->_hotspots[kHS03PlatypusWalkArea]._flags &= ~SF_WALKABLE;
@@ -1058,7 +1058,7 @@ void Scene03::run() {
gnap.walkTo(Common::Point(7, 6), 0, 0x107B5, 1);
gnap._actionStatus = kAS03FreePlatypus;
} else {
- gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
gnap._actionStatus = kAS03GrabScaredPlatypus;
else
@@ -1070,7 +1070,7 @@ void Scene03::run() {
gnap.playBrainPulsating(Common::Point(8, 4));
} else {
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[4], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_platypusScared)
gnap._actionStatus = kAS03HypnotizeScaredPlat;
else
@@ -1519,7 +1519,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS04GrabAxe;
_vm->setFlag(kGFPlatypusTalkingToAssistant);
updateHotspots();
@@ -1547,7 +1547,7 @@ void Scene04::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1))
gnap._actionStatus = kAS04GrabDog;
break;
case TALK_CURSOR:
@@ -1619,7 +1619,7 @@ void Scene04::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- if (gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, gnap.getSequenceId(gskIdle, Common::Point(10, 2)) | 0x10000, 1)) {
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[7], 0, gnap.getSequenceId(kGSIdle, Common::Point(10, 2)) | 0x10000, 1)) {
if (_triedWindow) {
gnap._actionStatus = kAS04GetKeyAnother;
} else {
@@ -1996,7 +1996,7 @@ void Scene05::run() {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
gnap._idleFacing = kDirUpRight;
Common::Point checkPt = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
- gnap.walkTo(checkPt, 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(checkPt, 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0)
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1), 9, 7);
@@ -2007,12 +2007,12 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05GrabChicken;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[5], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05TalkChicken;
break;
case PLAT_CURSOR:
@@ -2034,7 +2034,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05GrabLadder;
break;
case TALK_CURSOR:
@@ -2059,7 +2059,7 @@ void Scene05::run() {
} else if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemNeedle) {
if (gnap.walkTo(_vm->_hotspotsWalkPos[2], 0,
- gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
+ gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1))
gnap._actionStatus = kAS05PickPadlock;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 7, 4);
@@ -2070,7 +2070,7 @@ void Scene05::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS05TryPickPadlock;
break;
case TALK_CURSOR:
@@ -2469,11 +2469,11 @@ void Scene06::run() {
break;
case TALK_CURSOR:
if (_horseTurnedBack) {
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(3, 2)) | 0x10000, 1);
} else {
gnap._idleFacing = kDirBottomLeft;
_vm->_hotspots[kHS06WalkArea5]._flags |= SF_WALKABLE;
- gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
gnap._actionStatus = kAS06TalkToHorse;
}
@@ -2783,10 +2783,10 @@ void Scene07::run() {
gnap.playPullOutDevice(Common::Point(3, 3));
gameSys.setAnimation(0x8E, 1, 2);
gameSys.insertSequence(0x8E, 1, 141, 1, kSeqSyncWait, 0, 0, 0);
- gameSys.insertSequence(gnap.getSequenceId(gskUseDevice, Common::Point(0, 0)) | 0x10000, gnap._id,
+ gameSys.insertSequence(gnap.getSequenceId(kGSUseDevice, Common::Point(0, 0)) | 0x10000, gnap._id,
makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
- gnap._sequenceId = gnap.getSequenceId(gskUseDevice, Common::Point(0, 0));
+ gnap._sequenceId = gnap.getSequenceId(kGSUseDevice, Common::Point(0, 0));
gnap._sequenceDatNum = 1;
break;
case TALK_CURSOR:
@@ -3070,7 +3070,7 @@ void Scene08::run() {
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
gnap.actionIdle(0x14D);
- gnap.walkTo(Common::Point(8, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(8, 6), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS08TalkMan;
break;
case PLAT_CURSOR:
@@ -3105,7 +3105,7 @@ void Scene08::run() {
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
gnap.actionIdle(0x14D);
- gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS08TalkDog;
break;
case PLAT_CURSOR:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 9d6838e..0993cf5 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -166,7 +166,7 @@ void Scene10::run() {
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
gnap.actionIdle(0x10C);
- gnap.walkTo(Common::Point(4, 8), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(4, 8), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS10AnnoyCook;
break;
case PLAT_CURSOR:
@@ -259,7 +259,7 @@ void Scene10::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(10, 5)) | 0x10000);
+ gnap.playSequence(gnap.getSequenceId(kGSDeflect, Common::Point(10, 5)) | 0x10000);
break;
case GRAB_CURSOR:
gnap.actionIdle(0x10C);
@@ -669,7 +669,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS11TalkGoggleGuy;
break;
}
@@ -687,7 +687,7 @@ void Scene11::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(3, 6)) | 0x10000);
+ gnap.playSequence(gnap.getSequenceId(kGSDeflect, Common::Point(3, 6)) | 0x10000);
break;
case GRAB_CURSOR:
gnap.walkTo(Common::Point(5, 6), 0, 0x107BC, 1);
@@ -695,7 +695,7 @@ void Scene11::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirBottomLeft;
- gnap.walkTo(Common::Point(5, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(5, 6), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS11TalkHookGuy;
break;
case PLAT_CURSOR:
@@ -1085,7 +1085,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(3, 7), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS12TalkToothGuy;
break;
case PLAT_CURSOR:
@@ -1122,7 +1122,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(6, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(6, 6), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS12TalkBarkeeper;
break;
case PLAT_CURSOR:
@@ -1155,7 +1155,7 @@ void Scene12::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS12TalkBeardGuy;
break;
case PLAT_CURSOR:
@@ -1637,7 +1637,7 @@ void Scene13::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(7, 7), -1, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)), 1);
+ gnap.walkTo(Common::Point(7, 7), -1, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)), 1);
break;
case PLAT_CURSOR:
gnap.playImpossible();
@@ -1652,7 +1652,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(9, 6)));
+ gnap.playSequence(gnap.getSequenceId(kGSDeflect, Common::Point(9, 6)));
gnap.walkTo(gnap._pos, 0, -1, 1);
gnap._actionStatus = kAS13Wait;
break;
@@ -1674,7 +1674,7 @@ void Scene13::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playSequence(gnap.getSequenceId(gskDeflect, Common::Point(5, 9)));
+ gnap.playSequence(gnap.getSequenceId(kGSDeflect, Common::Point(5, 9)));
gnap.walkTo(gnap._pos, 0, -1, 1);
gnap._actionStatus = kAS13Wait;
break;
@@ -2625,7 +2625,7 @@ void Scene17::run() {
case kHS17Phone1:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 1, 3);
@@ -2637,7 +2637,7 @@ void Scene17::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk18)) {
platHangUpPhone();
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[2]) | 0x10000, 1);
gnap._actionStatus = kAS17GetCoinFromPhone;
} else
gnap.playImpossible();
@@ -2666,7 +2666,7 @@ void Scene17::run() {
case kHS17Phone2:
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemDiceQuarterHole) {
- gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS17PutCoinIntoPhone;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[2], 1, 3);
@@ -2680,7 +2680,7 @@ void Scene17::run() {
platHangUpPhone();
_vm->_isLeavingScene = true;
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[2], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS17GnapUsePhone;
_vm->setFlag(kGFSpringTaken);
} else
@@ -3520,7 +3520,7 @@ void Scene18::run() {
gnap.playScratchingHead(Common::Point(3, 2));
break;
case GRAB_CURSOR:
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, gnap.getSequenceId(gskPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS18CowboyHat], 0, gnap.getSequenceId(kGSPullOutDeviceNonWorking, Common::Point(3, 2)) | 0x10000, 1);
break;
case TALK_CURSOR:
case PLAT_CURSOR:
@@ -3561,7 +3561,7 @@ void Scene18::run() {
if (!_vm->isFlag(kGFTruckKeysUsed)) {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan] + Common::Point((gnap._pos.x < _vm->_s18GarbageCanPos ? 1 : -1), 0),
-1, -1, 1);
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(_vm->_s18GarbageCanPos, gnap._pos.y)) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, Common::Point(_vm->_s18GarbageCanPos, gnap._pos.y)) | 0x10000, 1);
gnap._actionStatus = kAS18GrabGarbageCanFromStreet;
} else if (!_vm->isFlag(kGFTruckFilledWithGas)) {
if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS18GarbageCan], 0, -1, 1))
@@ -3616,7 +3616,7 @@ void Scene18::run() {
}
} else {
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 8)) | 0x10000, 1);
gnap._actionStatus = kAS18OpenTopValve;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS18HydrantTopValve], 1, 5);
@@ -3658,7 +3658,7 @@ void Scene18::run() {
putDownGarbageCan(0);
}
if (_vm->_grabCursorSpriteIndex == kItemWrench) {
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, Common::Point(2, 8)) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 8)) | 0x10000, 1);
if (_vm->isFlag(kGFTruckKeysUsed))
gnap._actionStatus = kAS18OpenRightValveWithGarbageCan;
else
@@ -4240,7 +4240,7 @@ void Scene19::run() {
break;
case GRAB_CURSOR:
if (!_vm->isFlag(kGFPictureTaken)) {
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot]) | 0x10000, 1);
gnap._actionStatus = kAS19GrabPicture;
}
break;
@@ -4264,7 +4264,7 @@ void Scene19::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS19TalkShopAssistant;
break;
case GRAB_CURSOR:
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index ff315c5..81bc8c5 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -374,7 +374,7 @@ void Scene20::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
if (_stonerGuyShowingJoint)
gnap._actionStatus = kAS20GrabJoint;
else
@@ -382,7 +382,7 @@ void Scene20::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20StonerGuy], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
if (_vm->isFlag(kGFJointTaken))
gnap._actionStatus = kAS20TalkStonerGuyNoJoint;
else
@@ -408,12 +408,12 @@ void Scene20::run() {
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS20GrabGroceryStoreGuy;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS20TalkGroceryStoreGuy;
break;
case PLAT_CURSOR:
@@ -428,7 +428,7 @@ void Scene20::run() {
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemCowboyHat) {
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS20SwitchGroceryStoreHat;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(_vm->_hotspotsWalkPos[kHS20GroceryStoreHat], 1, 6);
@@ -440,7 +440,7 @@ void Scene20::run() {
case GRAB_CURSOR:
_stonerGuyShowingJoint = false;
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS20GroceryStoreGuy], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS20GrabGroceryStoreHat;
break;
case TALK_CURSOR:
@@ -629,7 +629,7 @@ void Scene20::updateAnimations() {
_vm->showCursor();
_vm->setGrabCursorSprite(kItemGroceryStoreHat);
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(Common::Point(3, 8), -1, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(3, 8), -1, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = -1;
break;
case kAS20GrabJointDone:
@@ -830,7 +830,7 @@ void Scene21::run() {
gnap.playScratchingHead(Common::Point(2, 5));
break;
case GRAB_CURSOR:
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[kHS21Banana]) | 0x10000, 1);
gnap.playPullOutDevice(Common::Point(2, 5));
gnap.playUseDevice();
gnap._actionStatus = kAS21GrabBanana;
@@ -847,7 +847,7 @@ void Scene21::run() {
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemGroceryStoreHat) {
_vm->_newSceneNum = 47;
- gnap.walkTo(Common::Point(4, 6), 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(4, 6), 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS21UseHatWithOldLady;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
gnap.playShowCurrItem(Common::Point(4, 6), 7, 4);
@@ -859,13 +859,13 @@ void Scene21::run() {
case GRAB_CURSOR:
gnap._idleFacing = kDirUpLeft;
_vm->_hotspots[kHS21WalkArea1]._flags |= SF_WALKABLE;
- gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(7, 6), 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS21GrabOldLady;
_vm->_hotspots[kHS21WalkArea1]._flags &= ~SF_WALKABLE;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS21OldLady], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS21TalkOldLady;
break;
case PLAT_CURSOR:
@@ -1173,7 +1173,7 @@ void Scene22::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS22Cashier], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS22TalkCashier;
break;
case PLAT_CURSOR:
@@ -1375,7 +1375,7 @@ void Scene23::run() {
if (_vm->isFlag(kGFSceneFlag1))
gnap.playMoan2();
else {
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS23LookCereals;
}
break;
@@ -1384,7 +1384,7 @@ void Scene23::run() {
gnap.playImpossible();
else {
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS23Cereals], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
_vm->setFlag(kGFSceneFlag1);
gnap._actionStatus = kAS23GrabCereals;
_vm->invAdd(kItemCereals);
@@ -1651,7 +1651,7 @@ void Scene24::run() {
_vm->_isLeavingScene = true;
_vm->_newSceneNum = 20;
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS24LeaveScene;
plat.walkTo(_vm->_hotspotsWalkPos[kHS24ExitOutsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
}
@@ -1889,7 +1889,7 @@ void Scene25::run() {
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTickets) {
gnap._actionStatus = kAS25ShowTicketToVendor;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskIdle, Common::Point(9, 4)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(kGSIdle, Common::Point(9, 4)) | 0x10000, 1);
gnap.playPullOutDevice();
gnap.playUseDevice();
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1903,7 +1903,7 @@ void Scene25::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS25TicketVendor], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS25TalkTicketVendor;
break;
case GRAB_CURSOR:
@@ -2456,7 +2456,7 @@ void Scene27::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS27Janitor], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS27TalkJanitor;
break;
case GRAB_CURSOR:
@@ -2479,7 +2479,7 @@ void Scene27::run() {
break;
case GRAB_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS27Bucket]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[kHS27Bucket]) | 0x10000, 1);
gnap._actionStatus = kAS27GrabBucket;
break;
case TALK_CURSOR:
@@ -2827,7 +2827,7 @@ void Scene28::run() {
case GRAB_CURSOR:
if (_vm->isFlag(kGFUnk21)) {
if (!_vm->invHas(kItemHorn)) {
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28Horn]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[kHS28Horn]) | 0x10000, 1);
gnap._actionStatus = kAS28GrabHornSuccess;
}
} else {
@@ -2876,7 +2876,7 @@ void Scene28::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(Common::Point(5, 8), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(5, 8), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS28TalkClown;
break;
case GRAB_CURSOR:
@@ -2912,7 +2912,7 @@ void Scene28::run() {
gnap.playScratchingHead(Common::Point(8, 6));
break;
case GRAB_CURSOR:
- gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, 0, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[kHS28EmptyBucket]) | 0x10000, 1);
gnap._actionStatus = kAS28GrabEmptyBucket;
break;
case TALK_CURSOR:
@@ -3213,7 +3213,7 @@ void Scene29::run() {
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemBanana) {
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS29Monkey], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS29UseBananaWithMonkey;
_vm->_newSceneNum = 51;
_vm->_isLeavingScene = true;
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 4832ce1..b700d6e 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -419,7 +419,7 @@ void Scene31::run() {
if (gnap._actionStatus < 0 || gnap._actionStatus == kAS31PlatMeasuringClown) {
if (_vm->_grabCursorSpriteIndex == kItemEmptyBucket && _beerGuyDistracted) {
_vm->setGrabCursorSprite(-1);
- gnap.walkTo(gnap._pos, -1, gnap.getSequenceId(gskIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
+ gnap.walkTo(gnap._pos, -1, gnap.getSequenceId(kGSIdle, _vm->_hotspotsWalkPos[kHS31BeerBarrel]) | 0x10000, 1);
_clerkMeasureMaxCtr += 5;
gameSys.insertSequence(0xF8, 59, 0, 0, kSeqNone, 0, 0, 0);
gnap.playPullOutDevice(Common::Point(6, 8));
@@ -911,14 +911,14 @@ void Scene33::run() {
switch (_vm->_verbCursor) {
case GRAB_CURSOR:
gnap._idleFacing = kDirBottomRight;
- if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(gskIdle, Common::Point(0, 0)) | 0x10000, 1))
+ if (gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1))
gnap._actionStatus = kAS33UseChicken;
else
gnap._actionStatus = -1;
break;
case TALK_CURSOR:
gnap._idleFacing = kDirBottomRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS33Chicken], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS33TalkChicken;
break;
case LOOK_CURSOR:
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index f6cb57c..3c67dd6 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -418,7 +418,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(4, 7), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS41TalkToyVendor;
break;
case PLAT_CURSOR:
@@ -447,7 +447,7 @@ void Scene41::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(7, 7), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(7, 7), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
break;
case PLAT_CURSOR:
gnap.playImpossible();
@@ -932,7 +932,7 @@ void Scene42::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS42BBQVendor], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS42TalkBBQVendor;
break;
case GRAB_CURSOR:
@@ -1388,7 +1388,7 @@ void Scene43::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(Common::Point(5, 8), 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(Common::Point(5, 8), 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -1842,7 +1842,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS44KissingLady], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = 1;
break;
case PLAT_CURSOR:
@@ -1896,7 +1896,7 @@ void Scene44::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS44SpringGuy], -1, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
break;
case GRAB_CURSOR:
case PLAT_CURSOR:
@@ -2637,7 +2637,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpLeft;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS46SackGuy], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = 2;
break;
case GRAB_CURSOR:
@@ -2658,7 +2658,7 @@ void Scene46::run() {
break;
case TALK_CURSOR:
gnap._idleFacing = kDirUpRight;
- gnap.walkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, gnap.getSequenceId(gskBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
+ gnap.walkTo(_vm->_hotspotsWalkPos[kHS46ItchyGuy], 0, gnap.getSequenceId(kGSBrainPulsating, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = 1;
break;
case GRAB_CURSOR:
Commit: 2aaebf0ae984db39a96b3fc399be952479c01d52
https://github.com/scummvm/scummvm/commit/2aaebf0ae984db39a96b3fc399be952479c01d52
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-11T12:12:02+02:00
Commit Message:
GNAP: Use enum values for _sceneClickedHotspot in scene 53
Changed paths:
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group5.cpp
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index f9bc451..1b82fac 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -115,7 +115,6 @@ void Scene01::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
-
case kHS01Device:
if (gnap._actionStatus < 0) {
_vm->runMenu();
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 3f21752..2788a43 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -292,22 +292,22 @@ void Scene53::run() {
_vm->updateGrabCursorSprite(0, 0);
switch (_vm->_sceneClickedHotspot) {
- case 1:
+ case kHS53Device:
if (gnap._actionStatus < 0) {
_vm->runMenu();
updateHotspots();
}
break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
+ case kHS53PhoneKey1:
+ case kHS53PhoneKey2:
+ case kHS53PhoneKey3:
+ case kHS53PhoneKey4:
+ case kHS53PhoneKey5:
+ case kHS53PhoneKey6:
+ case kHS53PhoneKey7:
+ case kHS53PhoneKey8:
+ case kHS53PhoneKey9:
+ case kHS53PhoneKey0:
_vm->stopSound(0xA0);
++phoneNumberLen;
phoneNumber = pressPhoneNumberButton(phoneNumber, _vm->_sceneClickedHotspot - 1);
@@ -349,11 +349,11 @@ void Scene53::run() {
}
}
break;
- case 12:
- case 13:
+ case kHS53PhoneKeySharp:
+ case kHS53PhoneKeyStar:
pressPhoneNumberButton(0, _vm->_sceneClickedHotspot - 1);
break;
- case 14:
+ case kHS53PhoneExit:
if (gnap._actionStatus < 0) {
gnap._actionStatus = 1;
if (_vm->isFlag(kGFSpringTaken)) {
Commit: f467db5ed23cdaa96fb0601ae1b05853f44e3356
https://github.com/scummvm/scummvm/commit/f467db5ed23cdaa96fb0601ae1b05853f44e3356
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-12T00:33:47+02:00
Commit Message:
GNAP: Add music when game is paused
Changed paths:
A engines/gnap/music.cpp
A engines/gnap/music.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/menu.cpp
engines/gnap/module.mk
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 518dda2..24de6ea 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -99,10 +99,12 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine::syncSoundSettings();
_scene = nullptr;
+ _music = nullptr;
}
GnapEngine::~GnapEngine() {
delete _random;
+ delete _music;
}
Common::Error GnapEngine::run() {
@@ -263,7 +265,7 @@ void GnapEngine::pauseGame() {
_gameSys->insertSpriteDrawItem(_pauseSprite, (800 - _pauseSprite->w) / 2, (600 - _pauseSprite->h) / 2, 356);
_lastUpdateClock = 0;
gameUpdateTick();
- // TODO playMidi("pause.mid");
+ playMidi("pause.mid");
_isPaused = true;
}
}
@@ -275,7 +277,7 @@ void GnapEngine::resumeGame() {
_lastUpdateClock = 0;
gameUpdateTick();
deleteSurface(&_pauseSprite);
- // TODO stopMidi();
+ stopMidi();
_isPaused = false;
clearAllKeyStatus1();
_mouseClickState._left = false;
@@ -1128,4 +1130,19 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
}
}
+void GnapEngine::playMidi(const char *name) {
+ if (_music)
+ return;
+
+ _music = new MusicPlayer(name);
+ _music->playSMF(true);
+}
+
+void GnapEngine::stopMidi() {
+ if (_music) {
+ _music->stop();
+ delete _music;
+ _music = nullptr;
+ }
+}
} // End of namespace Gnap
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index c727307..2119ad6 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -43,6 +43,7 @@
#include "gnap/resource.h"
#include "gnap/scenes/scenecore.h"
#include "gnap/character.h"
+#include "gnap/music.h"
struct ADGameDescription;
@@ -53,6 +54,7 @@ class SequenceResource;
class SpriteResource;
class GameSys;
class SoundMan;
+class MusicPlayer;
#define GNAP_SAVEGAME_VERSION 1
@@ -78,7 +80,8 @@ struct Hotspot {
const int kMaxTimers = 10;
enum GnapDebugChannels {
- kDebugBasic = 1 << 0
+ kDebugBasic = 1 << 0,
+ kDebugMusic = 1 << 1
};
enum {
@@ -234,6 +237,7 @@ public:
Scene *_scene;
PlayerGnap *_gnap;
PlayerPlat *_plat;
+ MusicPlayer *_music;
int _lastUpdateClock;
@@ -453,6 +457,9 @@ public:
int toyUfoGetSequenceId();
bool toyUfoCheckTimer();
void toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY, int maxY, int animationIndex);
+
+ void playMidi(const char *name);
+ void stopMidi();
};
} // End of namespace Gnap
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 89d14eb..1ce2751 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -496,6 +496,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
playMidi("pause.mid", 0);
}
*/
+ warning("TODO: playMidi");
} else if (i == 1) {
_gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078E);
_gameSys->insertDirtyRect(dirtyRect);
diff --git a/engines/gnap/module.mk b/engines/gnap/module.mk
index 5305299..ab507cb 100644
--- a/engines/gnap/module.mk
+++ b/engines/gnap/module.mk
@@ -9,6 +9,7 @@ MODULE_OBJS := \
gnap.o \
grid.o \
menu.o \
+ music.o \
resource.o \
sound.o \
scenes/arcade.o \
diff --git a/engines/gnap/music.cpp b/engines/gnap/music.cpp
new file mode 100644
index 0000000..b42f6e9
--- /dev/null
+++ b/engines/gnap/music.cpp
@@ -0,0 +1,108 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+// MIDI and digital music class
+
+#include "audio/mididrv.h"
+#include "audio/midiparser.h"
+#include "common/debug.h"
+#include "common/file.h"
+
+#include "gnap/music.h"
+#include "gnap/gnap.h"
+
+namespace Gnap {
+
+MusicPlayer::MusicPlayer(const char *filename) : _filename(filename) {
+
+ MidiPlayer::createDriver();
+
+ int ret = _driver->open();
+ if (ret == 0) {
+ if (_nativeMT32)
+ _driver->sendMT32Reset();
+ else
+ _driver->sendGMReset();
+
+ // TODO: Load cmf.ins with the instrument table. It seems that an
+ // interface for such an operation is supported for AdLib. Maybe for
+ // this card, setting instruments is necessary.
+
+ _driver->setTimerCallback(this, &timerCallback);
+ }
+}
+
+void MusicPlayer::sendToChannel(byte channel, uint32 b) {
+ if (!_channelsTable[channel]) {
+ _channelsTable[channel] = (channel == 9) ? _driver->getPercussionChannel() : _driver->allocateChannel();
+ // If a new channel is allocated during the playback, make sure
+ // its volume is correctly initialized.
+ if (_channelsTable[channel])
+ _channelsTable[channel]->volume(_channelsVolume[channel] * _masterVolume / 255);
+ }
+
+ if (_channelsTable[channel])
+ _channelsTable[channel]->send(b);
+}
+
+void MusicPlayer::playSMF(bool loop) {
+ Common::StackLock lock(_mutex);
+
+ stop();
+
+ // Load MIDI resource data
+ Common::File musicFile;
+ musicFile.open(_filename);
+ if (!musicFile.isOpen()) {
+ debugC(2, kDebugMusic, "Cannot open music file %s", _filename);
+ return;
+ }
+ int midiMusicSize = musicFile.size();
+ free(_midiData);
+ _midiData = (byte *)malloc(midiMusicSize);
+ musicFile.read(_midiData, midiMusicSize);
+ musicFile.close();
+
+ MidiParser *parser = MidiParser::createParser_SMF();
+ if (parser->loadMusic(_midiData, midiMusicSize)) {
+ parser->setTrack(0);
+ parser->setMidiDriver(this);
+ parser->setTimerRate(_driver->getBaseTempo());
+ parser->property(MidiParser::mpCenterPitchWheelOnUnload, 1);
+
+ _parser = parser;
+
+ syncVolume();
+
+ _isLooping = loop;
+ _isPlaying = true;
+ } else {
+ debugC(2, kDebugMusic, "Cannot play music file %s", _filename);
+ delete parser;
+ }
+}
+
+void MusicPlayer::stop() {
+ Audio::MidiPlayer::stop();
+}
+
+} // End of namespace Gnap
diff --git a/engines/gnap/music.h b/engines/gnap/music.h
new file mode 100644
index 0000000..c593893
--- /dev/null
+++ b/engines/gnap/music.h
@@ -0,0 +1,50 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+// Music class
+
+#ifndef GNAP_MUSIC_H
+#define GNAP_MUSIC_H
+
+#include "audio/midiplayer.h"
+
+namespace Gnap {
+
+// Taken from Draci, which took it from MADE, which took it from SAGA.
+
+class MusicPlayer : public Audio::MidiPlayer {
+public:
+ MusicPlayer(const char *filename);
+
+ void playSMF(bool loop);
+ void stop();
+
+ // Overload Audio::MidiPlayer method
+ virtual void sendToChannel(byte channel, uint32 b);
+
+protected:
+ Common::String _filename;
+};
+
+} // End of namespace Gnap
+
+#endif
Commit: af1cf151de9ffc9d040a4e52b57fe3dfd754969b
https://github.com/scummvm/scummvm/commit/af1cf151de9ffc9d040a4e52b57fe3dfd754969b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-12T07:53:06+02:00
Commit Message:
GNAP: Use Common::Rect for hotspots
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 24de6ea..d9c0971 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -324,26 +324,24 @@ void GnapEngine::delayTicksCursor(int a1) {
void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags,
int16 walkX, int16 walkY) {
- _hotspots[index]._x1 = x1;
- _hotspots[index]._y1 = y1;
- _hotspots[index]._x2 = x2;
- _hotspots[index]._y2 = y2;
+ _hotspots[index]._rect = Common::Rect(x1, y1, x2, y2);
_hotspots[index]._flags = flags;
_hotspots[index]._id = index;
_hotspotsWalkPos[index].x = walkX;
_hotspotsWalkPos[index].y = walkY;
}
-int GnapEngine::getHotspotIndexAtPos(int16 x, int16 y) {
- for (int i = 0; i < _hotspotsCount; ++i)
- if (!_hotspots[i].isFlag(SF_DISABLED) && _hotspots[i].isPointInside(x, y))
+int GnapEngine::getHotspotIndexAtPos(Common::Point pos) {
+ for (int i = 0; i < _hotspotsCount; ++i) {
+ if (!_hotspots[i].isFlag(SF_DISABLED) && _hotspots[i].isPointInside(pos))
return i;
+ }
return -1;
}
void GnapEngine::updateCursorByHotspot() {
if (!_isWaiting) {
- int hotspotIndex = getHotspotIndexAtPos(_mouseX, _mouseY);
+ int hotspotIndex = getHotspotIndexAtPos(Common::Point(_mouseX, _mouseY));
if (_debugger->_showHotspotNumber) {
// NOTE This causes some display glitches so don't worry
@@ -377,10 +375,8 @@ void GnapEngine::updateCursorByHotspot() {
setCursor(kDisabledCursors[_verbCursor]);
}
// Update platypus hotspot
- _hotspots[0]._x1 = _gridMinX + 75 * _plat->_pos.x - 30;
- _hotspots[0]._y1 = _gridMinY + 48 * _plat->_pos.y - 100;
- _hotspots[0]._x2 = _gridMinX + 75 * _plat->_pos.x + 30;
- _hotspots[0]._y2 = _gridMinY + 48 * _plat->_pos.y;
+ _hotspots[0]._rect = Common::Rect(_gridMinX + 75 * _plat->_pos.x - 30, _gridMinY + 48 * _plat->_pos.y - 100
+ , _gridMinX + 75 * _plat->_pos.x + 30, _gridMinY + 48 * _plat->_pos.y);
}
int GnapEngine::getClickedHotspotId() {
@@ -388,7 +384,7 @@ int GnapEngine::getClickedHotspotId() {
if (_isWaiting)
_mouseClickState._left = false;
else if (_mouseClickState._left) {
- int hotspotIndex = getHotspotIndexAtPos(_leftClickMouseX, _leftClickMouseY);
+ int hotspotIndex = getHotspotIndexAtPos(Common::Point(_leftClickMouseX, _leftClickMouseY));
if (hotspotIndex >= 0) {
_mouseClickState._left = false;
_timers[3] = 300;
@@ -578,10 +574,8 @@ void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int
_deviceY1 = 14;
if (y2 == -1)
_deviceY2 = 79;
- _hotspots[hotspotIndex]._x1 = _deviceX1;
- _hotspots[hotspotIndex]._y1 = _deviceY1;
- _hotspots[hotspotIndex]._x2 = _deviceX2;
- _hotspots[hotspotIndex]._y2 = _deviceY2;
+
+ _hotspots[hotspotIndex]._rect = Common::Rect(_deviceX1, _deviceY1, _deviceX2, _deviceY2);
_hotspots[hotspotIndex]._flags = SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_hotspots[hotspotIndex]._id = hotspotIndex;
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 2119ad6..45ac584 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -66,15 +66,21 @@ struct MouseButtonState {
};
struct Hotspot {
- int16 _x1, _y1, _x2, _y2;
+ Common::Rect _rect;
uint16 _flags;
int _id;
- bool isPointInside(int16 x, int16 y) const {
- return x >= _x1 && x <= _x2 && y >= _y1 && y <= _y2;
+
+ bool isPointInside(Common::Point pos) const {
+ return _rect.contains(pos);
}
+
bool isFlag(uint16 flag) const {
return (_flags & flag) != 0;
}
+
+ void clearRect() {
+ _rect = Common::Rect(0, 0, 0, 0);
+ }
};
const int kMaxTimers = 10;
@@ -319,7 +325,7 @@ public:
void setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags = 0,
int16 walkX = -1, int16 walkY = -1);
- int getHotspotIndexAtPos(int16 x, int16 y);
+ int getHotspotIndexAtPos(Common::Point pos);
void updateCursorByHotspot();
int getClickedHotspotId();
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 076705c..a89c87c 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -47,16 +47,13 @@ bool GnapEngine::isPointBlocked(int gridX, int gridY) {
if (gridX < 0 || gridX >= _gridMaxX || gridY < 0 || gridY >= _gridMaxY)
return true;
- if ((_gnap->_pos == Common::Point(gridX, gridY)) || (gridX == _plat->_pos.x && gridY == _plat->_pos.y))
+ if ((_gnap->_pos == Common::Point(gridX, gridY)) || (_plat->_pos == Common::Point(gridX, gridY)))
return true;
- const int x = _gridMinX + 75 * gridX;
- const int y = _gridMinY + 48 * gridY;
+ Common::Point pos = Common::Point(_gridMinX + 75 * gridX, _gridMinY + 48 * gridY);
for (int i = 0; i < _hotspotsCount; ++i) {
- if (x >= _hotspots[i]._x1 && x <= _hotspots[i]._x2 &&
- y >= _hotspots[i]._y1 && y <= _hotspots[i]._y2 &&
- !(_hotspots[i]._flags & SF_WALKABLE))
+ if (_hotspots[i].isPointInside(pos) && !(_hotspots[i]._flags & SF_WALKABLE))
return true;
}
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 1ce2751..78bffef 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -48,36 +48,24 @@ void GnapEngine::initMenuHotspots1() {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
- _hotspots[curId]._x1 = 87 * j + 262;
- _hotspots[curId]._y1 = 74 * i + 69;
- _hotspots[curId]._x2 = _hotspots[curId]._x1 + 79;
- _hotspots[curId]._y2 = _hotspots[curId]._y1 + 66;
+ _hotspots[curId]._rect = Common::Rect(87 * j + 262, 74 * i + 69, _hotspots[curId]._rect.left + 79, _hotspots[curId]._rect.top + 66);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
++curId;
}
}
- _hotspots[curId]._x1 = 330;
- _hotspots[curId]._y1 = 350;
- _hotspots[curId]._x2 = 430;
- _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 180;
- _hotspots[curId]._y1 = 15;
- _hotspots[curId]._x2 = 620;
- _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 0;
- _hotspots[curId]._y1 = 0;
- _hotspots[curId]._x2 = 799;
- _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
@@ -88,43 +76,28 @@ void GnapEngine::initMenuHotspots2() {
int curId = 0;
for (int i = 0; i < 4; ++i) {
- _hotspots[curId]._x1 = 312;
- _hotspots[curId]._y1 = 48 * i + 85;
- _hotspots[curId]._x2 = _hotspots[curId]._x1 + 153;
- _hotspots[curId]._y2 = _hotspots[curId]._y1 + 37;
+ _hotspots[curId]._rect = Common::Rect(312, 48 * i + 85, _hotspots[curId]._rect.left + 153, _hotspots[curId]._rect.top + 37);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
}
- _hotspots[curId]._x1 = 500;
- _hotspots[curId]._y1 = 72;
- _hotspots[curId]._x2 = 527;
- _hotspots[curId]._y2 = 99;
+ _hotspots[curId]._rect = Common::Rect(500, 72, 527, 99);
_hotspots[curId]._flags = SF_DISABLED;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 330;
- _hotspots[curId]._y1 = 350;
- _hotspots[curId]._x2 = 430;
- _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 180;
- _hotspots[curId]._y1 = 15;
- _hotspots[curId]._x2 = 620;
- _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 0;
- _hotspots[curId]._y1 = 0;
- _hotspots[curId]._x2 = 799;
- _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
@@ -132,38 +105,23 @@ void GnapEngine::initMenuHotspots2() {
}
void GnapEngine::initMenuQuitQueryHotspots() {
- _hotspots[0]._x1 = 311;
- _hotspots[0]._y1 = 197;
- _hotspots[0]._x2 = 377;
- _hotspots[0]._y2 = 237;
+ _hotspots[0]._rect = Common::Rect(311, 197, 377, 237);
_hotspots[0]._flags = SF_GRAB_CURSOR;
_hotspots[0]._id = 0;
- _hotspots[1]._x1 = 403;
- _hotspots[1]._y1 = 197;
- _hotspots[1]._x2 = 469;
- _hotspots[1]._y2 = 237;
+ _hotspots[1]._rect = Common::Rect(403, 197, 469, 237);
_hotspots[1]._flags = SF_GRAB_CURSOR;
_hotspots[1]._id = 1;
- _hotspots[2]._x1 = 330;
- _hotspots[2]._y1 = 350;
- _hotspots[2]._x2 = 430;
- _hotspots[2]._y2 = 460;
+ _hotspots[2]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[2]._flags = SF_GRAB_CURSOR;
_hotspots[2]._id = 2;
- _hotspots[3]._x1 = 180;
- _hotspots[3]._y1 = 15;
- _hotspots[3]._x2 = 620;
- _hotspots[3]._y2 = 580;
+ _hotspots[3]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[3]._flags = SF_NONE;
_hotspots[3]._id = 3;
- _hotspots[4]._x1 = 0;
- _hotspots[4]._y1 = 0;
- _hotspots[4]._x2 = 799;
- _hotspots[4]._y2 = 599;
+ _hotspots[4]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[4]._flags = SF_NONE;
_hotspots[4]._id = 4;
@@ -174,53 +132,35 @@ void GnapEngine::initSaveLoadHotspots() {
int curId = 0;
for (int i = 0; i < 7; ++i ) {
- _hotspots[curId]._x1 = 288;
- _hotspots[curId]._y1 = 31 * i + 74;
- _hotspots[curId]._x2 = _hotspots[curId]._x1 + 91;
- _hotspots[curId]._y2 = _hotspots[curId]._y1 + 22;
+ _hotspots[curId]._rect = Common::Rect(288, 31 * i + 74, _hotspots[curId]._rect.left + 91, _hotspots[curId]._rect.top + 22);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
}
if (_menuStatus == 2) {
- _hotspots[curId]._x1 = 416;
- _hotspots[curId]._y1 = 160;
- _hotspots[curId]._x2 = 499;
- _hotspots[curId]._y2 = 188;
+ _hotspots[curId]._rect = Common::Rect(416, 160, 499, 188);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
}
- _hotspots[curId]._x1 = 416;
- _hotspots[curId]._y1 = 213;
- _hotspots[curId]._x2 = 499;
- _hotspots[curId]._y2 = 241;
+ _hotspots[curId]._rect = Common::Rect(416, 213, 499, 241);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 330;
- _hotspots[curId]._y1 = 350;
- _hotspots[curId]._x2 = 430;
- _hotspots[curId]._y2 = 460;
+ _hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 180;
- _hotspots[curId]._y1 = 15;
- _hotspots[curId]._x2 = 620;
- _hotspots[curId]._y2 = 580;
+ _hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
++curId;
- _hotspots[curId]._x1 = 0;
- _hotspots[curId]._y1 = 0;
- _hotspots[curId]._x2 = 799;
- _hotspots[curId]._y2 = 599;
+ _hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
_hotspots[curId]._id = curId;
@@ -229,7 +169,7 @@ void GnapEngine::initSaveLoadHotspots() {
void GnapEngine::drawInventoryFrames() {
for (int i = 0; i < 9; ++i)
- _gameSys->drawSpriteToSurface(_menuBackgroundSurface, _hotspots[i]._x1 - 93, _hotspots[i]._y1, 0x10001);
+ _gameSys->drawSpriteToSurface(_menuBackgroundSurface, _hotspots[i]._rect.left - 93, _hotspots[i]._rect.top, 0x10001);
}
void GnapEngine::insertInventorySprites() {
@@ -244,13 +184,13 @@ void GnapEngine::insertInventorySprites() {
for (int index = 0; index < 30 && _menuSpritesIndex < 9; ++index) {
if (invHas(index)) {
_gameSys->drawSpriteToSurface(_menuBackgroundSurface,
- _hotspots[_menuSpritesIndex]._x1 - 93, _hotspots[_menuSpritesIndex]._y1, 0x10000);
+ _hotspots[_menuSpritesIndex]._rect.left - 93, _hotspots[_menuSpritesIndex]._rect.top, 0x10000);
_menuInventorySprites[_menuSpritesIndex] = _gameSys->createSurface(getInventoryItemSpriteNum(index) | 0x10000);
if (index != _grabCursorSpriteIndex) {
_menuInventoryIndices[_menuSpritesIndex] = index;
_gameSys->insertSpriteDrawItem(_menuInventorySprites[_menuSpritesIndex],
- _hotspots[_menuSpritesIndex]._x1 + ((79 - _menuInventorySprites[_menuSpritesIndex]->w) / 2),
- _hotspots[_menuSpritesIndex]._y1 + ((66 - _menuInventorySprites[_menuSpritesIndex]->h) / 2),
+ _hotspots[_menuSpritesIndex]._rect.left + ((79 - _menuInventorySprites[_menuSpritesIndex]->w) / 2),
+ _hotspots[_menuSpritesIndex]._rect.top + ((66 - _menuInventorySprites[_menuSpritesIndex]->h) / 2),
261);
}
_hotspots[_menuSpritesIndex]._flags = SF_GRAB_CURSOR;
@@ -390,10 +330,7 @@ void GnapEngine::updateMenuStatusInventory() {
};
updateGrabCursorSprite(0, 0);
- _hotspots[0]._x1 = 262;
- _hotspots[0]._y1 = 69;
- _hotspots[0]._x2 = 341;
- _hotspots[0]._y2 = 135;
+ _hotspots[0]._rect = Common::Rect(262, 69, 341, 135);
_sceneClickedHotspot = -1;
if (_timers[2] == 0)
_sceneClickedHotspot = getClickedHotspotId();
@@ -403,7 +340,7 @@ void GnapEngine::updateMenuStatusInventory() {
_timers[2] = 10;
playSound(0x108F4, false);
_menuStatus = 1;
- Common::Rect dirtyRect(_hotspots[0]._x1, _hotspots[0]._y1, _hotspots[2]._x2, _hotspots[_hotspotsCount - 4]._y2);
+ Common::Rect dirtyRect(_hotspots[0]._rect.left, _hotspots[0]._rect.top, _hotspots[2]._rect.right, _hotspots[_hotspotsCount - 4]._rect.bottom);
drawInventoryFrames();
initMenuHotspots2();
removeInventorySprites();
@@ -426,8 +363,8 @@ void GnapEngine::updateMenuStatusInventory() {
} else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] == -1 && _grabCursorSpriteIndex != -1) {
_menuInventoryIndices[_sceneClickedHotspot] = _grabCursorSpriteIndex;
_gameSys->insertSpriteDrawItem(_menuInventorySprites[_sceneClickedHotspot],
- _hotspots[_sceneClickedHotspot]._x1 + ((79 - _menuInventorySprites[_sceneClickedHotspot]->w) / 2),
- _hotspots[_sceneClickedHotspot]._y1 + (66 - _menuInventorySprites[_sceneClickedHotspot]->h) / 2,
+ _hotspots[_sceneClickedHotspot]._rect.left + ((79 - _menuInventorySprites[_sceneClickedHotspot]->w) / 2),
+ _hotspots[_sceneClickedHotspot]._rect.top + (66 - _menuInventorySprites[_sceneClickedHotspot]->h) / 2,
261);
setGrabCursorSprite(-1);
} else if (_sceneClickedHotspot != -1 && _menuInventoryIndices[_sceneClickedHotspot] != -1 && _grabCursorSpriteIndex != -1) {
@@ -446,7 +383,7 @@ void GnapEngine::updateMenuStatusInventory() {
playSound(0x108AE, false);
deleteSurface(&_spriteHandle); // CHECKME
_spriteHandle = _gameSys->createSurface(0x10001);
- _gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1]._x1, _hotspots[_menuSpritesIndex - 1]._y1, 261);
+ _gameSys->insertSpriteDrawItem(_spriteHandle, _hotspots[_menuSpritesIndex - 1]._rect.left, _hotspots[_menuSpritesIndex - 1]._rect.top, 261);
setGrabCursorSprite(kCombineItems[combineIndex].resultItem);
removeInventorySprites();
insertInventorySprites();
@@ -458,10 +395,7 @@ void GnapEngine::updateMenuStatusInventory() {
}
void GnapEngine::updateMenuStatusMainMenu() {
- _hotspots[0]._x1 = 312;
- _hotspots[0]._y1 = 85;
- _hotspots[0]._x2 = 465;
- _hotspots[0]._y2 = 122;
+ _hotspots[0]._rect = Common::Rect(312, 85, 465, 122);
_sceneClickedHotspot = -1;
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
@@ -533,7 +467,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (_menuSprite1)
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
insertInventorySprites();
- Common::Rect dirtyRect(_hotspots[0]._x1, _hotspots[0]._y1, _hotspots[2]._x2, _hotspots[_hotspotsCount - 4]._y2);
+ Common::Rect dirtyRect(_hotspots[0]._rect.left, _hotspots[0]._rect.top, _hotspots[2]._rect.right, _hotspots[_hotspotsCount - 4]._rect.bottom);
_gameSys->insertDirtyRect(dirtyRect);
}
} else {
@@ -601,7 +535,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (readSavegameDescription(i + 1, savegameDescription) == 0)
strncpy(_savegameFilenames[i], savegameDescription.c_str(), 40);
_gameSys->drawTextToSurface(_savegameSprites[i], 0, 0, 255, 0, 0, _savegameFilenames[i]);
- _gameSys->insertSpriteDrawItem(_savegameSprites[i], 288, _hotspots[i]._y1, 263);
+ _gameSys->insertSpriteDrawItem(_savegameSprites[i], 288, _hotspots[i].top, 263);
}
_savegameIndex = -1;
}
@@ -890,10 +824,7 @@ void GnapEngine::updateMenuStatusSaveGame() {
}
void GnapEngine::updateMenuStatusLoadGame() {
- _hotspots[0]._x1 = 288;
- _hotspots[0]._y1 = 74;
- _hotspots[0]._x2 = 379;
- _hotspots[0]._y2 = 96;
+ _hotspots[0]._rect = Common::Rect(288, 74, 379, 96);
_sceneClickedHotspot = -1;
if (!_timers[2])
_sceneClickedHotspot = getClickedHotspotId();
@@ -922,11 +853,7 @@ void GnapEngine::updateMenuStatusLoadGame() {
}
void GnapEngine::updateMenuStatusQueryQuit() {
- _hotspots[0]._x1 = 311;
- _hotspots[0]._y1 = 197;
- _hotspots[0]._x2 = 377;
- _hotspots[0]._y2 = 237;
-
+ _hotspots[0]._rect = Common::Rect(311, 197, 377, 237);
_sceneClickedHotspot = -1;
if (!_timers[2])
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 0993cf5..7aa5d9e 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -2068,10 +2068,7 @@ void Scene15::run() {
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
- _vm->_hotspots[kHS15Platypus]._x1 = 0;
- _vm->_hotspots[kHS15Platypus]._y1 = 0;
- _vm->_hotspots[kHS15Platypus]._x2 = 0;
- _vm->_hotspots[kHS15Platypus]._y2 = 0;
+ _vm->_hotspots[kHS15Platypus].clearRect();
_vm->_sceneClickedHotspot = _vm->getClickedHotspotId();
_vm->updateGrabCursorSprite(0, 0);
@@ -3147,23 +3144,20 @@ void Scene18::updateHotspots() {
if (_vm->isFlag(kGFTruckFilledWithGas)) {
if (_vm->isFlag(kGFTruckKeysUsed)) {
_vm->_hotspots[kHS18HydrantTopValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHS18HydrantRightValve]._x1 = 148;
- _vm->_hotspots[kHS18HydrantRightValve]._y1 = 403;
+ _vm->_hotspots[kHS18HydrantRightValve]._rect.left = 148;
+ _vm->_hotspots[kHS18HydrantRightValve]._rect.top = 403;
_vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
_vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
_vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
} else {
- _vm->_hotspots[kHS18HydrantTopValve]._y1 = 246;
+ _vm->_hotspots[kHS18HydrantTopValve]._rect.top = 246;
}
} else if (_vm->isFlag(kGFBarnPadlockOpen)) {
_vm->_hotspots[kHS18HydrantRightValve]._flags = SF_DISABLED;
- _vm->_hotspots[kHS18HydrantTopValve]._x1 = 105;
- _vm->_hotspots[kHS18HydrantTopValve]._x2 = 192;
+ _vm->_hotspots[kHS18HydrantTopValve]._rect.left = 105;
+ _vm->_hotspots[kHS18HydrantTopValve]._rect.right = 192;
} else if (_vm->isFlag(kGFTruckKeysUsed)) {
- _vm->_hotspots[kHS18GarbageCan]._x1 = 115;
- _vm->_hotspots[kHS18GarbageCan]._y1 = 365;
- _vm->_hotspots[kHS18GarbageCan]._x2 = 168;
- _vm->_hotspots[kHS18GarbageCan]._y2 = 470;
+ _vm->_hotspots[kHS18GarbageCan]._rect = Common::Rect(115, 365, 168, 470);
_vm->_hotspots[kHS18GarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
_vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
_vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
@@ -3794,11 +3788,11 @@ void Scene18::run() {
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
} else {
- _vm->_hotspots[kHS18WalkArea1]._y2 += 48;
- _vm->_hotspots[kHS18WalkArea2]._x1 += 75;
+ _vm->_hotspots[kHS18WalkArea1]._rect.bottom += 48;
+ _vm->_hotspots[kHS18WalkArea2]._rect.left += 75;
plat.updateIdleSequence();
- _vm->_hotspots[kHS18WalkArea2]._x1 -= 75;
- _vm->_hotspots[kHS18WalkArea1]._y2 -= 48;
+ _vm->_hotspots[kHS18WalkArea2]._rect.left -= 75;
+ _vm->_hotspots[kHS18WalkArea1]._rect.bottom -= 48;
}
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(100) + 100;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 81bc8c5..380bb0b 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -473,9 +473,9 @@ void Scene20::run() {
if (!_vm->_isLeavingScene) {
if (plat._actionStatus < 0) {
- _vm->_hotspots[kHS20WalkArea1]._y2 += 48;
+ _vm->_hotspots[kHS20WalkArea1]._rect.bottom += 48;
plat.updateIdleSequence();
- _vm->_hotspots[kHS20WalkArea1]._y2 -= 48;
+ _vm->_hotspots[kHS20WalkArea1]._rect.bottom -= 48;
}
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 3c67dd6..810e4bf 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -303,12 +303,8 @@ void Scene41::run() {
if (!_vm->isSoundPlaying(0x1094B))
_vm->playSound(0x1094B, true);
- if (!_vm->isFlag(kGFGnapControlsToyUFO)) {
- _vm->_hotspots[kHS41ToyUfo]._x1 = _vm->_toyUfoX - 25;
- _vm->_hotspots[kHS41ToyUfo]._y1 = _vm->_toyUfoY - 20;
- _vm->_hotspots[kHS41ToyUfo]._x2 = _vm->_toyUfoX + 25;
- _vm->_hotspots[kHS41ToyUfo]._y2 = _vm->_toyUfoY + 20;
- }
+ if (!_vm->isFlag(kGFGnapControlsToyUFO))
+ _vm->_hotspots[kHS41ToyUfo]._rect = Common::Rect(_vm->_toyUfoX - 25, _vm->_toyUfoY - 20, _vm->_toyUfoX + 25, _vm->_toyUfoY + 20);
_vm->updateMouseCursor();
_vm->updateCursorByHotspot();
Commit: 9c0808237c3c4cb8a93a31cad8bf939396415fd1
https://github.com/scummvm/scummvm/commit/9c0808237c3c4cb8a93a31cad8bf939396415fd1
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-12T07:59:20+02:00
Commit Message:
GNAP: Remove _id from HotSpot structure
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/menu.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d9c0971..3b5d149 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -326,7 +326,6 @@ void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, u
int16 walkX, int16 walkY) {
_hotspots[index]._rect = Common::Rect(x1, y1, x2, y2);
_hotspots[index]._flags = flags;
- _hotspots[index]._id = index;
_hotspotsWalkPos[index].x = walkX;
_hotspotsWalkPos[index].y = walkY;
}
@@ -388,7 +387,7 @@ int GnapEngine::getClickedHotspotId() {
if (hotspotIndex >= 0) {
_mouseClickState._left = false;
_timers[3] = 300;
- result = _hotspots[hotspotIndex]._id;
+ result = hotspotIndex;
}
}
return result;
@@ -577,7 +576,6 @@ void GnapEngine::setDeviceHotspot(int hotspotIndex, int x1, int y1, int x2, int
_hotspots[hotspotIndex]._rect = Common::Rect(_deviceX1, _deviceY1, _deviceX2, _deviceY2);
_hotspots[hotspotIndex]._flags = SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _hotspots[hotspotIndex]._id = hotspotIndex;
}
int GnapEngine::getSequenceTotalDuration(int resourceId) {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 45ac584..d379a26 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -68,7 +68,6 @@ struct MouseButtonState {
struct Hotspot {
Common::Rect _rect;
uint16 _flags;
- int _id;
bool isPointInside(Common::Point pos) const {
return _rect.contains(pos);
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 78bffef..21ea8d4 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -50,24 +50,20 @@ void GnapEngine::initMenuHotspots1() {
for (int j = 0; j < 3; ++j) {
_hotspots[curId]._rect = Common::Rect(87 * j + 262, 74 * i + 69, _hotspots[curId]._rect.left + 79, _hotspots[curId]._rect.top + 66);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
++curId;
}
}
_hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
_hotspotsCount = curId + 1;
}
@@ -78,28 +74,23 @@ void GnapEngine::initMenuHotspots2() {
for (int i = 0; i < 4; ++i) {
_hotspots[curId]._rect = Common::Rect(312, 48 * i + 85, _hotspots[curId]._rect.left + 153, _hotspots[curId]._rect.top + 37);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
}
_hotspots[curId]._rect = Common::Rect(500, 72, 527, 99);
_hotspots[curId]._flags = SF_DISABLED;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
_hotspotsCount = curId + 1;
}
@@ -107,23 +98,18 @@ void GnapEngine::initMenuHotspots2() {
void GnapEngine::initMenuQuitQueryHotspots() {
_hotspots[0]._rect = Common::Rect(311, 197, 377, 237);
_hotspots[0]._flags = SF_GRAB_CURSOR;
- _hotspots[0]._id = 0;
_hotspots[1]._rect = Common::Rect(403, 197, 469, 237);
_hotspots[1]._flags = SF_GRAB_CURSOR;
- _hotspots[1]._id = 1;
_hotspots[2]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[2]._flags = SF_GRAB_CURSOR;
- _hotspots[2]._id = 2;
_hotspots[3]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[3]._flags = SF_NONE;
- _hotspots[3]._id = 3;
_hotspots[4]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[4]._flags = SF_NONE;
- _hotspots[4]._id = 4;
_hotspotsCount = 5;
}
@@ -134,35 +120,29 @@ void GnapEngine::initSaveLoadHotspots() {
for (int i = 0; i < 7; ++i ) {
_hotspots[curId]._rect = Common::Rect(288, 31 * i + 74, _hotspots[curId]._rect.left + 91, _hotspots[curId]._rect.top + 22);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
}
if (_menuStatus == 2) {
_hotspots[curId]._rect = Common::Rect(416, 160, 499, 188);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
}
_hotspots[curId]._rect = Common::Rect(416, 213, 499, 241);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(330, 350, 430, 460);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(180, 15, 620, 580);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
++curId;
_hotspots[curId]._rect = Common::Rect(0, 0, 799, 599);
_hotspots[curId]._flags = SF_NONE;
- _hotspots[curId]._id = curId;
_hotspotsCount = curId + 1;
}
Commit: 55162fb7ca2accfee74a6eb57cadfbf57962c161
https://github.com/scummvm/scummvm/commit/55162fb7ca2accfee74a6eb57cadfbf57962c161
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-12T20:33:51+02:00
Commit Message:
GNAP: Simplify some calls of _hotspotWalkPos
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 3b5d149..dacf360 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -326,8 +326,7 @@ void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, u
int16 walkX, int16 walkY) {
_hotspots[index]._rect = Common::Rect(x1, y1, x2, y2);
_hotspots[index]._flags = flags;
- _hotspotsWalkPos[index].x = walkX;
- _hotspotsWalkPos[index].y = walkY;
+ _hotspotsWalkPos[index] = Common::Point(walkX, walkY);
}
int GnapEngine::getHotspotIndexAtPos(Common::Point pos) {
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 1b82fac..c7792af 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -508,7 +508,7 @@ void Scene02::run() {
if (gnap._actionStatus < 0) {
if (_vm->_grabCursorSpriteIndex == kItemTwig) {
gnap._idleFacing = kDirUpRight;
- Common::Point destPos = Common::Point(_vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].x, _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot].y + 1);
+ Common::Point destPos = _vm->_hotspotsWalkPos[_vm->_sceneClickedHotspot] + Common::Point(0, 1);
gnap.walkTo(destPos, 0, gnap.getSequenceId(kGSIdle, Common::Point(0, 0)) | 0x10000, 1);
gnap._actionStatus = kAS02UseTwigWithChicken;
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -1967,7 +1967,7 @@ void Scene05::run() {
} else {
switch (_vm->_verbCursor) {
case LOOK_CURSOR:
- gnap.playScratchingHead(Common::Point(_vm->_hotspotsWalkPos[1].x, _vm->_hotspotsWalkPos[1].y - 1));
+ gnap.playScratchingHead(_vm->_hotspotsWalkPos[1] + Common::Point(0, -1));
break;
case GRAB_CURSOR:
case TALK_CURSOR:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 7aa5d9e..f785c44 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -3147,8 +3147,7 @@ void Scene18::updateHotspots() {
_vm->_hotspots[kHS18HydrantRightValve]._rect.left = 148;
_vm->_hotspots[kHS18HydrantRightValve]._rect.top = 403;
_vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
- _vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
- _vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan] = Common::Point(3, 7);
} else {
_vm->_hotspots[kHS18HydrantTopValve]._rect.top = 246;
}
@@ -3159,8 +3158,7 @@ void Scene18::updateHotspots() {
} else if (_vm->isFlag(kGFTruckKeysUsed)) {
_vm->_hotspots[kHS18GarbageCan]._rect = Common::Rect(115, 365, 168, 470);
_vm->_hotspots[kHS18GarbageCan]._flags = SF_WALKABLE | SF_TALK_CURSOR | SF_GRAB_CURSOR | SF_LOOK_CURSOR;
- _vm->_hotspotsWalkPos[kHS18GarbageCan].x = 3;
- _vm->_hotspotsWalkPos[kHS18GarbageCan].y = 7;
+ _vm->_hotspotsWalkPos[kHS18GarbageCan] = Common::Point(3, 7);
}
if (_vm->isFlag(kGFPlatypusDisguised))
_vm->_hotspots[kHS18GarbageCan]._flags = SF_DISABLED;
Commit: e5f60634a5c86a55f5b178b82879357bd6eb2321
https://github.com/scummvm/scummvm/commit/e5f60634a5c86a55f5b178b82879357bd6eb2321
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-15T16:21:04+02:00
Commit Message:
GNAP: Fix regression in hotspots
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 21ea8d4..fd3c2b8 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -47,8 +47,10 @@ void GnapEngine::initMenuHotspots1() {
int curId = 0;
for (int i = 0; i < 3; ++i) {
+ int top = 74 * i + 69;
for (int j = 0; j < 3; ++j) {
- _hotspots[curId]._rect = Common::Rect(87 * j + 262, 74 * i + 69, _hotspots[curId]._rect.left + 79, _hotspots[curId]._rect.top + 66);
+ int left = 87 * j + 262;
+ _hotspots[curId]._rect = Common::Rect(left, top, left + 79, top + 66);
_hotspots[curId]._flags = SF_NONE;
++curId;
}
@@ -72,7 +74,8 @@ void GnapEngine::initMenuHotspots2() {
int curId = 0;
for (int i = 0; i < 4; ++i) {
- _hotspots[curId]._rect = Common::Rect(312, 48 * i + 85, _hotspots[curId]._rect.left + 153, _hotspots[curId]._rect.top + 37);
+ int top = 48 * i + 85;
+ _hotspots[curId]._rect = Common::Rect(312, top, 465, top + 37);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
++curId;
}
@@ -118,7 +121,8 @@ void GnapEngine::initSaveLoadHotspots() {
int curId = 0;
for (int i = 0; i < 7; ++i ) {
- _hotspots[curId]._rect = Common::Rect(288, 31 * i + 74, _hotspots[curId]._rect.left + 91, _hotspots[curId]._rect.top + 22);
+ int top = 31 * i + 74;
+ _hotspots[curId]._rect = Common::Rect(288, top, 379, top + 22);
_hotspots[curId]._flags = SF_GRAB_CURSOR;
++curId;
}
Commit: 52374bfe7b3110d4a4c2b0cf116ea7fe476f4f7d
https://github.com/scummvm/scummvm/commit/52374bfe7b3110d4a4c2b0cf116ea7fe476f4f7d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T20:43:55+02:00
Commit Message:
GNAP: Load TTF from the executable (optional)
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 6a9cc0f..ecfa3c5 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -261,8 +261,6 @@ void GameSys::drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int
}
void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r, byte g, byte b, const char *text) {
- // NOTE Not that nice but will have to do for now
-
bool doDirty = false;
if (!surface) {
@@ -271,29 +269,33 @@ void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r
}
uint32 color = surface->format.RGBToColor(r, g, b);
+ if (_vm->_font) {
+ _vm->_font->drawString(surface, text, x, y, _vm->_font->getStringWidth(text), color);
- for (const char *cp = text; *cp != 0; ++cp) {
- byte c = *cp;
- if (c < 32 || c > 127)
- c = (byte)'_';
- c -= 32;
- int w = _dejaVuSans9ptCharDescriptors[c]._width;
- const byte *data = _dejaVuSans9ptCharBitmaps + _dejaVuSans9ptCharDescriptors[c]._offset;
- for (int xc = 0; xc < w; ++xc) {
- for (int yc = 15; yc >= 0; --yc) {
- byte *dst = (byte*)surface->getBasePtr(x + xc, y + yc);
- if (data[1 - (yc >> 3)] & (1 << (yc & 7)))
- WRITE_LE_UINT32(dst, color);
+ if (doDirty)
+ insertDirtyRect(Common::Rect(x, y, x + _vm->_font->getStringWidth(text), y + _vm->_font->getFontHeight()));
+ } else {
+ for (const char *cp = text; *cp != 0; ++cp) {
+ byte c = *cp;
+ if (c < 32 || c > 127)
+ c = (byte)'_';
+ c -= 32;
+ int w = _dejaVuSans9ptCharDescriptors[c]._width;
+ const byte *data = _dejaVuSans9ptCharBitmaps + _dejaVuSans9ptCharDescriptors[c]._offset;
+ for (int xc = 0; xc < w; ++xc) {
+ for (int yc = 15; yc >= 0; --yc) {
+ byte *dst = (byte*)surface->getBasePtr(x + xc, y + yc);
+ if (data[1 - (yc >> 3)] & (1 << (yc & 7)))
+ WRITE_LE_UINT32(dst, color);
+ }
+ data += 2;
}
- data += 2;
+ x += w + 1;
}
- x += w + 1;
- }
- if (doDirty) {
- insertDirtyRect(Common::Rect(x, y, x + getTextWidth(text), y + 16));
+ if (doDirty)
+ insertDirtyRect(Common::Rect(x, y, x + getTextWidth(text), y + 16));
}
-
}
int GameSys::getTextHeight(const char *text) {
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index dacf360..21329fe 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "graphics/cursorman.h"
#include "gnap/gnap.h"
#include "gnap/datarchive.h"
#include "gnap/gamesys.h"
@@ -28,14 +29,10 @@
#include "common/config-manager.h"
#include "common/debug-channels.h"
-#include "common/error.h"
-#include "common/fs.h"
#include "common/timer.h"
#include "engines/util.h"
-#include "graphics/cursorman.h"
-
namespace Gnap {
static const int kCursors[] = {
@@ -143,6 +140,15 @@ Common::Error GnapEngine::run() {
if (!_exe->loadFromEXE("ufos.exe"))
error("Could not load ufos.exe");
+#ifdef USE_FREETYPE2
+ Common::SeekableReadStream *stream = _exe->getResource(Common::kPEFont, 2000);
+ _font = Graphics::loadTTFFont(*stream, 24);
+ if (!_font)
+ warning("Unable to load font");
+#else
+ _font = nullptr;
+#endif
+
_dat = new DatManager();
_spriteCache = new SpriteCache(_dat);
_soundCache = new SoundCache(_dat);
@@ -167,6 +173,7 @@ Common::Error GnapEngine::run() {
delete _spriteCache;
delete _dat;
delete _debugger;
+ delete _font;
delete _exe;
return Common::kNoError;
@@ -342,10 +349,13 @@ void GnapEngine::updateCursorByHotspot() {
int hotspotIndex = getHotspotIndexAtPos(Common::Point(_mouseX, _mouseY));
if (_debugger->_showHotspotNumber) {
- // NOTE This causes some display glitches so don't worry
+ // NOTE This causes some display glitches
char t[256];
- sprintf(t, "hotspot = %d", hotspotIndex);
- _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
+ sprintf(t, "hotspot = %2d", hotspotIndex);
+ if (!_font)
+ _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
+ else
+ _gameSys->fillSurface(0, 8, 9, _font->getStringWidth(t) + 10, _font->getFontHeight() + 2, 0, 0, 0);
_gameSys->drawTextToSurface(0, 10, 10, 255, 255, 255, t);
}
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index d379a26..45f675c 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -38,6 +38,9 @@
#include "engines/engine.h"
#include "graphics/pixelformat.h"
#include "graphics/wincursor.h"
+#include "graphics/fontman.h"
+#include "graphics/font.h"
+#include "graphics/fonts/ttf.h"
#include "gnap/debugger.h"
#include "gnap/resource.h"
@@ -243,6 +246,7 @@ public:
PlayerGnap *_gnap;
PlayerPlat *_plat;
MusicPlayer *_music;
+ Graphics::Font *_font;
int _lastUpdateClock;
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 1547a50..d26e0fb 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -2623,9 +2623,6 @@ void Scene52::run() {
_vm->hideCursor();
- // TODO loadFont("maturasc", "Matura MT Script Capitals", 2000);
- // TODO setFontSize(24);
-
_gameScore = 0;
_vm->_gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
_vm->_gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
@@ -2720,9 +2717,6 @@ void Scene52::run() {
_vm->_sceneDone = true;
}
}
-
- // TODO freeFont();
-
_vm->_gameSys->waitForUpdate();
}
Commit: 85b7da75deeaf57a30d58e924076eb72d7a3d98e
https://github.com/scummvm/scummvm/commit/85b7da75deeaf57a30d58e924076eb72d7a3d98e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T21:57:20+02:00
Commit Message:
GNAP: Explicitely set _scoreLevel to 1 when score greater than 556
Changed paths:
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index d26e0fb..acc541a 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -250,7 +250,8 @@ void Scene49::increaseScore(int amount) {
_scoreBarPos += amount;
_vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
}
- _scoreLevel = _scoreBarPos + amount >= 556;
+
+ _scoreLevel = (_scoreBarPos + amount >= 556) ? 1 : 0;
}
void Scene49::decreaseScore(int amount) {
Commit: 4371d2f4d9566c3f840284dbe86d3358de4db55f
https://github.com/scummvm/scummvm/commit/4371d2f4d9566c3f840284dbe86d3358de4db55f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T22:38:05+02:00
Commit Message:
GNAP: Fix score display in Monkey arcade game.
Changed paths:
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index acc541a..5631c62 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -1620,8 +1620,8 @@ void Scene51::updateCash(int amount) {
void Scene51::drawDigit(int digit, int position) {
if (digit != _digits[position]) {
- _vm->_gameSys->insertSequence(kDigitSequenceIds[digit], 253,
- _digitSequenceIds[position], 253,
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[digit], 253 + position,
+ _digitSequenceIds[position], 253 + position,
kSeqSyncWait, 0, kDigitPositions[position] - 20, -20);
_digitSequenceIds[position] = kDigitSequenceIds[digit];
_digits[position] = digit;
@@ -1632,8 +1632,7 @@ void Scene51::initCashDisplay() {
for (int position = 0; position < 4; ++position) {
_digits[position] = 0;
_digitSequenceIds[position] = kDigitSequenceIds[0];
- _vm->_gameSys->insertSequence(kDigitSequenceIds[0], 253, 0, 0,
- kSeqNone, 0, kDigitPositions[position] - 20, -20);
+ _vm->_gameSys->insertSequence(kDigitSequenceIds[0], 253 + position, 0, 0, kSeqNone, 0, kDigitPositions[position] - 20, -20);
}
_cashAmount = 0;
}
Commit: bb35d5063b9d76d940767e0a70fef443877ff8c1
https://github.com/scummvm/scummvm/commit/bb35d5063b9d76d940767e0a70fef443877ff8c1
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T22:59:28+02:00
Commit Message:
GNAP: Fix broken debug strings
Changed paths:
engines/gnap/music.cpp
diff --git a/engines/gnap/music.cpp b/engines/gnap/music.cpp
index b42f6e9..57b2b27 100644
--- a/engines/gnap/music.cpp
+++ b/engines/gnap/music.cpp
@@ -73,7 +73,7 @@ void MusicPlayer::playSMF(bool loop) {
Common::File musicFile;
musicFile.open(_filename);
if (!musicFile.isOpen()) {
- debugC(2, kDebugMusic, "Cannot open music file %s", _filename);
+ debugC(2, kDebugMusic, "Cannot open music file %s", _filename.c_str());
return;
}
int midiMusicSize = musicFile.size();
@@ -96,7 +96,7 @@ void MusicPlayer::playSMF(bool loop) {
_isLooping = loop;
_isPlaying = true;
} else {
- debugC(2, kDebugMusic, "Cannot play music file %s", _filename);
+ debugC(2, kDebugMusic, "Cannot play music file %s", _filename.c_str());
delete parser;
}
}
Commit: 06f3dc29731cdfc0521929fb4c20c61e1d2c159d
https://github.com/scummvm/scummvm/commit/06f3dc29731cdfc0521929fb4c20c61e1d2c159d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T23:24:02+02:00
Commit Message:
GNAP: Fix a couple of unintialized variables
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 21329fe..a061be0 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -97,6 +97,11 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine::syncSoundSettings();
_scene = nullptr;
_music = nullptr;
+
+ _wasSavegameLoaded = false;
+ for (int i = 0; i < kMaxTimers; ++i)
+ _savedTimers[i] = _timers[i] = 0;
+
}
GnapEngine::~GnapEngine() {
Commit: e280c833c7cc65c263b05532533e5e010a0236c3
https://github.com/scummvm/scummvm/commit/e280c833c7cc65c263b05532533e5e010a0236c3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T23:34:58+02:00
Commit Message:
GNAP: Enforce the use of nullptr in function calls
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index ecfa3c5..76f7fa4 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -857,7 +857,7 @@ void GameSys::drawSprites() {
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
- seqDrawSpriteFrame(spriteResource, gfxItem5->_currFrame, 0);
+ seqDrawSpriteFrame(spriteResource, gfxItem5->_currFrame, nullptr);
_vm->_spriteCache->release(resourceId);
}
}
@@ -1023,7 +1023,7 @@ void GameSys::fatUpdateFrame() {
// NOTE Skipped avi code
}
} else {
- Sequence *seqItem = seqFind(gfxItem->_sequenceId, gfxItem->_id, 0);
+ Sequence *seqItem = seqFind(gfxItem->_sequenceId, gfxItem->_id, nullptr);
if (!animation) {
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
@@ -1178,7 +1178,7 @@ void GameSys::fatUpdateFrame() {
Sequence *seqItem = &_fatSequenceItems[i];
if (((seqItem->_flags & 8) || (seqItem->_flags & 0x20)) && seqItem->_sequenceId2 != -1) {
duration = 0;
- if (((seqItem->_flags & 0x20) && seqLocateGfx(seqItem->_sequenceId2, seqItem->_id2, 0)) ||
+ if (((seqItem->_flags & 0x20) && seqLocateGfx(seqItem->_sequenceId2, seqItem->_id2, nullptr)) ||
updateSequenceDuration(seqItem->_sequenceId2, seqItem->_id2, &duration)) {
int index = -1;
bool found = false;
@@ -1229,7 +1229,7 @@ void GameSys::fatUpdateFrame() {
for (uint i = 0; i < _seqItems.size(); ++i) {
Sequence *seqItem = &_seqItems[i];
- if (seqLocateGfx(seqItem->_sequenceId, seqItem->_id, 0)) {
+ if (seqLocateGfx(seqItem->_sequenceId, seqItem->_id, nullptr)) {
updateAnimationsStatus(seqItem->_sequenceId, seqItem->_id);
if (seqItem->_flags & 2) {
int gfxDuration;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index a061be0..045ed4f 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -358,10 +358,10 @@ void GnapEngine::updateCursorByHotspot() {
char t[256];
sprintf(t, "hotspot = %2d", hotspotIndex);
if (!_font)
- _gameSys->fillSurface(0, 10, 10, 80, 16, 0, 0, 0);
+ _gameSys->fillSurface(nullptr, 10, 10, 80, 16, 0, 0, 0);
else
- _gameSys->fillSurface(0, 8, 9, _font->getStringWidth(t) + 10, _font->getFontHeight() + 2, 0, 0, 0);
- _gameSys->drawTextToSurface(0, 10, 10, 255, 255, 255, t);
+ _gameSys->fillSurface(nullptr, 8, 9, _font->getStringWidth(t) + 10, _font->getFontHeight() + 2, 0, 0, 0);
+ _gameSys->drawTextToSurface(nullptr, 10, 10, 255, 255, 255, t);
}
if (hotspotIndex < 0)
@@ -906,15 +906,15 @@ void GnapEngine::updateIdleTimer() {
void GnapEngine::screenEffect(int dir, byte r, byte g, byte b) {
if (dir == 1) {
for (int y = 300; y < 600; y += 50) {
- _gameSys->fillSurface(0, 0, y, 800, 50, r, g, b);
- _gameSys->fillSurface(0, 0, 549 - y + 1, 800, 50, r, g, b);
+ _gameSys->fillSurface(nullptr, 0, y, 800, 50, r, g, b);
+ _gameSys->fillSurface(nullptr, 0, 549 - y + 1, 800, 50, r, g, b);
gameUpdateTick();
_system->delayMillis(50);
}
} else {
for (int y = 0; y < 300; y += 50) {
- _gameSys->fillSurface(0, 0, y, 800, 50, r, g, b);
- _gameSys->fillSurface(0, 0, 549 - y + 1, 800, 50, r, g, b);
+ _gameSys->fillSurface(nullptr, 0, y, 800, 50, r, g, b);
+ _gameSys->fillSurface(nullptr, 0, 549 - y + 1, 800, 50, r, g, b);
gameUpdateTick();
_system->delayMillis(50);
}
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 5631c62..80c7c65 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -248,7 +248,7 @@ void Scene49::updateObstacle(int id) {
void Scene49::increaseScore(int amount) {
if (_scoreBarPos + amount <= 556) {
_scoreBarPos += amount;
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 255, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, _scoreBarPos, 508, amount, 22, 255, 0, 0);
}
_scoreLevel = (_scoreBarPos + amount >= 556) ? 1 : 0;
@@ -258,7 +258,7 @@ void Scene49::decreaseScore(int amount) {
if (_scoreBarPos >= 226 && _scoreLevel == 0) {
if (_scoreBarFlash)
refreshScoreBar();
- _vm->_gameSys->fillSurface(0, _scoreBarPos, 508, amount, 22, 89, 0, 5);
+ _vm->_gameSys->fillSurface(nullptr, _scoreBarPos, 508, amount, 22, 89, 0, 5);
_scoreBarPos -= amount;
_scoreLevel = 0;
}
@@ -266,9 +266,9 @@ void Scene49::decreaseScore(int amount) {
void Scene49::refreshScoreBar() {
if (_scoreBarFlash)
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 255, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 226, 508, 330, 22, 255, 0, 0);
else
- _vm->_gameSys->fillSurface(0, 226, 508, 330, 22, 89, 0, 5);
+ _vm->_gameSys->fillSurface(nullptr, 226, 508, 330, 22, 89, 0, 5);
_scoreBarFlash = !_scoreBarFlash;
}
@@ -630,8 +630,8 @@ void Scene50::initRound() {
_vm->_timers[3] = getRightTongueActionTicks();
_vm->_timers[4] = 0;
_vm->_timers[6] = 0;
- _vm->_gameSys->fillSurface(0, 91, 73, 260, 30, 212, 0, 0);
- _vm->_gameSys->fillSurface(0, 450, 73, 260, 30, 212, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 91, 73, 260, 30, 212, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 450, 73, 260, 30, 212, 0, 0);
_timeRemaining = 40;
drawCountdown(40);
}
@@ -652,8 +652,8 @@ bool Scene50::updateCountdown() {
void Scene50::drawCountdown(int value) {
char str[8];
sprintf(str, "%02d", value);
- _vm->_gameSys->fillSurface(0, 371, 505, 50, 27, 0, 0, 0);
- _vm->_gameSys->drawTextToSurface(0, 381, 504, 255, 255, 255, str);
+ _vm->_gameSys->fillSurface(nullptr, 371, 505, 50, 27, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(nullptr, 381, 504, 255, 255, 255, str);
}
void Scene50::playTonguesIdle() {
@@ -698,7 +698,7 @@ bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
if (newLeftBarPos < 0)
newLeftBarPos = 0;
_leftTongueEnergyBarPos = newLeftBarPos;
- _vm->_gameSys->fillSurface(0, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 26 * newLeftBarPos + 91, 73, 260 - 26 * newLeftBarPos, 30, 0, 0, 0);
}
if (newRightBarPos != _rightTongueEnergyBarPos) {
@@ -706,7 +706,7 @@ bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
newRightBarPos = 0;
_rightTongueEnergyBarPos = newRightBarPos;
if (newRightBarPos != 10)
- _vm->_gameSys->fillSurface(0, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 26 * (9 - newRightBarPos) + 450, 73, 26, 30, 0, 0, 0);
}
if (newLeftBarPos * newRightBarPos > 0)
@@ -2190,7 +2190,7 @@ void Scene52::updateAlienRow(int rowNum) {
if (rowNum == 1) {
for (int j = 0; j < 3; ++j) {
if (_shieldSpriteIds[j] != -1) {
- _vm->_gameSys->fillSurface(0, _shieldPosX[j], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, _shieldPosX[j], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_shieldSpriteIds[j] = -1;
}
}
@@ -2368,7 +2368,7 @@ int Scene52::alienCannonHitShield(int cannonNum) {
if (_shieldSpriteIds[shieldNum] <= 21) {
_vm->_gameSys->drawSpriteToBackground(_shieldPosX[shieldNum], _arcadeScreenBottom - 44, _shieldSpriteIds[shieldNum]);
} else {
- _vm->_gameSys->fillSurface(0, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_shieldSpriteIds[shieldNum] = -1;
}
_vm->_gameSys->setAnimation(0, 0, cannonNum + 9);
@@ -2412,7 +2412,7 @@ bool Scene52::shipCannonHitShield(int cannonNum) {
if (_shieldSpriteIds[shieldNum] <= 21) {
_vm->_gameSys->drawSpriteToBackground(_shieldPosX[shieldNum], _arcadeScreenBottom - 44, _shieldSpriteIds[shieldNum]);
} else {
- _vm->_gameSys->fillSurface(0, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, _shieldPosX[shieldNum], _arcadeScreenBottom - 44, 33, 44, 0, 0, 0);
_shieldSpriteIds[shieldNum] = -1;
}
_vm->_gameSys->insertSequence(0x21, shieldNum + 257, 0, 0, kSeqNone, 0, _shipCannonPosX - 18, _arcadeScreenBottom - 44);
@@ -2588,9 +2588,9 @@ void Scene52::updateAlien(int rowNum) {
void Scene52::loseShip() {
--_shipsLeft;
if (_shipsLeft == 2) {
- _vm->_gameSys->fillSurface(0, 120, 140, _shipMidX, _shipMidY, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 120, 140, _shipMidX, _shipMidY, 0, 0, 0);
} else if (_shipsLeft == 1) {
- _vm->_gameSys->fillSurface(0, 120, 185, _shipMidX, _shipMidY, 0, 0, 0);
+ _vm->_gameSys->fillSurface(nullptr, 120, 185, _shipMidX, _shipMidY, 0, 0, 0);
}
}
@@ -2614,8 +2614,8 @@ void Scene52::initAnims() {
void Scene52::drawScore(int score) {
char str[4];
sprintf(str, "%03d", score);
- _vm->_gameSys->fillSurface(0, 420, 80, 48, 30, 0, 0, 0);
- _vm->_gameSys->drawTextToSurface(0, 420, 80, 255, 255, 255, str);
+ _vm->_gameSys->fillSurface(nullptr, 420, 80, 48, 30, 0, 0, 0);
+ _vm->_gameSys->drawTextToSurface(nullptr, 420, 80, 255, 255, 255, str);
}
void Scene52::run() {
@@ -2624,8 +2624,8 @@ void Scene52::run() {
_vm->hideCursor();
_gameScore = 0;
- _vm->_gameSys->drawTextToSurface(0, 300, 80, 255, 255, 255, "SCORE");
- _vm->_gameSys->drawTextToSurface(0, 468, 80, 255, 255, 255, "0");
+ _vm->_gameSys->drawTextToSurface(nullptr, 300, 80, 255, 255, 255, "SCORE");
+ _vm->_gameSys->drawTextToSurface(nullptr, 468, 80, 255, 255, 255, "0");
drawScore(0);
Commit: 090c178214867009ded91ba7cab4b658da3e7b6d
https://github.com/scummvm/scummvm/commit/090c178214867009ded91ba7cab4b658da3e7b6d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-16T23:38:49+02:00
Commit Message:
GNAP: Fix another valgrind error
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 045ed4f..2a143ad 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -101,7 +101,8 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
_wasSavegameLoaded = false;
for (int i = 0; i < kMaxTimers; ++i)
_savedTimers[i] = _timers[i] = 0;
-
+
+ _isWaiting = false;
}
GnapEngine::~GnapEngine() {
Commit: e024a26ccdd95893839a35325c17276a7a01107e
https://github.com/scummvm/scummvm/commit/e024a26ccdd95893839a35325c17276a7a01107e
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-17T06:50:43+02:00
Commit Message:
GNAP: Replace memcpy on overlapping memory area by memmove. Thanks to eriktorbjorn for suggesting it
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 76f7fa4..4c603c5 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -443,7 +443,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
seqLocateGfx(seqItem->_sequenceId, seqItem->_id, &gfxIndex);
if (gfxIndex != _gfxItemsCount)
- memcpy(&_gfxItems[gfxIndex + sequenceResource->_animationsCount], &_gfxItems[gfxIndex], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
+ memmove(&_gfxItems[gfxIndex + sequenceResource->_animationsCount], &_gfxItems[gfxIndex], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
_gfxItemsCount += sequenceResource->_animationsCount;
for (int i = 0; i < sequenceResource->_animationsCount; ++i) {
@@ -523,7 +523,7 @@ void GameSys::seqRemoveGfx(int sequenceId, int id) {
if (gfxItem->_prevFrame._spriteId == -1) {
--_gfxItemsCount;
if (gfxIndex != _gfxItemsCount)
- memcpy(&_gfxItems[gfxIndex], &_gfxItems[gfxIndex + 1], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
+ memmove(&_gfxItems[gfxIndex], &_gfxItems[gfxIndex + 1], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex));
} else {
gfxItem->_sequenceId = -1;
gfxItem->_animation = nullptr;
@@ -945,7 +945,7 @@ void GameSys::handleReqRemoveSequenceItem() {
++gfxIndex2a;
_gfxItemsCount -= gfxIndex2a - gfxIndex2;
if (_gfxItemsCount != gfxIndex2)
- memcpy(&_gfxItems[gfxIndex2], &_gfxItems[gfxIndex2a], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex2));
+ memmove(&_gfxItems[gfxIndex2], &_gfxItems[gfxIndex2a], sizeof(GfxItem) * (_gfxItemsCount - gfxIndex2));
}
}
}
@@ -1095,7 +1095,7 @@ void GameSys::fatUpdateFrame() {
} else if (v20 && gfxItem->_prevFrame._spriteId == -1) {
--_gfxItemsCount;
if (_gfxItemsCount != i)
- memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
+ memmove(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
--i;
} else {
gfxItem->_updFlag = false;
@@ -1112,7 +1112,7 @@ void GameSys::fatUpdateFrame() {
} else {
--_gfxItemsCount;
if (_gfxItemsCount != i)
- memcpy(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
+ memmove(&_gfxItems[i], &_gfxItems[i + 1], sizeof(GfxItem) * (_gfxItemsCount - i));
--i;
}
}
@@ -1124,7 +1124,7 @@ void GameSys::fatUpdateFrame() {
int insertIndex;
seqLocateGfx(-1, _newSpriteDrawItems[k]._id, &insertIndex);
if (_gfxItemsCount != insertIndex)
- memcpy(&_gfxItems[insertIndex + 1], &_gfxItems[insertIndex], sizeof(GfxItem) * (_gfxItemsCount - insertIndex));
+ memmove(&_gfxItems[insertIndex + 1], &_gfxItems[insertIndex], sizeof(GfxItem) * (_gfxItemsCount - insertIndex));
++_gfxItemsCount;
GfxItem *gfxItem = &_gfxItems[insertIndex];
gfxItem->_sequenceId = -1;
Commit: 63589812018eafc0c7ed4b7a8b77b7e048db10ad
https://github.com/scummvm/scummvm/commit/63589812018eafc0c7ed4b7a8b77b7e048db10ad
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-17T07:09:42+02:00
Commit Message:
GNAP: USe Common::Point for mouse position, initialize some more variables
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 2a143ad..21f44c3 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -103,6 +103,10 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
_savedTimers[i] = _timers[i] = 0;
_isWaiting = false;
+ _sceneWaiting = false;
+
+ _mousePos = Common::Point(0, 0);
+ _currGrabCursorX = _currGrabCursorY = 0;
}
GnapEngine::~GnapEngine() {
@@ -205,8 +209,7 @@ void GnapEngine::updateEvents() {
_keyDownState[event.kbd.keycode] = 0;
break;
case Common::EVENT_MOUSEMOVE:
- _mouseX = event.mouse.x;
- _mouseY = event.mouse.y;
+ _mousePos = event.mouse;
break;
case Common::EVENT_LBUTTONUP:
_mouseButtonState._left = false;
@@ -352,7 +355,7 @@ int GnapEngine::getHotspotIndexAtPos(Common::Point pos) {
void GnapEngine::updateCursorByHotspot() {
if (!_isWaiting) {
- int hotspotIndex = getHotspotIndexAtPos(Common::Point(_mouseX, _mouseY));
+ int hotspotIndex = getHotspotIndexAtPos(_mousePos);
if (_debugger->_showHotspotNumber) {
// NOTE This causes some display glitches
@@ -474,8 +477,8 @@ void GnapEngine::setGrabCursorSprite(int index) {
void GnapEngine::createGrabCursorSprite(int spriteId) {
_grabCursorSprite = _gameSys->createSurface(spriteId);
_gameSys->insertSpriteDrawItem(_grabCursorSprite,
- _mouseX - (_grabCursorSprite->w / 2),
- _mouseY - (_grabCursorSprite->h / 2),
+ _mousePos.x - (_grabCursorSprite->w / 2),
+ _mousePos.y - (_grabCursorSprite->h / 2),
300);
delayTicks(5);
}
@@ -491,8 +494,8 @@ void GnapEngine::freeGrabCursorSprite() {
void GnapEngine::updateGrabCursorSprite(int x, int y) {
if (_grabCursorSprite) {
- int newGrabCursorX = _mouseX - (_grabCursorSprite->w / 2) - x;
- int newGrabCursorY = _mouseY - (_grabCursorSprite->h / 2) - y;
+ int newGrabCursorX = _mousePos.x - (_grabCursorSprite->w / 2) - x;
+ int newGrabCursorY = _mousePos.y - (_grabCursorSprite->h / 2) - y;
if (_currGrabCursorX != newGrabCursorX || _currGrabCursorY != newGrabCursorY) {
_currGrabCursorX = newGrabCursorX;
_currGrabCursorY = newGrabCursorY;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 45f675c..3cedf1b 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -286,7 +286,7 @@ public:
int _newCursorValue, _cursorValue;
int _verbCursor, _cursorIndex;
- int _mouseX, _mouseY;
+ Common::Point _mousePos;
int _leftClickMouseX, _leftClickMouseY;
Graphics::Surface *_grabCursorSprite;
Commit: 4c37381a8eb83012cf4d580548b62f8cce106d80
https://github.com/scummvm/scummvm/commit/4c37381a8eb83012cf4d580548b62f8cce106d80
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-17T22:05:35+02:00
Commit Message:
GNAP: Add missing stars in header, change include guard name in gnap.h
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/datarchive.cpp
engines/gnap/datarchive.h
engines/gnap/detection.cpp
engines/gnap/fontdata.h
engines/gnap/gamesys.cpp
engines/gnap/gamesys.h
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/grid.cpp
engines/gnap/menu.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
engines/gnap/sound.cpp
engines/gnap/sound.h
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 7b55e2b..46b5dc7 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index 0a00fe0..be6efbf 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index 0eb6601..56fd04b 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/datarchive.h b/engines/gnap/datarchive.h
index 28664fe..10021a0 100644
--- a/engines/gnap/datarchive.h
+++ b/engines/gnap/datarchive.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 79fafd4..616c26b 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/fontdata.h b/engines/gnap/fontdata.h
index bb87638..ef39df9 100644
--- a/engines/gnap/fontdata.h
+++ b/engines/gnap/fontdata.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 4c603c5..4c105d9 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index a63b32d..98014f1 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 21f44c3..4de50ee 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 3cedf1b..e593c74 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -8,20 +8,20 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
-#ifndef GNAP_H
-#define GNAP_H
+#ifndef GNAP_GNAP_H
+#define GNAP_GNAP_H
#include "common/array.h"
#include "common/events.h"
@@ -473,4 +473,4 @@ public:
} // End of namespace Gnap
-#endif // GNAP_H
+#endif // GNAP_GNAP_H
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index a89c87c..b3a8a4b 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index fd3c2b8..e2b28a6 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index ee9f14b..1ed45d8 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 7235351..00b8740 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/sound.cpp b/engines/gnap/sound.cpp
index a3e0e1c..103a649 100644
--- a/engines/gnap/sound.cpp
+++ b/engines/gnap/sound.cpp
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/engines/gnap/sound.h b/engines/gnap/sound.h
index ced3ded..de39812 100644
--- a/engines/gnap/sound.h
+++ b/engines/gnap/sound.h
@@ -8,12 +8,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Commit: 4faedcdfcb5d34d4262cf3c6dfe96c68ce48848b
https://github.com/scummvm/scummvm/commit/4faedcdfcb5d34d4262cf3c6dfe96c68ce48848b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-17T22:10:10+02:00
Commit Message:
GNAP: Fix some spacing
Changed paths:
engines/gnap/datarchive.cpp
engines/gnap/datarchive.h
engines/gnap/gnap.h
engines/gnap/scenes/group0.cpp
diff --git a/engines/gnap/datarchive.cpp b/engines/gnap/datarchive.cpp
index 56fd04b..c74766b 100644
--- a/engines/gnap/datarchive.cpp
+++ b/engines/gnap/datarchive.cpp
@@ -47,9 +47,9 @@ DatArchive::DatArchive(const char *filename) {
_entries = new DatEntry[_entriesCount];
for (int i = 0; i < _entriesCount; ++i) {
_entries[i]._ofs = _fd->readUint32LE();
- _entries[i]._outSize1 = _fd->readUint32LE();
- _entries[i]._type = _fd->readUint32LE();
- _entries[i]._outSize2 = _fd->readUint32LE();
+ _entries[i]._outSize1 = _fd->readUint32LE();
+ _entries[i]._type = _fd->readUint32LE();
+ _entries[i]._outSize2 = _fd->readUint32LE();
}
}
diff --git a/engines/gnap/datarchive.h b/engines/gnap/datarchive.h
index 10021a0..e9220f8 100644
--- a/engines/gnap/datarchive.h
+++ b/engines/gnap/datarchive.h
@@ -36,10 +36,10 @@
namespace Gnap {
struct DatEntry {
- uint32 _ofs;
- uint32 _outSize1;
- uint32 _type;
- uint32 _outSize2;
+ uint32 _ofs;
+ uint32 _outSize1;
+ uint32 _type;
+ uint32 _outSize2;
};
class DatArchive {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index e593c74..7aa2221 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -93,7 +93,7 @@ enum GnapDebugChannels {
};
enum {
- SF_NONE = 0x0000,
+ SF_NONE = 0x0000,
SF_LOOK_CURSOR = 0x0001,
SF_GRAB_CURSOR = 0x0002,
SF_TALK_CURSOR = 0x0004,
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index c7792af..25e0aae 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -2297,8 +2297,8 @@ void Scene06::updateHotspots() {
_vm->setHotspot(kHS06WalkArea4, 475, 469, 800, 505);
_vm->setHotspot(kHS06WalkArea5, 0, 0, 800, 504);
_vm->setDeviceHotspot(kHS06Device, -1, -1, -1, -1);
- if (_vm->isFlag(kGFGasTaken))
- _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
+ if (_vm->isFlag(kGFGasTaken))
+ _vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
if (_vm->_cursorValue == 4) {
_vm->_hotspots[kHS06Ladder]._flags = SF_DISABLED;
_vm->_hotspots[kHS06Gas]._flags = SF_DISABLED;
Commit: 0a8e552c6d761cb37a248c573c67d9fa468ca12f
https://github.com/scummvm/scummvm/commit/0a8e552c6d761cb37a248c573c67d9fa468ca12f
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-17T22:21:27+02:00
Commit Message:
GNAP: Fix the coding style of a couple of casts
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
engines/gnap/scenes/intro.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 4c105d9..61ea7c2 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -284,7 +284,7 @@ void GameSys::drawTextToSurface(Graphics::Surface *surface, int x, int y, byte r
const byte *data = _dejaVuSans9ptCharBitmaps + _dejaVuSans9ptCharDescriptors[c]._offset;
for (int xc = 0; xc < w; ++xc) {
for (int yc = 15; yc >= 0; --yc) {
- byte *dst = (byte*)surface->getBasePtr(x + xc, y + yc);
+ byte *dst = (byte *)surface->getBasePtr(x + xc, y + yc);
if (data[1 - (yc >> 3)] & (1 << (yc & 7)))
WRITE_LE_UINT32(dst, color);
}
@@ -387,8 +387,8 @@ void GameSys::drawBitmap(int resourceId) {
bmpSurface->w != _backgroundSurface->w || bmpSurface->h != _backgroundSurface->h) {
debugC(kDebugBasic, "GameSys::drawBitmap() Different bitmap properties than current background");
} else {
- byte *src = (byte*)bmpSurface->getPixels();
- byte *dst = (byte*)_backgroundSurface->getPixels();
+ byte *src = (byte *)bmpSurface->getPixels();
+ byte *dst = (byte *)_backgroundSurface->getPixels();
const int pitch = bmpSurface->pitch;
int height = bmpSurface->h;
while (height--) {
@@ -606,8 +606,8 @@ void GameSys::restoreBackgroundRect(const Common::Rect &rect) {
Common::Rect clipRect;
if (!intersectRect(clipRect, rect, _screenRect))
return;
- byte *src = (byte*)_backgroundSurface->getBasePtr(clipRect.left, clipRect.top);
- byte *dst = (byte*)_frontSurface->getBasePtr(clipRect.left, clipRect.top);
+ byte *src = (byte *)_backgroundSurface->getBasePtr(clipRect.left, clipRect.top);
+ byte *dst = (byte *)_frontSurface->getBasePtr(clipRect.left, clipRect.top);
const int bytes = _backgroundSurface->format.bytesPerPixel * clipRect.width();
int height = clipRect.height();
while (height--) {
@@ -621,8 +621,8 @@ void GameSys::blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphi
Common::Rect &sourceRect, bool transparent) {
const int sourcePitch = sourceSurface->pitch;
- byte *dst = (byte*)destSurface->getBasePtr(x, y);
- byte *src = (byte*)sourceSurface->getBasePtr(sourceRect.left, sourceRect.top);
+ byte *dst = (byte *)destSurface->getBasePtr(x, y);
+ byte *src = (byte *)sourceSurface->getBasePtr(sourceRect.left, sourceRect.top);
int width = sourceRect.width();
int height = sourceRect.height();
while (height--) {
@@ -644,7 +644,7 @@ void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *s
int sourceWidth, Common::Rect &sourceRect, uint32 *sourcePalette, bool transparent) {
const int sourcePitch = (sourceWidth + 3) & 0xFFFFFFFC;
- byte *dst = (byte*)destSurface->getBasePtr(x, y);
+ byte *dst = (byte *)destSurface->getBasePtr(x, y);
byte *src = sourcePixels + sourceRect.left + sourcePitch * sourceRect.top;
int width = sourceRect.width();
int height = sourceRect.height();
@@ -677,7 +677,7 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
const int sourcePitch = (sourceWidth + 3) & 0xFFFFFFFC;
if (!frameRect.equals(destRect)) {
- byte *dst = (byte*)destSurface->getBasePtr(destRect.left, destRect.top);
+ byte *dst = (byte *)destSurface->getBasePtr(destRect.left, destRect.top);
byte *src = sourcePixels + sourcePitch * sourceRect.top + sourceRect.left;
const int height = destRect.bottom - destRect.top;
const int width = destRect.right - destRect.left;
@@ -704,7 +704,7 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
hsrc = src + sourcePitch * ((yi + 0x8000) >> 16);
}
} else {
- byte *dst = (byte*)destSurface->getBasePtr(frameRect.left, frameRect.top);
+ byte *dst = (byte *)destSurface->getBasePtr(frameRect.left, frameRect.top);
byte *src = sourcePixels + sourcePitch * sourceRect.top + sourceRect.left;
const int height = frameRect.bottom - frameRect.top;
const int width = frameRect.right - frameRect.left;
@@ -887,7 +887,7 @@ void GameSys::drawSprites() {
void GameSys::updateRect(const Common::Rect &r) {
debugC(kDebugBasic, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
if (r.width() > 0 && r.height() > 0) {
- byte *pixels = (byte*)_frontSurface->getBasePtr(r.left, r.top);
+ byte *pixels = (byte *)_frontSurface->getBasePtr(r.left, r.top);
_vm->_system->copyRectToScreen(pixels, _frontSurface->pitch, r.left, r.top,
r.width(), r.height());
}
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index 1ed45d8..9936324 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -96,7 +96,7 @@ SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
_unknownVal2 = READ_LE_UINT16(_data + 6);
_transparent = (READ_LE_UINT16(_data + 8) != 0);
_colorsCount = READ_LE_UINT16(_data + 10);
- _palette = (uint32*)(_data + 12);
+ _palette = (uint32 *)(_data + 12);
_pixels = _data + 12 + _colorsCount * 4;
debugC(kDebugBasic, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
}
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 00b8740..35787fa 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -157,7 +157,7 @@ protected:
~Resource() { delete _obj; }
};
- typedef Common::HashMap<int, Resource*> CacheMap;
+ typedef Common::HashMap<int, Resource *> CacheMap;
typedef typename CacheMap::iterator CacheMapIterator;
DatManager *_dat;
diff --git a/engines/gnap/scenes/intro.cpp b/engines/gnap/scenes/intro.cpp
index fa23d6a..1679fe8 100644
--- a/engines/gnap/scenes/intro.cpp
+++ b/engines/gnap/scenes/intro.cpp
@@ -90,8 +90,8 @@ void SceneIntro::run() {
} else {
// The intro AVI is played upside down, it's the only video played in the English version
for (uint16 y = 0; y < frame->h / 2; y++) {
- uint32 *ptrFrom = (uint32*)frame->getBasePtr(0, y);
- uint32 *ptrTo = (uint32*)frame->getBasePtr(0, frame->h - y - 1);
+ uint32 *ptrFrom = (uint32 *)frame->getBasePtr(0, y);
+ uint32 *ptrTo = (uint32 *)frame->getBasePtr(0, frame->h - y - 1);
for (uint16 x = 0; x < frame->w; x++) {
uint32 t = *ptrFrom;
*ptrFrom = *ptrTo;
Commit: 931846182baf040101886d8d1ea228f28345adf5
https://github.com/scummvm/scummvm/commit/931846182baf040101886d8d1ea228f28345adf5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-18T22:38:54+02:00
Commit Message:
GNAP: Change pixel format - Courtesy of _sev
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 61ea7c2..3bb96f3 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -235,7 +235,7 @@ void GameSys::drawSpriteToBackground(int x, int y, int resourceId) {
Graphics::Surface *GameSys::allocSurface(int width, int height) {
Graphics::Surface *surface = new Graphics::Surface();
surface->create(width, height, _backgroundSurface->format);
- surface->fillRect(Common::Rect(0, 0, surface->w, surface->h), 0xFFFF00FF);
+ surface->fillRect(Common::Rect(0, 0, surface->w, surface->h), 0xFFFFFF00);
return surface;
}
@@ -630,7 +630,7 @@ void GameSys::blitSurface32(Graphics::Surface *destSurface, int x, int y, Graphi
byte *rdst = dst;
for (int xc = 0; xc < width; ++xc) {
uint32 pixel = READ_LE_UINT32(rsrc);
- if (!transparent || pixel != 0xFFFF00FF)
+ if (!transparent || pixel != 0xFFFFFF00)
WRITE_LE_UINT32(rdst, pixel);
rsrc += 4;
rdst += 4;
@@ -654,9 +654,9 @@ void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *s
byte srcPixel = src[xc];
if (!transparent || srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
- rdst[0] = rgb & 0x000000FF;
- rdst[1] = (rgb & 0x0000FF00) >> 8;
- rdst[2] = (rgb & 0x00FF0000) >> 16;
+ rdst[1] = rgb & 0x000000FF;
+ rdst[2] = (rgb & 0x0000FF00) >> 8;
+ rdst[3] = (rgb & 0x00FF0000) >> 16;
}
rdst += 4;
}
@@ -691,9 +691,9 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
byte srcPixel = *wsrc;
if (srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
- wdst[0] = rgb & 0x000000FF;
- wdst[1] = (rgb & 0x0000FF00) >> 8;
- wdst[2] = (rgb & 0x00FF0000) >> 16;
+ wdst[1] = rgb & 0x000000FF;
+ wdst[2] = (rgb & 0x0000FF00) >> 8;
+ wdst[3] = (rgb & 0x00FF0000) >> 16;
}
wdst += 4;
xi += xs;
@@ -718,9 +718,9 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
byte srcPixel = *wsrc;
if (srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
- wdst[0] = rgb & 0x000000FF;
- wdst[1] = (rgb & 0x0000FF00) >> 8;
- wdst[2] = (rgb & 0x00FF0000) >> 16;
+ wdst[1] = rgb & 0x000000FF;
+ wdst[2] = (rgb & 0x0000FF00) >> 8;
+ wdst[3] = (rgb & 0x00FF0000) >> 16;
}
wdst += 4;
xi += xs;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 4de50ee..d0d8d0a 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -115,8 +115,8 @@ GnapEngine::~GnapEngine() {
}
Common::Error GnapEngine::run() {
- // Initialize the graphics mode to ARGB8888
- Graphics::PixelFormat format = Graphics::PixelFormat(4, 8, 8, 8, 8, 16, 8, 0, 24);
+ // Initialize the graphics mode to RGBA8888
+ Graphics::PixelFormat format = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
initGraphics(800, 600, true, &format);
// We do not support color conversion yet
Commit: 3bf35331abd506805bbc64537d6fb9b7969d10e4
https://github.com/scummvm/scummvm/commit/3bf35331abd506805bbc64537d6fb9b7969d10e4
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-19T00:13:01+02:00
Commit Message:
GNAP: Add thumbnails, rewrite partially querySaveMetaInfos.
Gnap's hand and device are in the middle of the screen, there's place for improvement
Changed paths:
engines/gnap/detection.cpp
engines/gnap/gnap.h
engines/gnap/menu.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 616c26b..b68d64c 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -88,10 +88,8 @@ bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
(f == kSupportsLoadingDuringStartup) ||
(f == kSupportsDeleteSave) ||
(f == kSavesSupportMetaInfo) ||
- (f == kSavesSupportCreationDate);
-#if 0
(f == kSavesSupportThumbnail) ||
-#endif
+ (f == kSavesSupportCreationDate);
}
bool Gnap::GnapEngine::hasFeature(EngineFeature f) const {
@@ -147,35 +145,35 @@ SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int s
Common::String fileName = Common::String::format("%s.%03d", target, slot);
Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
if (file) {
+ char saveIdentBuffer[5];
+ file->read(saveIdentBuffer, 5);
- int32 version = file->readSint32BE();
- if (version != GNAP_SAVEGAME_VERSION) {
+ int32 version = file->readByte();
+ if (version > GNAP_SAVEGAME_VERSION) {
delete file;
return SaveStateDescriptor();
}
- uint32 saveNameLength = file->readUint16BE();
char saveName[256];
- file->read(saveName, saveNameLength);
- saveName[saveNameLength] = 0;
+ char ch;
+ int i = 0;
+ while ((ch = (char)file->readByte()) != '\0')
+ saveName[i++] = ch;
SaveStateDescriptor desc(slot, saveName);
- Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
- desc.setThumbnail(thumbnail);
-
- uint32 saveDate = file->readUint32BE();
- uint16 saveTime = file->readUint16BE();
+ if (version != 1) {
+ Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
+ desc.setThumbnail(thumbnail);
+ }
- int day = (saveDate >> 24) & 0xFF;
- int month = (saveDate >> 16) & 0xFF;
- int year = saveDate & 0xFFFF;
+ int year = file->readSint16LE();
+ int month = file->readSint16LE();
+ int day = file->readSint16LE();
+ int hour = file->readSint16LE();
+ int minutes = file->readSint16LE();
desc.setSaveDate(year, month, day);
-
- int hour = (saveTime >> 8) & 0xFF;
- int minutes = saveTime & 0xFF;
-
desc.setSaveTime(hour, minutes);
delete file;
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 7aa2221..cb1c00d 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -59,7 +59,7 @@ class GameSys;
class SoundMan;
class MusicPlayer;
-#define GNAP_SAVEGAME_VERSION 1
+#define GNAP_SAVEGAME_VERSION 2
struct MouseButtonState {
bool _left;
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index e2b28a6..4381d2f 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -25,6 +25,7 @@
#include "common/translation.h"
#include "gui/saveload.h"
+#include "graphics/thumbnail.h"
#include "gnap/gnap.h"
#include "gnap/datarchive.h"
@@ -576,7 +577,7 @@ void GnapEngine::writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeade
out->writeString(header._saveName);
out->writeByte('\0');
- // TODO: Add thumbnail
+ Graphics::saveThumbnail(*out);
// Write out the save date/time
TimeDate td;
@@ -608,7 +609,13 @@ bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &
header._saveName += ch;
// TODO: Get the thumbnail
- header._thumbnail = nullptr;
+ if (header._version == 1)
+ header._thumbnail = nullptr;
+ else {
+ header._thumbnail = Graphics::loadThumbnail(*in);
+ if (!header._thumbnail)
+ return false;
+ }
// Read in save date/time
header._year = in->readSint16LE();
Commit: 97ac77b5f1b41b77b5e9a79bac0f6a11a4063386
https://github.com/scummvm/scummvm/commit/97ac77b5f1b41b77b5e9a79bac0f6a11a4063386
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-19T07:06:48+02:00
Commit Message:
GNAP: Compute the thumbnail when opening the device so that it doesn't show the large hand in savegames
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/menu.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d0d8d0a..435d0c7 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -97,6 +97,7 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine::syncSoundSettings();
_scene = nullptr;
_music = nullptr;
+ _tempThumbnail = nullptr;
_wasSavegameLoaded = false;
for (int i = 0; i < kMaxTimers; ++i)
@@ -112,6 +113,7 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
GnapEngine::~GnapEngine() {
delete _random;
delete _music;
+ delete _tempThumbnail;
}
Common::Error GnapEngine::run() {
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index cb1c00d..e6507cc 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -248,6 +248,8 @@ public:
MusicPlayer *_music;
Graphics::Font *_font;
+ Common::MemoryWriteStreamDynamic *_tempThumbnail;
+
int _lastUpdateClock;
int _debugLevel;
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 4381d2f..2196bb6 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -210,8 +210,11 @@ void GnapEngine::runMenu() {
_menuStatus = 0;
_menuDone = false;
- createMenuSprite();//??? CHECKME Crashes when done in loadStockDat() find out why
+ delete _tempThumbnail;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ Graphics::saveThumbnail(*_tempThumbnail);
+ createMenuSprite();
insertDeviceIconActive();
for (int i = 0; i < 7; ++i) {
@@ -577,7 +580,9 @@ void GnapEngine::writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeade
out->writeString(header._saveName);
out->writeByte('\0');
- Graphics::saveThumbnail(*out);
+ // This implies the menu is used
+ // If we want to save/load at any time, then a check should be added
+ out->write(_tempThumbnail->getData(), _tempThumbnail->size());
// Write out the save date/time
TimeDate td;
@@ -608,7 +613,7 @@ bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &
while ((ch = (char)in->readByte()) != '\0')
header._saveName += ch;
- // TODO: Get the thumbnail
+ // Get the thumbnail, saved in v2 or later
if (header._version == 1)
header._thumbnail = nullptr;
else {
Commit: 9a2bc3c5720e807978fa8a302b5b3c532fb62d30
https://github.com/scummvm/scummvm/commit/9a2bc3c5720e807978fa8a302b5b3c532fb62d30
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-19T07:59:07+02:00
Commit Message:
GNAP: Add several checks on _gameDone in order to quit the game quickly
Changed paths:
engines/gnap/character.cpp
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group5.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 46b5dc7..706cb98 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -481,7 +481,7 @@ void PlayerGnap::useJointOnPlatypus() {
plat._idleFacing = kDirNone;
playSequence(0x107B5);
walkStep();
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
_vm->gameUpdateTick();
}
@@ -511,7 +511,7 @@ void PlayerGnap::kissPlatypus(int callback) {
plat._sequenceId = 0x7CB;
plat._idleFacing = kDirNone;
playSequence(0x107B5);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
_vm->gameUpdateTick();
@@ -1120,7 +1120,7 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int
if (!_vm->isPointBlocked(checkPt) && (_pos != checkPt)) {
walkTo(checkPt, 0, 0x107B9, 1);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+ while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
_vm->gameUpdateTick();
@@ -1129,7 +1129,7 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int
if (_pos == plat._pos + Common::Point(gridX, gridY)) {
_vm->_gameSys->setAnimation(platSequenceId, plat._id, 1);
plat.playSequence(platSequenceId);
- while (_vm->_gameSys->getAnimationStatus(1) != 2) {
+ while (_vm->_gameSys->getAnimationStatus(1) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
_vm->doCallback(callback);
_vm->gameUpdateTick();
@@ -1145,8 +1145,9 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int
void PlayerGnap::useDisguiseOnPlatypus() {
_vm->_gameSys->setAnimation(0x10846, _id, 0);
playSequence(0x10846);
- while (_vm->_gameSys->getAnimationStatus(0) != 2)
+ while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
+
_vm->_newSceneNum = 47;
_vm->_isLeavingScene = true;
_vm->_sceneDone = true;
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 435d0c7..9af8128 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -241,7 +241,6 @@ void GnapEngine::updateEvents() {
void GnapEngine::gameUpdateTick() {
updateEvents();
- // TODO Check _gameDone in the various game loops
if (shouldQuit()) {
_gameDone = true;
_sceneDone = true;
@@ -307,13 +306,12 @@ void GnapEngine::resumeGame() {
}
void GnapEngine::updatePause() {
- while (_isPaused) {
+ while (_isPaused && !_gameDone) {
gameUpdateTick();
if (isKeyStatus1(Common::KEYCODE_p)) {
clearKeyStatus1(Common::KEYCODE_p);
resumeGame();
}
- //_system->delayMillis(100);
}
}
@@ -557,7 +555,7 @@ void GnapEngine::showFullScreenSprite(int resourceId) {
setGrabCursorSprite(-1);
addFullScreenSprite(resourceId, 256);
while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29)) {
+ !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29) && !_gameDone) {
gameUpdateTick();
}
_mouseClickState._left = false;
@@ -737,8 +735,6 @@ void GnapEngine::mainLoop() {
deleteSurface(&_backgroundSurface);
_dat->close(1);
- // TODO freeMenuSprite();
- // TODO freeFont();
}
void GnapEngine::initScene() {
@@ -829,7 +825,6 @@ void GnapEngine::checkGameKeys() {
pauseGame();
updatePause();
}
- // TODO? Debug input
}
void GnapEngine::startSoundTimerA(int timerIndex) {
@@ -911,14 +906,14 @@ void GnapEngine::updateIdleTimer() {
void GnapEngine::screenEffect(int dir, byte r, byte g, byte b) {
if (dir == 1) {
- for (int y = 300; y < 600; y += 50) {
+ for (int y = 300; y < 600 && !_gameDone; y += 50) {
_gameSys->fillSurface(nullptr, 0, y, 800, 50, r, g, b);
_gameSys->fillSurface(nullptr, 0, 549 - y + 1, 800, 50, r, g, b);
gameUpdateTick();
_system->delayMillis(50);
}
} else {
- for (int y = 0; y < 300; y += 50) {
+ for (int y = 0; y < 300 && !_gameDone; y += 50) {
_gameSys->fillSurface(nullptr, 0, y, 800, 50, r, g, b);
_gameSys->fillSurface(nullptr, 0, 549 - y + 1, 800, 50, r, g, b);
gameUpdateTick();
@@ -1000,13 +995,13 @@ void GnapEngine::playSequences(int fullScreenSpriteId, int sequenceId1, int sequ
kSeqSyncWait, 0, 15 * (5 * _gnap->_pos.x - 25), 48 * (_gnap->_pos.y - 8));
_gnap->_sequenceId = sequenceId2;
_gnap->_sequenceDatNum = 0;
- while (_gameSys->getAnimationStatus(0) != 2)
+ while (_gameSys->getAnimationStatus(0) != 2 && !_gameDone)
gameUpdateTick();
hideCursor();
addFullScreenSprite(fullScreenSpriteId, 255);
_gameSys->setAnimation(sequenceId1, 256, 0);
_gameSys->insertSequence(sequenceId1, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (_gameSys->getAnimationStatus(0) != 2)
+ while (_gameSys->getAnimationStatus(0) != 2 && !_gameDone)
gameUpdateTick();
_gameSys->setAnimation(sequenceId3, _gnap->_id, 0);
_gameSys->insertSequence(sequenceId3, _gnap->_id,
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 2196bb6..d7eaca0 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -427,9 +427,8 @@ void GnapEngine::updateMenuStatusMainMenu() {
_gameSys->insertDirtyRect(dirtyRect);
}
- while (!_mouseClickState._left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2]) {
+ while (!_mouseClickState._left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2] && !_gameDone)
gameUpdateTick();
- }
playSound(0x108F5, false);
_mouseClickState._left = false;
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 80c7c65..8466250 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -718,10 +718,12 @@ bool Scene50::updateEnergyBars(int newLeftBarPos, int newRightBarPos) {
}
void Scene50::waitForAnim(int animationIndex) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
+ GameSys& gameSys = *_vm->_gameSys;
+
+ while (gameSys.getAnimationStatus(animationIndex) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
- }
- _vm->_gameSys->setAnimation(0, 0, animationIndex);
+
+ gameSys.setAnimation(0, 0, animationIndex);
}
int Scene50::checkInput() {
@@ -945,7 +947,7 @@ void Scene50::run() {
_vm->_timers[5] = 15;
- while (!_fightDone) {
+ while (!_fightDone && !_vm->_gameDone) {
/* TODO
if (sceneXX_sub_4466B1())
_fightDone = true;
@@ -1458,8 +1460,7 @@ bool Scene51::isJumping(int sequenceId) {
}
void Scene51::waitForAnim(int animationIndex) {
- while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2) {
- // pollMessages();
+ while (_vm->_gameSys->getAnimationStatus(animationIndex) != 2 && _vm->_gameDone) {
updateItemAnimations();
_vm->gameUpdateTick();
}
@@ -1605,10 +1606,9 @@ void Scene51::winMinigame() {
void Scene51::playCashAppearAnim() {
_vm->_gameSys->setAnimation(0xC8, 252, 0);
_vm->_gameSys->insertSequence(0xC8, 252, 0, 0, kSeqNone, 0, -20, -20);
- while (_vm->_gameSys->getAnimationStatus(0) != 2) {
+
+ while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
- // checkGameAppStatus();
- }
}
void Scene51::updateCash(int amount) {
@@ -1726,8 +1726,7 @@ void Scene51::run() {
isIdle = false;
}
- while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT) && _platypusNextSequenceId != 0x96) {
- // pollMessages();
+ while (_vm->isKeyStatus2(Common::KEYCODE_RIGHT) && _platypusNextSequenceId != 0x96 && !_vm->_gameDone) {
if (_platypusNextSequenceId == 0xB6)
_platypusNextSequenceId = 0x76;
updateItemAnimations();
@@ -1780,8 +1779,7 @@ void Scene51::run() {
_vm->gameUpdateTick();
}
- while (_vm->isKeyStatus2(Common::KEYCODE_LEFT) && _platypusNextSequenceId != 0xB6) {
- // pollMessages();
+ while (_vm->isKeyStatus2(Common::KEYCODE_LEFT) && _platypusNextSequenceId != 0xB6 && !_vm->_gameDone) {
updateItemAnimations();
if (startWalk) {
_platypusNextSequenceId = 0xA5;
@@ -1879,7 +1877,7 @@ void Scene52::updateHotspots() {
}
void Scene52::update() {
- for (int rowNum = 0; rowNum < 7; ++rowNum) {
+ for (int rowNum = 0; rowNum < 7 && !_vm->_gameDone; ++rowNum) {
_vm->gameUpdateTick();
if (_vm->_gameSys->getAnimationStatus(_alienRowAnims[rowNum]) == 2) {
updateAlienRow(rowNum);
@@ -1936,7 +1934,7 @@ void Scene52::update() {
loseShip();
if (_shipsLeft != 0) {
_vm->_timers[3] = 40;
- while (_vm->_timers[3]) {
+ while (_vm->_timers[3] && !_vm->_gameDone) {
updateAlienCannons();
if (_shipCannonFiring)
updateShipCannon();
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 25e0aae..dfc6d7a 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -1209,7 +1209,7 @@ void Scene03::updateAnimations() {
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
@@ -1224,12 +1224,12 @@ void Scene03::updateAnimations() {
gnap.playBrainPulsating();
gameSys.insertSequence(0x1BF, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncExists, 0, 0, 0);
gameSys.setAnimation(0x1BF, 99, 1);
- while (gameSys.getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->addFullScreenSprite(0x106, 255);
gameSys.setAnimation(0x1C9, 256, 1);
gameSys.insertSequence(0x1C9, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
gameSys.setAnimation(0x1BA, 99, 1);
@@ -2191,7 +2191,7 @@ void Scene05::updateAnimations() {
_nextChickenSequenceId = 0x14B;
break;
case kAS05GrabLadder:
- while (gameSys.isSequenceActive(0x149, 39))
+ while (gameSys.isSequenceActive(0x149, 39) && !_vm->_gameDone)
_vm->gameUpdateTick();
gameSys.insertSequence(0x14E, gnap._id + 1, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0x14D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index f785c44..7b1e1e3 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -1488,7 +1488,7 @@ void Scene13::showScribble() {
_vm->_largeSprite = gameSys.createSurface(0x6F);
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29))
+ !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29) && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->_mouseClickState._left = false;
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
@@ -2365,7 +2365,7 @@ void Scene17::platHangUpPhone() {
plat._actionStatus = -1;
gameSys.setAnimation(0x257, 254, 4);
gameSys.insertSequence(0x257, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (gameSys.getAnimationStatus(4) != 2)
+ while (gameSys.getAnimationStatus(4) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
gameSys.setAnimation(0x25B, plat._id, 1);
gameSys.insertSequence(0x25B, plat._id, plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, kSeqSyncWait, 0, 0, 0);
@@ -2374,7 +2374,7 @@ void Scene17::platHangUpPhone() {
_currPhoneSequenceId = -1;
_nextPhoneSequenceId = -1;
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
- while (gameSys.getAnimationStatus(1) != 2)
+ while (gameSys.getAnimationStatus(1) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
gnap._actionStatus = savedGnapActionStatus;
_vm->updateMouseCursor();
@@ -3272,7 +3272,7 @@ void Scene18::putDownGarbageCan(int animationIndex) {
PlayerGnap& gnap = *_vm->_gnap;
if (animationIndex >= 0) {
- while (gameSys.getAnimationStatus(animationIndex) != 2)
+ while (gameSys.getAnimationStatus(animationIndex) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
}
if (gnap._idleFacing != kDirNone && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight)
@@ -3296,7 +3296,7 @@ void Scene18::putDownGarbageCan(int animationIndex) {
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);
- while (gameSys.getAnimationStatus(4) != 2)
+ while (gameSys.getAnimationStatus(4) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
}
@@ -3311,7 +3311,7 @@ void Scene18::platEndPhoning(bool platFl) {
if (_currPhoneSequenceId != -1) {
gameSys.setAnimation(0x21E, 254, 3);
gameSys.insertSequence(0x21E, 254, _currPhoneSequenceId, 254, kSeqSyncExists, 0, 0, 0);
- while (gameSys.getAnimationStatus(3) != 2)
+ while (gameSys.getAnimationStatus(3) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
}
gameSys.removeSequence(0x21F, 254, true);
@@ -3352,7 +3352,7 @@ void Scene18::closeHydrantValve() {
void Scene18::waitForGnapAction() {
PlayerGnap& gnap = *_vm->_gnap;
- while (gnap._actionStatus >= 0) {
+ while (gnap._actionStatus >= 0 && !_vm->_gameDone) {
updateAnimations();
_vm->gameUpdateTick();
}
@@ -3890,7 +3890,7 @@ void Scene18::updateAnimations() {
gameSys.removeSequence(0x20C, 19, true);
gameSys.setAnimation(0x217, 39, 5);
gameSys.insertSequence(0x217, 39, 0x216, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(5) != 2)
+ while (gameSys.getAnimationStatus(5) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20E, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -3927,7 +3927,7 @@ void Scene18::updateAnimations() {
_cowboyHatSurface = _vm->addFullScreenSprite(0x1D2, 255);
gameSys.setAnimation(0x218, 256, 0);
gameSys.insertSequence(0x218, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->_newSceneNum = 18;
_vm->invAdd(kItemCowboyHat);
@@ -3992,7 +3992,7 @@ void Scene18::updateAnimations() {
gameSys.removeSequence(0x20B, 19, true);
gameSys.setAnimation(0x213, 39, 5);
gameSys.insertSequence(0x214, 39, 0x213, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(5) != 2)
+ while (gameSys.getAnimationStatus(5) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -4008,7 +4008,7 @@ void Scene18::updateAnimations() {
gameSys.removeSequence(0x20B, 19, true);
gameSys.setAnimation(0x211, 39, 5);
gameSys.insertSequence(0x212, 39, 0x211, 39, kSeqLoop | kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(5) != 2)
+ while (gameSys.getAnimationStatus(5) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->playSound(0x22B, true);
gameSys.insertSequence(0x20D, 39, 0, 0, kSeqNone, 0, 0, 0);
@@ -4411,10 +4411,9 @@ void Scene19::updateAnimations() {
_pictureSurface = _vm->addFullScreenSprite(0xF, 255);
gameSys.setAnimation(0x61, 256, 0);
gameSys.insertSequence(0x61, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2) {
- // checkGameAppStatus();
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
- }
+
_vm->setFlag(kGFUnk27);
_vm->showCursor();
_vm->_newSceneNum = 17;
@@ -4454,9 +4453,9 @@ void Scene19::updateAnimations() {
_currShopAssistantSequenceId = _nextShopAssistantSequenceId;
_nextShopAssistantSequenceId = -1;
_vm->_timers[5] = 10;
- while (_vm->_timers[5]) {
+ while (_vm->_timers[5] && !_vm->_gameDone)
_vm->gameUpdateTick();
- }
+
gnap.playIdle(Common::Point(6, 2));
gnap._actionStatus = -1;
break;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 380bb0b..2bee320 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -205,10 +205,9 @@ void Scene20::run() {
_vm->endSceneInit();
gameSys.setAnimation(0x182, 140, 0);
gameSys.insertSequence(0x182, 140, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2) {
- // checkGameAppStatus();
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
- }
+
gnap.initPos(11, 8, kDirBottomLeft);
plat.initPos(11, 9, kDirUnk4);
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
@@ -623,7 +622,7 @@ void Scene20::updateAnimations() {
_vm->addFullScreenSprite(0x12C, 255);
gameSys.setAnimation(0x181, 256, 0);
gameSys.insertSequence(0x181, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -1088,9 +1087,9 @@ void Scene22::run() {
gameSys.drawSpriteToBackground(0, 0, 0x44);
gameSys.setAnimation(storeDetectiveSeqId, 256, 4);
gameSys.insertSequence(storeDetectiveSeqId, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(4) != 2) {
+ while (gameSys.getAnimationStatus(4) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
- }
+
_vm->_sceneDone = true;
_vm->_newSceneNum = 20;
_caughtBefore = true;
@@ -1316,8 +1315,9 @@ void Scene23::run() {
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
} else {
gnap.walkTo(Common::Point(2, 7), 0, 0x107B9, 1);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
+
_vm->playSequences(0x48, 0xBA, 0xBB, 0xBC);
_vm->setFlag(kGFUnk24);
}
@@ -1800,7 +1800,7 @@ void Scene25::playAnims(int index) {
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
_vm->delayTicksCursor(5);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
- !_vm->isKeyStatus1(29)) {
+ !_vm->isKeyStatus1(29) && !_vm->_gameDone) {
_vm->gameUpdateTick();
}
_vm->_mouseClickState._left = false;
@@ -2767,7 +2767,7 @@ void Scene28::run() {
_nextClownSequenceId = -1;
_vm->_timers[4] = _vm->getRandom(20) + 80;
gnap._actionStatus = kAS28GnapWaiting;
- while (gameSys.getAnimationStatus(3) != 2) {
+ while (gameSys.getAnimationStatus(3) != 2 && !_vm->_gameDone) {
_vm->gameUpdateTick();
_vm->updateMouseCursor();
}
@@ -3001,8 +3001,9 @@ void Scene28::updateAnimations() {
_vm->addFullScreenSprite(0xF6, 255);
gameSys.setAnimation(0x120, 256, 0);
gameSys.insertSequence(0x120, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
+
_vm->removeFullScreenSprite();
_vm->showCursor();
_vm->setGrabCursorSprite(kItemHorn);
@@ -3381,10 +3382,12 @@ void Scene29::updateAnimations() {
_currMonkeySequenceId = 0xE6;
_nextMonkeySequenceId = -1;
_vm->_timers[5] = 30;
- while (_vm->_timers[5])
+ while (_vm->_timers[5] && !_vm->_gameDone)
_vm->gameUpdateTick();
+
_vm->_plat->walkTo(Common::Point(0, 8), 1, 0x107CF, 1);
- while (gameSys.getAnimationStatus(1) != 2)
+
+ while (gameSys.getAnimationStatus(1) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
} else if (_nextMonkeySequenceId == -1) {
switch (_vm->getRandom(6)) {
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index b700d6e..6c93057 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -238,7 +238,7 @@ void Scene30::updateAnimations() {
gameSys.removeSequence(0x105, gnap._id, true);
gameSys.setAnimation(0x102, 256, 0);
gameSys.insertSequence(0x102, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
gameSys.setAnimation(0x103, gnap._id, 0);
gameSys.insertSequence(0x103, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 810e4bf..7a5de8d 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -1139,7 +1139,7 @@ void Scene42::updateAnimations() {
_vm->addFullScreenSprite(0x13E, 255);
gameSys.setAnimation(0x151, 256, 0);
gameSys.insertSequence(0x151, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->removeFullScreenSprite();
_vm->showCursor();
@@ -2189,7 +2189,7 @@ void Scene45::run() {
_vm->setGrabCursorSprite(-1);
gameSys.setAnimation(0x9D, gnap._id, 0);
gameSys.insertSequence(0x9D, gnap._id, makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id, kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2) {
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone) {
_vm->gameUpdateTick();
if (gameSys.getAnimationStatus(2) == 2) {
gameSys.setAnimation(0, 0, 2);
@@ -2211,7 +2211,7 @@ void Scene45::run() {
_vm->addFullScreenSprite(0x8A, 255);
gameSys.setAnimation(0xA0, 256, 0);
gameSys.insertSequence(0xA0, 256, 0, 0, kSeqNone, 0, 0, 0);
- while (gameSys.getAnimationStatus(0) != 2)
+ while (gameSys.getAnimationStatus(0) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
gameSys.setAnimation(0x107BD, gnap._id, 0);
gameSys.insertSequence(0x107BD, gnap._id,
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index 2788a43..a359da2 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -89,8 +89,7 @@ int Scene53::pressPhoneNumberButton(int phoneNumber, int buttonNum) {
}
gnap._actionStatus = 6;
- while (gameSys.getAnimationStatus(6) != 2) {
- // checkGameAppStatus();
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
_vm->gameUpdateTick();
}
@@ -141,9 +140,8 @@ void Scene53::runRandomCall() {
}
gnap._actionStatus = 1;
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
gnap._actionStatus = -1;
@@ -159,9 +157,8 @@ void Scene53::runChitChatLine() {
gameSys.insertSequence(0x6E, 1, 0, 0, kSeqNone, 16, 0, 0);
gnap._actionStatus = 1;
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
gnap._actionStatus = -1;
@@ -225,18 +222,16 @@ void Scene53::runChitChatLine() {
gameSys.setAnimation(sequenceId, 1, 6);
gameSys.insertSequence(sequenceId, 1, 0, 0, kSeqNone, 16, 0, 0);
gnap._actionStatus = 1;
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
gnap._actionStatus = -1;
gameSys.setAnimation(0x72, 1, 6);
gameSys.insertSequence(0x72, 1, 0, 0, kSeqNone, 16, 0, 0);
gnap._actionStatus = 1;
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
gnap._actionStatus = -1;
@@ -250,9 +245,8 @@ void Scene53::runChitChatLine() {
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
@@ -317,9 +311,8 @@ void Scene53::run() {
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
@@ -359,9 +352,8 @@ void Scene53::run() {
if (_vm->isFlag(kGFSpringTaken)) {
gameSys.setAnimation(0x73, 40, 6);
gameSys.insertSequence(0x73, 40, _currHandSequenceId, 40, kSeqSyncWait, 0, 0, 0);
- while (gameSys.getAnimationStatus(6) != 2) {
+ while (gameSys.getAnimationStatus(6) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
- // checkGameAppStatus();
_vm->gameUpdateTick();
}
_currHandSequenceId = 0x73;
Commit: ba61f90eb6324ceb9f6759a78de06136d1c3be5b
https://github.com/scummvm/scummvm/commit/ba61f90eb6324ceb9f6759a78de06136d1c3be5b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T01:21:22+02:00
Commit Message:
GNAP: Rework the code of Scene07::run, remove an obsolete todo
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/group0.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 9af8128..541d062 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -246,7 +246,6 @@ void GnapEngine::gameUpdateTick() {
_sceneDone = true;
}
- // TODO Improve this (variable frame delay to keep ~15fps)
int currClock = _system->getMillis();
if (currClock >= _lastUpdateClock + 66) {
_gameSys->fatUpdate();
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index dfc6d7a..729ef96 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -2830,28 +2830,19 @@ void Scene07::run() {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
int gnapRandomValue = _vm->getRandom(20);
- // TODO Cleanup
if (plat._idleFacing != kDirNone) {
- if (gnapRandomValue != 0 || plat._sequenceId != 0x7CA) {
- if (gnapRandomValue != 1 || plat._sequenceId != 0x7CA) {
- if (plat._pos.y == 9)
- plat.playSequence(0x107CA);
- } else {
- plat.playSequence(0x10845);
- }
- } else {
+ if (gnapRandomValue == 0 && plat._sequenceId == 0x7CA)
plat.playSequence(0x107CC);
- }
- } else if (gnapRandomValue != 0 || plat._sequenceId != 0x7C9) {
- if (gnapRandomValue != 1 || plat._sequenceId != 0x7C9) {
- if (plat._pos.y == 9)
- plat.playSequence(0x107C9);
- } else {
+ else if (gnapRandomValue == 1 && plat._sequenceId == 0x7CA)
+ plat.playSequence(0x10845);
+ else if (plat._pos.y == 9)
+ plat.playSequence(0x107CA);
+ } else if (gnapRandomValue == 0 && plat._sequenceId == 0x7C9)
+ plat.playSequence(0x107CB);
+ else if (gnapRandomValue == 1 && plat._sequenceId == 0x7C9)
plat.playSequence(0x10844);
- }
- } else {
- plat.playSequence(0x107CB);
- }
+ else if (plat._pos.y == 9)
+ plat.playSequence(0x107C9);
gameSys.setAnimation(plat._sequenceId | (plat._sequenceDatNum << 16), plat._id, 1);
}
} else {
Commit: 8a112ec92d57f7c05739e7681930289d9f9da431
https://github.com/scummvm/scummvm/commit/8a112ec92d57f7c05739e7681930289d9f9da431
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T06:59:38+02:00
Commit Message:
GNAP: Enable a clown sequence which wasn't used in the original due to a bug
Changed paths:
engines/gnap/scenes/group2.cpp
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 2bee320..78f7c04 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -3036,13 +3036,15 @@ void Scene28::updateAnimations() {
gnap.walkTo(Common::Point(2, 8), -1, 0x107BB, 1);
break;
case kAS28TalkClown:
- _clownTalkCtr = (_clownTalkCtr + 1) % 2;
+ // The original was only using the first two sequences,
+ // due to a bug.
+ _clownTalkCtr = (_clownTalkCtr + 1) % 3;
if (_clownTalkCtr == 0)
_nextClownSequenceId = 0x11D;
else if (_clownTalkCtr == 1)
_nextClownSequenceId = 0x11E;
else if (_clownTalkCtr == 2)
- _nextClownSequenceId = 0x11F; // NOTE CHECKME Never set, bug in the original?
+ _nextClownSequenceId = 0x11F;
break;
case kAS28GnapWaiting:
gnap._actionStatus = -1;
Commit: 20b3d1814a54c5f82e29e141ebf61f572767840c
https://github.com/scummvm/scummvm/commit/20b3d1814a54c5f82e29e141ebf61f572767840c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T07:00:50+02:00
Commit Message:
GNAP: Remove some CHECKME's
Changed paths:
engines/gnap/character.cpp
engines/gnap/gnap.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 706cb98..575e3f3 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -676,8 +676,11 @@ int PlayerGnap::getWalkSequenceId(int deltaX, int deltaY) {
0x7AD, 0x000, 0x7AE,
0x7B1, 0x000, 0x7B3
};
- // CHECKME This is a little weird
- return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+
+ int id = 3 * (deltaX + 1) + deltaY + 1;
+ assert(id >= 0 && id < 9);
+
+ return walkSequenceIds[id];
}
bool PlayerGnap::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
@@ -1275,8 +1278,11 @@ int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
0x7C4, 0x000, 0x7C7,
0x7C3, 0x000, 0x7C6
};
- // CHECKME This is a little weird
- return walkSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+
+ int id = 3 * (deltaX + 1) + deltaY + 1;
+ assert(id >= 0 && id < 9);
+
+ return walkSequenceIds[id];
}
bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 541d062..d6ec44c 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -1049,7 +1049,6 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
if (destY == -1)
destY = _leftClickMouseY;
- //CHECKME
int clippedDestX = CLIP(destX, minX, maxX);
int clippedDestY = CLIP(destY, minY, maxY);
int dirX = 0, dirY = 0; // 0, -1 or 1
Commit: f734291abb883278c51e35122e4342d6bef8abfd
https://github.com/scummvm/scummvm/commit/f734291abb883278c51e35122e4342d6bef8abfd
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T07:47:16+02:00
Commit Message:
GNAP: Implement delayTicks functions, refactor them to share code
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group1.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index d6ec44c..5175d07 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -327,14 +327,31 @@ int GnapEngine::loadSavegame(int savegameNum) {
return 1;
}
-void GnapEngine::delayTicks(int a1) {
- // TODO
- gameUpdateTick();
+void GnapEngine::delayTicks(int val, int idx = 0, bool updateCursor = false) {
+ int startTick = _timers[idx];
+
+ _timers[idx] = val;
+
+ while (_timers[idx] && !_gameDone) {
+ gameUpdateTick();
+
+ if (updateCursor)
+ updateGrabCursorSprite(0, 0);
+ }
+
+ startTick -= _timers[idx];
+ if (startTick < 0)
+ startTick = 0;
+
+ _timers[idx] = startTick;
+}
+
+void GnapEngine::delayTicksA(int val, int idx) {
+ delayTicks(val, idx);
}
-void GnapEngine::delayTicksCursor(int a1) {
- // TODO
- gameUpdateTick();
+void GnapEngine::delayTicksCursor(int val) {
+ delayTicks(val, 0, true);
}
void GnapEngine::setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags,
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index e6507cc..0f45dc2 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -325,8 +325,9 @@ public:
void writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeader &header);
static bool readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header);
- void delayTicks(int a1);
- void delayTicksCursor(int a1);
+ void delayTicks(int val, int idx, bool updateCursor);
+ void delayTicksA(int val, int idx);
+ void delayTicksCursor(int val);
void setHotspot(int index, int16 x1, int16 y1, int16 x2, int16 y2, uint16 flags = 0,
int16 walkX = -1, int16 walkY = -1);
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index 8466250..eddb29d 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -616,11 +616,11 @@ void Scene50::playWinAnim(int tongueNum, bool fightOver) {
waitForAnim(6);
waitForAnim(5);
}
- // TODO delayTicksA(1, 7);
+ _vm->delayTicksA(1, 7);
}
void Scene50::delayTicks() {
- // TODO delayTicksA(3, 7);
+ _vm->delayTicksA(3, 7);
}
void Scene50::initRound() {
@@ -941,7 +941,7 @@ void Scene50::run() {
_vm->setGrabCursorSprite(-1);
_vm->hideCursor();
- // TODO delayTicksA(1, 7);
+ _vm->delayTicksA(1, 7);
playRoundAnim(_roundNum);
@@ -1598,7 +1598,7 @@ int Scene51::incCashAmount(int sequenceId) {
void Scene51::winMinigame() {
updateCash(1995);
_vm->playSound(0xDA, false);
- // TODO delayTicksA(1, 5);
+ _vm->delayTicksA(1, 5);
_vm->_newSceneNum = 48;
_vm->invRemove(kItemBanana);
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 7b1e1e3..52767e1 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -2530,7 +2530,7 @@ void Scene17::run() {
gameSys.insertSequence(0x107C1, plat._id, 0x241, plat._id,
kSeqScale | kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
gameSys.insertSequence(0x22C, 2, 0, 0, kSeqNone, 0, 0, 0);
- // TODO delayTicksA(2, 9);
+ _vm->delayTicksA(2, 9);
_vm->endSceneInit();
plat._sequenceId = 0x7C1;
plat._sequenceDatNum = 1;
Commit: 85417c15bb56593ccc062e42e29712968b6857e3
https://github.com/scummvm/scummvm/commit/85417c15bb56593ccc062e42e29712968b6857e3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T07:51:53+02:00
Commit Message:
GNAP: Remove obsolete TODOs
Changed paths:
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group0.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index eddb29d..da66829 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -948,11 +948,6 @@ void Scene50::run() {
_vm->_timers[5] = 15;
while (!_fightDone && !_vm->_gameDone) {
- /* TODO
- if (sceneXX_sub_4466B1())
- _fightDone = true;
- */
-
int playerSequenceId = checkInput();
if (playerSequenceId != -1)
_leftTongueNextSequenceId = playerSequenceId;
@@ -985,8 +980,6 @@ void Scene50::run() {
_vm->gameUpdateTick();
}
- // freeFont();
-
_vm->_gameSys->setAnimation(0, 0, 7);
_vm->_gameSys->setAnimation(0, 0, 6);
_vm->_gameSys->setAnimation(0, 0, 5);
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 729ef96..d958b29 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -1388,7 +1388,6 @@ void Scene04::run() {
if (_vm->isFlag(kGFPlatypusDisguised)) {
_vm->_timers[3] = 300;
- // TODO setCursor((LPCSTR)IDC_WAIT);
_vm->setGrabCursorSprite(kItemKeys);
gnap._pos = Common::Point(4, 7);
gnap._id = 140;
Commit: 72d46655ff5c657d776737aa3abc5b8f32c27ba9
https://github.com/scummvm/scummvm/commit/72d46655ff5c657d776737aa3abc5b8f32c27ba9
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T07:59:19+02:00
Commit Message:
GNAP: Remove TODOs, add safeguard checks
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 3bb96f3..c2c0e42 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -786,8 +786,6 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
void GameSys::drawSprites() {
debugC(kDebugBasic, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
- // TODO Split into multiple functions for clarity
-
// Restore dirty background and collect rects to be redrawn for all sprites
// which aren't marked to be redrawn yet
Common::Rect intersectingRect;
@@ -853,7 +851,7 @@ void GameSys::drawSprites() {
if (gfxItem5->_flags & 1) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
} else if (gfxItem5->_flags & 2) {
- // TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
+ error("drawSprites - Unexpected AVI frame");
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
@@ -866,11 +864,7 @@ void GameSys::drawSprites() {
for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
} else if (gfxItem5->_flags & 2) {
- /* TODO
- spriteData4 = gfxItem5->prevFrame.spriteId;
- for (int n = 0; n < gfxItem5->updRectsCount; ++n)
- seqDrawAviFrame(spriteData4, &gfxItem5->prevFrame, &gfxItem5->updRects[n], gfxItem5->flags & 8);
- */
+ error("drawSprites - Unexpected AVI frame");
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_prevFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
Commit: a2fb71928b9d1fa6e99768ea11c35303f9d98d81
https://github.com/scummvm/scummvm/commit/a2fb71928b9d1fa6e99768ea11c35303f9d98d81
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T08:04:56+02:00
Commit Message:
GNAP: Remove some unused variables in resources
Changed paths:
engines/gnap/gamesys.cpp
engines/gnap/resource.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index c2c0e42..7cfa016 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -123,7 +123,6 @@ void GameSys::requestClear2(bool resetFl) {
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else {
gfxItem->_updFlag = false;
@@ -463,7 +462,6 @@ void GameSys::seqInsertGfx(int index, int duration) {
gfxItem->_prevFrame._duration = 0;
gfxItem->_prevFrame._spriteId = -1;
gfxItem->_prevFrame._soundId = -1;
- gfxItem->_prevFrame._unusedVal = -1;
int totalDuration = duration;
if ((seqItem->_flags & 4) && totalDuration > 0) {
gfxItem->_prevFrame._duration = 1;
@@ -530,7 +528,6 @@ void GameSys::seqRemoveGfx(int sequenceId, int id) {
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
++gfxIndex;
gfxItem = &_gfxItems[gfxIndex];
@@ -960,7 +957,6 @@ void GameSys::handleReqRemoveSequenceItems() {
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else {
gfxItem->_updFlag = false;
@@ -983,7 +979,6 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
}
}
@@ -1024,14 +1019,12 @@ void GameSys::fatUpdateFrame() {
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if (!seqItem) {
gfxItem->_animation = nullptr;
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
} else if ((seqItem->_flags & 4) && clockDelta > 1) {
if (gfxItem->_delayTicks < clockDelta) {
@@ -1133,13 +1126,11 @@ void GameSys::fatUpdateFrame() {
gfxItem->_prevFrame._duration = 0;
gfxItem->_prevFrame._spriteId = -1;
gfxItem->_prevFrame._soundId = -1;
- gfxItem->_prevFrame._unusedVal = -1;
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._isScaled = false;
gfxItem->_currFrame._rect = _newSpriteDrawItems[k]._rect;
gfxItem->_currFrame._spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
}
}
_newSpriteDrawItemsCount = 0;
@@ -1155,7 +1146,6 @@ void GameSys::fatUpdateFrame() {
gfxItem->_currFrame._rect = _grabSpriteRect;
gfxItem->_currFrame._spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
gfxItem->_currFrame._soundId = -1;
- gfxItem->_currFrame._unusedVal = -1;
gfxItem->_updFlag = true;
gfxItem->_surface = _grabSpriteSurface2;
break;
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index 9936324..bb5dba0 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -36,7 +36,9 @@ void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
_rect.bottom = stream.readUint32LE();
_spriteId = stream.readUint32LE();
_soundId = stream.readUint32LE();
- _unusedVal = stream.readUint32LE();
+
+ // Skip an unused value
+ stream.readUint32LE();
debugC(kDebugBasic, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
}
@@ -44,8 +46,9 @@ void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
// SequenceAnimation
void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
- _unusedVal1 = stream.readUint16LE();
- _unusedVal2 = stream.readUint16LE();
+ // Skip two unused values
+ stream.readUint32LE();
+
_additionalDelay = stream.readUint32LE();
_framesCount = stream.readUint16LE();
_maxTotalDuration = stream.readUint16LE();
@@ -59,7 +62,9 @@ void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
Common::MemoryReadStream stream(data, size, DisposeAfterUse::NO);
- _unusedVal1 = stream.readUint32LE();
+ // Skip an unused value
+ stream.readUint32LE();
+
_sequenceId = stream.readUint32LE();
_defaultId = stream.readUint32LE();
_sequenceId2 = stream.readUint32LE();
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 35787fa..1b228de 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -51,13 +51,10 @@ struct SequenceFrame {
Common::Rect _rect;
int32 _spriteId;
int32 _soundId;
- int32 _unusedVal;
void loadFromStream(Common::MemoryReadStream &stream);
};
struct SequenceAnimation {
- int16 _unusedVal1;
- int16 _unusedVal2;
int32 _additionalDelay;
int16 _framesCount;
int16 _maxTotalDuration;
@@ -72,7 +69,6 @@ public:
SequenceResource(int resourceId, byte *data, uint32 size);
~SequenceResource();
public:
- uint32 _unusedVal1;
int32 _sequenceId;
int32 _defaultId;
int32 _sequenceId2;
Commit: 7da6d9937114d962ab4e8eea532e224b5e262128
https://github.com/scummvm/scummvm/commit/7da6d9937114d962ab4e8eea532e224b5e262128
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-20T20:56:32+02:00
Commit Message:
GNAP: Fix transparency
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 7cfa016..c10806d 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -651,6 +651,7 @@ void GameSys::blitSprite32(Graphics::Surface *destSurface, int x, int y, byte *s
byte srcPixel = src[xc];
if (!transparent || srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
+ rdst[0] = 0xFF;
rdst[1] = rgb & 0x000000FF;
rdst[2] = (rgb & 0x0000FF00) >> 8;
rdst[3] = (rgb & 0x00FF0000) >> 16;
@@ -688,6 +689,7 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
byte srcPixel = *wsrc;
if (srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
+ wdst[0] = 0xFF;
wdst[1] = rgb & 0x000000FF;
wdst[2] = (rgb & 0x0000FF00) >> 8;
wdst[3] = (rgb & 0x00FF0000) >> 16;
@@ -715,6 +717,7 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
byte srcPixel = *wsrc;
if (srcPixel) {
uint32 rgb = sourcePalette[srcPixel];
+ wdst[0] = 0xFF;
wdst[1] = rgb & 0x000000FF;
wdst[2] = (rgb & 0x0000FF00) >> 8;
wdst[3] = (rgb & 0x00FF0000) >> 16;
Commit: 3f2fcec10b84294bef258e9bad24e72eafbee9ee
https://github.com/scummvm/scummvm/commit/3f2fcec10b84294bef258e9bad24e72eafbee9ee
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-20T20:59:33+02:00
Commit Message:
GNAP: Fix sprite transparency
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index c10806d..36a7c45 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -224,7 +224,7 @@ void GameSys::drawSpriteToBackground(int x, int y, int resourceId) {
int spriteWidth = spriteResource->_width;
int spriteHeight = spriteResource->_height;
Common::Rect dstRect(0, 0, spriteWidth, spriteHeight);
- blitSprite32(_backgroundSurface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ blitSprite32(_backgroundSurface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, spriteResource->_transparent != 0);
_vm->_spriteCache->release(resourceId);
// Add dirty rect so the modified background is redrawn
Commit: 3981d8514e00b9094d7119e5c251e74006c03b84
https://github.com/scummvm/scummvm/commit/3981d8514e00b9094d7119e5c251e74006c03b84
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T21:46:19+02:00
Commit Message:
GNAP: Remove erroneous comments, simplify a call to blitSprite32
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 36a7c45..eedd7fa 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -224,7 +224,7 @@ void GameSys::drawSpriteToBackground(int x, int y, int resourceId) {
int spriteWidth = spriteResource->_width;
int spriteHeight = spriteResource->_height;
Common::Rect dstRect(0, 0, spriteWidth, spriteHeight);
- blitSprite32(_backgroundSurface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, spriteResource->_transparent != 0);
+ blitSprite32(_backgroundSurface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, spriteResource->_transparent);
_vm->_spriteCache->release(resourceId);
// Add dirty rect so the modified background is redrawn
@@ -255,7 +255,7 @@ void GameSys::drawSpriteToSurface(Graphics::Surface *surface, int x, int y, int
uint32 *sourcePalette = spriteResource->_palette;
byte *sourcePixels = spriteResource->_pixels;
Common::Rect dstRect(0, 0, spriteResource->_width, spriteResource->_height);
- blitSprite32(surface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ blitSprite32(surface, x, y, sourcePixels, spriteResource->_width, dstRect, sourcePalette, true);
_vm->_spriteCache->release(resourceId);
}
@@ -779,7 +779,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
blitSpriteScaled32(_frontSurface, frame._rect, clipRect, sourcePixels, spriteResource->_width, sourceRect, sourcePalette);
} else {
clipRect.translate(-frame._rect.left, -frame._rect.top);
- blitSprite32(_frontSurface, x, y, sourcePixels, spriteResource->_width, clipRect, sourcePalette, true);//spriteResource->_transparent != 0);
+ blitSprite32(_frontSurface, x, y, sourcePixels, spriteResource->_width, clipRect, sourcePalette, true);
}
}
Commit: bd4ef7ffb4db991df8f3cbc6619f54cb599fb535
https://github.com/scummvm/scummvm/commit/bd4ef7ffb4db991df8f3cbc6619f54cb599fb535
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T21:56:12+02:00
Commit Message:
GNAP: Rework gfxItem, remove the code related to impossible flag values
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index eedd7fa..3285985 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -803,7 +803,7 @@ void GameSys::drawSprites() {
if (gfxItem2->_prevFrame._spriteId != -1) {
bool transparent = false;
- if (gfxItem2->_currFrame._spriteId != -1 && !(gfxItem2->_flags & 2)) {
+ if (gfxItem2->_currFrame._spriteId != -1) {
if (gfxItem2->_flags & 1) {
transparent = true;
} else {
@@ -813,8 +813,7 @@ void GameSys::drawSprites() {
_vm->_spriteCache->release(resourceId);
}
}
- if ((gfxItem2->_flags & 8) || gfxItem2->_currFrame._spriteId == -1 ||
- (!(gfxItem2->_flags & 2) && (!gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || !transparent))) {
+ if (gfxItem2->_currFrame._spriteId == -1 || !gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || !transparent) {
restoreBackgroundRect(gfxItem2->_prevFrame._rect);
for (int l = 0; l < _gfxItemsCount; ++l)
_gfxItems[l].testUpdRect(gfxItem2->_prevFrame._rect);
@@ -825,15 +824,13 @@ void GameSys::drawSprites() {
bool transparent = false;
if (gfxItem2->_flags & 1) {
transparent = true;
- } else if (!(gfxItem2->_flags & 2)) {
+ } else {
int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
transparent = spriteResource->_transparent;
_vm->_spriteCache->release(resourceId);
}
- if (((gfxItem2->_flags & 2) && !(gfxItem2->_flags & 8)) ||
- gfxItem2->_prevFrame._spriteId == -1 ||
- !gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || transparent) {
+ if (gfxItem2->_prevFrame._spriteId == -1 || !gfxItem2->_prevFrame._rect.equals(gfxItem2->_currFrame._rect) || transparent) {
for (int l = k; l < _gfxItemsCount; ++l)
_gfxItems[l].testUpdRect(gfxItem2->_currFrame._rect);
}
@@ -850,8 +847,6 @@ void GameSys::drawSprites() {
if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
- } else if (gfxItem5->_flags & 2) {
- error("drawSprites - Unexpected AVI frame");
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
@@ -863,8 +858,6 @@ void GameSys::drawSprites() {
if (gfxItem5->_flags & 1) {
for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
- } else if (gfxItem5->_flags & 2) {
- error("drawSprites - Unexpected AVI frame");
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_prevFrame._spriteId;
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
@@ -1008,13 +1001,8 @@ void GameSys::fatUpdateFrame() {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
SequenceAnimation *animation = gfxItem->_animation;
- if ((gfxItem->_sequenceId != -1 && animation) || (gfxItem->_flags & 2) ||
- gfxItem->_prevFrame._spriteId != -1 || gfxItem->_prevFrame._duration > 0) {
- if (gfxItem->_sequenceId == -1 || gfxItem->_updFlag) {
- if ((gfxItem->_flags & 2) && !gfxItem->_updFlag) {
- // NOTE Skipped avi code
- }
- } else {
+ if ((gfxItem->_sequenceId != -1 && animation) || gfxItem->_prevFrame._spriteId != -1 || gfxItem->_prevFrame._duration > 0) {
+ if (gfxItem->_sequenceId != -1 && !gfxItem->_updFlag) {
Sequence *seqItem = seqFind(gfxItem->_sequenceId, gfxItem->_id, nullptr);
if (!animation) {
gfxItem->_sequenceId = -1;
Commit: bd2008f9859eea09fa835e24f7b56316f3d84360
https://github.com/scummvm/scummvm/commit/bd2008f9859eea09fa835e24f7b56316f3d84360
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-20T22:04:10+02:00
Commit Message:
GNAP: Remove some obsolete comments, take better advantage of the possible values of gfxItem._flags (0 and 1)
Changed paths:
engines/gnap/gamesys.cpp
diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index 3285985..26af3fb 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -804,7 +804,7 @@ void GameSys::drawSprites() {
if (gfxItem2->_prevFrame._spriteId != -1) {
bool transparent = false;
if (gfxItem2->_currFrame._spriteId != -1) {
- if (gfxItem2->_flags & 1) {
+ if (gfxItem2->_flags) {
transparent = true;
} else {
int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
@@ -822,7 +822,7 @@ void GameSys::drawSprites() {
if (gfxItem2->_currFrame._spriteId != -1) {
bool transparent = false;
- if (gfxItem2->_flags & 1) {
+ if (gfxItem2->_flags) {
transparent = true;
} else {
int resourceId = (gfxItem2->_sequenceId & 0xFFFF0000) | gfxItem2->_currFrame._spriteId;
@@ -845,7 +845,7 @@ void GameSys::drawSprites() {
if (gfxItem5->_updFlag) {
if (gfxItem5->_currFrame._spriteId != -1) {
- if (gfxItem5->_flags & 1) {
+ if (gfxItem5->_flags) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
} else {
int resourceId = (gfxItem5->_sequenceId & 0xFFFF0000) | gfxItem5->_currFrame._spriteId;
@@ -855,7 +855,7 @@ void GameSys::drawSprites() {
}
}
} else if (gfxItem5->_updRectsCount > 0) {
- if (gfxItem5->_flags & 1) {
+ if (gfxItem5->_flags) {
for (int n = 0; n < gfxItem5->_updRectsCount; ++n)
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_prevFrame, &gfxItem5->_updRects[n]);
} else {
@@ -969,8 +969,8 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
for (int j = 0; j < _removeSpriteDrawItemsCount; ++j) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
- gfxItem->_id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j]._surface == gfxItem->_surface) {
+ if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && gfxItem->_flags
+ && gfxItem->_id == _removeSpriteDrawItems[j]._id && _removeSpriteDrawItems[j]._surface == gfxItem->_surface) {
gfxItem->_flags = 0;
gfxItem->_currFrame._duration = 0;
gfxItem->_currFrame._spriteId = -1;
@@ -996,8 +996,6 @@ void GameSys::fatUpdateFrame() {
int duration, currFrameNum;
- // NOTE Skipped avi code (reqAviStart)
-
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
SequenceAnimation *animation = gfxItem->_animation;
@@ -1130,23 +1128,21 @@ void GameSys::fatUpdateFrame() {
if (_grabSpriteChanged) {
for (int i = 0; i < _gfxItemsCount; ++i) {
GfxItem *gfxItem = &_gfxItems[i];
- if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && (gfxItem->_flags & 1) &&
- gfxItem->_id == _grabSpriteId && gfxItem->_surface == _grabSpriteSurface1) {
- gfxItem->_currFrame._duration = 0;
- gfxItem->_currFrame._isScaled = false;
- gfxItem->_currFrame._rect = _grabSpriteRect;
- gfxItem->_currFrame._spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
- gfxItem->_currFrame._soundId = -1;
- gfxItem->_updFlag = true;
- gfxItem->_surface = _grabSpriteSurface2;
- break;
- }
+ if (gfxItem->_sequenceId == -1 && !gfxItem->_animation && gfxItem->_flags
+ && gfxItem->_id == _grabSpriteId && gfxItem->_surface == _grabSpriteSurface1) {
+ gfxItem->_currFrame._duration = 0;
+ gfxItem->_currFrame._isScaled = false;
+ gfxItem->_currFrame._rect = _grabSpriteRect;
+ gfxItem->_currFrame._spriteId = _grabSpriteSurface2 ? 1 : -1;// TODO
+ gfxItem->_currFrame._soundId = -1;
+ gfxItem->_updFlag = true;
+ gfxItem->_surface = _grabSpriteSurface2;
+ break;
+ }
}
_grabSpriteChanged = false;
}
- // NOTE Skipped avi code (reqAviStart)
-
debugC(kDebugBasic, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
for (uint i = 0; i < _fatSequenceItems.size(); ++i) {
@@ -1231,7 +1227,6 @@ void GameSys::fatUpdate() {
handleReqRemoveSequenceItem();
handleReqRemoveSequenceItems();
handleReqRemoveSpriteDrawItems();
- // NOTE Skipped avi stuff (reqAviStop)
fatUpdateFrame();
}
Commit: 8a946705167a56d8046d13201498ed1bcea413a4
https://github.com/scummvm/scummvm/commit/8a946705167a56d8046d13201498ed1bcea413a4
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-21T00:16:59+02:00
Commit Message:
GNAP: Remove or rephrase a couple of notes
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/scenes/group0.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index 5175d07..b43fc24 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -683,8 +683,7 @@ void GnapEngine::loadStockDat() {
if (!_isStockDatLoaded) {
_isStockDatLoaded = true;
_dat->open(1, "stock_n.dat");
- //createMenuSprite();
- // NOTE Skipped preloading of data
+ // The pre-loading of data is skipped as it's no longer required on modern hardware
}
}
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index d958b29..b53037e 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -69,8 +69,6 @@ void Scene01::updateHotspots() {
}
void Scene01::run() {
- // NOTE Removed _s01_dword_474380 which was set when the mud was taken
- // which is also set in the global game flags.
GameSys& gameSys = *_vm->_gameSys;
PlayerGnap& gnap = *_vm->_gnap;
PlayerPlat& plat = *_vm->_plat;
Commit: 4c6ef29b49a92270553b57c9dcb78e4b2fa99c79
https://github.com/scummvm/scummvm/commit/4c6ef29b49a92270553b57c9dcb78e4b2fa99c79
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-21T01:05:53+02:00
Commit Message:
GNAP: Implement setSoundVolume
Changed paths:
engines/gnap/sound.cpp
diff --git a/engines/gnap/sound.cpp b/engines/gnap/sound.cpp
index 103a649..a4a59d7 100644
--- a/engines/gnap/sound.cpp
+++ b/engines/gnap/sound.cpp
@@ -57,7 +57,9 @@ void SoundMan::stopSound(int resourceId) {
}
void SoundMan::setSoundVolume(int resourceId, int volume) {
- // TODO
+ const int index = find(resourceId);
+ int realVol = volume * 2.55;
+ _vm->_mixer->setChannelVolume(_items[index]._handle, realVol);
}
bool SoundMan::isSoundPlaying(int resourceId) {
Commit: 0873f92ceb7474faf320188b59158cb6b345998d
https://github.com/scummvm/scummvm/commit/0873f92ceb7474faf320188b59158cb6b345998d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-21T01:20:19+02:00
Commit Message:
GNAP: Remove yet another TODO
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index d7eaca0..ff3d94e 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -413,12 +413,7 @@ void GnapEngine::updateMenuStatusMainMenu() {
if (i == 0) {
_gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078D);
_gameSys->insertSpriteDrawItem(_largeSprite, 0, 0, 300);
- /* TODO
- if (_midiFlag) {
- playMidi("pause.mid", 0);
- }
- */
- warning("TODO: playMidi");
+ playMidi("pause.mid");
} else if (i == 1) {
_gameSys->drawSpriteToSurface(_largeSprite, 0, 0, 0x1078E);
_gameSys->insertDirtyRect(dirtyRect);
Commit: 13c363f4408ac517036a74fa220bf537848a80a5
https://github.com/scummvm/scummvm/commit/13c363f4408ac517036a74fa220bf537848a80a5
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T00:00:51+02:00
Commit Message:
GNAP: Remove double smi-columns
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index b43fc24..c951a5f 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -938,11 +938,11 @@ void GnapEngine::screenEffect(int dir, byte r, byte g, byte b) {
}
bool GnapEngine::isKeyStatus1(int key) {
- return _keyPressState[key] != 0;;
+ return _keyPressState[key] != 0;
}
bool GnapEngine::isKeyStatus2(int key) {
- return _keyDownState[key] != 0;;
+ return _keyDownState[key] != 0;
}
void GnapEngine::clearKeyStatus1(int key) {
Commit: 94e1e3a8fef3d9b7fee8fb50725bf5c7bf5325a6
https://github.com/scummvm/scummvm/commit/94e1e3a8fef3d9b7fee8fb50725bf5c7bf5325a6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T00:01:51+02:00
Commit Message:
GNAP: Use KeyCode value instead of numeric value for Backspace
Changed paths:
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
engines/gnap/scenes/group5.cpp
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index b53037e..0a31c66 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -275,8 +275,8 @@ void Scene01::run() {
}
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -700,8 +700,8 @@ void Scene02::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1161,8 +1161,8 @@ void Scene03::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(100) + 200;
@@ -1698,8 +1698,8 @@ void Scene04::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2139,8 +2139,8 @@ void Scene05::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(20) + 30;
@@ -2547,8 +2547,8 @@ void Scene06::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2855,8 +2855,8 @@ void Scene07::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(40) + 50;
@@ -3232,8 +3232,8 @@ void Scene08::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(50) + 75;
@@ -3523,8 +3523,8 @@ void Scene09::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(150) + 50;
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 52767e1..6caff2e 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -332,8 +332,8 @@ void Scene10::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -814,8 +814,8 @@ void Scene11::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(50) + 75;
@@ -1253,8 +1253,8 @@ void Scene12::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = 30;
@@ -1770,8 +1770,8 @@ void Scene13::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -1975,8 +1975,8 @@ void Scene14::run() {
_vm->_timers[2] = _vm->getRandom(40) + 50;
}
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2197,8 +2197,8 @@ void Scene15::run() {
updateAnimations();
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2833,8 +2833,8 @@ void Scene17::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -3809,8 +3809,8 @@ void Scene18::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -4355,8 +4355,8 @@ void Scene19::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 78f7c04..66cf5e5 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -506,8 +506,8 @@ void Scene20::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -930,8 +930,8 @@ void Scene21::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1227,8 +1227,8 @@ void Scene22::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[2] = _vm->getRandom(30) + 20;
@@ -1461,8 +1461,8 @@ void Scene23::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1728,8 +1728,8 @@ void Scene24::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2033,8 +2033,8 @@ void Scene25::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2291,8 +2291,8 @@ void Scene26::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2582,8 +2582,8 @@ void Scene27::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2955,8 +2955,8 @@ void Scene28::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -3338,8 +3338,8 @@ void Scene29::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index 6c93057..b10e797 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -203,8 +203,8 @@ void Scene30::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -528,8 +528,8 @@ void Scene31::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -777,8 +777,8 @@ void Scene32::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1019,8 +1019,8 @@ void Scene33::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1285,8 +1285,8 @@ void Scene38::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -1578,8 +1578,8 @@ void Scene39::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[5] = _vm->getRandom(20) + 50;
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index 7a5de8d..b12d2ad 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -159,8 +159,8 @@ void Scene40::run() {
updateAnimations();
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -549,8 +549,8 @@ void Scene41::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(100) + 100;
@@ -1016,8 +1016,8 @@ void Scene42::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 30;
@@ -1472,8 +1472,8 @@ void Scene43::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(100) + 100;
@@ -1974,8 +1974,8 @@ void Scene44::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
_vm->_timers[4] = _vm->getRandom(20) + 20;
@@ -2381,8 +2381,8 @@ void Scene45::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
@@ -2731,8 +2731,8 @@ void Scene46::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
diff --git a/engines/gnap/scenes/group5.cpp b/engines/gnap/scenes/group5.cpp
index a359da2..46f4c51 100644
--- a/engines/gnap/scenes/group5.cpp
+++ b/engines/gnap/scenes/group5.cpp
@@ -369,8 +369,8 @@ void Scene53::run() {
_vm->checkGameKeys();
- if (_vm->isKeyStatus1(8)) {
- _vm->clearKeyStatus1(8);
+ if (_vm->isKeyStatus1(Common::KEYCODE_BACKSPACE)) {
+ _vm->clearKeyStatus1(Common::KEYCODE_BACKSPACE);
_vm->runMenu();
updateHotspots();
}
Commit: 58fb1563cab13f912496fe3dcd42caef5978fef6
https://github.com/scummvm/scummvm/commit/58fb1563cab13f912496fe3dcd42caef5978fef6
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T00:33:50+02:00
Commit Message:
GNAP: Map remaining Key codes
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/menu.cpp
engines/gnap/scenes/arcade.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/intro.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index c951a5f..afb77eb 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -570,13 +570,13 @@ void GnapEngine::showFullScreenSprite(int resourceId) {
hideCursor();
setGrabCursorSprite(-1);
addFullScreenSprite(resourceId, 256);
- while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(29) && !_gameDone) {
+ while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE)
+ && !isKeyStatus1(Common::KEYCODE_SPACE) && !isKeyStatus1(Common::KEYCODE_RETURN) && !_gameDone) {
gameUpdateTick();
}
_mouseClickState._left = false;
clearKeyStatus1(Common::KEYCODE_ESCAPE);
- clearKeyStatus1(29);
+ clearKeyStatus1(Common::KEYCODE_RETURN);
clearKeyStatus1(Common::KEYCODE_SPACE);
removeFullScreenSprite();
showCursor();
@@ -739,8 +739,8 @@ void GnapEngine::mainLoop() {
_soundCache->purge(true);
_spriteCache->purge(true);
- if (isKeyStatus1(28)) {
- clearKeyStatus1(28);
+ if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
if (_debugLevel == 4)
_gameDone = true;
}
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index ff3d94e..82191b0 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -238,7 +238,7 @@ void GnapEngine::runMenu() {
_timers[2] = 10;
- while (!isKeyStatus1(8) && !isKeyStatus1(28) && !_sceneDone && !_menuDone) {
+ while (!isKeyStatus1(Common::KEYCODE_BACKSPACE) && !isKeyStatus1(Common::KEYCODE_ESCAPE) && !_sceneDone && !_menuDone) {
updateCursorByHotspot();
switch (_menuStatus) {
@@ -422,14 +422,15 @@ void GnapEngine::updateMenuStatusMainMenu() {
_gameSys->insertDirtyRect(dirtyRect);
}
- while (!_mouseClickState._left && !isKeyStatus1(28) && !isKeyStatus1(30) && !isKeyStatus1(29) && !_timers[2] && !_gameDone)
+ while (!_mouseClickState._left && !isKeyStatus1(Common::KEYCODE_ESCAPE) && !isKeyStatus1(Common::KEYCODE_RETURN)
+ && !isKeyStatus1(Common::KEYCODE_SPACE) && !_timers[2] && !_gameDone)
gameUpdateTick();
playSound(0x108F5, false);
_mouseClickState._left = false;
- clearKeyStatus1(28);
- clearKeyStatus1(29);
- clearKeyStatus1(30);
+ clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ clearKeyStatus1(Common::KEYCODE_RETURN);
+ clearKeyStatus1(Common::KEYCODE_SPACE);
}
_gameSys->removeSpriteDrawItem(_largeSprite, 300);
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index da66829..c4c5480 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -71,9 +71,9 @@ int Scene49::init() {
_vm->_timers[2] = 0;
_vm->_timers[0] = 0;
_vm->_timers[1] = 0;
- _vm->clearKeyStatus1(28);
- _vm->clearKeyStatus1(54);
- _vm->clearKeyStatus1(52);
+ _vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
+ _vm->clearKeyStatus1(Common::KEYCODE_RIGHT);
+ _vm->clearKeyStatus1(Common::KEYCODE_LEFT);
return 0xD5;
}
@@ -2704,7 +2704,7 @@ void Scene52::run() {
_alienWave = false;
_vm->_gameSys->waitForUpdate();
initAnims();
- _vm->clearKeyStatus1(30);
+ _vm->clearKeyStatus1(Common::KEYCODE_SPACE);
_vm->_sceneDone = true;
}
}
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 6caff2e..1a414cb 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -1488,11 +1488,11 @@ void Scene13::showScribble() {
_vm->_largeSprite = gameSys.createSurface(0x6F);
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) &&
- !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(29) && !_vm->_gameDone)
+ !_vm->isKeyStatus1(Common::KEYCODE_SPACE) && !_vm->isKeyStatus1(Common::KEYCODE_RETURN) && !_vm->_gameDone)
_vm->gameUpdateTick();
_vm->_mouseClickState._left = false;
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_RETURN);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->deleteSurface(&_vm->_largeSprite);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 66cf5e5..d0a2131 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -1800,12 +1800,12 @@ void Scene25::playAnims(int index) {
gameSys.insertSpriteDrawItem(_vm->_largeSprite, 0, 0, 300);
_vm->delayTicksCursor(5);
while (!_vm->_mouseClickState._left && !_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) && !_vm->isKeyStatus1(Common::KEYCODE_SPACE) &&
- !_vm->isKeyStatus1(29) && !_vm->_gameDone) {
+ !_vm->isKeyStatus1(Common::KEYCODE_RETURN) && !_vm->_gameDone) {
_vm->gameUpdateTick();
}
_vm->_mouseClickState._left = false;
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
- _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_RETURN);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
gameSys.removeSpriteDrawItem(_vm->_largeSprite, 300);
_vm->delayTicksCursor(5);
diff --git a/engines/gnap/scenes/intro.cpp b/engines/gnap/scenes/intro.cpp
index 1679fe8..b4ba2f5 100644
--- a/engines/gnap/scenes/intro.cpp
+++ b/engines/gnap/scenes/intro.cpp
@@ -157,10 +157,10 @@ void SceneIntro::run() {
}
}
- if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(Common::KEYCODE_RETURN)) {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_RETURN);
if (index == 0) {
skip = true;
_vm->stopSound(0x3CF);
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index c6e32e0..d34f460 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -677,7 +677,7 @@ void CutScene::run() {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_RETURN);
_vm->_mouseClickState._left = false;
@@ -701,10 +701,10 @@ void CutScene::run() {
}
}
- if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(29)) {
+ if (_vm->isKeyStatus1(Common::KEYCODE_ESCAPE) || _vm->isKeyStatus1(Common::KEYCODE_SPACE) || _vm->isKeyStatus1(Common::KEYCODE_RETURN)) {
_vm->clearKeyStatus1(Common::KEYCODE_ESCAPE);
_vm->clearKeyStatus1(Common::KEYCODE_SPACE);
- _vm->clearKeyStatus1(29);
+ _vm->clearKeyStatus1(Common::KEYCODE_RETURN);
if (_canSkip[itemIndex])
skip = true;
else
Commit: 58e77d693b2575b3a7680fb2bca6dc2f41449278
https://github.com/scummvm/scummvm/commit/58e77d693b2575b3a7680fb2bca6dc2f41449278
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T00:44:00+02:00
Commit Message:
GNAP: Remove original debug code
Changed paths:
engines/gnap/gnap.cpp
engines/gnap/gnap.h
engines/gnap/scenes/group2.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index afb77eb..cc0ac2e 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -738,12 +738,6 @@ void GnapEngine::mainLoop() {
_sequenceCache->purge(true);
_soundCache->purge(true);
_spriteCache->purge(true);
-
- if (isKeyStatus1(Common::KEYCODE_ESCAPE)) {
- clearKeyStatus1(Common::KEYCODE_ESCAPE);
- if (_debugLevel == 4)
- _gameDone = true;
- }
}
if (_backgroundSurface)
diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h
index 0f45dc2..f5b7797 100644
--- a/engines/gnap/gnap.h
+++ b/engines/gnap/gnap.h
@@ -251,8 +251,6 @@ public:
Common::MemoryWriteStreamDynamic *_tempThumbnail;
int _lastUpdateClock;
-
- int _debugLevel;
bool _gameDone;
byte _keyPressState[512];
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index d0a2131..db529c9 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -1573,9 +1573,6 @@ void Scene24::run() {
_girlSequenceId = 0x36;
_boySequenceId = 0x30;
- if (_vm->_debugLevel == 4)
- _vm->startIdleTimer(8);
-
_vm->queueInsertDeviceIcon();
if (_vm->_prevSceneNum == 20) {
@@ -1721,8 +1718,6 @@ void Scene24::run() {
break;
}
}
- if (_vm->_debugLevel == 4)
- _vm->updateIdleTimer();
_vm->playSoundA();
}
@@ -2359,9 +2354,6 @@ void Scene27::run() {
if (!_vm->isFlag(kGFUnk13))
gameSys.insertSequence(0xD3, 39, 0, 0, kSeqNone, 0, 0, 0);
- if (_vm->_debugLevel == 4)
- _vm->startIdleTimer(6);
-
gameSys.insertSequence(0xCB, 39, 0, 0, kSeqNone, 0, 0, 0);
_currJanitorSequenceId = 0xCB;
@@ -2561,8 +2553,6 @@ void Scene27::run() {
plat.updateIdleSequence();
if (gnap._actionStatus < 0)
gnap.updateIdleSequence();
- if (_vm->_debugLevel == 4)
- _vm->updateIdleTimer();
if (!_vm->_timers[5]) {
_vm->_timers[5] = _vm->getRandom(20) + 60;
if (gnap._actionStatus < 0) {
Commit: 2a2082c1f9dcb3a85801d6813273ef8362caf6be
https://github.com/scummvm/scummvm/commit/2a2082c1f9dcb3a85801d6813273ef8362caf6be
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T01:33:13+02:00
Commit Message:
GNAP: Remove a TODO
This code is never called because it's triggered by clicking on the button
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 82191b0..a459c3c 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -438,14 +438,10 @@ void GnapEngine::updateMenuStatusMainMenu() {
deleteSurface(&_largeSprite);
showCursor();
} else if (_hotspotsCount - 3 == _sceneClickedHotspot) {
- // Button
+ // Button - Return to the inventory
_timers[2] = 10;
playSound(0x108F4, false);
initMenuHotspots1();
- /* TODO
- if (_mouseX < 93 || _mouseX > 638 || _mouseY < 0 || _mouseY > 600)
- SetCursorPos(400, 300);
- */
_menuStatus = 0;
if (_menuSprite1)
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
Commit: a586f7701d7e791668ed725d56a702dba64e8d65
https://github.com/scummvm/scummvm/commit/a586f7701d7e791668ed725d56a702dba64e8d65
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T01:49:50+02:00
Commit Message:
GNAP: Remove useless in ResourceClass constructor
Changed paths:
engines/gnap/resource.cpp
engines/gnap/resource.h
diff --git a/engines/gnap/resource.cpp b/engines/gnap/resource.cpp
index bb5dba0..8244213 100644
--- a/engines/gnap/resource.cpp
+++ b/engines/gnap/resource.cpp
@@ -59,9 +59,9 @@ void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
}
// SequenceResource
-
-SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
+SequenceResource::SequenceResource(byte *data, uint32 size) {
Common::MemoryReadStream stream(data, size, DisposeAfterUse::NO);
+
// Skip an unused value
stream.readUint32LE();
@@ -84,7 +84,6 @@ SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
_animations[i].loadFromStream(stream);
stream.seek(oldOffs);
}
- // TODO Convert resourceIds
}
SequenceResource::~SequenceResource() {
@@ -92,8 +91,7 @@ SequenceResource::~SequenceResource() {
}
// SpriteResource
-
-SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
+SpriteResource::SpriteResource(byte *data, uint32 size) {
_data = data;
_width = READ_LE_UINT16(_data);
_height = READ_LE_UINT16(_data + 2);
@@ -111,8 +109,7 @@ SpriteResource::~SpriteResource() {
}
// SoundResource
-
-SoundResource::SoundResource(int resourceId, byte *data, uint32 size) {
+SoundResource::SoundResource(byte *data, uint32 size) {
_data = data;
_size = size;
}
diff --git a/engines/gnap/resource.h b/engines/gnap/resource.h
index 1b228de..29bd31c 100644
--- a/engines/gnap/resource.h
+++ b/engines/gnap/resource.h
@@ -66,7 +66,7 @@ struct SequenceAnimation {
class SequenceResource {
public:
- SequenceResource(int resourceId, byte *data, uint32 size);
+ SequenceResource(byte *data, uint32 size);
~SequenceResource();
public:
int32 _sequenceId;
@@ -83,7 +83,7 @@ public:
class SpriteResource {
public:
- SpriteResource(int resourceId, byte *data, uint32 size);
+ SpriteResource(byte *data, uint32 size);
~SpriteResource();
public:
byte *_data;
@@ -98,7 +98,7 @@ public:
class SoundResource {
public:
- SoundResource(int resourceId, byte *data, uint32 size);
+ SoundResource(byte *data, uint32 size);
~SoundResource();
public:
byte *_data;
@@ -172,7 +172,7 @@ protected:
byte *resourceData = _dat->loadResource(resourceId);
uint32 resourceSize = _dat->getResourceSize(resourceId);
- ResourceClass *obj = new ResourceClass(resourceId, resourceData, resourceSize);
+ ResourceClass *obj = new ResourceClass(resourceData, resourceSize);
if (FreeAfterLoad)
delete[] resourceData;
return obj;
Commit: c9fdd32ebc2e2d6d7d71b480af6257858ebf540c
https://github.com/scummvm/scummvm/commit/c9fdd32ebc2e2d6d7d71b480af6257858ebf540c
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T01:51:31+02:00
Commit Message:
GNAP: Remove an irrelevant TODO copied from another engine
Changed paths:
engines/gnap/music.cpp
diff --git a/engines/gnap/music.cpp b/engines/gnap/music.cpp
index 57b2b27..af33786 100644
--- a/engines/gnap/music.cpp
+++ b/engines/gnap/music.cpp
@@ -43,10 +43,6 @@ MusicPlayer::MusicPlayer(const char *filename) : _filename(filename) {
else
_driver->sendGMReset();
- // TODO: Load cmf.ins with the instrument table. It seems that an
- // interface for such an operation is supported for AdLib. Maybe for
- // this card, setting instruments is necessary.
-
_driver->setTimerCallback(this, &timerCallback);
}
}
Commit: d2aa9c7ded4faa1cefffd705b0ce28fbaa399c31
https://github.com/scummvm/scummvm/commit/d2aa9c7ded4faa1cefffd705b0ce28fbaa399c31
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T01:59:14+02:00
Commit Message:
GNAP: Add a note concerning the original save and load screens
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index a459c3c..2bfe730 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -486,7 +486,11 @@ void GnapEngine::updateMenuStatusMainMenu() {
}
}
#else
- // Original Code
+ // NOTE:
+ // This is the code for the original behavior.
+ // It's currently not working prolery, but could be
+ // fixed to replace the ScummVM screens currently
+ // used.
_timers[2] = 10;
playSound(0x108F4, false);
_gameSys->removeSpriteDrawItem(_menuSprite1, 262);
@@ -653,7 +657,12 @@ Common::String GnapEngine::generateSaveName(int slot) {
}
void GnapEngine::updateMenuStatusSaveGame() {
-#if 0 // TODO
+#if 0
+ // NOTE:
+ // This is the code for the original screen game.
+ // It could be eventually fixed and could replace
+ // the ScummVM screens currently used.
+
char v43[30];
int v46;
v43[0] = '\0';
Commit: 16bc0840530a816ef4d4e9f5d6d27cc0505c013a
https://github.com/scummvm/scummvm/commit/16bc0840530a816ef4d4e9f5d6d27cc0505c013a
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T02:00:40+02:00
Commit Message:
GNAP: Add 2 other double semi columns
Changed paths:
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group2.cpp
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index 0a31c66..a3359bf 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -2263,7 +2263,7 @@ void Scene05::updateAnimations() {
/*****************************************************************************/
Scene06::Scene06(GnapEngine *vm) : Scene(vm) {
- _horseTurnedBack = false;;
+ _horseTurnedBack = false;
_nextPlatSequenceId = -1;
_nextHorseSequenceId = -1;
_currHorseSequenceId = -1;
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index db529c9..3e61faf 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -3010,7 +3010,7 @@ void Scene28::updateAnimations() {
break;
case kAS28GrabEmptyBucketDone:
_vm->setGrabCursorSprite(kItemEmptyBucket);
- _vm->clearFlag(kGFUnk22);;
+ _vm->clearFlag(kGFUnk22);
updateHotspots();
_vm->invAdd(kItemEmptyBucket);
gnap._actionStatus = -1;
Commit: 1a8093c92299aba2a5a27c0de6bd164b84ab9179
https://github.com/scummvm/scummvm/commit/1a8093c92299aba2a5a27c0de6bd164b84ab9179
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T02:45:57+02:00
Commit Message:
GNAP: After double-checking them, remove two CHECKMEs
Changed paths:
engines/gnap/scenes/arcade.cpp
diff --git a/engines/gnap/scenes/arcade.cpp b/engines/gnap/scenes/arcade.cpp
index c4c5480..571fdbf 100644
--- a/engines/gnap/scenes/arcade.cpp
+++ b/engines/gnap/scenes/arcade.cpp
@@ -813,7 +813,7 @@ void Scene50::updateAnimations() {
_leftTongueNextSequenceId = -1;
_rightTongueId = _rightTongueNextId;
_leftTongueId = _leftTongueNextId;
- _leftTongueEnergy -= _vm->getRandom(2) + 1;//CHECKME
+ _leftTongueEnergy -= _vm->getRandom(1) + 1;
} else {
_rightTongueNextId = getRightTongueNextId();
_vm->_gameSys->setAnimation(_rightTongueNextSequenceId, _rightTongueNextId, 5);
@@ -831,8 +831,7 @@ void Scene50::updateAnimations() {
_leftTongueNextSequenceId = 0xB8;
} else {
_vm->_timers[4] = 20;
- //CHECKME
- if (_rightTongueSequenceId != 0xBB && _rightTongueSequenceId != 0xC0 && _vm->getRandom(8) != _roundNum)
+ if (_rightTongueSequenceId != 0xBB && _rightTongueSequenceId != 0xC0 && _vm->getRandom(7) != _roundNum)
_leftTongueNextSequenceId = 0xB7;
else
_leftTongueNextSequenceId = 0xB8;
Commit: f0f42b05ca0302fc018e5a094cead25096564c77
https://github.com/scummvm/scummvm/commit/f0f42b05ca0302fc018e5a094cead25096564c77
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T07:48:37+02:00
Commit Message:
GNAP: Rename two Facing enums
Changed paths:
engines/gnap/character.cpp
engines/gnap/character.h
engines/gnap/grid.cpp
engines/gnap/scenes/group0.cpp
engines/gnap/scenes/group1.cpp
engines/gnap/scenes/group2.cpp
engines/gnap/scenes/group3.cpp
engines/gnap/scenes/group4.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 575e3f3..5eb35d1 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -28,7 +28,7 @@ namespace Gnap {
Character::Character(GnapEngine *vm) : _vm(vm) {
_pos = Common::Point(0, 0);
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
_actionStatus = 0;
_sequenceId = 0;
_sequenceDatNum = 0;
@@ -373,8 +373,8 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
case kDirUpRight:
sequenceId = 0x82F;
break;
- case kDirNone:
- case kDirUnk4:
+ case kDirIdleLeft:
+ case kDirIdleRight:
break;
}
}
@@ -394,8 +394,8 @@ int PlayerGnap::getSequenceId(int kind, Common::Point gridPos) {
case kDirUpRight:
sequenceId = 0x83E;
break;
- case kDirNone:
- case kDirUnk4:
+ case kDirIdleLeft:
+ case kDirIdleRight:
break;
}
break;
@@ -478,7 +478,7 @@ void PlayerGnap::useJointOnPlatypus() {
kSeqSyncWait, 0, 15 * (5 * plat._pos.x - 25), 48 * (plat._pos.y - 7));
plat._sequenceDatNum = 1;
plat._sequenceId = 0x876;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
playSequence(0x107B5);
walkStep();
while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) {
@@ -509,7 +509,7 @@ void PlayerGnap::kissPlatypus(int callback) {
kSeqSyncWait, _vm->getSequenceTotalDuration(0x10847), 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
plat._sequenceDatNum = 1;
plat._sequenceId = 0x7CB;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
playSequence(0x107B5);
while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) {
_vm->updateMouseCursor();
@@ -528,7 +528,7 @@ void PlayerGnap::useDeviceOnPlatypus() {
playSequence(makeRid(1, getSequenceId(kGSPullOutDevice, plat._pos)));
- if (plat._idleFacing != kDirNone) {
+ if (plat._idleFacing != kDirIdleLeft) {
_vm->_gameSys->insertSequence(makeRid(1, 0x7D5), plat._id,
makeRid(plat._sequenceDatNum, plat._sequenceId), plat._id,
kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
@@ -653,10 +653,11 @@ void PlayerGnap::initPos(int gridX, int gridY, Facing facing) {
_vm->_timers[2] = 30;
_vm->_timers[3] = 300;
_pos = Common::Point(gridX, gridY);
- if (facing == kDirNone)
+ if (facing == kDirIdleLeft)
_idleFacing = kDirBottomRight;
else
_idleFacing = facing;
+
if (_idleFacing == kDirBottomLeft) {
_sequenceId = 0x7B8;
} else {
@@ -1167,9 +1168,9 @@ int PlayerPlat::getSequenceId(int kind, Common::Point gridPos) {
int sequenceId = 0x7CB;
- if (_idleFacing != kDirNone) {
+ if (_idleFacing != kDirIdleLeft) {
sequenceId = 0x7CC;
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
}
return sequenceId | 0x10000;
@@ -1189,7 +1190,7 @@ void PlayerPlat::updateIdleSequence() {
if (_vm->_timers[1] == 0) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
int rnd = _vm->getRandom(10);
- if (_idleFacing != kDirNone) {
+ if (_idleFacing != kDirIdleLeft) {
if (rnd != 0 || _sequenceId != 0x7CA) {
if (rnd != 1 || _sequenceId != 0x7CA)
playSequence(0x107CA);
@@ -1228,7 +1229,7 @@ void PlayerPlat::updateIdleSequence2() {
if (_vm->_timers[0]) {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
- if (_idleFacing != kDirNone) {
+ if (_idleFacing != kDirIdleLeft) {
if (_vm->getRandom(10) >= 2 || _sequenceId != 0x7CA)
playSequence(0x107CA);
else
@@ -1255,15 +1256,15 @@ void PlayerPlat::initPos(int gridX, int gridY, Facing facing) {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
_pos = Common::Point(gridX, gridY);
- if (facing == kDirNone)
- _idleFacing = kDirNone;
+ if (facing == kDirIdleLeft)
+ _idleFacing = kDirIdleLeft;
else
_idleFacing = facing;
- if (_idleFacing == kDirUnk4) {
+ if (_idleFacing == kDirIdleRight) {
_sequenceId = 0x7D1;
} else {
_sequenceId = 0x7C1;
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
}
_id = 20 * _pos.y;
_sequenceDatNum = 1;
@@ -1371,15 +1372,14 @@ bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
_sequenceId = platSequenceId;
_id = platId;
_sequenceDatNum = datNum;
- // CHECKME Not sure if this is correct...
if (_walkNodes[_walkNodesCount - 1]._deltaX > 0)
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
else if (_walkNodes[_walkNodesCount - 1]._deltaX < 0)
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
else if (_walkNodes[_walkNodesCount - 1]._gridX1 % 2)
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
else
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
if (animationIndex >= 0)
_vm->_gameSys->setAnimation(makeRid(_sequenceDatNum, _sequenceId), _id, animationIndex);
} else if (animationIndex >= 0) {
@@ -1391,29 +1391,29 @@ bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceI
_sequenceId = ridToEntryIndex(sequenceId);
_sequenceDatNum = ridToDatIndex(sequenceId);
if (_sequenceId == 0x7C2) {
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
} else if (_sequenceId == 0x7D2) {
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
}
} else {
if (_walkNodesCount > 0) {
if (_walkNodes[_walkNodesCount - 1]._deltaX > 0) {
_sequenceId = 0x7C2;
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
} else if (_walkNodes[_walkNodesCount - 1]._deltaX < 0) {
_sequenceId = 0x7D2;
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
} else if (_walkNodes[0]._deltaX > 0) {
_sequenceId = 0x7C2;
- _idleFacing = kDirNone;
+ _idleFacing = kDirIdleLeft;
} else if (_walkNodes[0]._deltaX < 0) {
_sequenceId = 0x7D2;
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
} else {
_sequenceId = 0x7D2;
- _idleFacing = kDirUnk4;
+ _idleFacing = kDirIdleRight;
}
- } else if (_idleFacing != kDirNone) {
+ } else if (_idleFacing != kDirIdleLeft) {
_sequenceId = 0x7D2;
} else {
_sequenceId = 0x7C2;
diff --git a/engines/gnap/character.h b/engines/gnap/character.h
index be6efbf..27e98be 100644
--- a/engines/gnap/character.h
+++ b/engines/gnap/character.h
@@ -28,10 +28,10 @@ namespace Gnap {
class GnapEngine;
enum Facing {
- kDirNone = 0,
+ kDirIdleLeft = 0,
kDirBottomRight = 1,
kDirBottomLeft = 3,
- kDirUnk4 = 4,
+ kDirIdleRight = 4,
kDirUpLeft = 5,
kDirUpRight = 7
};
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index b3a8a4b..2197317 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -75,7 +75,7 @@ int PlayerGnap::getWalkStopSequenceId(int deltaX, int deltaY) {
Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
static const Facing gnapWalkFacings[9] = {
kDirUpLeft, kDirBottomLeft, kDirBottomLeft,
- kDirUpLeft, kDirNone, kDirBottomLeft,
+ kDirUpLeft, kDirIdleLeft, kDirBottomLeft,
kDirUpRight, kDirBottomRight, kDirBottomRight
};
// CHECKME This is a little weird
diff --git a/engines/gnap/scenes/group0.cpp b/engines/gnap/scenes/group0.cpp
index a3359bf..e55b08e 100644
--- a/engines/gnap/scenes/group0.cpp
+++ b/engines/gnap/scenes/group0.cpp
@@ -92,7 +92,7 @@ void Scene01::run() {
if (_vm->_prevSceneNum == 2) {
gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirIdleRight);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
plat.walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
@@ -100,7 +100,7 @@ void Scene01::run() {
} else {
gnap.initPos(1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirIdleLeft);
_vm->endSceneInit();
}
@@ -416,7 +416,7 @@ void Scene02::run() {
case 3:
gnap.initPos(11, 6, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirIdleRight);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
plat.walkTo(Common::Point(9, 6), -1, 0x107C2, 1);
@@ -425,7 +425,7 @@ void Scene02::run() {
case 4:
gnap.initPos(_vm->_hotspotsWalkPos[6].x, _vm->_hotspotsWalkPos[6].y, kDirBottomLeft);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirUnk4);
+ plat.initPos(_vm->_hotspotsWalkPos[6].x + 1, _vm->_hotspotsWalkPos[6].y, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 6), 0, 0x107B9, 1);
if (_vm->isFlag(kGFPlatypus))
@@ -436,19 +436,19 @@ void Scene02::run() {
case 47:
_vm->clearFlag(kGFUnk25);
gnap.initPos(5, 6, kDirBottomLeft);
- plat.initPos(6, 7, kDirUnk4);
+ plat.initPos(6, 7, kDirIdleRight);
_vm->endSceneInit();
break;
case 49:
gnap.initPos(5, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(6, 7, kDirNone);
+ plat.initPos(6, 7, kDirIdleLeft);
_vm->endSceneInit();
break;
default:
gnap.initPos(-1, 6, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirIdleLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
plat.walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
@@ -569,7 +569,7 @@ void Scene02::run() {
gnap._actionStatus = kAS02UseTruckNoGas;
}
} else {
- gnap._idleFacing = kDirUnk4;
+ gnap._idleFacing = kDirIdleRight;
if (gnap.walkTo(_vm->_hotspotsWalkPos[3], 0, gnap.getSequenceId(kGSIdle, Common::Point(2, 2)) | 0x10000, 1))
gnap._actionStatus = kAS02UseTruckNoKeys;
}
@@ -911,7 +911,7 @@ void Scene03::run() {
_vm->_timers[5] = _vm->getRandom(100) + 200;
if (_vm->isFlag(kGFPlatypus)) {
- plat.initPos(5, 4, kDirNone);
+ plat.initPos(5, 4, kDirIdleLeft);
} else {
_vm->_timers[1] = _vm->getRandom(40) + 20;
gameSys.setAnimation(0x1C2, 99, 1);
@@ -1191,7 +1191,7 @@ void Scene03::updateAnimations() {
case kAS03FreePlatypusDone:
gnap._actionStatus = -1;
plat._pos = Common::Point(6, 6);
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
plat._id = 120;
gameSys.insertSequence(0x107CA, plat._id, 0x1BC, 99,
kSeqSyncWait, 0, 75 * plat._pos.x - plat._gridX, 48 * plat._pos.y - plat._gridY);
@@ -1267,7 +1267,7 @@ void Scene03::updateAnimations() {
gameSys.insertSequence(_nextPlatSequenceId, 99, plat._sequenceId | (plat._sequenceDatNum << 16), 99, kSeqSyncWait, 0, 0, 0);
gnap._sequenceId = 0x1B5;
gnap._sequenceDatNum = 0;
- gnap._idleFacing = kDirNone;
+ gnap._idleFacing = kDirIdleLeft;
plat._sequenceId = _nextPlatSequenceId;
plat._sequenceDatNum = 0;
gameSys.setAnimation(_nextPlatSequenceId, 99, 1);
@@ -1281,7 +1281,7 @@ void Scene03::updateAnimations() {
gnap._id = 20 * gnap._pos.y;
gnap._sequenceId = 0x1B6;
gnap._sequenceDatNum = 0;
- gnap._idleFacing = kDirNone;
+ gnap._idleFacing = kDirIdleLeft;
gnap._actionStatus = kAS03FreePlatypusDone;
_nextPlatSequenceId = -1;
} else if (_nextPlatSequenceId == 0x1C2 && !_platypusScared) {
@@ -1418,12 +1418,12 @@ void Scene04::run() {
gnap.walkTo(Common::Point(6, 9), -1, 0x107BA, 1);
} else if (_vm->_prevSceneNum == 38) {
gnap.initPos(5, 7, kDirBottomRight);
- plat.initPos(4, 7, kDirNone);
+ plat.initPos(4, 7, kDirIdleLeft);
_vm->endSceneInit();
} else {
gnap.initPos(12, 9, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(12, 8, kDirNone);
+ plat.initPos(12, 8, kDirIdleLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
plat.walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
@@ -1897,7 +1897,7 @@ void Scene05::run() {
if (_vm->_prevSceneNum != 6 && _vm->_prevSceneNum != 36) {
gnap.initPos(-1, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(-1, 9, kDirNone);
+ plat.initPos(-1, 9, kDirIdleLeft);
_vm->endSceneInit();
if (_vm->isFlag(kGFPlatypus))
plat.walkTo(Common::Point(2, 8), -1, 0x107C2, 1);
@@ -1905,7 +1905,7 @@ void Scene05::run() {
} else {
gnap.initPos(6, 8, kDirBottomRight);
if (_vm->isFlag(kGFPlatypus))
- plat.initPos(7, 9, kDirNone);
+ plat.initPos(7, 9, kDirIdleLeft);
_vm->endSceneInit();
}
@@ -1975,7 +1975,7 @@ void Scene05::run() {
gnap.useDeviceOnPlatypus();
if (plat.walkTo(_vm->_hotspotsWalkPos[1], 1, 0x107C2, 1)) {
plat._actionStatus = kAS05PlatSearchHaystack;
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
}
if (gnap._pos.x == 4 && (gnap._pos.y == 8 || gnap._pos.y == 7))
gnap.walkStep();
@@ -2332,7 +2332,7 @@ void Scene06::run() {
_vm->queueInsertDeviceIcon();
gnap.initPos(5, 12, kDirBottomRight);
- plat.initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirIdleLeft);
_vm->endSceneInit();
plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
@@ -2453,7 +2453,7 @@ void Scene06::run() {
_vm->_hotspots[kHS06WalkArea5]._flags &= ~SF_WALKABLE;
gnap._idleFacing = kDirUpLeft;
plat.walkTo(Common::Point(6, 8), 1, 0x107C2, 1);
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
gnap._actionStatus = kAS06UseTwigOnHorse;
_vm->setGrabCursorSprite(-1);
} else if (_vm->_grabCursorSpriteIndex >= 0) {
@@ -2702,7 +2702,7 @@ void Scene07::run() {
if (_vm->_prevSceneNum == 8) {
gnap.initPos(7, 7, kDirBottomLeft);
- plat.initPos(9, 7, kDirUnk4);
+ plat.initPos(9, 7, kDirIdleRight);
_vm->endSceneInit();
} else {
gnap._pos = Common::Point(6, 7);
@@ -2717,7 +2717,7 @@ void Scene07::run() {
plat._id = 160;
plat._sequenceId = 0x91;
plat._sequenceDatNum = 0;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
gameSys.insertSequence(0x91, 160, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
}
@@ -2827,7 +2827,7 @@ void Scene07::run() {
if (!_vm->_timers[1]) {
_vm->_timers[1] = _vm->getRandom(20) + 30;
int gnapRandomValue = _vm->getRandom(20);
- if (plat._idleFacing != kDirNone) {
+ if (plat._idleFacing != kDirIdleLeft) {
if (gnapRandomValue == 0 && plat._sequenceId == 0x7CA)
plat.playSequence(0x107CC);
else if (gnapRandomValue == 1 && plat._sequenceId == 0x7CA)
@@ -2966,7 +2966,7 @@ void Scene08::run() {
gameSys.insertSequence(0x146, 1, 0, 0, kSeqNone, 0, 0, 0);
gnap.initPos(-1, 8, kDirBottomRight);
- plat.initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirIdleLeft);
_vm->endSceneInit();
@@ -3065,7 +3065,7 @@ void Scene08::run() {
gnap.useDeviceOnPlatypus();
plat.walkTo(Common::Point(6, 6), 1, 0x107C2, 1);
plat._actionStatus = kAS08PlatWithMan;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
gnap.playIdle(Common::Point(6, 6));
break;
}
@@ -3101,7 +3101,7 @@ void Scene08::run() {
gnap.useDeviceOnPlatypus();
plat.walkTo(Common::Point(3, 7), 1, 0x107C2, 1);
plat._actionStatus = kAS08PlatWithDog;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
gnap.playIdle(Common::Point(3, 7));
break;
}
@@ -3346,7 +3346,7 @@ void Scene08::updateAnimations() {
plat._pos = Common::Point(1, 8);
plat._id = 160;
plat._sequenceId = 0x148;
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
plat._sequenceDatNum = 0;
if (gnap._pos == Common::Point(1, 8))
gnap.walkStep();
@@ -3402,13 +3402,13 @@ void Scene09::run() {
if (_vm->_prevSceneNum == 8) {
gnap.initPos(11, 8, kDirBottomLeft);
- plat.initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
gnap.initPos(4, 7, kDirBottomRight);
- plat.initPos(5, 7, kDirNone);
+ plat.initPos(5, 7, kDirIdleLeft);
_vm->endSceneInit();
}
@@ -3460,7 +3460,7 @@ void Scene09::run() {
gnap.walkTo(Common::Point(4, 7), 0, 0x107BF, 1);
gnap._actionStatus = kAS09LeaveScene;
plat.walkTo(Common::Point(4, 8), -1, 0x107D2, 1);
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
break;
case kHS09ExitHouse:
@@ -3469,7 +3469,7 @@ void Scene09::run() {
gnap.walkTo(Common::Point(10, -1), 0, 0x107AB, 1);
gnap._actionStatus = kAS09LeaveScene;
plat.walkTo(Common::Point(10, -1), -1, 0x107CD, 1);
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
break;
case kHS09Trash:
diff --git a/engines/gnap/scenes/group1.cpp b/engines/gnap/scenes/group1.cpp
index 1a414cb..f76d04c 100644
--- a/engines/gnap/scenes/group1.cpp
+++ b/engines/gnap/scenes/group1.cpp
@@ -75,13 +75,13 @@ void Scene10::run() {
if (_vm->_prevSceneNum == 9) {
gnap.initPos(11, 8, kDirBottomLeft);
- plat.initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(9, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
} else {
gnap.initPos(-1, 7, kDirBottomRight);
- plat.initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(1, 7), -1, 0x107B9, 1);
plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
@@ -244,7 +244,7 @@ void Scene10::run() {
gnap.useDeviceOnPlatypus();
plat.walkTo(Common::Point(7, 6), 1, 0x107D2, 1);
plat._actionStatus = kAS10PlatWithBox;
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
_vm->_largeSprite = gameSys.createSurface(0xC3);
gnap.playIdle(Common::Point(7, 6));
}
@@ -383,7 +383,7 @@ void Scene10::updateAnimations() {
_nextCookSequenceId = 0x843;
plat._sequenceId = 0x7C9;
plat._id = 160;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
plat._sequenceDatNum = 1;
break;
case 0x843:
@@ -551,22 +551,22 @@ void Scene11::run() {
switch (_vm->_prevSceneNum) {
case 13:
gnap.initPos(8, 5, kDirBottomLeft);
- plat.initPos(9, 6, kDirUnk4);
+ plat.initPos(9, 6, kDirIdleRight);
break;
case 47:
gnap.initPos(8, 5, kDirBottomLeft);
- plat.initPos(9, 5, kDirUnk4);
+ plat.initPos(9, 5, kDirIdleRight);
_currGoggleGuySequenceId = 0x1FA;
_currHookGuySequenceId = 0x1FF;
_vm->_timers[7] = 180;
break;
case 12:
gnap.initPos(-1, 9, kDirBottomRight);
- plat.initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirIdleLeft);
break;
default:
gnap.initPos(6, 6, kDirBottomLeft);
- plat.initPos(6, 5, kDirUnk4);
+ plat.initPos(6, 5, kDirIdleRight);
break;
}
@@ -1003,11 +1003,11 @@ void Scene12::run() {
if (_vm->_prevSceneNum == 15) {
gnap.initPos(5, 6, kDirBottomRight);
- plat.initPos(3, 7, kDirNone);
+ plat.initPos(3, 7, kDirIdleLeft);
_vm->endSceneInit();
} else {
gnap.initPos(11, 8, kDirBottomLeft);
- plat.initPos(12, 8, kDirUnk4);
+ plat.initPos(12, 8, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(9, 8), -1, 0x107D2, 1);
@@ -1092,7 +1092,7 @@ void Scene12::run() {
gnap.useDeviceOnPlatypus();
plat.walkTo(Common::Point(3, 7), 1, 0x107D2, 1);
plat._actionStatus = kAS12PlatWithToothGuy;
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
gnap.playIdle(Common::Point(2, 7));
break;
}
@@ -1162,7 +1162,7 @@ void Scene12::run() {
gnap.useDeviceOnPlatypus();
plat.walkTo(Common::Point(7, 6), 1, 0x107C2, 1);
plat._actionStatus = kAS12PlatWithBeardGuy;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
gnap.playIdle(Common::Point(7, 6));
break;
}
@@ -1511,10 +1511,10 @@ void Scene13::run() {
if (_vm->_prevSceneNum == 14) {
gnap.initPos(6, 6, kDirBottomLeft);
- plat.initPos(9, 8, kDirNone);
+ plat.initPos(9, 8, kDirIdleLeft);
} else {
gnap.initPos(3, 7, kDirBottomRight);
- plat.initPos(2, 7, kDirNone);
+ plat.initPos(2, 7, kDirIdleLeft);
}
_vm->endSceneInit();
@@ -2445,7 +2445,7 @@ void Scene17::run() {
if (_vm->_prevSceneNum == 53 || _vm->_prevSceneNum == 18 || _vm->_prevSceneNum == 20 || _vm->_prevSceneNum == 19) {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(4, 6, kDirBottomRight);
- plat.initPos(5, 6, kDirNone);
+ plat.initPos(5, 6, kDirIdleLeft);
_vm->endSceneInit();
plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
@@ -2469,7 +2469,7 @@ void Scene17::run() {
} else if (_vm->isFlag(kGFUnk25)) {
_vm->clearFlag(kGFSpringTaken);
_vm->clearFlag(kGFUnk16);
- plat.initPos(7, 9, kDirNone);
+ plat.initPos(7, 9, kDirIdleLeft);
gnap._pos = _vm->_hotspotsWalkPos[2];
gnap._id = 20 * _vm->_hotspotsWalkPos[2].y;
gameSys.insertSequence(601, 20 * _vm->_hotspotsWalkPos[2].y, 0, 0, kSeqNone, 0, 0, 0);
@@ -2499,18 +2499,18 @@ void Scene17::run() {
updateHotspots();
} else if (_vm->_prevSceneNum == 18) {
gnap.initPos(6, 6, kDirBottomRight);
- plat.initPos(5, 6, kDirNone);
+ plat.initPos(5, 6, kDirIdleLeft);
_vm->endSceneInit();
plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
} else {
if (_vm->isFlag(kGFSpringTaken)) {
gnap.initPos(_vm->_hotspotsWalkPos[2].x, _vm->_hotspotsWalkPos[2].y, kDirBottomRight);
- plat.initPos(1, 9, kDirNone);
+ plat.initPos(1, 9, kDirIdleLeft);
_vm->endSceneInit();
} else {
gnap.initPos(3, 7, kDirBottomRight);
- plat.initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirIdleLeft);
_vm->endSceneInit();
}
_vm->clearFlag(kGFSpringTaken);
@@ -3275,13 +3275,13 @@ void Scene18::putDownGarbageCan(int animationIndex) {
while (gameSys.getAnimationStatus(animationIndex) != 2 && !_vm->_gameDone)
_vm->gameUpdateTick();
}
- if (gnap._idleFacing != kDirNone && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight)
+ if (gnap._idleFacing != kDirIdleLeft && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight)
_vm->_s18GarbageCanPos = gnap._pos.x - 1;
else
_vm->_s18GarbageCanPos = gnap._pos.x + 1;
_vm->clearFlag(kGFPlatypusDisguised);
updateHotspots();
- if (gnap._idleFacing != kDirNone && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight) {
+ if (gnap._idleFacing != kDirIdleLeft && gnap._idleFacing != kDirBottomRight && gnap._idleFacing != kDirUpRight) {
gameSys.insertSequence(0x107BA, gnap._id,
makeRid(gnap._sequenceDatNum, gnap._sequenceId), gnap._id,
kSeqSyncWait, 0, 75 * gnap._pos.x - gnap._gridX, 48 * gnap._pos.y - gnap._gridY);
@@ -3429,19 +3429,19 @@ void Scene18::run() {
}
if (_vm->_prevSceneNum == 17) {
gnap.initPos(4, 11, kDirBottomRight);
- plat.initPos(5, 11, kDirNone);
+ plat.initPos(5, 11, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(4, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
} else if (_vm->_prevSceneNum == 19) {
gnap.initPos(7, 7, kDirBottomRight);
- plat.initPos(8, 7, kDirNone);
+ plat.initPos(8, 7, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(-1, 10, kDirBottomRight);
- plat.initPos(-1, 10, kDirNone);
+ plat.initPos(-1, 10, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 7), -1, 0x107B9, 1);
plat.walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
@@ -3781,7 +3781,7 @@ void Scene18::run() {
if (!_vm->_timers[6]) {
plat._actionStatus = -1;
_vm->_sceneWaiting = false;
- plat.initPos(-1, 10, kDirNone);
+ plat.initPos(-1, 10, kDirIdleLeft);
plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
_vm->clearFlag(kGFPlatypusTalkingToAssistant);
}
@@ -4157,7 +4157,7 @@ void Scene19::run() {
gameSys.insertSequence(_currShopAssistantSequenceId, 20, 0, 0, kSeqNone, 0, 0, 0);
_vm->_timers[6] = _vm->getRandom(40) + 50;
gnap.initPos(3, 6, kDirBottomRight);
- plat.initPos(4, 6, kDirNone);
+ plat.initPos(4, 6, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(4, 9), -1, 0x107B9, 1);
plat.walkTo(Common::Point(5, 9), -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/group2.cpp b/engines/gnap/scenes/group2.cpp
index 3e61faf..020b3d1 100644
--- a/engines/gnap/scenes/group2.cpp
+++ b/engines/gnap/scenes/group2.cpp
@@ -209,42 +209,42 @@ void Scene20::run() {
_vm->gameUpdateTick();
gnap.initPos(11, 8, kDirBottomLeft);
- plat.initPos(11, 9, kDirUnk4);
+ plat.initPos(11, 9, kDirIdleRight);
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
} else {
switch (_vm->_prevSceneNum) {
case 17:
gnap.initPos(5, 11, kDirBottomRight);
- plat.initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 18:
gnap.initPos(11, 8, kDirBottomLeft);
- plat.initPos(11, 9, kDirUnk4);
+ plat.initPos(11, 9, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(6, 9), -1, 0x107C2, 1);
break;
case 21:
gnap.initPos(-1, 8, kDirBottomLeft);
- plat.initPos(-1, 9, kDirUnk4);
+ plat.initPos(-1, 9, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 22:
gnap.initPos(7, 6, kDirBottomRight);
- plat.initPos(8, 6, kDirNone);
+ plat.initPos(8, 6, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(9, 9), -1, 0x107C2, 1);
break;
default:
gnap.initPos(8, 6, kDirBottomLeft);
- plat.initPos(9, 6, kDirUnk4);
+ plat.initPos(9, 6, kDirIdleRight);
_vm->endSceneInit();
_vm->_hotspots[kHS20WalkArea2]._flags |= SF_WALKABLE;
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
@@ -307,7 +307,7 @@ void Scene20::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot], 0, 0x107AF, 1);
gnap._actionStatus = kAS20LeaveScene;
plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitParkingLot] + Common::Point(0, 1), -1, 0x107CF, 1);
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
}
break;
@@ -346,7 +346,7 @@ void Scene20::run() {
gnap.walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(0, - 1), 0, 0x107BB, 1);
gnap._actionStatus = kAS20LeaveScene;
plat.walkTo(_vm->_hotspotsWalkPos[kHS20ExitInsideGrubCity] + Common::Point(1, 0), -1, 0x107C2, 1);
- plat._idleFacing = kDirUnk4;
+ plat._idleFacing = kDirIdleRight;
}
break;
@@ -750,7 +750,7 @@ void Scene21::run() {
if (_vm->isFlag(kGFTwigTaken)) {
if (_vm->isFlag(kGFKeysTaken)) {
gnap.initPos(5, 8, kDirBottomRight);
- plat.initPos(6, 8, kDirNone);
+ plat.initPos(6, 8, kDirIdleLeft);
gameSys.insertSequence(0x8E, 2, 0, 0, kSeqNone, 0, 0, 0);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
@@ -758,7 +758,7 @@ void Scene21::run() {
_vm->clearFlag(kGFKeysTaken);
} else {
gnap.initPos(5, 11, kDirBottomRight);
- plat.initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirIdleLeft);
if (!_vm->isFlag(kGFUnk04))
gameSys.insertSequence(0x8D, 59, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -767,7 +767,7 @@ void Scene21::run() {
}
} else {
gnap.initPos(5, 11, kDirBottomRight);
- plat.initPos(6, 11, kDirNone);
+ plat.initPos(6, 11, kDirIdleLeft);
_currOldLadySequenceId = 0x89;
gameSys.setAnimation(0x89, 79, 3);
gameSys.insertSequence(_currOldLadySequenceId, 79, 0, 0, kSeqNone, 0, 0, 0);
@@ -1052,11 +1052,11 @@ void Scene22::run() {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(2, 8, kDirBottomRight);
- plat.initPos(1, 8, kDirNone);
+ plat.initPos(1, 8, kDirIdleLeft);
_vm->endSceneInit();
} else {
gnap.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y, kDirBottomRight);
- plat.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirNone);
+ plat.initPos(11, _vm->_hotspotsWalkPos[kHS22ExitBackGrubCity].y + 1, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(9, 8), -1, 0x107C2, 1);
@@ -1304,7 +1304,7 @@ void Scene23::run() {
_vm->queueInsertDeviceIcon();
gnap.initPos(-1, 7, kDirBottomRight);
- plat.initPos(-2, 7, kDirNone);
+ plat.initPos(-2, 7, kDirIdleLeft);
gameSys.insertSequence(0xBD, 255, 0, 0, kSeqNone, 0, 0, 0);
gameSys.insertSequence(0xBF, 2, 0, 0, kSeqNone, 0, 0, 0);
_vm->endSceneInit();
@@ -1577,13 +1577,13 @@ void Scene24::run() {
if (_vm->_prevSceneNum == 20) {
gnap.initPos(1, 8, kDirBottomRight);
- plat.initPos(2, 8, kDirNone);
+ plat.initPos(2, 8, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(1, 9), -1, 0x107B9, 1);
plat.walkTo(Common::Point(2, 9), -1, 0x107C2, 1);
} else {
gnap.initPos(8, 8, kDirBottomLeft);
- plat.initPos(8, 8, kDirUnk4);
+ plat.initPos(8, 8, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(3, 8), -1, 0x107C2, 1);
@@ -1827,13 +1827,13 @@ void Scene25::run() {
if (_vm->_prevSceneNum == 24) {
gnap.initPos(5, 11, kDirUpLeft);
- plat.initPos(6, 11, kDirUnk4);
+ plat.initPos(6, 11, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 7), -1, 0x107BA, 1);
plat.walkTo(Common::Point(6, 7), -1, 0x107C2, 1);
} else {
gnap.initPos(5, 6, kDirBottomRight);
- plat.initPos(6, 6, kDirNone);
+ plat.initPos(6, 6, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(5, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
@@ -2148,13 +2148,13 @@ void Scene26::run() {
if (_vm->_prevSceneNum == 25) {
gnap.initPos(-1, 8, kDirBottomRight);
- plat.initPos(-2, 8, kDirNone);
+ plat.initPos(-2, 8, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(1, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(2, 8, kDirBottomRight);
- plat.initPos(3, 8, kDirNone);
+ plat.initPos(3, 8, kDirIdleLeft);
_vm->endSceneInit();
}
@@ -2365,28 +2365,28 @@ void Scene27::run() {
switch (_vm->_prevSceneNum) {
case 26:
gnap.initPos(7, 12, kDirBottomRight);
- plat.initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
break;
case 29:
gnap.initPos(-1, 8, kDirBottomRight);
- plat.initPos(-1, 9, kDirNone);
+ plat.initPos(-1, 9, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(3, 9), -1, 0x107C2, 1);
break;
case 31:
gnap.initPos(12, 8, kDirBottomLeft);
- plat.initPos(12, 9, kDirUnk4);
+ plat.initPos(12, 9, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(8, 9), -1, 0x107C2, 1);
break;
default:
gnap.initPos(6, 8, kDirBottomRight);
- plat.initPos(5, 9, kDirNone);
+ plat.initPos(5, 9, kDirIdleLeft);
_vm->endSceneInit();
break;
}
@@ -2742,12 +2742,12 @@ void Scene28::run() {
_vm->_timers[4] = _vm->getRandom(20) + 80;
}
gnap.initPos(8, 8, kDirBottomLeft);
- plat.initPos(9, 8, kDirUnk4);
+ plat.initPos(9, 8, kDirIdleRight);
_vm->endSceneInit();
} else {
gameSys.insertSequence(0x11B, 39, 0, 0, kSeqNone, 0, 0, 0);
gnap.initPos(8, 8, kDirBottomLeft);
- plat.initPos(9, 8, kDirUnk4);
+ plat.initPos(9, 8, kDirIdleRight);
_vm->endSceneInit();
_vm->playSequences(0xF7, 0x121, 0x122, 0x123);
_currClownSequenceId = 0x115;
@@ -3149,13 +3149,13 @@ void Scene29::run() {
if (_vm->_prevSceneNum == 27) {
gnap.initPos(12, 7, kDirBottomRight);
- plat.initPos(12, 8, kDirNone);
+ plat.initPos(12, 8, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 7), -1, 0x107B9, 1);
plat.walkTo(Common::Point(8, 8), -1, 0x107C2, 1);
} else {
gnap.initPos(-1, 7, kDirBottomRight);
- plat.initPos(-2, 7, kDirNone);
+ plat.initPos(-2, 7, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(2, 7), -1, 0x107B9, 1);
plat.walkTo(Common::Point(1, 7), -1, 0x107C2, 1);
diff --git a/engines/gnap/scenes/group3.cpp b/engines/gnap/scenes/group3.cpp
index b10e797..98a4f6c 100644
--- a/engines/gnap/scenes/group3.cpp
+++ b/engines/gnap/scenes/group3.cpp
@@ -68,7 +68,7 @@ void Scene30::run() {
_kidSequenceId = 0x101;
gnap.initPos(7, 12, kDirBottomRight);
- plat.initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107B9, 1);
plat.walkTo(Common::Point(6, 8), -1, 0x107C2, 1);
@@ -319,13 +319,13 @@ void Scene31::run() {
if (_vm->_prevSceneNum == 27) {
gnap.initPos(-1, 8, kDirBottomLeft);
- plat.initPos(-1, 9, kDirUnk4);
+ plat.initPos(-1, 9, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(3, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(3, 9), -1, 0x107D2, 1);
} else {
gnap.initPos(7, 12, kDirBottomRight);
- plat.initPos(6, 12, kDirNone);
+ plat.initPos(6, 12, kDirIdleLeft);
_vm->endSceneInit();
gnap.walkTo(Common::Point(7, 8), -1, 0x107BA, 1);
plat.walkTo(Common::Point(6, 8), -1, 0x107D2, 1);
@@ -675,13 +675,13 @@ void Scene32::run() {
if (_vm->_prevSceneNum == 33) {
gnap.initPos(11, 6, kDirBottomLeft);
- plat.initPos(12, 6, kDirUnk4);
+ plat.initPos(12, 6, kDirIdleRight);
_vm->endSceneInit();
plat.walkTo(Common::Point(9, 6), -1, 0x107D2, 1);
gnap.walkTo(Common::Point(8, 6), -1, 0x107BA, 1);
} else {
gnap.initPos(1, 6, kDirBottomRight);
- plat.initPos(1, 7, kDirNone);
+ plat.initPos(1, 7, kDirIdleLeft);
_vm->endSceneInit();
}
@@ -839,26 +839,26 @@ void Scene33::run() {
switch (_vm->_prevSceneNum) {
case 34:
gnap.initPos(11, 7, kDirBottomLeft);
- plat.initPos(12, 7, kDirUnk4);
+ plat.initPos(12, 7, kDirIdleRight);
_vm->endSceneInit();
gnap.walkTo(Common::Point(8, 7), -1, 0x107BA, 1);
plat.walkTo(Common::Point(9, 7), -1, 0x107D2, 1);
break;
case 37:
gnap.initPos(7, 7, kDirBottomRight);
- plat.initPos(8, 7, kDirNone);
+ plat.initPos(8, 7, kDirIdleLeft);
_vm->endSceneInit();
break;
case 32:
gnap.initPos(-1, 6, kDirBottomRight);
- plat.initPos(-1, 7, kDirNone);
+ plat.initPos(-1, 7, kDirIdleLeft);
_vm->endSceneInit();
plat.walkTo(Common::Point(2, 7), -1, 0x107C2, 1);
gnap.walkTo(Common::Point(2, 8), -1, 0x107B9, 1);
break;
default:
gnap.initPos(3, 7, kDirBottomRight);
- plat.initPos(2, 7, kDirNone);
+ plat.initPos(2, 7, kDirIdleLeft);
_vm->endSceneInit();
break;
}
@@ -1142,10 +1142,10 @@ void Scene38::run() {
if (_vm->_prevSceneNum == 39) {
gnap.initPos(3, 7, kDirBottomLeft);
- plat.initPos(4, 7, kDirUnk4);
+ plat.initPos(4, 7, kDirIdleRight);
} else {
gnap.initPos(3, 8, kDirBottomRight);
- plat.initPos(4, 8, kDirNone);
+ plat.initPos(4, 8, kDirIdleLeft);
}
_vm->endSceneInit();
@@ -1372,7 +1372,7 @@ void Scene38::updateAnimations() {
gnap._sequenceDatNum = 0;
gameSys.setAnimation(0x9F, gnap._id, 0);
gnap._actionStatus = kAS38HoldingHuntingTrophy;
- if (plat._idleFacing != kDirNone)
+ if (plat._idleFacing != kDirIdleLeft)
plat.playSequence(0x107D5);
else
plat.playSequence(0x107D4);
@@ -1448,7 +1448,7 @@ void Scene39::run() {
_vm->endSceneInit();
} else {
gnap.initPos(4, 7, kDirBottomRight);
- plat.initPos(5, 7, kDirNone);
+ plat.initPos(5, 7, kDirIdleLeft);
_vm->endSceneInit();
}
diff --git a/engines/gnap/scenes/group4.cpp b/engines/gnap/scenes/group4.cpp
index b12d2ad..f37be2c 100644
--- a/engines/gnap/scenes/group4.cpp
+++ b/engines/gnap/scenes/group4.cpp
@@ -1708,13 +1708,13 @@ void Scene44::run() {
case 50:
gnap.initPos(4, 8, kDirBottomRight);
if (_vm->_sceneSavegameLoaded) {
- plat.initPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirUnk4);
+ plat.initPos(_vm->_hotspotsWalkPos[4].x, _vm->_hotspotsWalkPos[4].y, kDirIdleRight);
} else if (!_vm->isFlag(kGFUnk13)) {
_vm->_timers[0] = 50;
_vm->_timers[1] = 20;
plat._pos = Common::Point(5, 8);
plat._sequenceId = 0xFD;
- plat._idleFacing = kDirNone;
+ plat._idleFacing = kDirIdleLeft;
plat._id = 160;
plat._sequenceDatNum = 0;
gameSys.insertSequence(0xFD, 160, 0, 0, kSeqNone, 0, 0, 0);
@@ -2032,7 +2032,7 @@ void Scene44::updateAnimations() {
if (gameSys.getAnimationStatus(2) == 2) {
if (_nextKissingLadySequenceId == 0xF6) {
gameSys.insertSequence(_nextKissingLadySequenceId, 1, _currKissingLadySequenceId, 1, kSeqSyncWait, 0, 0, 0);
- plat.initPos(5, 8, kDirNone);
+ plat.initPos(5, 8, kDirIdleLeft);
_currKissingLadySequenceId = _nextKissingLadySequenceId;
_nextKissingLadySequenceId = -1;
gameSys.setAnimation(0, 0, 2);
@@ -2162,7 +2162,7 @@ void Scene45::run() {
gameSys.setAnimation(0x9E, 1, 0);
gnap._actionStatus = 1;
gameSys.insertSequence(gnap._sequenceId, gnap._id, 0, 0, kSeqNone, 0, 0, 0);
- plat.initPos(4, 8, kDirNone);
+ plat.initPos(4, 8, kDirIdleLeft);
_vm->endSceneInit();
} else if (_vm->_prevSceneNum == 46) {
gnap.initPos(-1, 8, kDirUpRight);
Commit: aeb36d4afc0c6b5961adc411dc03b00a96a86f99
https://github.com/scummvm/scummvm/commit/aeb36d4afc0c6b5961adc411dc03b00a96a86f99
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T07:52:48+02:00
Commit Message:
GNAP: Add safeguard checks in PlayerGnap's getWalkStopSequenceId and getWalkFacing
Changed paths:
engines/gnap/grid.cpp
diff --git a/engines/gnap/grid.cpp b/engines/gnap/grid.cpp
index 2197317..aa6da71 100644
--- a/engines/gnap/grid.cpp
+++ b/engines/gnap/grid.cpp
@@ -68,8 +68,10 @@ int PlayerGnap::getWalkStopSequenceId(int deltaX, int deltaY) {
0x7BC, 0x000, 0x7BA,
0x7BB, 0x7B9, 0x7B9
};
- // CHECKME This is a little weird
- return gnapWalkStopSequenceIds[3 * deltaX + 3 + 1 + deltaY];
+
+ int id = 3 * (deltaX + 1) + deltaY + 1;
+ assert (id >= 0 && id < 9 );
+ return gnapWalkStopSequenceIds[id];
}
Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
@@ -78,8 +80,10 @@ Facing PlayerGnap::getWalkFacing(int deltaX, int deltaY) {
kDirUpLeft, kDirIdleLeft, kDirBottomLeft,
kDirUpRight, kDirBottomRight, kDirBottomRight
};
- // CHECKME This is a little weird
- return gnapWalkFacings[3 * deltaX + 3 + 1 + deltaY];
+
+ int id = 3 * (deltaX + 1) + deltaY + 1;
+ assert (id >= 0 && id < 9 );
+ return gnapWalkFacings[id];
}
bool PlayerGnap::findPath1(int gridX, int gridY, int index) {
Commit: ecdf982eba72f00c34aa73644c074f60e493887b
https://github.com/scummvm/scummvm/commit/ecdf982eba72f00c34aa73644c074f60e493887b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T07:57:21+02:00
Commit Message:
GNAP: Add a note, remove a checkme
Changed paths:
engines/gnap/character.cpp
engines/gnap/scenes/scenecore.cpp
diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp
index 5eb35d1..76e30d9 100644
--- a/engines/gnap/character.cpp
+++ b/engines/gnap/character.cpp
@@ -1287,6 +1287,8 @@ int PlayerPlat::getWalkSequenceId(int deltaX, int deltaY) {
}
bool PlayerPlat::walkTo(Common::Point gridPos, int animationIndex, int sequenceId, int flags) {
+ // Note: flags is always 1. The code could be simplified.
+
int datNum = flags & 3;
PlayerGnap& gnap = *_vm->_gnap;
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
index d34f460..5e941f4 100644
--- a/engines/gnap/scenes/scenecore.cpp
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -660,7 +660,7 @@ void CutScene::run() {
if (_vm->_prevSceneNum == 2) {
soundId = 0x36B;
- duration = MAX(1, 300 / _vm->getSequenceTotalDuration(_sequenceIdArr[_itemsCount - 1]));//CHECKME
+ duration = MAX(1, 300 / _vm->getSequenceTotalDuration(_sequenceIdArr[_itemsCount - 1]));
_vm->_timers[0] = 0;
}
Commit: 7eeb50e488ba4177d635e2396ab6b51ac9601b26
https://github.com/scummvm/scummvm/commit/7eeb50e488ba4177d635e2396ab6b51ac9601b26
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T18:53:07+02:00
Commit Message:
GNAP: As suggested by Tsoliman, tag the games as unstable
Changed paths:
engines/gnap/detection.cpp
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index b68d64c..a7e9eec 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -43,7 +43,7 @@ static const ADGameDescription gameDescriptions[] = {
{"stock_n.dat", 0, "46819043d019a2f36b727cc2bdd6980f", 12515823},
AD_LISTEND
},
- Common::EN_ANY, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO0()
+ Common::EN_ANY, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO0()
},
{
"gnap", "",
@@ -51,7 +51,7 @@ static const ADGameDescription gameDescriptions[] = {
{"stock_n.dat", 0, "46819043d019a2f36b727cc2bdd6980f", 12995485},
AD_LISTEND
},
- Common::RU_RUS, Common::kPlatformWindows, ADGF_NO_FLAGS, GUIO0()
+ Common::RU_RUS, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO0()
},
AD_TABLE_END_MARKER
Commit: 94c58f9143a45bbbae74260633f6ca1be6b10597
https://github.com/scummvm/scummvm/commit/94c58f9143a45bbbae74260633f6ca1be6b10597
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T19:22:09+02:00
Commit Message:
GNAP: Add safeguard in setSoundVolume
Changed paths:
engines/gnap/sound.cpp
diff --git a/engines/gnap/sound.cpp b/engines/gnap/sound.cpp
index a4a59d7..75cfb55 100644
--- a/engines/gnap/sound.cpp
+++ b/engines/gnap/sound.cpp
@@ -57,6 +57,9 @@ void SoundMan::stopSound(int resourceId) {
}
void SoundMan::setSoundVolume(int resourceId, int volume) {
+ if (resourceId == -1 || volume < 0 || volume > 100)
+ return;
+
const int index = find(resourceId);
int realVol = volume * 2.55;
_vm->_mixer->setChannelVolume(_items[index]._handle, realVol);
Commit: e14e7992cc95dce8c78d1fa7ccf6e7d0ab876095
https://github.com/scummvm/scummvm/commit/e14e7992cc95dce8c78d1fa7ccf6e7d0ab876095
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-05-23T19:39:56+02:00
Commit Message:
GNAP: Fix inventory content when loading from launcher
Changed paths:
engines/gnap/gnap.cpp
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index cc0ac2e..8acc3ee 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -705,6 +705,7 @@ void GnapEngine::mainLoop() {
int slot = _loadGameSlot;
_loadGameSlot = -1;
loadGameState(slot);
+ _wasSavegameLoaded = true;
showCursor();
}
Commit: 87de8fc84a7212ebeaa631ce1b8e295a6fb1da9f
https://github.com/scummvm/scummvm/commit/87de8fc84a7212ebeaa631ce1b8e295a6fb1da9f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-24T00:24:26+02:00
Commit Message:
Merge pull request #757 from Strangerke/gnap
UFOs / Gnap: Der Schurke aus dem All
Changed paths:
A engines/gnap/character.cpp
A engines/gnap/character.h
A engines/gnap/configure.engine
A engines/gnap/datarchive.cpp
A engines/gnap/datarchive.h
A engines/gnap/debugger.cpp
A engines/gnap/debugger.h
A engines/gnap/detection.cpp
A engines/gnap/fontdata.h
A engines/gnap/gamesys.cpp
A engines/gnap/gamesys.h
A engines/gnap/gnap.cpp
A engines/gnap/gnap.h
A engines/gnap/grid.cpp
A engines/gnap/menu.cpp
A engines/gnap/module.mk
A engines/gnap/music.cpp
A engines/gnap/music.h
A engines/gnap/resource.cpp
A engines/gnap/resource.h
A engines/gnap/scenes/arcade.cpp
A engines/gnap/scenes/arcade.h
A engines/gnap/scenes/group0.cpp
A engines/gnap/scenes/group0.h
A engines/gnap/scenes/group1.cpp
A engines/gnap/scenes/group1.h
A engines/gnap/scenes/group2.cpp
A engines/gnap/scenes/group2.h
A engines/gnap/scenes/group3.cpp
A engines/gnap/scenes/group3.h
A engines/gnap/scenes/group4.cpp
A engines/gnap/scenes/group4.h
A engines/gnap/scenes/group5.cpp
A engines/gnap/scenes/group5.h
A engines/gnap/scenes/groupcs.cpp
A engines/gnap/scenes/groupcs.h
A engines/gnap/scenes/intro.cpp
A engines/gnap/scenes/intro.h
A engines/gnap/scenes/scenecore.cpp
A engines/gnap/scenes/scenecore.h
A engines/gnap/sound.cpp
A engines/gnap/sound.h
More information about the Scummvm-git-logs
mailing list