[Scummvm-git-logs] scummvm master -> 25802536a7958d8a0e5f7c6e2427afde38e509a5
Strangerke
noreply at scummvm.org
Mon Feb 10 01:03:54 UTC 2025
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:
25802536a7 M4: RIDDLE: Implementaton of Room860
Commit: 25802536a7958d8a0e5f7c6e2427afde38e509a5
https://github.com/scummvm/scummvm/commit/25802536a7958d8a0e5f7c6e2427afde38e509a5
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-10T02:03:43+01:00
Commit Message:
M4: RIDDLE: Implementaton of Room860
Changed paths:
engines/m4/core/rooms.cpp
engines/m4/core/rooms.h
engines/m4/riddle/rooms/section8/room860.cpp
engines/m4/riddle/rooms/section8/room860.h
diff --git a/engines/m4/core/rooms.cpp b/engines/m4/core/rooms.cpp
index 138c8352815..12c37395bce 100644
--- a/engines/m4/core/rooms.cpp
+++ b/engines/m4/core/rooms.cpp
@@ -469,6 +469,11 @@ void Sections::camera_shift_xy(int32 x, int32 y) {
_cameraShift_vert_Amount = -sc->y1 - y + _G(kernel).letter_box_y;
}
+void Sections::set_camera_delta_pan(int32 deltaX, int32 deltaY) {
+ _cameraShiftAmount = -deltaX;
+ _cameraShift_vert_Amount = -deltaY;
+}
+
void Sections::adv_camera_pan_step(int32 step) {
camera_pan_step = step;
}
diff --git a/engines/m4/core/rooms.h b/engines/m4/core/rooms.h
index f118b046a10..54f292c26a7 100644
--- a/engines/m4/core/rooms.h
+++ b/engines/m4/core/rooms.h
@@ -158,6 +158,7 @@ public:
void pal_game_task();
void camera_shift_xy(int32 x, int32 y);
+ void set_camera_delta_pan(int32 deltaX, int32 deltaY);
void adv_camera_pan_step(int32 step);
bool game_camera_panning() const {
return _cameraShiftAmount != 0 || _cameraShift_vert_Amount != 0;
diff --git a/engines/m4/riddle/rooms/section8/room860.cpp b/engines/m4/riddle/rooms/section8/room860.cpp
index d08394db883..243ae55ccb2 100644
--- a/engines/m4/riddle/rooms/section8/room860.cpp
+++ b/engines/m4/riddle/rooms/section8/room860.cpp
@@ -19,18 +19,157 @@
*
*/
+#include "m4/m4.h"
#include "m4/riddle/rooms/section8/room860.h"
#include "m4/graphics/gr_series.h"
+#include "m4/gui/gui_vmng_screen.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room860::preload() {
+ LoadWSAssets("other script", _G(master_palette));
+
+ _G(player).walker_type = WALKER_ALT;
+ _G(player).shadow_type = SHADOW_ALT;
+ _G(player).walker_in_this_scene = false;
+}
+
void Room860::init() {
+ interface_hide();
+ player_set_commands_allowed(false);
+ _G(camera_reacts_to_player) = false;
+ MoveScreenDelta(_G(game_buff_ptr), -320, 0);
+ g_engine->adv_camera_pan_step(3);
+ digi_preload("950_s45", 950);
+ digi_play_loop("950_s45", 3, 240, -1, 950);
+ digi_preload("baronstg", 860);
+ digi_preload("809_s04", 809);
+ digi_preload("860r01", 860);
+ digi_preload("860r02", 860);
+ digi_preload("860m01", 860);
+ digi_preload("860m02", 860);
+ digi_preload("860b01", 860);
+
+ _860RipCrossSeries = series_load("860 RIP CROSS", -1, nullptr);
+ _860RipWalkSeries = series_load("860 RIP WALK", -1, nullptr);
+ _860RipTalkSeries = series_load("860 RIP TALK", -1, nullptr);
+ _860MeiTalkSeries = series_load("860 MEI TALK", -1, nullptr);
+ _860DragonHeadsSpewingSeries = series_load("860 DRAGON HEADS SPEWING", -1, nullptr);
+ series_play("860 DRAGON HEADS SPEWING", 1024, 0, -1, 12, -1, 100, 0, 0, 0, -1);
+ _860RipMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "860 rip");
+ sendWSMessage_10000(1, _860RipMach, _860RipCrossSeries, 1, 20, 80, _860RipCrossSeries, 20, 20, 0);
+ _860McMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "860 mc");
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 1, 1, -1, _860MeiTalkSeries, 1, 1, 0);
+ }
+
+void Room860::pre_parser() {
+ // Nothing
+}
+
+void Room860::parser() {
+ // Nothing
}
void Room860::daemon() {
+ switch (_G(kernel).trigger) {
+ case 1:
+ digi_stop(1);
+ series_load("860SHLD", -1, nullptr);
+ series_place_sprite("860SHLD", 0, 0, 0, 100, 512);
+ sendWSMessage_10000(1, _860RipMach, _860RipWalkSeries, 1, 100, 2, _860RipWalkSeries, 1, 1, 0);
+ sendWSMessage_190000(_860RipMach, 3);
+ g_engine->set_camera_delta_pan(-290, 0);
+ series_unload(_860RipCrossSeries);
+
+ break;
+
+ case 2:
+ series_unload(_860RipWalkSeries);
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 1, 1, -1, _860MeiTalkSeries, 1, 11, 4);
+ digi_play("860m01", 2, 255, 3, 860);
+
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 11, 11, -1, _860MeiTalkSeries, 11, 11, 0);
+ sendWSMessage_10000(1, _860RipMach, _860RipTalkSeries, 1, 2, -1, _860RipTalkSeries, 1, 2, 4);
+ digi_play("860r01", 2, 255, 4, 860);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _860RipMach, _860RipTalkSeries, 1, 6, -1, _860RipTalkSeries, 6, 6, 0);
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 12, 26, -1, _860MeiTalkSeries, 26, 26, 0);
+ kernel_timing_trigger(25, 5, nullptr);
+
+ break;
+
+ case 5:
+ digi_play("860m02", 2, 255, -1, 860);
+ kernel_timing_trigger(60, 5, nullptr);
+
+ break;
+
+ case 6:
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 26, 26, -1, _860MeiTalkSeries, 26, 26, 0);
+ digi_play("860r02", 2, 255, 7, -1);
+ sendWSMessage_10000(1, _860RipMach, _860RipTalkSeries, 1, 2, -1, _860RipTalkSeries, 1, 2, 4);
+
+ break;
+
+ case 7:
+ sendWSMessage_10000(1, _860McMach, _860MeiTalkSeries, 27, 32, 91, _860MeiTalkSeries, 32, 32, 0);
+ sendWSMessage_10000(1, _860RipMach, _860RipTalkSeries, 6, 6, -1, _860RipTalkSeries, 6, 6, 0);
+
+ break;
+
+ case 80:
+ sendWSMessage_10000(1, _860RipMach, _860RipCrossSeries, 21, 164, 1, _860RipWalkSeries, 1, 1, 0);
+ digi_play_loop("809_s04", 1, 200, -1, 809);
+
+ break;
+
+ case 91:
+ g_engine->set_camera_delta_pan(-30, 0);
+ digi_play("baronstg", 1, 255, -1, 860);
+ kernel_timing_trigger(210, 1000, nullptr);
+
+ break;
+
+ case 92:
+ digi_stop(2);
+ disable_player_commands_and_fade_init(93);
+
+ break;
+
+ case 93:
+ adv_kill_digi_between_rooms(false);
+ digi_stop(1);
+
+ digi_unload("809_s04");
+ digi_unload("860r01");
+ digi_unload("860r02");
+ digi_unload("860m01");
+ digi_unload("860m02");
+ digi_unload("860b01");
+ digi_unload("baronstg");
+
+ digi_play_loop("950_s45", 3, 80, -1, 950);
+
+ _G(game).new_room = 811;
+
+ break;
+
+ case 1000:
+ digi_play("860b01", 2, 255, 92, 860);
+ break;
+
+ default:
+ break;
+ }
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room860.h b/engines/m4/riddle/rooms/section8/room860.h
index 495d47848d8..2cc4e3d6e33 100644
--- a/engines/m4/riddle/rooms/section8/room860.h
+++ b/engines/m4/riddle/rooms/section8/room860.h
@@ -33,8 +33,21 @@ public:
Room860() : Room() {}
~Room860() override {}
+ void preload() override;
void init() override;
+ void pre_parser() override;
+ void parser() override;
void daemon() override;
+
+private:
+ int32 _860DragonHeadsSpewingSeries = 0;
+ int32 _860MeiTalkSeries = 0;
+ int32 _860RipCrossSeries = 0;
+ int32 _860RipTalkSeries = 0;
+ int32 _860RipWalkSeries = 0;
+
+ machine *_860McMach = nullptr;
+ machine *_860RipMach = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list