[Scummvm-git-logs] scummvm master -> f09b6d5cf848df5f1acd6b0299c4a3a365016543
dreammaster
noreply at scummvm.org
Tue Aug 6 04:56:35 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:
f09b6d5cf8 M4: RIDDLE: Room logic for room 352
Commit: f09b6d5cf848df5f1acd6b0299c4a3a365016543
https://github.com/scummvm/scummvm/commit/f09b6d5cf848df5f1acd6b0299c4a3a365016543
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-05T21:55:36-07:00
Commit Message:
M4: RIDDLE: Room logic for room 352
Another small room. Yay. Keep 'em coming
Changed paths:
engines/m4/riddle/rooms/section3/room309.cpp
engines/m4/riddle/rooms/section3/room309.h
engines/m4/riddle/rooms/section3/room352.cpp
engines/m4/riddle/rooms/section3/room352.h
diff --git a/engines/m4/riddle/rooms/section3/room309.cpp b/engines/m4/riddle/rooms/section3/room309.cpp
index 9a62ad7f7a1..17056e1e285 100644
--- a/engines/m4/riddle/rooms/section3/room309.cpp
+++ b/engines/m4/riddle/rooms/section3/room309.cpp
@@ -27,6 +27,12 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room309::preload() {
+ _G(player).walker_type = 0;
+ _G(player).shadow_type = 0;
+ _G(player).walker_in_this_scene = false;
+}
+
void Room309::init() {
digi_preload("303_s02");
player_set_commands_allowed(false);
diff --git a/engines/m4/riddle/rooms/section3/room309.h b/engines/m4/riddle/rooms/section3/room309.h
index f7e5b61eb90..3ce64d3a389 100644
--- a/engines/m4/riddle/rooms/section3/room309.h
+++ b/engines/m4/riddle/rooms/section3/room309.h
@@ -33,6 +33,7 @@ public:
Room309() : Room() {}
~Room309() override {}
+ void preload() override;
void init() override;
void daemon() override;
void parser() override;
diff --git a/engines/m4/riddle/rooms/section3/room352.cpp b/engines/m4/riddle/rooms/section3/room352.cpp
index 5b616cf5af0..4d035f81505 100644
--- a/engines/m4/riddle/rooms/section3/room352.cpp
+++ b/engines/m4/riddle/rooms/section3/room352.cpp
@@ -22,15 +22,233 @@
#include "m4/riddle/rooms/section3/room352.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 Room352::preload() {
+ _G(player).walker_type = 0;
+ _G(player).shadow_type = 0;
+ LoadWSAssets("OTHER SCRIPT");
+}
+
void Room352::init() {
+ _G(player).disable_hyperwalk = true;
+ AddSystemHotkey(KEY_ESCAPE, escapeKeyPressed);
+ _G(kernel).call_daemon_every_loop = true;
+
+ ws_demand_location(584, 334, 3);
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ _val1 = 0;
+ _val2 = 25;
+
+ static const char *NAMES[9] = {
+ "950_s01", "352_s02", "352_s02a", "352r01",
+ "352_s03", "352_s01", "352_s04", "352_s05",
+ "keys"
+ };
+ for (int i = 0; i < 9; ++i)
+ digi_preload(NAMES[i]);
+
+ _cabStop = series_load("cab stop");
+ kernel_timing_trigger(70, 10);
+ kernel_timing_trigger(1, 5);
}
void Room352::daemon() {
+ switch (_G(kernel).trigger) {
+ case 5:
+ digi_play("950_s01", 3);
+ kernel_timing_trigger(900, 555);
+ break;
+
+ case 10:
+ series_stream("cab pulls to a stop", 5, 0, 12);
+ digi_play("352_s03", 1);
+ break;
+
+ case 12:
+ kernel_timing_trigger(100, 13);
+ digi_play("352_s04", 1);
+ _cabStopMach = series_show_sprite("cab stop", 0, 0);
+ break;
+
+ case 13:
+ digi_play("352_s01", 2, 255, 14);
+ break;
+
+ case 14:
+ kernel_timing_trigger(40, 15);
+ break;
+
+ case 15:
+ terminateMachineAndNull(_cabStopMach);
+ series_unload(_cabStop);
+ _machine1 = series_stream("cab pulls away", 5, 0, 16);
+ series_stream_break_on_frame(_machine1, 32, 27);
+ break;
+
+ case 16:
+ _meiChecksShoe = series_stream("mei checks her shoe", 7, 0, -1);
+ series_stream_break_on_frame(_meiChecksShoe, 47, 17);
+ ws_unhide_walker();
+ ws_walk(319, 301, nullptr, 20, 1);
+ break;
+
+ case 17:
+ series_stream_check_series(_meiChecksShoe, 3000);
+ break;
+
+ case 20:
+ player_update_info();
+ _playerX = _G(player_info).x;
+ _playerY = _G(player_info).y;
+ _playerScale = _G(player_info).scale;
+
+ series_ranged_play_xy("rip suit reaches for door", 1, 0, 0, 4,
+ _playerX, _playerY, _playerScale, 0, 6, 21);
+ series_ranged_play_xy("ripsh1", -1, 0, 0, 0,
+ _playerX, _playerY, _playerScale, 0, 3000, -1);
+ sendWSMessage_60000(_ripsh1);
+ digi_play("352_s02", 1);
+ break;
+
+ case 21:
+ _ripDoor = series_ranged_play_xy("rip suit reaches for door", -1, 0, 4, 4,
+ _playerX, _playerY, _playerScale, 0, 3000, -1);
+
+ digi_unload("352_s05");
+ digi_unload("keys");
+ series_unload(0);
+ series_unload(1);
+ series_unload(2);
+ series_unload(3);
+ series_unload(4);
+ series_unload(11);
+ series_unload(12);
+ series_unload(13);
+ series_unload(14);
+
+ _machine1 = series_stream("key to door pop-up", 9, 0, 22);
+ series_stream_break_on_frame(_machine1, 14, 746);
+ break;
+
+ case 22:
+ terminateMachineAndNull(_ripDoor);
+ series_ranged_play_xy("rip suit reaches for door", 1, 2, 0, 4,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale,
+ 0, 6, 24);
+ break;
+
+ case 23:
+ _ripDoor = series_ranged_play_xy("rip turns from door talks",
+ -1, 0, 6, 6, _playerX, _playerY, _playerScale,
+ 0, 3000, -1);
+ digi_unload("352r01");
+ digi_unload("352_s03");
+ digi_unload("352_s01");
+ digi_unload("352_s04");
+
+ digi_play("950_s01", 3);
+ digi_stop(1);
+ kernel_timing_trigger(180, 123);
+ break;
+
+ case 24:
+ series_ranged_play_xy("rip turns from door", 1, 0, 0, 6,
+ _playerX, _playerY, _playerScale, 0, 5, 113);
+ digi_play("352r01", 1, 255, 111);
+ break;
+
+ case 27:
+ digi_play("352_s05", 1, 255, 555);
+ series_stream_break_on_frame(_machine1, 121, 345);
+ break;
+
+ case 31:
+ adv_kill_digi_between_rooms(false);
+ _G(game).setRoom(303);
+ break;
+
+ case 102:
+ kernel_timing_trigger(100, 30);
+ break;
+
+ case 111:
+ kernel_timing_trigger(30, 112);
+ break;
+
+ case 112:
+ digi_play("suspense", 2, 125);
+ kernel_timing_trigger(60, 23);
+ break;
+
+ case 113:
+ series_ranged_play_xy("rip turns from door talks", -1, 0, 6, 6,
+ _playerX, _playerY, _playerScale, 0, 3000, -1);
+ break;
+
+ case 123:
+ disable_player_commands_and_fade_init(31);
+ break;
+
+ case 345:
+ digi_play("keys", 1, 100);
+ break;
+
+ case 555:
+ digi_play("950_s01", 3);
+ kernel_timing_trigger(900, 555);
+ break;
+
+ case 746:
+ series_stream_break_on_frame(_machine1, 21, 747);
+ digi_play("352_s02a", 1);
+ break;
+
+ default:
+ break;
+ }
+
+ switch (_G(kernel).trigger) {
+ case 55:
+ series_unload(0);
+ series_unload(1);
+ series_unload(2);
+ series_unload(3);
+ series_unload(4);
+ series_unload(10);
+ series_unload(11);
+ series_unload(12);
+ series_unload(13);
+ series_unload(14);
+ _G(game).setRoom(304);
+ break;
+
+ case 56:
+ _G(game).setRoom(494);
+ break;
+
+ default:
+ break;
+ }
+
+ if (_G(MouseState).ButtonState) {
+ _buttonFlag = true;
+ } else if (_buttonFlag) {
+ _buttonFlag = false;
+
+ disable_player_commands_and_fade_init(55);
+ }
+}
+
+void Room352::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/room352.h b/engines/m4/riddle/rooms/section3/room352.h
index 1f4b2569594..0a7b224b230 100644
--- a/engines/m4/riddle/rooms/section3/room352.h
+++ b/engines/m4/riddle/rooms/section3/room352.h
@@ -29,10 +29,27 @@ namespace Riddle {
namespace Rooms {
class Room352 : public Room {
+private:
+ int _val1 = 0;
+ int _val2 = 0;
+ int _cabStop = 0;
+ machine *_cabStopMach = nullptr;
+ machine *_machine1 = nullptr;
+ machine *_meiChecksShoe = nullptr;
+ int _playerX = 0, _playerY = 0;
+ int _playerScale = 0;
+ machine *_ripsh1 = nullptr;
+ machine *_ripDoor = nullptr;
+
+ bool _buttonFlag = false;
+
+ static void escapeKeyPressed(void *, void *);
+
public:
Room352() : Room() {}
~Room352() override {}
+ void preload() override;
void init() override;
void daemon() override;
};
More information about the Scummvm-git-logs
mailing list