diff options
Diffstat (limited to 'engines/startrek/rooms/feather4.cpp')
-rw-r--r-- | engines/startrek/rooms/feather4.cpp | 134 |
1 files changed, 131 insertions, 3 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); } } |