[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