[Scummvm-git-logs] scummvm master -> 207ce80be4e6ebf1a0e8229be60a54b265a5c7f6
Strangerke
noreply at scummvm.org
Mon Nov 18 22:10:28 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:
207ce80be4 M4: RIDDLE: Room 204 - Implement remaining sub functions, some renaming
Commit: 207ce80be4e6ebf1a0e8229be60a54b265a5c7f6
https://github.com/scummvm/scummvm/commit/207ce80be4e6ebf1a0e8229be60a54b265a5c7f6
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-18T23:10:17+01:00
Commit Message:
M4: RIDDLE: Room 204 - Implement remaining sub functions, some renaming
Changed paths:
engines/m4/riddle/rooms/section2/room204.cpp
engines/m4/riddle/rooms/section2/room204.h
diff --git a/engines/m4/riddle/rooms/section2/room204.cpp b/engines/m4/riddle/rooms/section2/room204.cpp
index cb32ae09c38..f56864a339a 100644
--- a/engines/m4/riddle/rooms/section2/room204.cpp
+++ b/engines/m4/riddle/rooms/section2/room204.cpp
@@ -231,7 +231,7 @@ void Room204::parser() {
bool moveAndLookFl = false;
if (player_said("conv204a")) {
- subParser_1F42C();
+ conv204a();
goto done;
}
@@ -607,7 +607,7 @@ void Room204::parser() {
}
if ((player_said("MALLET", "GONG") || (gearFl && player_said("MALLET"))) && inv_player_has("MALLET")) {
- subParser_1F71D();
+ handleRipBangsBong();
goto done;
}
} // if (!player_been_here(205)
@@ -1409,7 +1409,7 @@ void Room204::daemon() {
_ripDeltaMachineStateMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, _G(player_info).depth, _field68, triggerMachineByHashCallback, "Rip Absolute Machine State");
switch (_field10) {
case 8:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 1, 1, 571, _ripBangsBongSeries, 1, 1, 0);
_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
_field14 = 8;
break;
@@ -1446,7 +1446,7 @@ void Room204::daemon() {
_ripDeltaMachineStateMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, _G(player_info).depth, 0, triggerMachineByHashCallback, "Rip Delta Machine State");
if (_field10 == 8) {
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 1, 1, 571, _ripBangsBongSeries, 1, 1, 0);
_field14 = 8;
}
@@ -1515,13 +1515,13 @@ void Room204::daemon() {
case 8:
switch (_field10) {
case 8:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 1, 1, 571, _ripBangsBongSeries, 1, 1, 0);
_field14 = 8;
break;
case 9:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 16, 571, _field78_series, 16, 16, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 1, 16, 571, _ripBangsBongSeries, 16, 16, 0);
_field14 = 9;
break;
@@ -1534,11 +1534,11 @@ void Room204::daemon() {
case 9:
switch (_field10) {
case 9:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 16, 16, 571, _field78_series, 16, 16, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 16, 16, 571, _ripBangsBongSeries, 16, 16, 0);
break;
case 10:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 17, 34, 571, _field78_series, 34, 34, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripBangsBongSeries, 17, 34, 571, _ripBangsBongSeries, 34, 34, 0);
_field14 = 8;
_field10 = 8;
@@ -2996,16 +2996,121 @@ void Room204::deleteMeiCheiHotspot() {
}
}
-void Room204::subParser_1F42C() {
- warning("STUB - subParser_1F42C");
+void Room204::conv204a() {
+ int32 node = conv_current_node();
+ int32 entry = conv_current_entry();
+ int32 who = conv_whos_talking();
+
+ if (node == 20)
+ _field164 = 1;
+ else if (node == 10 || node == 11)
+ _field168 = 1;
+
+ if (_G(kernel).trigger == 1) {
+ if (who == 1) {
+ _field10 = 16;
+ } else if (who <= 0) {
+ _field134 = 1;
+ if (node == 10 && entry == 1)
+ _field170 = 1;
+
+ if (node == 11 && entry == 0)
+ _field174 = 1;
+ }
+
+ conv_resume(conv_get_handle());
+ return;
+ }
+
+ if (who <= 0)
+ _field134 = 2;
+ else if (who != 1) {
+ if (node == 5 && entry == 2) {
+ _G(flags[V285]) = 1;
+ }
+
+ if ((node == 2 && entry == 0) || (node == 11 && entry == 0) || (node == 15 && entry == 0) || (node == 14 && entry == 3) || (node == 20 && entry == 3)) {
+ _field10 = 22;
+ return;
+ }
+
+ if (node == 17 && entry == 1) {
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 719, nullptr);
+ return;
+ }
+
+ _field10 = 19;
+ }
+
+ const char *sound = conv_sound_to_play();
+ if (sound)
+ digi_play(sound, 1, 255, 1, -1);
+ else
+ conv_resume(conv_get_handle());
}
-void Room204::subParser_1F71D() {
- warning("STUB - subParser_1F71D");
+void Room204::handleRipBangsBong() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ _ripBangsBongSeries = series_load("RIP BANGS GONG", -1, nullptr);
+ ws_walk(_G(my_walker), 510, 325, nullptr, 2, 9, true);
+
+ break;
+ case 2:
+ _field10 = 8;
+ _field18_triggerNum = kernel_trigger_create(3);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(2, 570, nullptr);
+
+ break;
+
+ case 3:
+ _field10 = 9;
+ _field24_triggerNum = kernel_trigger_create(4);
+
+ break;
+
+ case 4:
+ digi_play("204_S03", 1, 255, -1, -1);
+ _field10 = 10;
+ _field18_triggerNum = kernel_trigger_create(5);
+
+ break;
+
+ case 5:
+ _field2C = 1;
+ kernel_timing_trigger(1, 6, nullptr);
+
+ break;
+
+ case 6:
+ if (_ripDeltaMachineStateMach)
+ kernel_timing_trigger(5, 6, nullptr);
+ else {
+ series_unload(_ripBangsBongSeries);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ _field40 = 1;
+
+ kernel_timing_trigger(1, 633, nullptr);
+ }
+
+ break;
+
+ default:
+ break;
+ }
}
void Room204::game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS) {
- warning("STUB - game_set_scale");
+ _G(currentSceneDef).front_y = frontY;
+ _G(currentSceneDef).back_y = backY;
+ _G(currentSceneDef).front_scale = frontS;
+ _G(currentSceneDef).back_scale = backS;
+
+ player_inform_walker_new_scale(frontY, backY, frontS, backS);
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/room204.h b/engines/m4/riddle/rooms/section2/room204.h
index 334beb3435e..baa02473d95 100644
--- a/engines/m4/riddle/rooms/section2/room204.h
+++ b/engines/m4/riddle/rooms/section2/room204.h
@@ -42,18 +42,17 @@ public:
private:
void addLookMalletHotspot();
void addMovingMeiHotspot();
+ void conv204a();
void deleteMalletHotspot();
void deleteMeiCheiHotspot();
+ void gameSetScale(int32 frontY, int32 backY, int32 frontS, int32 backS);
+ void handleRipBangsBong();
void initWalkerSeries();
void initPriestWalker();
void killMcMach();
void killPriestWalkerMach();
void setWalkerDestX();
- void subParser_1F42C();
- void subParser_1F71D();
- void game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS);
-
int32 _dword1A189C = 0;
int32 _dword1A1898 = 0;
@@ -71,7 +70,7 @@ private:
int32 _field44_triggerNum = 0;
int32 _field48_triggerNum = 0;
int32 _field68 = 0;
- int32 _field78_series = 0;
+ int32 _ripBangsBongSeries = 0;
int32 _fieldBC_trigger = 0;
int32 _fieldC0_trigger = 0;
int32 _fieldC4 = 0;
More information about the Scummvm-git-logs
mailing list