[Scummvm-git-logs] scummvm master -> 1535ee1e6de697715976bf315ee127ef4951e983
dreammaster
noreply at scummvm.org
Sun Sep 1 21:28:45 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:
1535ee1e6d M4: RIDDLE: Added room 493
Commit: 1535ee1e6de697715976bf315ee127ef4951e983
https://github.com/scummvm/scummvm/commit/1535ee1e6de697715976bf315ee127ef4951e983
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T14:28:28-07:00
Commit Message:
M4: RIDDLE: Added room 493
Changed paths:
engines/m4/riddle/hotkeys.cpp
engines/m4/riddle/hotkeys.h
engines/m4/riddle/rooms/room.cpp
engines/m4/riddle/rooms/room.h
engines/m4/riddle/rooms/section4/room493.cpp
engines/m4/riddle/rooms/section4/room493.h
engines/m4/riddle/vars.h
diff --git a/engines/m4/riddle/hotkeys.cpp b/engines/m4/riddle/hotkeys.cpp
index 2341997bee0..aa308a0b340 100644
--- a/engines/m4/riddle/hotkeys.cpp
+++ b/engines/m4/riddle/hotkeys.cpp
@@ -91,6 +91,9 @@ void Hotkeys::toggle_through_cursors(CursorChange cursChange) {
void Hotkeys::escape_key_pressed(void *, void *) {
}
+void Hotkeys::show_version(void *, void *) {
+ warning("TODO: show_version");
+}
void Hotkeys::t_cb(void *, void *) {
// g_vars->_interface.t_cb();
diff --git a/engines/m4/riddle/hotkeys.h b/engines/m4/riddle/hotkeys.h
index 145021c2c2e..d68d3f27aa9 100644
--- a/engines/m4/riddle/hotkeys.h
+++ b/engines/m4/riddle/hotkeys.h
@@ -42,6 +42,8 @@ public:
*/
static void escape_key_pressed(void *, void *);
+ static void show_version(void *, void *);
+
virtual ~Hotkeys() {}
void add_hot_keys() override;
diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 1807f5ed615..be04d1bff52 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -593,6 +593,10 @@ void Room::enableHotspots() {
hs->active = true;
}
+bool Room::checkStrings() const {
+ return _G(string1).empty() && _G(string2).empty() && _G(string3).empty();
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index b3ee31a3255..c7ea5905232 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -122,6 +122,8 @@ protected:
*/
void enableHotspots();
+ bool checkStrings() const;
+
public:
Room() : M4::Room() {}
~Room() override {}
diff --git a/engines/m4/riddle/rooms/section4/room493.cpp b/engines/m4/riddle/rooms/section4/room493.cpp
index 96266ba25f5..8dfac16e53c 100644
--- a/engines/m4/riddle/rooms/section4/room493.cpp
+++ b/engines/m4/riddle/rooms/section4/room493.cpp
@@ -21,16 +21,189 @@
#include "m4/riddle/rooms/section4/room493.h"
#include "m4/graphics/gr_series.h"
+#include "m4/gui/gui_sys.h"
+#include "m4/platform/keys.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room493::preload() {
+ _G(player).walker_type = 1;
+ _G(player).shadow_type = 1;
+ _G(player).walker_in_this_scene = false;
+}
+
void Room493::init() {
+ player_set_commands_allowed(false);
+ AddSystemHotkey(KEY_ESCAPE, escape_key_pressed);
+ RemoveSystemHotkey(303);
+ RemoveSystemHotkey(22);
+
+ _panning = 255;
+
+ if (_G(game).previous_room != 494) {
+ digi_preload("lostcity");
+
+ if (_G(game).previous_room != 917) {
+ digi_preload("riptheme", 917);
+ digi_play("riptheme", 3, 255, -1, 917);
+ }
+ }
+
+ _credits = series_stream("game credits", 10, 256, 900);
+ series_stream_break_on_frame(_credits, 10, 30);
+ kernel_timing_trigger(360, 700);
}
void Room493::daemon() {
+ static int32 FRAMES[13] = {
+ 4, 12, 24, 36, 48, 60, 68, 76, 88, 96, 108, 116, 128
+ };
+
+ switch (_G(kernel).trigger) {
+ case 30:
+ series_stream_break_on_frame(_credits, FRAMES[2], 50);
+ setTrigger(40);
+ break;
+
+ case 50:
+ series_stream_break_on_frame(_credits, FRAMES[3], 70);
+ setTrigger(60);
+ break;
+
+ case 70:
+ series_stream_break_on_frame(_credits, FRAMES[4] - 2, 90);
+ setTrigger(80);
+ break;
+
+ case 90:
+ series_stream_break_on_frame(_credits, FRAMES[5] - 2, 100);
+ setTrigger(100);
+ break;
+
+ case 110:
+ series_stream_break_on_frame(_credits, FRAMES[6] - 2, 130);
+ setTrigger(120);
+ break;
+
+ case 130:
+ series_stream_break_on_frame(_credits, FRAMES[7] - 2, 150);
+ setTrigger(140);
+ break;
+
+ case 150:
+ series_stream_break_on_frame(_credits, FRAMES[8] - 2, 170);
+ setTrigger(160);
+ break;
+
+ case 170:
+ series_stream_break_on_frame(_credits, FRAMES[9] - 2, 190);
+ setTrigger(180);
+ break;
+
+ case 190:
+ series_stream_break_on_frame(_credits, FRAMES[10] - 2, 210);
+ setTrigger(200);
+ break;
+
+ case 210:
+ series_stream_break_on_frame(_credits, FRAMES[11] - 2, 230);
+ setTrigger(220);
+ break;
+
+ case 230:
+ series_stream_break_on_frame(_credits, FRAMES[12] - 2, 250);
+ setTrigger(240);
+ break;
+
+ case 250:
+ setTrigger(260);
+ break;
+
+ case 666:
+ AddSystemHotkey(303, Hotkeys::show_version);
+ AddSystemHotkey(22, Hotkeys::show_version);
+ _G(game).setRoom(494);
+ break;
+
+ case 700:
+ if (checkStrings()) {
+ digi_stop(3);
+ kernel_timing_trigger(10, 800);
+ } else {
+ kernel_timing_trigger(65, 700);
+ }
+ break;
+
+ case 800:
+ digi_play("lostcity", 3, 255, 810, 917);
+ break;
+
+ case 810:
+ digi_play_loop("riptheme", 3, 255, -1, 917);
+ break;
+
+ case 900:
+ if (_G(game).previous_room == 494)
+ disable_player_commands_and_fade_init(920);
+ else
+ disable_player_commands_and_fade_init(910);
+ break;
+
+ case 910:
+ _panning -= 4;
+ if (_panning > 0) {
+ digi_change_panning(3, _panning);
+ kernel_timing_trigger(2, 910);
+ } else {
+ AddSystemHotkey(303, Hotkeys::show_version);
+ AddSystemHotkey(22, Hotkeys::show_version);
+ _G(game).setRoom(494);
+ }
+ break;
+
+ case 920:
+ adv_kill_digi_between_rooms(false);
+ AddSystemHotkey(303, Hotkeys::show_version);
+ AddSystemHotkey(22, Hotkeys::show_version);
+ _G(game).setRoom(494);
+ break;
+
+ case 40:
+ case 60:
+ case 80:
+ case 100:
+ case 120:
+ case 140:
+ case 160:
+ case 180:
+ case 200:
+ case 220:
+ case 240:
+ case 260:
+ crunch();
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room493::escape_key_pressed(void *, void *) {
+ _G(kernel).trigger_mode = KT_DAEMON;
+ disable_player_commands_and_fade_init(910);
+}
+
+void Room493::setTrigger(int trigger) {
+ series_stream_check_series(_credits, 30000);
+ kernel_timing_trigger(900, trigger);
+}
+
+void Room493::crunch() {
+ series_stream_check_series(_credits, 10);
+ ws_OverrideCrunchTime(_credits);
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room493.h b/engines/m4/riddle/rooms/section4/room493.h
index a2d882238b3..c457b8ba7a0 100644
--- a/engines/m4/riddle/rooms/section4/room493.h
+++ b/engines/m4/riddle/rooms/section4/room493.h
@@ -29,10 +29,19 @@ namespace Riddle {
namespace Rooms {
class Room493 : public Room {
+private:
+ machine *_credits = nullptr;
+ int _panning = 0;
+
+ static void escape_key_pressed(void *, void *);
+ void setTrigger(int trigger);
+ void crunch();
+
public:
Room493() : Room() {}
~Room493() override {}
+ void preload() override;
void init() override;
void daemon() override;
};
diff --git a/engines/m4/riddle/vars.h b/engines/m4/riddle/vars.h
index 2f49271be82..5c1aef865ff 100644
--- a/engines/m4/riddle/vars.h
+++ b/engines/m4/riddle/vars.h
@@ -56,6 +56,9 @@ public:
int _global301 = 0;
int _flag1 = 0;
bool _kittyScreaming = false;
+ Common::String _string1;
+ Common::String _string2;
+ Common::String _string3;
public:
Vars();
More information about the Scummvm-git-logs
mailing list