[Scummvm-git-logs] scummvm master -> 4fd959d65011c588a1515e016d7336bdabd92034
Strangerke
noreply at scummvm.org
Sun Dec 15 22:18:29 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
7ece3902d1 M4: RIDDLE: Room 706: Finalize implementation (implement playCheckBrochureAnim)
4fd959d650 M4: RIDDLE: Room 707: Start implementation (preload, init, pre_parser, daemon)
Commit: 7ece3902d11f7b79bae910f26c58f920432b2ff9
https://github.com/scummvm/scummvm/commit/7ece3902d11f7b79bae910f26c58f920432b2ff9
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-15T21:52:45+01:00
Commit Message:
M4: RIDDLE: Room 706: Finalize implementation (implement playCheckBrochureAnim)
Changed paths:
engines/m4/riddle/rooms/section7/room706.cpp
engines/m4/riddle/rooms/section7/room706.h
diff --git a/engines/m4/riddle/rooms/section7/room706.cpp b/engines/m4/riddle/rooms/section7/room706.cpp
index 97afd507dbe..1db032f3e15 100644
--- a/engines/m4/riddle/rooms/section7/room706.cpp
+++ b/engines/m4/riddle/rooms/section7/room706.cpp
@@ -157,31 +157,31 @@ void Room706::parser() {
} else if (player_said("PRAYER WHEEL BROCHURE", "EMPTY NICHE") && inv_player_has("PRAYER WHEEL BROCHURE")) {
digi_play("com123", 1, 255, -1, 997);
} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #13") && inv_player_has("PRAYER WHEEL BROCHURE")) {
- subA8BA8(_G(kernel).trigger, "706r04");
+ playCheckBrochureAnim(_G(kernel).trigger, "706r04");
} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #14") && inv_player_has("PRAYER WHEEL BROCHURE")) {
- subA8BA8(_G(kernel).trigger, "706r09");
+ playCheckBrochureAnim(_G(kernel).trigger, "706r09");
} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #16") && inv_player_has("PRAYER WHEEL BROCHURE")) {
- subA8BA8(_G(kernel).trigger, "706r12");
+ playCheckBrochureAnim(_G(kernel).trigger, "706r12");
} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #15") && inv_player_has("PRAYER WHEEL BROCHURE")) {
switch (_G(flags[V219])) {
case 1:
- subA8BA8(_G(kernel).trigger, "704r09");
+ playCheckBrochureAnim(_G(kernel).trigger, "704r09");
break;
case 2:
- subA8BA8(_G(kernel).trigger, "705r04");
+ playCheckBrochureAnim(_G(kernel).trigger, "705r04");
break;
case 3:
- subA8BA8(_G(kernel).trigger, "703r11");
+ playCheckBrochureAnim(_G(kernel).trigger, "703r11");
break;
case 4:
- subA8BA8(_G(kernel).trigger, "705r14a");
+ playCheckBrochureAnim(_G(kernel).trigger, "705r14a");
break;
case 5:
- subA8BA8(_G(kernel).trigger, "706r10");
+ playCheckBrochureAnim(_G(kernel).trigger, "706r10");
break;
default:
@@ -956,8 +956,53 @@ void Room706::conv706a() {
}
-void Room706::subA8BA8(int32 trigger, const char *digiName) {
- // TODO Not implemented yet
+void Room706::playCheckBrochureAnim(int32 trigger, const char *digiName) {
+ switch (trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x + 1, _G(player_info).y - 1, nullptr, 41, 1, true);
+
+ break;
+
+ case 41:
+ _ripChecksBrochureSeries = series_load("RIP CHECKS BROCHURE", -1, nullptr);
+ setGlobals1(_ripChecksBrochureSeries, 1, 25, 25, 25, 0, 25, 31, 31, 31, 0, 31, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ kernel_timing_trigger(60, 43, nullptr);
+
+ break;
+
+ case 43:
+ sendWSMessage_120000(_G(my_walker), -1);
+ digi_play(digiName, 1, 255, 44, -1);
+
+ break;
+
+ case 44:
+ kernel_timing_trigger(10, 45, nullptr);
+ break;
+
+ case 45:
+ sendWSMessage_130000(_G(my_walker), 48);
+ break;
+
+ case 48:
+ sendWSMessage_150000(_G(my_walker), 49);
+ break;
+
+ case 49:
+ // CHECKME: Loading the series is totally illogical, despite it's in the original game.
+ // At this point, we usually unload the series (+ it's already loaded). I suspect it could lead to a memory leak.
+ _ripChecksBrochureSeries = series_load("RIP CHECKS BROCHURE");
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+
+ }
}
void Room706::useWheelOnNiche(int32 trigger, int32 val1) {
diff --git a/engines/m4/riddle/rooms/section7/room706.h b/engines/m4/riddle/rooms/section7/room706.h
index 13cfeae1e1e..519b2d44b7f 100644
--- a/engines/m4/riddle/rooms/section7/room706.h
+++ b/engines/m4/riddle/rooms/section7/room706.h
@@ -41,7 +41,7 @@ public:
private:
void conv706a();
- void subA8BA8(int32 trigger, const char *digiName);
+ void playCheckBrochureAnim(int32 trigger, const char *digiName);
void useWheelOnNiche(int32 trigger, int32 val1);
int32 _field78_mode = 0;
@@ -54,6 +54,7 @@ private:
int32 _706Monk4Series = 0;
int32 _706RipGoesDownStairsSeries = 0;
int32 _706RipGoesUpStairsSeries = 0;
+ int32 _ripChecksBrochureSeries = 0;
int32 _ripLooksDownSeries = 0;
int32 _ripShieldsFaceSeries = 0;
int32 _ripStepsDownSeries = 0;
Commit: 4fd959d65011c588a1515e016d7336bdabd92034
https://github.com/scummvm/scummvm/commit/4fd959d65011c588a1515e016d7336bdabd92034
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-15T23:18:10+01:00
Commit Message:
M4: RIDDLE: Room 707: Start implementation (preload, init, pre_parser, daemon)
Changed paths:
engines/m4/riddle/rooms/section7/room707.cpp
engines/m4/riddle/rooms/section7/room707.h
diff --git a/engines/m4/riddle/rooms/section7/room707.cpp b/engines/m4/riddle/rooms/section7/room707.cpp
index 0cd2144505d..79db16226d8 100644
--- a/engines/m4/riddle/rooms/section7/room707.cpp
+++ b/engines/m4/riddle/rooms/section7/room707.cpp
@@ -21,16 +21,98 @@
#include "m4/riddle/rooms/section7/room707.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 Room707::preload() {
+ _G(player).walker_type = WALKER_ALT;
+ _G(player).shadow_type = SHADOW_ALT;
+ LoadWSAssets("OTHER SCRIPT", _G(master_palette));
+}
+
void Room707::init() {
+ ws_demand_location(_G(my_walker), 299, 200);
+ ws_demand_facing(_G(my_walker), 4);
+ if (!player_been_here(707)) {
+ _field44 = 0;
+ }
+
+ _peerIntoCupolaPos2Series = series_load("PEER INTO CUPOLA POS2", -1, nullptr);
+ _peerIntoCupolaPos1Series = series_load("PEER INTO CUPOLA POS1", -1, nullptr);
+
+ switch (_G(game).previous_room) {
+ case 703:
+ ws_demand_location(_G(my_walker), 421, 150);
+ ws_demand_facing(_G(my_walker), 4);
+ player_set_commands_allowed(false);
+ ws_hide_walker(_G(my_walker));
+ _ripWalksUpLeftStairsSeries = series_load("RIP WALKS UP LEFT STAIRS", -1, nullptr);
+ _ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+ sendWSMessage_10000(1, _ripStairsMach, _ripWalksUpLeftStairsSeries, 1, 22, 11, _ripWalksUpLeftStairsSeries, 22, 22, 0);
+
+ break;
+
+ case 704:
+ ws_demand_location(_G(my_walker), 374, 252);
+ ws_demand_facing(_G(my_walker), 2);
+ _ripUpStairsPos2Series = series_load("RIP UP STAIRS POSITION 2", -1, nullptr);
+ player_set_commands_allowed(false);
+ ws_hide_walker(_G(my_walker));
+ _ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+ sendWSMessage_10000(1, _ripStairsMach, _ripUpStairsPos2Series, 1, 37, 11, _ripUpStairsPos2Series, 37, 37, 0);
+
+ break;
+
+ case 705:
+ MoveScreenDelta(_G(game_buff_ptr), -640, 0);
+ ws_demand_location(_G(my_walker), 930, 248);
+ ws_demand_facing(_G(my_walker), 10);
+ player_set_commands_allowed(false);
+ ws_hide_walker(_G(my_walker));
+ _ripUpStairsPos10Series = series_load("RIP UP STAIRS POSITION 10", -1, nullptr);
+ _ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+ sendWSMessage_10000(1, _ripStairsMach, _ripUpStairsPos10Series, 1, 37, 11, _ripUpStairsPos10Series, 37, 37, 0);
+
+ break;
+
+ case 706:
+ MoveScreenDelta(_G(game_buff_ptr), -640, 0);
+ ws_demand_location(_G(my_walker), 860, 149);
+ ws_demand_facing(_G(my_walker), 8);
+ player_set_commands_allowed(false);
+ ws_hide_walker(_G(my_walker));
+ _ripWalksUpFarStairsSeries = series_load("RIP WALKS UP FAR STAIRS", -1, nullptr);
+ _ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+ sendWSMessage_10000(1, _ripStairsMach, _ripWalksUpFarStairsSeries, 1, 22, 11, _ripWalksUpFarStairsSeries, 22, 22, 0);
+
+ break;
+
+ default:
+ digi_preload("950_s39", -1);
+ break;
+ }
+
+ digi_play_loop("950_s39", 3, 255, -1, -1);
+}
+
+void Room707::pre_parser() {
+ // No implementation
+}
+
+void Room707::parser() {
+ // TODO : Not implemented yet
}
void Room707::daemon() {
+ if (_G(kernel).trigger == 11) {
+ player_set_commands_allowed(true);
+ ws_unhide_walker(_G(my_walker));
+ terminateMachine(_ripStairsMach);
+ }
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room707.h b/engines/m4/riddle/rooms/section7/room707.h
index 2d3c50bfbc7..89affe1e64d 100644
--- a/engines/m4/riddle/rooms/section7/room707.h
+++ b/engines/m4/riddle/rooms/section7/room707.h
@@ -33,8 +33,23 @@ public:
Room707() : Room() {}
~Room707() override {}
+ void preload() override;
void init() override;
+ void pre_parser() override;
+ void parser() override;
void daemon() override;
+
+private:
+ int32 _field44 = 0;
+
+ int32 _peerIntoCupolaPos1Series = 0;
+ int32 _peerIntoCupolaPos2Series = 0;
+ int32 _ripUpStairsPos10Series = 0;
+ int32 _ripUpStairsPos2Series = 0;
+ int32 _ripWalksUpFarStairsSeries = 0;
+ int32 _ripWalksUpLeftStairsSeries = 0;
+
+ machine *_ripStairsMach = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list