[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