[Scummvm-git-logs] scummvm master -> a1c869bafa6dafef458dd26d9b43af012642883a
Strangerke
noreply at scummvm.org
Sun Nov 24 08:07:46 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a1c869bafa M4: RIDDLE: Room 702: Start working on room (preload, init, preparser, custom callback)
Commit: a1c869bafa6dafef458dd26d9b43af012642883a
https://github.com/scummvm/scummvm/commit/a1c869bafa6dafef458dd26d9b43af012642883a
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-24T09:06:52+01:00
Commit Message:
M4: RIDDLE: Room 702: Start working on room (preload, init, preparser, custom callback)
Changed paths:
engines/m4/riddle/rooms/section7/room702.cpp
engines/m4/riddle/rooms/section7/room702.h
diff --git a/engines/m4/riddle/rooms/section7/room702.cpp b/engines/m4/riddle/rooms/section7/room702.cpp
index 7d8aced7593..a9e244c4e8a 100644
--- a/engines/m4/riddle/rooms/section7/room702.cpp
+++ b/engines/m4/riddle/rooms/section7/room702.cpp
@@ -27,10 +27,103 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room702::preload() {
+ _G(player).walker_type = WALKER_ALT;
+ _G(player).shadow_type = SHADOW_ALT;
+ LoadWSAssets("OTHER SCRIPT", _G(master_palette));
+}
+
void Room702::init() {
+ _field3C = player_been_here(702) ? 1 : 0;
+ _G(flags[V212]) = 0;
+
+ if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+ _field40 = 0;
+ _field44 = 0;
+ _field48 = 0;
+ _field4C = -1;
+ _field50 = 0;
+ _field54 = 0;
+ _field58 = -1;
+ }
+
+ if (_G(game).previous_room == 703) {
+ _safariShadow1Series = series_load("SAFARI SHADOW 1", -1, nullptr);
+ _guardTalksAndBowsSeries = series_load("GUARD TALKS AND BOWS", -1, nullptr);
+ _guardStepsAsideTalksSeries = series_load("GUARD STEPS ASIDE TALKS", -1, nullptr);
+ _702GuardShadow1Series = series_load("702 GUARD SHADOW1", -1, nullptr);
+ _702GuardShadow2Series = series_load("702 GUARD SHADOW2", -1, nullptr);
+ _ripShowsRingSeries = series_load("RIP SHOWS RING", -1, nullptr);
+ _ripSafariWalkerPos1Series = series_load("RIP SAFARI WALKER POSITION 1", -1, nullptr);
+ _ringCloseupSeries = series_load("Ring closeup", -1, nullptr);
+ _G(flags[V210]) = 0;
+ _field40 = 0;
+
+ if (_G(flags[V224]) == 0) {
+ _guardMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 768, false, callback, "guard");
+ sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 1, 1, -1, _guardTalksAndBowsSeries, 1, 1, 0);
+ _guardShadowMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 487, 326, 100, 1024, false, callback, "guard shadow");
+ sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 1, 1, -1, _702GuardShadow1Series, 1, 1, 0);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GUARD", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "RING", false);
+ }
+
+ player_first_walk(519, 322, 5, 534, 346, 1, true);
+ } else {
+ digi_preload("950_s39");
+ _safariShadow1Series = series_load("SAFARI SHADOW 1", -1, nullptr);
+ _guardTalksAndBowsSeries = series_load("GUARD TALKS AND BOWS", -1, nullptr);
+ _guardStepsAsideTalksSeries = series_load("GUARD STEPS ASIDE TALKS", -1, nullptr);
+ _702GuardShadow1Series = series_load("702 GUARD SHADOW1", -1, nullptr);
+ _702GuardShadow2Series = series_load("702 GUARD SHADOW2", -1, nullptr);
+ _ripShowsRingSeries = series_load("RIP SHOWS RING", -1, nullptr);
+ _ripSafariWalkerPos1Series = series_load("RIP SAFARI WALKER POSITION 1", -1, nullptr);
+ _ringCloseupSeries = series_load("Ring closeup", -1, nullptr);
+ _G(flags[V210]) = 0;
+ _field40 = 0;
+ if (_G(flags[V224]) == 0) {
+ _guardMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 768, false, callback, "guard");
+ sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 1, 1, -1, _guardTalksAndBowsSeries, 1, 1, 0);
+ _guardShadowMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 487, 326, 100, 1024, false, callback, "guard shadow");
+ sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 1, 1, -1, _702GuardShadow1Series, 1, 1, 0);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GUARD", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "RING", false);
+ }
+
+ if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+ player_first_walk(660, 347, 11, 524, 342, 11, true);
+ }
+ }
+
+ digi_play_loop("950_s39", 3, 255, -1, -1);
+}
+
+void Room702::pre_parser() {
+ if (player_said_any(" ", " ") && _G(flags[V211]) && _G(flags[V210]) && _G(flags[V212])) {
+ _G(player).need_to_walk = false;
+ _G(player).ready_to_walk = true;
+ _G(player).waiting_for_walk = false;
+ }
+
+ if (_G(flags[V224]) && player_said_any(" ", " ")) {
+ _G(player).need_to_walk = false;
+ _G(player).ready_to_walk = true;
+ _G(player).waiting_for_walk = false;
+ }
+}
+
+void Room702::parser() {
+ //TODO
}
void Room702::daemon() {
+ //TODO
+}
+
+void Room702::callback(frac16 myMessage, machine *sender) {
+ kernel_trigger_dispatchx(myMessage);
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room702.h b/engines/m4/riddle/rooms/section7/room702.h
index eecfc45595e..9162fd696b0 100644
--- a/engines/m4/riddle/rooms/section7/room702.h
+++ b/engines/m4/riddle/rooms/section7/room702.h
@@ -33,8 +33,36 @@ public:
Room702() : Room() {}
~Room702() override {}
+ void preload() override;
void init() override;
+ void pre_parser() override;
+ void parser() override;
void daemon() override;
+
+private:
+ static void callback(frac16 myMessage, machine *sender);
+
+ int32 _field3C = 0;
+ int32 _field40 = 0;
+ int32 _field44 = 0;
+ int32 _field48 = 0;
+ int32 _field4C = 0;
+ int32 _field50 = 0;
+ int32 _field54 = 0;
+ int32 _field58 = 0;
+
+ int32 _702GuardShadow1Series = 0;
+ int32 _702GuardShadow2Series = 0;
+ int32 _guardStepsAsideTalksSeries = 0;
+ int32 _guardTalksAndBowsSeries = 0;
+ int32 _ringCloseupSeries = 0;
+ int32 _ripSafariWalkerPos1Series = 0;
+ int32 _ripShowsRingSeries = 0;
+ int32 _safariShadow1Series = 0;
+
+ machine *_guardMach = nullptr;
+ machine *_guardShadowMach = nullptr;
+
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list