[Scummvm-git-logs] scummvm master -> 3416af8fad843905bfe8d1c69bd5131d26feab10
Strangerke
noreply at scummvm.org
Fri Jul 11 21:52:10 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
3416af8fad M4: RIDDLE: Finish the implementation of showMessageLog() (fixes #16060)
Commit: 3416af8fad843905bfe8d1c69bd5131d26feab10
https://github.com/scummvm/scummvm/commit/3416af8fad843905bfe8d1c69bd5131d26feab10
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-07-11T22:51:51+01:00
Commit Message:
M4: RIDDLE: Finish the implementation of showMessageLog() (fixes #16060)
Changed paths:
engines/m4/riddle/riddle.cpp
engines/m4/riddle/riddle.h
engines/m4/riddle/vars.h
diff --git a/engines/m4/riddle/riddle.cpp b/engines/m4/riddle/riddle.cpp
index c25100ff0d7..4cf2662a5bf 100644
--- a/engines/m4/riddle/riddle.cpp
+++ b/engines/m4/riddle/riddle.cpp
@@ -339,7 +339,7 @@ void RiddleEngine::global_parser() {
player_set_commands_allowed(true);
break;
case 7777:
- if (_messageLog._result != 16) {
+ if (_G(messageLogResult) != 16) {
_G(flags)[V052] = 1;
if (_G(player).walker_in_this_scene && _G(flags)[V292]) {
@@ -350,7 +350,7 @@ void RiddleEngine::global_parser() {
case 2:
case 3:
case 4:
- ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 5, 1);
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 1, 5, true);
break;
case 5:
case 7:
@@ -361,7 +361,7 @@ void RiddleEngine::global_parser() {
case 9:
case 10:
case 11:
- ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 7, 1);
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 1, 7, true);
break;
default:
player_set_commands_allowed(false);
@@ -577,8 +577,12 @@ void RiddleEngine::splitItems(const char *item1, const char *item2) {
inv_give_to_player(item2);
}
-void messageLogCallback(void *, void *) {
- warning("TODO messageLogCallback");
+void messageLogCallback(TextItem *textItem, TextScrn *textScrn) {
+ _G(flags[V349]) = textItem->tag - 1;
+ _G(messageLogResult) = textItem->tag;
+ TextScrn_Destroy(_G(messageScreen));
+ _G(messageScreen) = nullptr;
+ kernel_trigger_dispatchx(_G(messageLogTrigger));
}
void RiddleEngine::showMessageLog(int trigger) {
@@ -599,7 +603,7 @@ void RiddleEngine::showMessageLog(int trigger) {
"Thank You Note from Feng Li"
};
- _messageLogTrigger = kernel_trigger_create(trigger);
+ _G(messageLogTrigger) = kernel_trigger_create(trigger);
gr_font_set(_G(font_inter));
const int32 fontHeight = gr_font_get_height();
int32 ecx = 0;
@@ -618,27 +622,27 @@ void RiddleEngine::showMessageLog(int trigger) {
return;
maxWidth += 16;
- _messageScreen = TextScrn_Create(601 - maxWidth, 361 - ((ecx + 2) * (fontHeight + 2) + 16), 600, 360, 65, 422, 13, 15);
- TextScrn_Add_Message(_messageScreen, 8, 8, 0, TS_CENTRE, "MESSAGE LOG");
+ _G(messageScreen) = TextScrn_Create(601 - maxWidth, 361 - ((ecx + 2) * (fontHeight + 2) + 16), 600, 360, 65, 422, 13, 15);
+ TextScrn_Add_Message(_G(messageScreen), 8, 8, 0, TS_CENTRE, "MESSAGE LOG");
int32 edi = fontHeight + 14;
int i = 0;
for (; i < 14; ++i) {
if (_G(flags)[(Flag)(V350 + i)]) {
- TextScrn_Add_TextItem(_messageScreen, 8, edi, i + 1, TS_GIVEN, MESSAGE_TITLES[i], (M4CALLBACK)messageLogCallback);
+ TextScrn_Add_TextItem(_G(messageScreen), 8, edi, i + 1, TS_GIVEN, MESSAGE_TITLES[i], (M4CALLBACK)messageLogCallback);
edi += 1 + fontHeight;
}
}
- TextScrn_Add_TextItem(_messageScreen, 8, edi + 4, i + 2, TS_GIVEN, "CLOSE LOG", (M4CALLBACK)messageLogCallback);
- TextScrn_Activate(_messageScreen);
+ TextScrn_Add_TextItem(_G(messageScreen), 8, edi + 4, i + 2, TS_GIVEN, "CLOSE LOG", (M4CALLBACK)messageLogCallback);
+ TextScrn_Activate(_G(messageScreen));
}
void RiddleEngine::hide_message_log_dialog() {
- if (_messageScreen)
- TextScrn_Destroy(_messageScreen);
+ if (_G(messageScreen))
+ TextScrn_Destroy(_G(messageScreen));
- _messageScreen = nullptr;
+ _G(messageScreen) = nullptr;
}
void RiddleEngine::lookAtInventoryItem() {
diff --git a/engines/m4/riddle/riddle.h b/engines/m4/riddle/riddle.h
index 87232b6d53b..d4e8bb21b50 100644
--- a/engines/m4/riddle/riddle.h
+++ b/engines/m4/riddle/riddle.h
@@ -47,11 +47,8 @@ private:
Rooms::Section7 _section7;
Rooms::Section8 _section8;
Rooms::Section9 _section9;
- GUI::MessageLog _messageLog;
int _ripAction = 0;
int _savedFacing = 0;
- int32 _messageLogTrigger = 0;
- TextScrn *_messageScreen = nullptr;
/**
* Combines the items in the player _verb and _noun,
diff --git a/engines/m4/riddle/vars.h b/engines/m4/riddle/vars.h
index 372f1176c53..8f0d0a1e5be 100644
--- a/engines/m4/riddle/vars.h
+++ b/engines/m4/riddle/vars.h
@@ -60,6 +60,9 @@ public:
Common::String _string2;
Common::String _string3;
int _ripSketching = 0;
+ TextScrn *_messageScreen = nullptr;
+ int32 _messageLogTrigger = 0;
+ int32 _messageLogResult = 0;
public:
Vars();
More information about the Scummvm-git-logs
mailing list