[Scummvm-git-logs] scummvm master -> a2a8ffce6d9c92de630009443535719e82f06608

Strangerke noreply at scummvm.org
Sat Jan 4 23:13:13 UTC 2025


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:
a2a8ffce6d M4: RIDDLE: Room 808: Start working on room (preload, init)


Commit: a2a8ffce6d9c92de630009443535719e82f06608
    https://github.com/scummvm/scummvm/commit/a2a8ffce6d9c92de630009443535719e82f06608
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-05T00:10:24+01:00

Commit Message:
M4: RIDDLE: Room 808: Start working on room (preload, init)

Changed paths:
    engines/m4/riddle/rooms/section8/room808.cpp
    engines/m4/riddle/rooms/section8/room808.h


diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index 7ab25cfd5bc..a133dfa6049 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -21,13 +21,153 @@
 
 #include "m4/riddle/rooms/section8/room808.h"
 #include "m4/graphics/gr_series.h"
+#include "m4/riddle/riddle.h"
 #include "m4/riddle/vars.h"
 
 namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+void Room808::preload() {
+	_G(player).walker_type = WALKER_ALT;
+	_G(player).shadow_type = SHADOW_ALT;
+}
+
 void Room808::init() {
+	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);
+
+	_808Rp02Series = series_load("808rp02", -1, nullptr);
+	_808Rp01Series = series_load("808rp01", -1, nullptr);
+	_ripTalkerPos5Series = series_load("RIP TALKER POS 5", -1, nullptr);
+	_rptmr15Series = series_load("RPTMR15", -1, nullptr);
+	_ripMedReach1HandPos2Series = series_load("RIP MED REACH 1HAND POS2", -1, nullptr);
+	_807Rp04Series = series_load("807rp04", -1, nullptr);
+	_mctd61Series = series_load("mctd61", -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_load("808mc98", -1, nullptr);
+	series_load("808mc99", -1, nullptr);
+	series_load("808pos1", -1, nullptr);
+	series_load("808pos2", -1, nullptr);
+
+	if (_G(flags[V096]) == 0) {
+		// Unload the freshly loaded series? This doesn't make sense?!
+		series_unload(series_load("808 RIP TEST BRIDGESHOVEL FAR", -1, nullptr));
+		series_unload(series_load("808 RIP TEST BRIDGE", -1, nullptr));
+		series_unload(series_load("808test3", -1, nullptr));
+	}
+
+	_808ChainMach = series_plain_play("808chain", -1, 0, 100, 0, 0, -1, true);
+	series_play("LIT URN ", 767, 0, -1, 5, -1, 100, 0, 0, 0, -1);
+	if (inv_object_in_scene("FARMER'S SHOVEL", 808)) {
+		if (_G(flags[V095])) {
+			switch (_G(flags[V094])) {
+			case 1:
+				_808PosMach = series_show("808pos2", 1281, 0, -1, -1, 6, 100, 0, 0);
+				break;
+
+			case 2:
+				_808PosMach = series_show("808pos2", 1281, 0, -1, -1, 4, 100, 0, 0);
+				break;
+
+			case 3:
+				_808PosMach = series_show("808pos2", 1281, 0, -1, -1, 3, 100, 0, 0);
+				break;
+
+			case 4:
+				_808PosMach = series_show("808pos2", 1281, 0, -1, -1, 5, 100, 0, 0);
+				break;
+
+			default:
+				break;
+			}
+		} else {
+			_808PosMach = series_show("808pos2", 1281, 0, -1, -1, _G(flags[V094]), 100, 0, 0);
+		}
+	} else {
+		if (_G(flags[V095])) {
+			switch (_G(flags[V094])) {
+			case 1:
+				_808PosMach = series_show("808pos1", 1281, 0, -1, -1, 6, 100, 0, 0);
+				break;
+
+			case 2:
+				_808PosMach = series_show("808pos1", 1281, 0, -1, -1, 4, 100, 0, 0);
+				break;
+
+			case 3:
+				_808PosMach = series_show("808pos1", 1281, 0, -1, -1, 3, 100, 0, 0);
+				break;
+
+			case 4:
+				_808PosMach = series_show("808pos1", 1281, 0, -1, -1, 5, 100, 0, 0);
+				break;
+
+			default:
+				break;
+			}
+		} else {
+			_808PosMach = series_show("808pos1", 1281, 0, -1, -1, _G(flags[V094]), 100, 0, 0);
+		}
+	}
+
+	if (inv_object_in_scene("crank", 808) && _G(flags[V098]) == 0) {
+		_808HandleSpriteMach = series_show("808 handle sprite", 4095, 0, -1, -1, 0, 100, 0, 0);
+	}
+
+	switch (_G(game).previous_room) {
+	case KERNEL_RESTORING_GAME:
+		digi_preload("950_s29", -1);
+		if (_G(flags[V097])) {
+			_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 345, 115, 5, Walker::player_walker_callback, "mc_trek");
+		} else {
+			_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 112, 238, 5, Walker::player_walker_callback, "mc_trek");
+		}
+
+		kernel_timing_trigger(1, 1, nullptr);
+		break;
+
+	case 809:
+		ws_demand_facing(_G(my_walker), 5);
+		ws_demand_location(_G(my_walker), 459, 36);
+		ws_walk(_G(my_walker), 382, 116, nullptr, -1, 7, true);
+		_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 448, 38, 5, Walker::player_walker_callback, "mc_trek");
+		DisposePath(_mcTrekMach->walkPath);
+		_mcTrekMach->walkPath = CreateCustomPath(427, 96, 345, 115, -1);
+		ws_custom_walk(_mcTrekMach, 5, 1, true);
+
+		break;
+
+	default:
+		_808RpupSeries = series_load("808rpup", -1, nullptr);
+		ws_demand_facing(_G(my_walker), 2);
+		ws_demand_location(_G(my_walker), 18, 216);
+		ws_hide_walker(_G(my_walker));
+
+		if (_G(flags[V276]) == 0) {
+			_808McupSeries = series_load("808mcup", -1, nullptr);
+			series_play("808rpup", 0, 0, 2, 5, 0, 100, 0, 0, 0, -1);
+		} else {
+			_G(flags[V276]) = 0;
+			_mcTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 345, 116, 5, Walker::player_walker_callback, "mc_trek");
+			series_play("808rpup", 0, 0, 4, 5, 0, 100, 0, 0, 0, -1);
+		}
+
+		break;
+
+	}
+
+	digi_play_loop("950_s29", 3, 96, -1, -1);
+}
+
+void Room808::pre_parser() {
+}
+
+void Room808::parser() {
 }
 
 void Room808::daemon() {
diff --git a/engines/m4/riddle/rooms/section8/room808.h b/engines/m4/riddle/rooms/section8/room808.h
index 8c469a3fbeb..800e98ee1d4 100644
--- a/engines/m4/riddle/rooms/section8/room808.h
+++ b/engines/m4/riddle/rooms/section8/room808.h
@@ -33,8 +33,31 @@ public:
 	Room808() : Room() {}
 	~Room808() override {}
 
+	void preload() override;
 	void init() override;
+	void pre_parser() override;
+	void parser() override;
 	void daemon() override;
+
+
+private:
+	int32 _807Rp04Series = 0;
+	int32 _808McupSeries = 0;
+	int32 _808Rp01Series = 0;
+	int32 _808Rp02Series = 0;
+	int32 _808RpupSeries = 0;
+	int32 _mctd61Series = 0;
+	int32 _mctd82aSeries = 0;
+	int32 _ripLooksAroundInAweSeries = 0;
+	int32 _ripMedReach1HandPos2Series = 0;
+	int32 _ripPos3LookAroundSeries = 0;
+	int32 _ripTalkerPos5Series = 0;
+	int32 _rptmr15Series = 0;
+
+	machine *_808ChainMach = nullptr;
+	machine *_808HandleSpriteMach = nullptr;
+	machine *_808PosMach = nullptr;
+	machine *_mcTrekMach = nullptr;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list