[Scummvm-git-logs] scummvm master -> 2967bf399d6af8da30a968fb0efc54973a7277be

dreammaster noreply at scummvm.org
Mon Sep 2 04:24:17 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:
2967bf399d M4: RIDDLE: Room 501 init, and start of parser


Commit: 2967bf399d6af8da30a968fb0efc54973a7277be
    https://github.com/scummvm/scummvm/commit/2967bf399d6af8da30a968fb0efc54973a7277be
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T21:23:57-07:00

Commit Message:
M4: RIDDLE: Room 501 init, and start of parser

Changed paths:
    engines/m4/riddle/rooms/section5/room501.cpp
    engines/m4/riddle/rooms/section5/room501.h


diff --git a/engines/m4/riddle/rooms/section5/room501.cpp b/engines/m4/riddle/rooms/section5/room501.cpp
index b559eb9f7e0..1ae2390f103 100644
--- a/engines/m4/riddle/rooms/section5/room501.cpp
+++ b/engines/m4/riddle/rooms/section5/room501.cpp
@@ -28,11 +28,158 @@ namespace Riddle {
 namespace Rooms {
 
 void Room501::init() {
+	digi_preload("501_s01");
+	_agentTalkLoop = series_load("AGENT TALK LOOP");
+	_agentStridesForward = series_load("AGENT STRIDES FORWARD");
+
+	if (_G(game).previous_room != KERNEL_RESTORING_GAME)
+		_flag = false;
+
+	digi_play_loop("501_s01", 3, 30);
+	if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+		_val2 = 0;
+		_digiName = 0;
+		_val4 = 0;
+	}
+
+	kernel_timing_trigger(1, 504);
+
+	if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
+		if (!_flag)
+			_paper = series_place_sprite("ONE FRAME PAPER", 0, 0, 0, 100, 0x780);
+	} else {
+		player_set_commands_allowed(false);
+
+		if (_G(game).previous_room == 504) {
+			if (inv_player_has("ROPE"))
+				inv_move_object("ROPE", 504);
+		} else {
+			if (!player_been_here(501)) {
+				_G(flags)[V147] = 0;
+				_G(flags)[V141] = 0;
+				_G(flags)[V143] = 0;
+				_G(flags)[V145] = 0;
+				_G(flags)[V146] = 0;
+				_G(flags)[V148] = 0;
+			}
+		}
+
+		++_G(flags)[V006];
+
+		if (setItemsPlacedFlags()) {
+			_digiName = getItemsPlacedDigi();
+			++_val4;
+		}
+
+		ws_demand_location(588, 267, 9);
+		ws_walk(287, 268, nullptr, 522, 9);
+		_val5 = 0;
+		_val6 = -1;
+		_val7 = -1;
+		_paper = nullptr;
+	}
+
+	_clock = series_place_sprite(
+		(_G(flags)[V142] == 1) ? "501 PUFFIN CLOCK" : "PUFFIN CLOCK",
+		0, 0, 0, 100, 0x780);
 }
 
 void Room501::daemon() {
 }
 
+void Room501::parser() {
+	if (player_said("conv501a")) {
+		conv501a();
+	}
+	// TODO
+	else {
+		return;
+	}
+
+	_G(player).command_ready = false;
+}
+
+void Room501::conv501a() {
+	const char *sound = conv_sound_to_play();
+	int who = conv_whos_talking();
+	int node = conv_current_node();
+	int entry = conv_current_entry();
+
+	if (node == 15) {
+		if (entry == 0)
+			_G(flags)[V041] = 1;
+		if (entry == 5)
+			_G(flags)[V144] = 1;
+	}
+
+	if (_G(kernel).trigger == 1) {
+		if (who <= 0) {
+			_val1 = 1;
+
+			if (node == 1 && (entry == 2 || entry == 3)) {
+				_G(kernel).trigger_mode = KT_DAEMON;
+				kernel_timing_trigger(1, 549);
+				return;
+			} else if (node == 5 && entry == 0) {
+				_G(kernel).trigger_mode = KT_DAEMON;
+				kernel_timing_trigger(1, 610);
+				return;
+			}
+		} else if (who == 1) {
+			if (node == 1 && entry == 1) {
+				int32 x1, y1, x2, y2;
+				conv_set_box_xy(490, -4);
+				set_dlg_rect();
+				conv_get_dlg_coords(&x1, &y1, &x2, &y2);
+				conv_set_dlg_coords(x1, y1 - 10, x2, y2 - 10);
+				set_dlg_rect();
+			} else {
+				conv_set_box_xy(10, 10);
+			}
+
+			_val3 = 3;
+			if (node == 2)
+				_convEntry = entry;
+			if (node == 8 && entry == 0)
+				_val8 = 1;
+		}
+	} else {
+		if (who <= 0) {
+			if (node == 15 && entry == 5)
+				midi_play("SADBOY1", 255, 0, -1, 949);
+
+			if (node == 7 && entry == 0) {
+				_G(kernel).trigger_mode = KT_DAEMON;
+				kernel_timing_trigger(1, 585);
+				return;
+			}
+
+			_val1 = 2;
+
+		} else if (who == 1) {
+			if (node == 14 && entry != 12) {
+				_G(kernel).trigger_mode = KT_DAEMON;
+				kernel_timing_trigger(1, 539);
+				conv_set_box_xy(10, 10);
+				return;
+			}
+
+			if (node == 14 && entry == 12) {
+				conv_set_box_xy(10, 10);
+				conv_resume();
+				return;
+			}
+		}
+
+		if (sound) {
+			digi_play(sound, 1, 255, 1);
+			return;
+		}
+	}
+
+	conv_resume();
+}
+
 } // namespace Rooms
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/rooms/section5/room501.h b/engines/m4/riddle/rooms/section5/room501.h
index 897788b3240..c69d5e489b8 100644
--- a/engines/m4/riddle/rooms/section5/room501.h
+++ b/engines/m4/riddle/rooms/section5/room501.h
@@ -29,12 +29,32 @@ namespace Riddle {
 namespace Rooms {
 
 class Room501 : public Room {
+private:
+	machine *_clock = nullptr;
+	machine *_paper = nullptr;
+	int _agentTalkLoop = 0;
+	int _agentStridesForward = 0;
+	const char *_digiName = nullptr;
+	bool _flag = false;
+	int _val1 = 0;
+	int _val2 = 0;
+	int _val3 = 0;
+	int _val4 = 0;
+	int _val5 = 0;
+	int _val6 = 0;
+	int _val7 = 0;
+	int _val8 = 0;
+	int _convEntry = 0;
+
+	void conv501a();
+
 public:
 	Room501() : Room() {}
 	~Room501() override {}
 
 	void init() override;
 	void daemon() override;
+	void parser() override;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list