From 8aef8c453918a583e1d804bf371437fef3b08e8c Mon Sep 17 00:00:00 2001 From: Matthew Stewart Date: Wed, 4 Jul 2018 17:45:15 -0400 Subject: STARTREK: FEATHER4 --- engines/startrek/rooms/feather4.cpp | 134 +++++++++++++++++++++++++++++++++- engines/startrek/rooms/function_map.h | 10 +-- 2 files changed, 133 insertions(+), 11 deletions(-) (limited to 'engines/startrek/rooms') 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 }, -- cgit v1.2.3