aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek/rooms
diff options
context:
space:
mode:
authorMatthew Stewart2018-07-04 17:45:15 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commit8aef8c453918a583e1d804bf371437fef3b08e8c (patch)
treee0bb54fecd8871a515cc50af3612f7b509fabf6c /engines/startrek/rooms
parent1e60b6f96bd2733544b1340c6db1e4c550e2ab1e (diff)
downloadscummvm-rg350-8aef8c453918a583e1d804bf371437fef3b08e8c.tar.gz
scummvm-rg350-8aef8c453918a583e1d804bf371437fef3b08e8c.tar.bz2
scummvm-rg350-8aef8c453918a583e1d804bf371437fef3b08e8c.zip
STARTREK: FEATHER4
Diffstat (limited to 'engines/startrek/rooms')
-rw-r--r--engines/startrek/rooms/feather4.cpp134
-rw-r--r--engines/startrek/rooms/function_map.h10
2 files changed, 133 insertions, 11 deletions
diff --git a/engines/startrek/rooms/feather4.cpp b/engines/startrek/rooms/feather4.cpp
index b2e92df619..7629353afe 100644
--- a/engines/startrek/rooms/feather4.cpp
+++ b/engines/startrek/rooms/feather4.cpp
@@ -22,14 +22,142 @@
#include "startrek/room.h"
-#define OBJECT_8 8
-
-#define HOTSPOT_20 0x20
+#define HOTSPOT_EYES 0x20
+#define HOTSPOT_MUSHROOM 0x21
+#define HOTSPOT_BUSH 0x22
+#define HOTSPOT_LIGHT_1 0x23
+#define HOTSPOT_LIGHT_2 0x24
+#define HOTSPOT_LIGHT_3 0x25
namespace StarTrek {
+extern const RoomAction feather4ActionList[] = {
+ { {ACTION_TICK, 1, 0, 0}, &Room::feather4Tick1 },
+ { {ACTION_USE, OBJECT_ICOMM, 0xff, 0}, &Room::feather4UseCommunicator },
+ { {ACTION_USE, OBJECT_IPHASERS, 0xff, 0}, &Room::feather4UsePhaser },
+ { {ACTION_USE, OBJECT_IPHASERK, 0xff, 0}, &Room::feather4UsePhaser },
+ { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LIGHT_1, 0}, &Room::feather4UseSTricorderOnLight },
+ { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LIGHT_2, 0}, &Room::feather4UseSTricorderOnLight },
+ { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LIGHT_3, 0}, &Room::feather4UseSTricorderOnLight },
+ { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_MUSHROOM, 0},&Room::feather4UseSTricorderOnMushroom },
+ { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_BUSH, 0}, &Room::feather4UseSTricorderOnBush },
+ { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::feather4UseSTricorderAnywhere },
+ { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_LIGHT_1, 0}, &Room::feather4UseMTricorderOnLight },
+ { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_LIGHT_2, 0}, &Room::feather4UseMTricorderOnLight },
+ { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_LIGHT_3, 0}, &Room::feather4UseMTricorderOnLight },
+ { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_MUSHROOM, 0},&Room::feather4UseMTricorderOnMushroom },
+ { {ACTION_USE, OBJECT_IMTRICOR, 0xff, 0}, &Room::feather4UseMTricorderAnywhere },
+ { {ACTION_USE, OBJECT_IMEDKIT, 0xff, 0}, &Room::feather4UseMedkitAnywhere },
+ { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::feather4TalkToMccoy },
+ { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::feather4TalkToSpock },
+ { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::feather4TalkToRedshirt },
+ { {ACTION_LOOK, HOTSPOT_EYES, 0, 0}, &Room::feather4LookAtEyes },
+ { {ACTION_LOOK, 0xff, 0, 0}, &Room::feather4LookAnywhere },
+ { {ACTION_LOOK, HOTSPOT_MUSHROOM, 0, 0}, &Room::feather4LookAtMushroom },
+ { {ACTION_LOOK, HOTSPOT_BUSH, 0, 0}, &Room::feather4LookAtBush },
+ { {ACTION_LOOK, HOTSPOT_LIGHT_1, 0, 0}, &Room::feather4LookAtLight },
+ { {ACTION_LOOK, HOTSPOT_LIGHT_2, 0, 0}, &Room::feather4LookAtLight },
+ { {ACTION_LOOK, HOTSPOT_LIGHT_3, 0, 0}, &Room::feather4LookAtLight },
+ { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::feather4LookAtKirk },
+ { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::feather4LookAtSpock },
+ { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::feather4LookAtMccoy },
+ { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::feather4LookAtRedshirt },
+};
+
+extern const int feather4NumActions = sizeof(feather4ActionList) / sizeof(RoomAction);
+
+
void Room::feather4Tick1() {
+ playVoc("FEA4LOOP");
+ playMidiMusicTracks(27);
+}
+
+void Room::feather4UseCommunicator() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA4_005); // BUGFIX: Original played wrong audio file (TX_FEA4N008)
+}
+
+void Room::feather4UsePhaser() {
+ showText(TX_SPEAKER_SPOCK, TX_FEA4_011);
+}
+
+void Room::feather4UseSTricorderOnLight() {
+ spockScan(DIR_W, TX_FEA4_010);
+}
+
+void Room::feather4UseSTricorderOnMushroom() {
+ spockScan(DIR_W, TX_FEA4_012);
+}
+
+void Room::feather4UseSTricorderOnBush() {
+ spockScan(DIR_W, TX_FEA4_009);
+}
+
+void Room::feather4UseSTricorderAnywhere() {
+ spockScan(DIR_W, TX_FEA4_008);
+}
+
+void Room::feather4UseMTricorderOnLight() {
+ mccoyScan(DIR_W, TX_FEA4_001);
+}
+
+void Room::feather4UseMTricorderOnMushroom() {
+ mccoyScan(DIR_W, TX_FEA4_003);
+}
+
+void Room::feather4UseMTricorderAnywhere() {
+ mccoyScan(DIR_W, TX_FEA4_006);
+}
+
+void Room::feather4UseMedkitAnywhere() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA4_002);
+}
+
+void Room::feather4TalkToMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA4_004);
+}
+
+void Room::feather4TalkToSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_FEA4_007);
+}
+
+void Room::feather4TalkToRedshirt() {
+ showText(TX_SPEAKER_STRAGEY, TX_FEA4_013);
+}
+
+void Room::feather4LookAtEyes() {
+ showText(TX_FEA4N003);
+}
+
+void Room::feather4LookAnywhere() {
+ showText(TX_FEA4N008);
+}
+
+void Room::feather4LookAtMushroom() {
+ showText(TX_FEA4N001);
+}
+
+void Room::feather4LookAtBush() {
+ showText(TX_FEA4N000);
+}
+
+void Room::feather4LookAtLight() {
+ showText(TX_FEA4N002);
+}
+
+void Room::feather4LookAtKirk() {
+ showText(TX_FEA4N004);
+}
+
+void Room::feather4LookAtSpock() {
+ showText(TX_FEA4N007);
+}
+
+void Room::feather4LookAtMccoy() {
+ showText(TX_FEA4N006);
+}
+void Room::feather4LookAtRedshirt() {
+ showText(TX_FEA4N005);
}
}
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index 95f343ccf7..e0996f3b86 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -28,8 +28,6 @@
namespace StarTrek {
-// FIXME: calling a constructor in global scope not allowed in scummvm?
-
RoomAction demon0ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::demon0Tick1 },
{ {ACTION_TICK, 2, 0, 0}, &Room::demon0Tick2 },
@@ -1782,12 +1780,8 @@ RoomAction feather0ActionList[] = {
{ {ACTION_USE, OBJECT_IMTRICOR, 8, 0}, &Room::feather0UseMTricorderOnQuetzecoatl },
};
-extern const RoomAction feather1ActionList[], feather2ActionList[], feather3ActionList[];
-extern const int feather1NumActions, feather2NumActions, feather3NumActions;
-
-RoomAction feather4ActionList[] = {
- { {ACTION_TICK, 1, 0, 0}, &Room::feather4Tick1 },
-};
+extern const RoomAction feather1ActionList[], feather2ActionList[], feather3ActionList[], feather4ActionList[];
+extern const int feather1NumActions, feather2NumActions, feather3NumActions, feather4NumActions;
RoomAction feather5ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::feather5Tick1 },