[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