[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