[Scummvm-git-logs] scummvm master -> 8600251b4876a926720fb88007f5f3948fafc19a
Strangerke
noreply at scummvm.org
Fri Jul 11 07:51:09 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:
8600251b48 M4: RIDDLE: Partial implementation of showMessageLog()
Commit: 8600251b4876a926720fb88007f5f3948fafc19a
https://github.com/scummvm/scummvm/commit/8600251b4876a926720fb88007f5f3948fafc19a
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-07-11T08:50:53+01:00
Commit Message:
M4: RIDDLE: Partial implementation of showMessageLog()
Changed paths:
engines/m4/gui/gui_menu_items.cpp
engines/m4/riddle/gui/interface.cpp
engines/m4/riddle/riddle.cpp
engines/m4/riddle/riddle.h
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index e7c7484e1dd..790522b78f6 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -99,8 +99,8 @@ bool guiMenu::initialize(RGB8 *myPalette) {
// Pause the game
game_pause(true);
- // Hide the telegram window
- // Hide_telegram_dialog(); // Ripley shit again!
+ // Hide the Message Log window
+ // TODO hide_message_log_dialog();
// Hide the interface
if (INTERFACE_VISIBLE) {
diff --git a/engines/m4/riddle/gui/interface.cpp b/engines/m4/riddle/gui/interface.cpp
index 4c4f5b916ab..f914eb6f591 100644
--- a/engines/m4/riddle/gui/interface.cpp
+++ b/engines/m4/riddle/gui/interface.cpp
@@ -43,7 +43,6 @@ Interface::Interface() : M4::Interface() {
bool Interface::init(int arrow, int wait, int look, int grab, int use) {
M4::Interface::init(arrow, wait, look, grab, use);
-
_sprite = AddWSAssetCELS("INTERFACE STUFF", 22, _G(master_palette));
gr_pal_interface(_G(master_palette));
diff --git a/engines/m4/riddle/riddle.cpp b/engines/m4/riddle/riddle.cpp
index 8f10c9f2215..c25100ff0d7 100644
--- a/engines/m4/riddle/riddle.cpp
+++ b/engines/m4/riddle/riddle.cpp
@@ -577,9 +577,68 @@ void RiddleEngine::splitItems(const char *item1, const char *item2) {
inv_give_to_player(item2);
}
+void messageLogCallback(void *, void *) {
+ warning("TODO messageLogCallback");
+}
+
void RiddleEngine::showMessageLog(int trigger) {
- // TODO
- warning("TODO: showMessageLog");
+ static const char *MESSAGE_TITLES[14] = {
+ "Reminder from Feng Li",
+ "Appeal for Oddities from Feng Li",
+ "2nd Appeal for Oddities from Feng Li",
+ "3rd Appeal for Oddities from Feng Li",
+ "Urgent Warning from Feng Li",
+ "Radiogram from Mei's Aunt & Uncle",
+ "Radiogram from Danzig Chief of Police",
+ "Message about Emerald from Feng Li",
+ "Ultimatum about Emerald from Feng Li",
+ "Refused Delivery",
+ "Radiogram from Prof. Menendez's Assistant",
+ "2nd Radiogram from Prof. Menendez's Assistant",
+ "Radiogram from Mei",
+ "Thank You Note from Feng Li"
+ };
+
+ _messageLogTrigger = kernel_trigger_create(trigger);
+ gr_font_set(_G(font_inter));
+ const int32 fontHeight = gr_font_get_height();
+ int32 ecx = 0;
+ int32 maxWidth = 0;
+
+ for (int i = 0; i < 14; ++i) {
+ if (_G(flags)[(Flag)(V350 + i)]) {
+ ++ecx;
+ const int width = gr_font_string_width(MESSAGE_TITLES[i], 0);
+ if (width > maxWidth)
+ maxWidth = width;
+ }
+ }
+
+ if (ecx == 0)
+ 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");
+
+ 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);
+ edi += 1 + fontHeight;
+ }
+ }
+ TextScrn_Add_TextItem(_messageScreen, 8, edi + 4, i + 2, TS_GIVEN, "CLOSE LOG", (M4CALLBACK)messageLogCallback);
+ TextScrn_Activate(_messageScreen);
+}
+
+void RiddleEngine::hide_message_log_dialog() {
+ if (_messageScreen)
+ TextScrn_Destroy(_messageScreen);
+
+ _messageScreen = nullptr;
}
void RiddleEngine::lookAtInventoryItem() {
diff --git a/engines/m4/riddle/riddle.h b/engines/m4/riddle/riddle.h
index 0a70163fa02..87232b6d53b 100644
--- a/engines/m4/riddle/riddle.h
+++ b/engines/m4/riddle/riddle.h
@@ -50,6 +50,8 @@ private:
GUI::MessageLog _messageLog;
int _ripAction = 0;
int _savedFacing = 0;
+ int32 _messageLogTrigger = 0;
+ TextScrn *_messageScreen = nullptr;
/**
* Combines the items in the player _verb and _noun,
@@ -65,6 +67,7 @@ private:
void splitItems(const char *item1, const char *item2);
void showMessageLog(int trigger);
+ void hide_message_log_dialog();
void lookAtInventoryItem();
bool canLoadGameStateCurrently(Common::U32String *msg) override;
More information about the Scummvm-git-logs
mailing list