[Scummvm-git-logs] scummvm master -> 71a3c1c47a8a080bd4ecb2c076a4e0a03e74f5d1
Strangerke
noreply at scummvm.org
Sun Dec 29 22:54:32 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:
71a3c1c47a M4: RIDDLE: Room 711: Start working on room (preload, init)
Commit: 71a3c1c47a8a080bd4ecb2c076a4e0a03e74f5d1
https://github.com/scummvm/scummvm/commit/71a3c1c47a8a080bd4ecb2c076a4e0a03e74f5d1
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-29T23:54:18+01:00
Commit Message:
M4: RIDDLE: Room 711: Start working on room (preload, init)
Changed paths:
engines/m4/riddle/rooms/section8/room807.cpp
engines/m4/riddle/rooms/section8/room807.h
diff --git a/engines/m4/riddle/rooms/section8/room807.cpp b/engines/m4/riddle/rooms/section8/room807.cpp
index ce918c5ab17..3e02470a6c2 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -21,16 +21,175 @@
#include "m4/riddle/rooms/section8/room807.h"
#include "m4/graphics/gr_series.h"
+#include "m4/riddle/riddle.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
+
+// TODO : Refactor - This array is also present in walker.cpp
+static const char *SAFARI_SHADOWS[5] = {
+ "safari shadow 1", "safari shadow 2", "safari shadow 3",
+ "safari shadow 4", "safari shadow 5"
+};
+
+void Room807::preload() {
+ _G(player).walker_type = WALKER_ALT;
+ _G(player).shadow_type = SHADOW_ALT;
+}
+
void Room807::init() {
+ if (inv_object_in_scene("wooden beam", 807)) {
+ _807PostMach = series_show("807post", 4095, 0, -1, -1, 0, 100, 0, 0);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "wooden beam", false);
+ }
+
+ if (inv_object_in_scene("wooden post", 807)) {
+ _807BeamMach = series_show("807beam", 4095, 0, -1, -1, 0, 100, 0, 0);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "wooden post", false);
+ }
+
+ if (_G(flags[V274])) {
+ _807DoorMach = series_show("807door", 4095, 0, -1, -1, 0, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", true);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "corridor", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "chariot ", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "north", false);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", false);
+
+ if (player_been_here(807)) {
+ _807DoorMach = series_show("807kart", 4095, 0, -1, -1, 100, 0, 0);
+ }
+ }
+
+ _ripLowReachPos1Series = series_load("rip low reach pos1", -1, nullptr);
+ _ripTrekHiReach2HndSeries = series_load("rip trek hi reach 2hnd", -1, nullptr);
+ _ripTalkerPos5Series = series_load("RIP TALKER POS 5", -1, nullptr);
+ _mctd82aSeries = series_load("mctd82a", -1, nullptr);
+ _ripPos3LookAroundSeries = series_load("RIP POS 3 LOOK AROUND", -1, nullptr);
+ _ripLooksAroundInAweSeries = series_load("RIP LOOKS AROUND IN AWE", -1, nullptr);
+
+ series_play("807fire1", 4095, 0, -1, 7, -1, 100, 0, 0, 0, -1);
+ series_play("807fire2", 4095, 0, -1, 7, -1, 100, 0, 0, 0, -1);
+
+ _field34 = 0;
+
+ switch (_G(game).previous_room) {
+ case KERNEL_RESTORING_GAME:
+ player_set_commands_allowed(true);
+ digi_preload("950_s29", -1);
+
+ if (_field38 != 0) {
+ ws_demand_location(_G(my_walker), 476, 318);
+ ws_demand_facing(_G(my_walker), 11);
+ ws_hide_walker(_G(my_walker));
+ _807Crnk2Mach = series_show("807rp05", 256, 0, -1, -1, 12, 100, 0, 0);
+ player_update_info(_G(my_walker), &_G(player_info));
+ _safariShadowMach = series_place_sprite(*SAFARI_SHADOWS, 0, 476, 318, _G(player_info).scale, 257);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx((kernel_trigger_create(6)));
+ _G(kernel).trigger_mode = KT_PREPARSE;
+ hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+ } else if (inv_object_in_scene("crank", 807)) {
+ _807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
+ }
+
+ if (_G(flags[V276]) != 0) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "mei chen", false);
+ } else {
+ ws_walk_load_shadow_series(S8_SHADOW_DIRS1, S8_SHADOW_NAMES1);
+ ws_walk_load_walker_series(S8_SHADOW_DIRS2, S8_SHADOW_NAMES2, false);
+ _mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 560, 400, 11, Walker::player_walker_callback, "mc_trek");
+ }
+
+ break;
+
+ case 808:
+ player_set_commands_allowed(false);
+ if (inv_object_in_scene("crank", 807)) {
+ _807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
+ }
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "mei chen", false);
+ _field38 = 0;
+ ws_demand_location(_G(my_walker), 273, 270);
+ ws_demand_facing(_G(my_walker), 5);
+
+ if (_G(flags[V276]) != 0) {
+ ws_walk(_G(my_walker), 250, 345, nullptr, 5, 2, true);
+ } else {
+ ws_walk_load_walker_series(S8_SHADOW_DIRS1, S8_SHADOW_NAMES1);
+ _mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 295, 250, 5, Walker::player_walker_callback, "mc_trek");
+ ws_walk(_mcTrekMach, 560, 400, nullptr, 5, 11, true);
+ ws_walk(_G(my_walker), 250, 345, nullptr, -1, 2, true);
+ }
+
+ break;
+
+ default:
+ player_set_commands_allowed(false);
+ ws_walk_load_shadow_series(S8_SHADOW_DIRS1, S8_SHADOW_NAMES1);
+ ws_walk_load_walker_series(S8_SHADOW_DIRS2, S8_SHADOW_NAMES2, false);
+ if (inv_object_in_scene("crank", 807)) {
+ _807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
+ }
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "mei chen", false);
+ _field38 = 0;
+
+ if (!player_been_here(807)) {
+ _mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 450, 60, 1, Walker::player_walker_callback, "mc_trek");
+ ws_demand_location(_G(my_walker), 366, 345);
+ ws_demand_facing(_G(my_walker), 11);
+ ws_hide_walker(_G(my_walker));
+ digi_preload("950_S33", -1);
+ digi_preload("807_S01", -1);
+ digi_play("950_S33", 2, 255, -1, -1);
+ _807DoorMach = series_stream("807crush", 5, 0, 0);
+ series_stream_break_on_frame(_807DoorMach, 60, 3);
+ } else {
+ ws_demand_location(_G(my_walker), 366, 500);
+ ws_demand_facing(_G(my_walker), 1);
+
+ if (_G(flags[V276]) != 0) {
+ ws_walk(_G(my_walker), 366, 345, nullptr, 5, 2, true);
+ } else {
+ _mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 450, 600, 1, Walker::player_walker_callback, "mc_trek");
+ ws_walk(_G(my_walker), 366, 345, nullptr, -1, 2, true);
+ ws_walk(_mcTrekMach, 560, 400, nullptr, 5, 11, true);
+ }
+ }
+
+ break;
+ }
+
+ digi_play_loop("950_s29", 2, 127, -1, -1);
+}
+
+void Room807::pre_parser() {
+ // TODO Not yet implemented
+}
+
+void Room807::parser() {
+ // TODO Not yet implemented
}
void Room807::daemon() {
+ // TODO Not yet implemented
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room807.h b/engines/m4/riddle/rooms/section8/room807.h
index 61ffda38a64..47de2e27ca9 100644
--- a/engines/m4/riddle/rooms/section8/room807.h
+++ b/engines/m4/riddle/rooms/section8/room807.h
@@ -33,8 +33,29 @@ public:
Room807() : Room() {}
~Room807() override {}
+ void preload() override;
void init() override;
+ void pre_parser() override;
+ void parser() override;
void daemon() override;
+
+private:
+ int32 _field34 = 0;
+ int32 _field38 = 0;
+
+ int32 _mctd82aSeries = 0;
+ int32 _ripLooksAroundInAweSeries = 0;
+ int32 _ripLowReachPos1Series = 0;
+ int32 _ripPos3LookAroundSeries = 0;
+ int32 _ripTalkerPos5Series = 0;
+ int32 _ripTrekHiReach2HndSeries = 0;
+
+ machine *_807BeamMach = nullptr;
+ machine *_807Crnk2Mach = nullptr;
+ machine *_807DoorMach = nullptr;
+ machine *_807PostMach = nullptr;
+ machine *_mcTrekMach = nullptr;
+ machine *_safariShadowMach = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list