aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek/rooms/demon0.cpp
diff options
context:
space:
mode:
authorMatthew Stewart2018-05-23 19:56:15 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitca3a9dcc8764909e163a860e4a472404620480e2 (patch)
tree4b546d6c1ad2466e25d4c24bbb642d7c0eb49c58 /engines/startrek/rooms/demon0.cpp
parentbd79e4d653f9476de1501de149589e583e47411d (diff)
downloadscummvm-rg350-ca3a9dcc8764909e163a860e4a472404620480e2.tar.gz
scummvm-rg350-ca3a9dcc8764909e163a860e4a472404620480e2.tar.bz2
scummvm-rg350-ca3a9dcc8764909e163a860e4a472404620480e2.zip
STARTREK: Finish implementing first room
Doors now work, and the system of "walking, then performing an action afterward" is implemented.
Diffstat (limited to 'engines/startrek/rooms/demon0.cpp')
-rw-r--r--engines/startrek/rooms/demon0.cpp34
1 files changed, 30 insertions, 4 deletions
diff --git a/engines/startrek/rooms/demon0.cpp b/engines/startrek/rooms/demon0.cpp
index f687eaaaa3..41a5bbf802 100644
--- a/engines/startrek/rooms/demon0.cpp
+++ b/engines/startrek/rooms/demon0.cpp
@@ -72,6 +72,13 @@ void Room::demon0TouchedWarp0() {
_vm->_awayMission.rdfStillDoDefaultAction = true;
}
+void Room::demon0WalkToBottomDoor() {
+ _vm->_awayMission.transitioningIntoRoom = 1;
+ _rdfData[0xcd] = 1; // FIXME
+ _vm->_awayMission.field25[OBJECT_KIRK] = DIR_E;
+ walkCrewman(OBJECT_KIRK, 243, 158, 1);
+}
+
void Room::demon0TouchedHotspot1() {
if (_rdfData[0xcd] != 1) // FIXME: not portable to mac/amiga?
return;
@@ -79,13 +86,32 @@ void Room::demon0TouchedHotspot1() {
playSoundEffectIndex(0x05);
}
+void Room::demon0ReachedBottomDoor() {
+ if (++_rdfData[0xca] != 2) // FIXME
+ return;
+ loadRoomIndex(5, 0);
+}
+
+void Room::demon0WalkToTopDoor() {
+ _vm->_awayMission.transitioningIntoRoom = 1;
+ _rdfData[0xcc] = 1; // FIXME
+ _vm->_awayMission.field25[OBJECT_KIRK] = DIR_E;
+ walkCrewman(OBJECT_KIRK, 157, 134, 2);
+}
+
void Room::demon0TouchedHotspot0() {
- if (_rdfData[0xcd] != 1) // FIXME: not portable to mac/amiga?
+ if (_rdfData[0xcc] != 1) // FIXME: not portable to mac/amiga?
return;
loadActorAnim2(10, "s0r0d2", 158, 130, 2);
playSoundEffectIndex(0x05);
}
+void Room::demon0ReachedTopDoor() {
+ if (++_rdfData[0xcb] != 2) // FIXME
+ return;
+ loadRoomIndex(6, 3);
+}
+
void Room::demon0TalkToPrelate() {
const char *options1[] = {
"Capt. Kirk",
@@ -471,7 +497,7 @@ void Room::demon0AskPrelateAboutSightings() {
_vm->_awayMission.field36 = 1;
}
-void Room::useSTricorderAnywhere() {
+void Room::demon0UseSTricorderAnywhere() {
loadActorAnim2(OBJECT_SPOCK, "sscans", -1, -1, 0);
playSoundEffectIndex(0x04);
@@ -484,7 +510,7 @@ void Room::useSTricorderAnywhere() {
showRoomSpecificText(text);
}
-void Room::useMTricorderAnywhere() {
+void Room::demon0UseMTricorderAnywhere() {
loadActorAnim2(OBJECT_MCCOY, "mscans", -1, -1, 0);
playSoundEffectIndex(0x04);
@@ -496,7 +522,7 @@ void Room::useMTricorderAnywhere() {
showRoomSpecificText(text);
}
-void Room::useMTricorderOnPrelate() {
+void Room::demon0UseMTricorderOnPrelate() {
loadActorAnim2(OBJECT_MCCOY, "mscans", -1, -1, 0);
playSoundEffectIndex(0x04);