[Scummvm-git-logs] scummvm master -> e5dcb440d61e8b8ce9e684bc488d8a3603227544
dreammaster
noreply at scummvm.org
Tue Aug 6 05:21:29 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:
e5dcb440d6 M4: RIDDLE: Added room 354 logic
Commit: e5dcb440d61e8b8ce9e684bc488d8a3603227544
https://github.com/scummvm/scummvm/commit/e5dcb440d61e8b8ce9e684bc488d8a3603227544
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-05T22:20:46-07:00
Commit Message:
M4: RIDDLE: Added room 354 logic
Another small one. And that completes all the rooms for
section 3 of the game.
Changed paths:
engines/m4/riddle/rooms/section3/room354.cpp
engines/m4/riddle/rooms/section3/room354.h
diff --git a/engines/m4/riddle/rooms/section3/room354.cpp b/engines/m4/riddle/rooms/section3/room354.cpp
index 504e82e4cc0..fd3f550dc00 100644
--- a/engines/m4/riddle/rooms/section3/room354.cpp
+++ b/engines/m4/riddle/rooms/section3/room354.cpp
@@ -22,15 +22,118 @@
#include "m4/riddle/rooms/section3/room354.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
+#include "m4/gui/gui_sys.h"
+#include "m4/platform/keys.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room354::preload() {
+ _G(player).walker_type = 1;
+ _G(player).shadow_type = 1;
+ _G(player).walker_in_this_scene = false;
+}
+
void Room354::init() {
+ _G(flags)[V001] = 1;
+ digi_preload("354f01");
+ digi_preload("354f02");
+ digi_preload("354_s02a");
+ digi_preload("354_s02b");
+ digi_preload("354_s01");
+ digi_preload("304_s01");
+
+ _val1 = 0;
+ _G(player).disable_hyperwalk = true;
+ interface_hide();
+
+ AddSystemHotkey(KEY_ESCAPE, escapeKeyPressed);
+ _G(kernel).call_daemon_every_loop = true;
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(60, 10);
}
void Room354::daemon() {
+ switch (_G(kernel).trigger) {
+ case 10:
+ _all = series_stream("354 ALL", 7, 0x100, 43);
+ pal_fade_set_start(0);
+ pal_fade_init(21, 255, 100, _G(kernel).fade_up_time, -1);
+ series_stream_break_on_frame(_all, 5, 373);
+ break;
+
+ case 12:
+ series_stream_break_on_frame(_all, 109, 23);
+ digi_play("354_s02a", 1);
+ break;
+
+ case 23:
+ series_stream_break_on_frame(_all, 177, 24);
+ digi_play("354f02", 1);
+ break;
+
+ case 24:
+ series_stream_break_on_frame(_all, 289, 25);
+ digi_play("354f01", 1);
+ break;
+
+ case 25:
+ series_stream_break_on_frame(_all, 302, 292);
+ digi_play("354_s02b", 1, 255, 765);
+ break;
+
+ case 26:
+ digi_play("354_s01", 1);
+ break;
+
+ case 43:
+ disable_player_commands_and_fade_init(1001);
+ break;
+
+ case 54:
+ _G(game).setRoom(_G(flags)[V001] ? 304 : 494);
+ break;
+
+ case 55:
+ case 1001:
+ _G(game).setRoom(304);
+ break;
+
+ case 56:
+ _G(game).setRoom(494);
+ break;
+
+ case 292:
+ digi_stop(2);
+ series_stream_break_on_frame(_all, 305, 26);
+ break;
+
+ case 373:
+ series_stream_break_on_frame(_all, 54, 12);
+ digi_play("304_s01", 1);
+ break;
+
+ case 765:
+ digi_stop(1);
+ break;
+
+ default:
+ break;
+ }
+
+ if (_G(MouseState).ButtonState) {
+ _buttonFlag = true;
+ } else if (_buttonFlag) {
+ _buttonFlag = false;
+
+ disable_player_commands_and_fade_init(55);
+ }
+}
+
+void Room354::escapeKeyPressed(void *, void *) {
+ _G(kernel).trigger_mode = KT_DAEMON;
+ disable_player_commands_and_fade_init(56);
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section3/room354.h b/engines/m4/riddle/rooms/section3/room354.h
index 341e3703aef..a1ff111aee1 100644
--- a/engines/m4/riddle/rooms/section3/room354.h
+++ b/engines/m4/riddle/rooms/section3/room354.h
@@ -29,10 +29,18 @@ namespace Riddle {
namespace Rooms {
class Room354 : public Room {
+private:
+ int _val1 = 0;
+ machine *_all = nullptr;
+ bool _buttonFlag = false;
+
+ static void escapeKeyPressed(void *, void *);
+
public:
Room354() : Room() {}
~Room354() override {}
+ void preload() override;
void init() override;
void daemon() override;
};
More information about the Scummvm-git-logs
mailing list