aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek/room.h
diff options
context:
space:
mode:
authorMatthew Stewart2018-07-03 23:17:02 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commit051ea8c238510db03505cd146025c1db441ace84 (patch)
treedbcb07955505ed5090fa392a9273a9cb4dd1e08a /engines/startrek/room.h
parent51e2c85a25a19ce7cdc1b942947f4ca6fbe86d6c (diff)
downloadscummvm-rg350-051ea8c238510db03505cd146025c1db441ace84.tar.gz
scummvm-rg350-051ea8c238510db03505cd146025c1db441ace84.tar.bz2
scummvm-rg350-051ea8c238510db03505cd146025c1db441ace84.zip
STARTREK: FEATHER1
Diffstat (limited to 'engines/startrek/room.h')
-rw-r--r--engines/startrek/room.h105
1 files changed, 102 insertions, 3 deletions
diff --git a/engines/startrek/room.h b/engines/startrek/room.h
index 2b5f95cd17..bd6d7d9420 100644
--- a/engines/startrek/room.h
+++ b/engines/startrek/room.h
@@ -49,6 +49,7 @@ struct RoomAction {
const int RDF_WARP_ROOM_INDICES = 0x22;
const int RDF_ROOM_ENTRY_POSITIONS = 0x2a;
const int RDF_BEAM_IN_POSITIONS = 0xaa;
+const int RDF_SPAWN_POSITIONS = 0xba;
class Room {
@@ -85,6 +86,10 @@ public:
uint16 getDoorPolygonEndOffset() { return readRdfWord(0x1c); }
Common::Point getBeamInPosition(int crewmanIndex);
+ // This is analagous to above, but instead of beaming in, they just appear in a spot.
+ // Used sparingly, ie. in feather's serpent when appearing in cave after Quetzecoatl
+ // warps the crew.
+ Common::Point getSpawnPosition(int crewmanIndex);
public:
byte *_rdfData;
@@ -92,7 +97,7 @@ public:
private:
StarTrekEngine *_vm;
- RoomAction *_roomActionList;
+ const RoomAction *_roomActionList;
int _numRoomActions;
int _roomIndex; // ie. for DEMON2, this is 2
@@ -131,8 +136,8 @@ private:
// If "changeDirection" is true, they remain facing that direction even after their
// animation is finished. The game is inconsistent about doing this.
- void spockScan(int direction, TextRef text, bool changeDirection);
- void mccoyScan(int direction, TextRef text, bool changeDirection);
+ void spockScan(int direction, TextRef text, bool changeDirection = false);
+ void mccoyScan(int direction, TextRef text, bool changeDirection = false);
// Room-specific code
public:
@@ -1408,6 +1413,88 @@ public:
// FEATHER1
void feather1Tick1();
+ void feather1Tick45();
+ void feather1Tick85();
+ void feather1Tick95();
+ void feather1QuetzecoatlDisappeared();
+ void feather1GetRightVine();
+ void feather1GetLeftVine();
+ void feather1GetRocks();
+ void feather1ReachedRocks();
+ void feather1PickedUpRocks();
+ void feather1GetSnake();
+ void feather1ReachedSnake();
+ void feather1Timer1Expired();
+ void feather1Timer2Expired();
+ void feather1PickedUpSnake();
+ void feather1Timer0Expired();
+ void feather1UseCommunicator();
+ void feather1UseRockOnHole();
+ void feather1ReachedHole();
+ void feather1Timer3Expired();
+ void feather1PutRockInHole();
+ void feather1UseSnakeOnLeftVine();
+ void feather1UseSnakeOnSpock();
+ void feather1UseSnakeOnKirk();
+ void feather1UseSnakeOnMccoy();
+ void feather1UseSnakeOnRedshirt();
+ void feather1UseRockOnSnake();
+ void feather1UseSpockOnSnake();
+ void feather1UseMccoyOnSnake();
+ void feather1UseRedshirtOnSnake();
+ void feather1UseSpockOnHole();
+ void feather1UseMccoyOnHole();
+ void feather1UseRedshirtOnHole();
+ void feather1UseRockOnMoss();
+ void feather1UseRockOnSpock();
+ void feather1UseRockOnMccoy();
+ void feather1UseRockOnRedshirt();
+ void feather1UseSpockOnMoss();
+ void feather1UseMccoyOnMoss();
+ void feather1UseRedshirtOnMoss();
+ void feather1UseRockOnLeftVine();
+ void feather1ReadyToThrowRock1();
+ void feather1ThrewRock1();
+ void feather1ReadyToThrowRock2();
+ void feather1ThrewRock2();
+ void feather1UseSpockOnVine();
+ void feather1UseMccoyOnVine();
+ void feather1UseRedshirtOnVine();
+ void feather1UseKirkOnVine();
+ void feather1CrewmanClimbVine();
+ void feather1ReachedVineToClimbUp();
+ void feather1ClimbedUpVine();
+ void feather1ReachedVineToClimbDown();
+ void feather1ClimbedDownVine();
+ void feather1UsePhaser();
+ void feather1UseSTricorderOnRightVine();
+ void feather1UseSTricorderOnSnake();
+ void feather1UseSTricorderOnMoss();
+ void feather1UseSTricorderOnHole();
+ void feather1UseSTricorderAnywhere();
+ void feather1UseSTricorderOnRocks();
+ void feather1UseMTricorderOnVine();
+ void feather1UseMTricorderOnMoss();
+ void feather1UseMTricorderOnHole();
+ void feather1UseMTricorderOnSnake();
+ void feather1UseMedkit();
+ void feather1TalkToMccoy();
+ void feather1TalkToSpock();
+ void feather1TalkToRedshirt();
+ void feather1WalkToExit();
+ void feather1LookAnywhere();
+ void feather1LookAtSnake();
+ void feather1LookAtRightVine();
+ void feather1LookAtHole();
+ void feather1LookAtMoss();
+ void feather1LookAtRocks();
+ void feather1LookAtLight();
+ void feather1LookAtEyes();
+ void feather1LookAtKirk();
+ void feather1LookAtSpock();
+ void feather1LookAtMccoy();
+ void feather1LookAtRedshirt();
+ void feather1LookAtLeftVine();
// FEATHER2
void feather2Tick1();
@@ -1546,6 +1633,18 @@ private:
byte walkingToDoor;
} mudd;
+ struct {
+ // feather1
+ byte snakeInHole; // 0xca
+ bool scannedSnake; // 0xcb
+ bool crewEscaped[4]; // 0xcc
+ byte kirkEscaped; // 0xcc
+ byte spockEscaped; // 0xcd
+ byte mccoyEscaped; // 0xce
+ byte cf; // 0xcf
+ byte crewmanClimbingVine;
+ } feather;
+
} _roomVar;
};