[Scummvm-git-logs] scummvm master -> de5c8c38484ed4f3db3f60d7dd4cc6204951aee7

dreammaster noreply at scummvm.org
Sun Jan 18 06:25:18 UTC 2026


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
9427d0030d MM: MM1: Fix incorrect cast of views collection
de5c8c3848 MM: MM1: Fix display of treasure search results


Commit: 9427d0030d710368742480eefabec18acceb2730
    https://github.com/scummvm/scummvm/commit/9427d0030d710368742480eefabec18acceb2730
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-01-18T17:03:00+11:00

Commit Message:
MM: MM1: Fix incorrect cast of views collection

Changed paths:
    engines/mm/mm1/events.cpp
    engines/mm/mm1/events.h
    engines/mm/mm1/views/dialogs.h
    engines/mm/mm1/views_enh/dialogs.h


diff --git a/engines/mm/mm1/events.cpp b/engines/mm/mm1/events.cpp
index 75518c0ea86..5e9a6547fd8 100644
--- a/engines/mm/mm1/events.cpp
+++ b/engines/mm/mm1/events.cpp
@@ -42,9 +42,9 @@ Events::~Events() {
 }
 
 void Events::runGame() {
-	UIElement *allViews = _enhancedMode ?
-		(UIElement *)new ViewsEnh::Dialogs() :
-		(UIElement *)new Views::Dialogs();
+	ViewsBase *allViews = _enhancedMode ?
+		(ViewsBase *)new ViewsEnh::Dialogs() :
+		(ViewsBase *)new Views::Dialogs();
 	uint currTime, nextFrameTime = 0;
 	_screen = new Graphics::Screen();
 
diff --git a/engines/mm/mm1/events.h b/engines/mm/mm1/events.h
index 778c0157764..6383e173414 100644
--- a/engines/mm/mm1/events.h
+++ b/engines/mm/mm1/events.h
@@ -255,6 +255,12 @@ public:
 	#undef MESSAGE
 };
 
+class ViewsBase {
+public:
+	ViewsBase() {}
+	virtual ~ViewsBase() {}
+};
+
 /**
  * Main events and view manager
  */
diff --git a/engines/mm/mm1/views/dialogs.h b/engines/mm/mm1/views/dialogs.h
index 44b5a192c65..ef8bd74b49a 100644
--- a/engines/mm/mm1/views/dialogs.h
+++ b/engines/mm/mm1/views/dialogs.h
@@ -90,7 +90,7 @@ namespace MM {
 namespace MM1 {
 namespace Views {
 
-struct Dialogs {
+struct Dialogs : public ViewsBase {
 private:
 	Views::AreYouReady _areYouReady;
 	Views::Bash _bash;
@@ -163,6 +163,7 @@ private:
 	Views::Spells::Teleport _telportSpell;
 public:
 	Dialogs() {}
+	~Dialogs() override {}
 };
 
 } // namespace Views
diff --git a/engines/mm/mm1/views_enh/dialogs.h b/engines/mm/mm1/views_enh/dialogs.h
index 204b6cf1a5f..b1d0105815a 100644
--- a/engines/mm/mm1/views_enh/dialogs.h
+++ b/engines/mm/mm1/views_enh/dialogs.h
@@ -98,7 +98,7 @@ namespace MM {
 namespace MM1 {
 namespace ViewsEnh {
 
-struct Dialogs {
+struct Dialogs : public ViewsBase {
 private:
 	ViewsEnh::Interactions::AccessCode _accessCode;
 	ViewsEnh::Interactions::Alamar _alamar;
@@ -181,6 +181,7 @@ private:
 	Views::Bash _bash;
 public:
 	Dialogs() {}
+	~Dialogs() override {}
 };
 
 } // namespace ViewsEnh


Commit: de5c8c38484ed4f3db3f60d7dd4cc6204951aee7
    https://github.com/scummvm/scummvm/commit/de5c8c38484ed4f3db3f60d7dd4cc6204951aee7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-01-18T17:24:30+11:00

Commit Message:
MM: MM1: Fix display of treasure search results

This fixes bug #16458, which was caused by text being drawn
outside the bounds of the window

Changed paths:
    engines/mm/mm1/views_enh/search.cpp
    engines/mm/shared/utils/xeen_font.cpp


diff --git a/engines/mm/mm1/views_enh/search.cpp b/engines/mm/mm1/views_enh/search.cpp
index 8dbed876d0a..587429a50c2 100644
--- a/engines/mm/mm1/views_enh/search.cpp
+++ b/engines/mm/mm1/views_enh/search.cpp
@@ -76,7 +76,6 @@ void Search::draw() {
 	Common::String line;
 	setButtonEnabled(0, _mode == OPTIONS);
 
-	//if (_mode != GET_ITEMS)
 	SelectNumber::draw();
 
 	switch (_mode) {
@@ -394,6 +393,7 @@ void Search::drawTreasure() {
 void Search::drawItem() {
 	Treasure &treasure = g_globals->_treasure;
 	int itemId = treasure.removeItem();
+	_lineNum = 0;
 
 	// Iterate through any treasure items
 	if (itemId != 0) {
@@ -415,14 +415,19 @@ void Search::drawItem() {
 				item->_name.c_str()
 			));
 
-			delaySeconds(2);
-			return;
+			if (treasure.hasItems()) {
+				delaySeconds(2);
+				return;
+			} else {
+				// Finished final item, so go down below to switch to items done
+				break;
+			}
 		}
 	}
 
 	// At this point we've either displayed the up to 3 item
-	// lines (in addition to gold and/or gems), or the party's
-	// backpacks were completely full up. Wait for 7 seconds
+	// lines (in addition to gold and/or gems), or the party's backpacks
+	// were completely full up. Wait for 7 seconds and close the view
 	setMode(GET_ITEMS_DONE);
 	delaySeconds(7);
 }
diff --git a/engines/mm/shared/utils/xeen_font.cpp b/engines/mm/shared/utils/xeen_font.cpp
index 5b84d437702..3da09f6f635 100644
--- a/engines/mm/shared/utils/xeen_font.cpp
+++ b/engines/mm/shared/utils/xeen_font.cpp
@@ -70,7 +70,7 @@ void XeenFont::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32
 
 	const uint16 *src = &_data[chr * FONT_HEIGHT];
 	for (int yCtr = 0; yCtr < FONT_HEIGHT; ++yCtr, ++src) {
-		if ((y + yCtr) < 0 || (y + yCtr) > dst->h)
+		if ((y + yCtr) < 0 || (y + yCtr) >= dst->h)
 			continue;
 
 		uint16 srcVal = *src;




More information about the Scummvm-git-logs mailing list