[Scummvm-git-logs] scummvm master -> 0a8eb1df4c254da04352de7db2f28f8e683c0815

dreammaster noreply at scummvm.org
Fri Mar 24 05:33:32 UTC 2023


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

Summary:
5671644d2d MM: MM1: Don't switch char after trading items
27271dc632 MM: MM1: Finish gold, gems, food trades
d540f88dc9 MM: MM1: Fix checking into inn
2cdc314e58 MM: MM1: Fix map 0 statue text
0a8eb1df4c MM: MM1: Fix displaying multi-line messages in enhanced mode


Commit: 5671644d2d0ed7f0b812cedf2daf7b6c40ca9d08
    https://github.com/scummvm/scummvm/commit/5671644d2d0ed7f0b812cedf2daf7b6c40ca9d08
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-23T21:11:30-07:00

Commit Message:
MM: MM1: Don't switch char after trading items

Changed paths:
    engines/mm/mm1/views_enh/character_inventory.cpp
    engines/mm/mm1/views_enh/character_inventory.h
    engines/mm/mm1/views_enh/game_party.cpp
    engines/mm/mm1/views_enh/game_party.h
    engines/mm/mm1/views_enh/items_view.cpp
    engines/mm/mm1/views_enh/items_view.h
    engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
    engines/mm/mm1/views_enh/locations/blacksmith_items.h
    engines/mm/mm1/views_enh/party_view.cpp
    engines/mm/mm1/views_enh/party_view.h
    engines/mm/mm1/views_enh/spells/spellbook.cpp
    engines/mm/mm1/views_enh/spells/spellbook.h
    engines/mm/mm1/views_enh/which_character.cpp
    engines/mm/mm1/views_enh/which_character.h


diff --git a/engines/mm/mm1/views_enh/character_inventory.cpp b/engines/mm/mm1/views_enh/character_inventory.cpp
index b3684221250..4027b09aa54 100644
--- a/engines/mm/mm1/views_enh/character_inventory.cpp
+++ b/engines/mm/mm1/views_enh/character_inventory.cpp
@@ -135,7 +135,6 @@ void CharacterInventory::populateItems() {
 	_items.clear();
 	_selectedItem = -1;
 	_selectedButton = BTN_NONE;
-	_initialChar = g_globals->_currCharacter;
 
 	const Character &c = *g_globals->_currCharacter;
 	const Inventory &inv = (_mode == ARMS_MODE) ? c._equipped : c._backpack;
@@ -144,25 +143,28 @@ void CharacterInventory::populateItems() {
 		_items.push_back(inv[i]._id);
 }
 
-void CharacterInventory::itemSelected() {
-	// No implementation
-}
-
-void CharacterInventory::selectedCharChanged() {
+bool CharacterInventory::canSwitchChar() {
 	// When in combat, the current character can't be changed
-	if (g_events->isInCombat()) {
-		if (g_globals->_currCharacter != _initialChar) {
-			g_globals->_currCharacter = _initialChar;
-			g_events->send("GameParty", GameMessage("CHAR_HIGHLIGHT", (int)true));
-		}
-	} else if (_selectedItem != -1) {
-		// Trade to another character
-		tradeItem(_initialChar);
+	return !g_events->isInCombat();
+}
 
-	} else {
-		populateItems();
-		redraw();
+bool CharacterInventory::canSwitchToChar(Character *dst) {
+	if (_selectedItem != -1) {
+		tradeItem(dst);
+		return false;
 	}
+
+	return true;
+}
+
+void CharacterInventory::charSwitched(Character *priorChar) {
+	PartyView::charSwitched(priorChar);
+	populateItems();
+	redraw();
+}
+
+void CharacterInventory::itemSelected() {
+	// No implementation
 }
 
 void CharacterInventory::selectButton(SelectedButton btnMode) {
@@ -238,18 +240,17 @@ void CharacterInventory::discardItem() {
 	redraw();
 }
 
-void CharacterInventory::tradeItem(Character *from) {
-	if (g_globals->_currCharacter == _initialChar)
+void CharacterInventory::tradeItem(Character *dst) {
+	if (dst == g_globals->_currCharacter)
 		return;
 
 	// Get source and dest inventories
-	Character &cSrc = *_initialChar;
+	Character &cSrc = *g_globals->_currCharacter;
 	Inventory &iSrc = (_mode == ARMS_MODE) ? cSrc._equipped : cSrc._backpack;
-	Character &cDest = *g_globals->_currCharacter;
+	Character &cDest = *dst;
 	Inventory &iDest = cDest._backpack;
 
 	if (iDest.full()) {
-		g_globals->_currCharacter = _initialChar;
 		backpackFull();
 
 	} else {
@@ -257,7 +258,6 @@ void CharacterInventory::tradeItem(Character *from) {
 		iSrc.removeAt(_selectedItem);
 		iDest.add(item._id, item._charges);
 
-		_mode = BACKPACK_MODE;
 		populateItems();
 		redraw();
 	}
diff --git a/engines/mm/mm1/views_enh/character_inventory.h b/engines/mm/mm1/views_enh/character_inventory.h
index 73afa1498e1..64930abd51d 100644
--- a/engines/mm/mm1/views_enh/character_inventory.h
+++ b/engines/mm/mm1/views_enh/character_inventory.h
@@ -40,7 +40,6 @@ private:
 		BTN_NONE, BTN_EQUIP, BTN_REMOVE, BTN_DISCARD
 	};
 	SelectedButton _selectedButton = BTN_NONE;
-	Character *_initialChar = nullptr;
 	Common::String _tradeMode;
 	int _tradeAmount;
 
@@ -90,6 +89,16 @@ private:
 	void trade(const Common::String &mode, int amount, Character *destChar);
 
 protected:
+	/**
+	 * Return true if the selected character can be switched
+	 */
+	bool canSwitchChar() override;
+
+	/**
+	 * Returns true if the destination character can be switched to
+	 */
+	bool canSwitchToChar(Character *dst) override;
+
 	/**
 	 * Called when an item is selected
 	 */
@@ -98,7 +107,7 @@ protected:
 	/**
 	 * When the selected character is changed
 	 */
-	void selectedCharChanged() override;
+	void charSwitched(Character *priorChar) override;
 
 public:
 	CharacterInventory();
diff --git a/engines/mm/mm1/views_enh/game_party.cpp b/engines/mm/mm1/views_enh/game_party.cpp
index 89b4868853d..3a12dea7c6f 100644
--- a/engines/mm/mm1/views_enh/game_party.cpp
+++ b/engines/mm/mm1/views_enh/game_party.cpp
@@ -120,23 +120,31 @@ bool GameParty::msgMouseDown(const MouseDownMessage &msg) {
 	return false;
 }
 
+void GameParty::highlightChar(uint charNum) {
+	g_globals->_currCharacter = &g_globals->_party[charNum];
+	_highlightOn = true;
+	draw();
+}
+
 bool GameParty::msgAction(const ActionMessage &msg) {
 	if (msg._action >= KEYBIND_VIEW_PARTY1 &&
 			msg._action <= KEYBIND_VIEW_PARTY6) {
 		uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
 		if (charNum < g_globals->_party.size()) {
-			// Change the selected character
-			g_globals->_currCharacter = &g_globals->_party[charNum];
-			_highlightOn = true;
-			draw();
-
 			if (dynamic_cast<ViewsEnh::Game *>(g_events->focusedView()) != nullptr) {
 				// Open character info dialog
+				highlightChar(charNum);
 				addView("CharacterInfo");
 
 			} else {
-				// Another view is focused, so simply call it to update
-				send(g_events->focusedView()->getName(), GameMessage("UPDATE"));
+				// Another view is focused
+				// Try passing the selected char to it to handle
+				if (!send(g_events->focusedView()->getName(), msg)) {
+					// Wasn't handled directly, so switch selected character,
+					// and try calling the given view again with an UPDATE message
+					highlightChar(charNum);
+					send(g_events->focusedView()->getName(), GameMessage("UPDATE"));
+				}
 			}
 
 			return true;
diff --git a/engines/mm/mm1/views_enh/game_party.h b/engines/mm/mm1/views_enh/game_party.h
index 5085e4e9536..4b1738301ce 100644
--- a/engines/mm/mm1/views_enh/game_party.h
+++ b/engines/mm/mm1/views_enh/game_party.h
@@ -39,6 +39,7 @@ private:
 	Shared::Xeen::SpriteResource _dseFace;
 	bool _highlightOn = false;
 
+	void highlightChar(uint charNum);
 public:
 	GameParty(UIElement *owner);
 	virtual ~GameParty() {}
@@ -48,13 +49,8 @@ public:
 	 */
 	void draw() override;
 
-	/**
-	 * Handle game messages
-	 */
 	bool msgGame(const GameMessage &msg) override;
-
 	bool msgMouseDown(const MouseDownMessage &msg) override;
-
 	bool msgAction(const ActionMessage &msg) override;
 };
 
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index f8f3d92f0f5..e783f0d83fe 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -59,15 +59,6 @@ bool ItemsView::msgFocus(const FocusMessage &msg) {
 	return true;
 }
 
-bool ItemsView::msgGame(const GameMessage &msg) {
-	if (msg._name == "UPDATE") {
-		selectedCharChanged();
-		return true;
-	}
-
-	return PartyView::msgGame(msg);
-}
-
 void ItemsView::draw() {
 	// Draw the outer frame and buttons
 	PartyView::draw();
diff --git a/engines/mm/mm1/views_enh/items_view.h b/engines/mm/mm1/views_enh/items_view.h
index 56c271decb2..ec40530f092 100644
--- a/engines/mm/mm1/views_enh/items_view.h
+++ b/engines/mm/mm1/views_enh/items_view.h
@@ -71,17 +71,11 @@ protected:
 	 */
 	virtual void itemSelected() = 0;
 
-	/**
-	 * When the selected character is changed
-	 */
-	virtual void selectedCharChanged() = 0;
-
 public:
 	ItemsView(const Common::String &name);
 	virtual ~ItemsView() {}
 
 	bool msgFocus(const FocusMessage &msg) override;
-	bool msgGame(const GameMessage &msg) override;
 	void draw() override;
 	bool msgKeypress(const KeypressMessage &msg) override;
 	bool msgMouseDown(const MouseDownMessage &msg) override;
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
index 3c00ca5acf9..0581cc73c39 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
@@ -184,7 +184,7 @@ void BlacksmithItems::itemSelected() {
 	});
 }
 
-void BlacksmithItems::selectedCharChanged() {
+void BlacksmithItems::charSwitched(Character *priorChar) {
 	populateItems();
 	redraw();
 }
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.h b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
index ca7eac8652e..87851e75d1f 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.h
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
@@ -70,7 +70,7 @@ protected:
 	/**
 	 * When the selected character is changed
 	 */
-	void selectedCharChanged() override;
+	void charSwitched(Character *priorChar) override;
 
 public:
 	BlacksmithItems();
diff --git a/engines/mm/mm1/views_enh/party_view.cpp b/engines/mm/mm1/views_enh/party_view.cpp
index be65d6869b1..ab3bb3a30be 100644
--- a/engines/mm/mm1/views_enh/party_view.cpp
+++ b/engines/mm/mm1/views_enh/party_view.cpp
@@ -67,11 +67,27 @@ bool PartyView::msgGame(const GameMessage &msg) {
 
 bool PartyView::msgAction(const ActionMessage &msg) {
 	if (msg._action >= KEYBIND_VIEW_PARTY1 &&
-			msg._action <= KEYBIND_VIEW_PARTY6 && canSwitchChar())
-		return send("GameParty", msg);
+			msg._action < (int)(KEYBIND_VIEW_PARTY1 + g_globals->_party.size()) &&
+			canSwitchChar()) {
+		Character *priorChar = g_globals->_currCharacter;
+		Character *newChar =  &g_globals->_party[msg._action - KEYBIND_VIEW_PARTY1];
+
+		if (canSwitchToChar(newChar)) {
+			g_globals->_currCharacter = newChar;
+			charSwitched(priorChar);
+			redraw();
+		}
+
+		return true;
+	}
+
 	return false;
 }
 
+void PartyView::charSwitched(Character *priorChar) {
+	g_events->findView("GameParty")->draw();
+}
+
 } // namespace ViewsEnh
 } // namespace MM1
 } // namespace MM
diff --git a/engines/mm/mm1/views_enh/party_view.h b/engines/mm/mm1/views_enh/party_view.h
index 458aa17f582..07331d4ffd6 100644
--- a/engines/mm/mm1/views_enh/party_view.h
+++ b/engines/mm/mm1/views_enh/party_view.h
@@ -23,6 +23,7 @@
 #define MM1_VIEWS_ENH_PARTY_VIEW_H
 
 #include "mm/mm1/views_enh/scroll_view.h"
+#include "mm/mm1/data/character.h"
 
 namespace MM {
 namespace MM1 {
@@ -33,7 +34,14 @@ protected:
 	/**
 	 * Return true if the selected character can be switched
 	 */
-	virtual bool canSwitchChar() const {
+	virtual bool canSwitchChar() {
+		return true;
+	}
+
+	/**
+	 * Returns true if the destination character can be switched to
+	 */
+	virtual bool canSwitchToChar(Character *dst) {
 		return true;
 	}
 
@@ -43,6 +51,12 @@ protected:
 	virtual bool selectCharByDefault() const {
 		return true;
 	}
+
+	/**
+	 * Called when the selected character has been switched
+	 */
+	virtual void charSwitched(Character *priorChar);
+
 public:
 	PartyView(const Common::String &name) : ScrollView(name) {}
 	PartyView(const Common::String &name, UIElement *owner) :
diff --git a/engines/mm/mm1/views_enh/spells/spellbook.cpp b/engines/mm/mm1/views_enh/spells/spellbook.cpp
index 7cdc9932518..803aab13b2a 100644
--- a/engines/mm/mm1/views_enh/spells/spellbook.cpp
+++ b/engines/mm/mm1/views_enh/spells/spellbook.cpp
@@ -65,7 +65,7 @@ bool Spellbook::msgFocus(const FocusMessage &msg) {
 	return true;
 }
 
-bool Spellbook::canSwitchChar() const {
+bool Spellbook::canSwitchChar() {
 	return !g_events->isInCombat();
 }
 
diff --git a/engines/mm/mm1/views_enh/spells/spellbook.h b/engines/mm/mm1/views_enh/spells/spellbook.h
index 6d454d8ef9e..db5fe731851 100644
--- a/engines/mm/mm1/views_enh/spells/spellbook.h
+++ b/engines/mm/mm1/views_enh/spells/spellbook.h
@@ -57,7 +57,7 @@ private:
 	void spellSelected();
 
 protected:
-	bool canSwitchChar() const override;
+	bool canSwitchChar() override;
 
 public:
 	Spellbook();
diff --git a/engines/mm/mm1/views_enh/which_character.cpp b/engines/mm/mm1/views_enh/which_character.cpp
index 1fa16a2287b..4dc1856d429 100644
--- a/engines/mm/mm1/views_enh/which_character.cpp
+++ b/engines/mm/mm1/views_enh/which_character.cpp
@@ -31,42 +31,34 @@ WhichCharacter::WhichCharacter() : PartyView("WhichCharacter") {
 	addButton(&g_globals->_escSprites, Common::Point(176, 0), 0, KEYBIND_ESCAPE);
 }
 
-bool WhichCharacter::msgFocus(const FocusMessage &msg) {
-	_initialChar = g_globals->_currCharacter;
-	return PartyView::msgFocus(msg);
-}
-
 void WhichCharacter::draw() {
 	PartyView::draw();
 	writeString(10, 5, STRING["enhdialogs.trade.dest"]);
 }
 
-bool WhichCharacter::msgGame(const GameMessage &msg) {
-	if (msg._name == "UPDATE") {
-		int charNum = g_globals->_party.indexOf(g_globals->_currCharacter);
-		g_globals->_currCharacter = _initialChar;
-
-		close();
-		send("CharacterInventory", GameMessage("TRADE_DEST", charNum));
-		return true;
-	}
-
-	return false;
-}
-
 bool WhichCharacter::msgAction(const ActionMessage &msg) {
-	if (msg._action == KEYBIND_ESCAPE) {
+	switch (msg._action) {
+	case KEYBIND_ESCAPE:
 		close();
 		send("CharacterInventory", GameMessage("TRADE_DEST", -1));
 		return true;
-	} else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
-			msg._action <= KEYBIND_VIEW_PARTY6) {
+
+	case KEYBIND_VIEW_PARTY1:
+	case KEYBIND_VIEW_PARTY2:
+	case KEYBIND_VIEW_PARTY3:
+	case KEYBIND_VIEW_PARTY4:
+	case KEYBIND_VIEW_PARTY5:
+	case KEYBIND_VIEW_PARTY6: {
 		uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
-		if (charNum < g_globals->_party.size())
+		if (charNum < g_globals->_party.size()) {
+			close();
 			send("CharacterInventory", GameMessage("TRADE_DEST", charNum));
+		}
 		return true;
-	} else {
-		return false;
+	}
+
+	default:
+		return PartyView::msgAction(msg);
 	}
 }
 
diff --git a/engines/mm/mm1/views_enh/which_character.h b/engines/mm/mm1/views_enh/which_character.h
index 54a163d64b4..2dad8e8091d 100644
--- a/engines/mm/mm1/views_enh/which_character.h
+++ b/engines/mm/mm1/views_enh/which_character.h
@@ -30,15 +30,11 @@ namespace MM1 {
 namespace ViewsEnh {
 
 class WhichCharacter : public PartyView {
-private:
-	Character *_initialChar = nullptr;
 public:
 	WhichCharacter();
 	virtual ~WhichCharacter() {}
 
-	bool msgFocus(const FocusMessage &msg) override;
 	void draw() override;
-	bool msgGame(const GameMessage &msg) override;
 	bool msgAction(const ActionMessage &msg) override;
 };
 


Commit: 27271dc63279733a9f579f36d1fdf1eca5486c1b
    https://github.com/scummvm/scummvm/commit/27271dc63279733a9f579f36d1fdf1eca5486c1b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-23T21:11:30-07:00

Commit Message:
MM: MM1: Finish gold, gems, food trades

Changed paths:
    engines/mm/mm1/views_enh/character_inventory.cpp


diff --git a/engines/mm/mm1/views_enh/character_inventory.cpp b/engines/mm/mm1/views_enh/character_inventory.cpp
index 4027b09aa54..23ab5868a94 100644
--- a/engines/mm/mm1/views_enh/character_inventory.cpp
+++ b/engines/mm/mm1/views_enh/character_inventory.cpp
@@ -21,6 +21,7 @@
 
 #include "mm/mm1/views_enh/character_inventory.h"
 #include "mm/mm1/views_enh/which_item.h"
+#include "mm/mm1/data/locations.h"
 #include "mm/mm1/globals.h"
 
 namespace MM {
@@ -265,15 +266,22 @@ void CharacterInventory::tradeItem(Character *dst) {
 
 void CharacterInventory::trade(const Common::String &mode, int amount, Character *destChar) {
 	assert(isFocused());
+	Character &src = *g_globals->_currCharacter;
 
-	// TODO: implement
 	if (mode == "GEMS") {
+		src._gems -= amount;
+		destChar->_gems = MIN(destChar->_gems + amount, 0xffff);
 
 	} else if (mode == "GOLD") {
+		src._gold -= amount;
+		destChar->_gold += amount;
 
 	} else if (mode == "FOOD") {
-
+		src._food -= amount;
+		destChar->_food = MIN(destChar->_food + amount, MAX_FOOD);
 	}
+
+	redraw();
 }
 
 } // namespace ViewsEnh


Commit: d540f88dc94219432420d6cf276e70573b5cf69a
    https://github.com/scummvm/scummvm/commit/d540f88dc94219432420d6cf276e70573b5cf69a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-23T21:30:14-07:00

Commit Message:
MM: MM1: Fix checking into inn

Changed paths:
    engines/mm/mm1/maps/map_town.cpp


diff --git a/engines/mm/mm1/maps/map_town.cpp b/engines/mm/mm1/maps/map_town.cpp
index 99f9f12cdf9..88fd3ec4d38 100644
--- a/engines/mm/mm1/maps/map_town.cpp
+++ b/engines/mm/mm1/maps/map_town.cpp
@@ -46,7 +46,7 @@ void MapTown::inn() {
 	send(SoundMessage(
 		STRING[Common::String::format("maps.map%.2u.inn_inside", _mapIndex)],
 		[]() {
-			g_events->send("Inn", GameMessage("DISPLAY"));
+			g_events->replaceView("Inn", true);
 		}
 	));
 }


Commit: 2cdc314e58f5b89c35c8a6759e45827d6915eaf6
    https://github.com/scummvm/scummvm/commit/2cdc314e58f5b89c35c8a6759e45827d6915eaf6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-23T21:39:51-07:00

Commit Message:
MM: MM1: Fix map 0 statue text

Changed paths:
    devtools/create_mm/files/mm1/strings_en.yml


diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index 4d6b7ce7544..a2e55f4fcc4 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -182,9 +182,10 @@ dialogs:
 			1: "an elven wizard"
 			2: "a gnome robber"
 			3: "a dwarf paladin\npainted a black & white checkered motif"
-			4: "a human cleric"
-			5: "a blue dragon"
-			6: "a gray minotaur"			
+			4: "a h-orc archer"
+			5: "a human cleric"
+			6: "a blue dragon"
+			7: "a gray minotaur"			
 		messages:
 			0: "Services rendered, secrets unfold\nthe brothers together\nlead to treasures untold\n\nfive towns you must travel\nfor this quest to unravel"
 			1: "Seek the wizard ranalou\nin his lair at the korin bluffs\nsix castles he will send you to\nbut doom will be quite tough!\ncruelty and kindness\nmeasured throughout\njudgement day is then sought out"


Commit: 0a8eb1df4c254da04352de7db2f28f8e683c0815
    https://github.com/scummvm/scummvm/commit/0a8eb1df4c254da04352de7db2f28f8e683c0815
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-23T22:33:14-07:00

Commit Message:
MM: MM1: Fix displaying multi-line messages in enhanced mode

Changed paths:
    devtools/create_mm/files/mm1/strings_en.yml
    engines/mm/mm1/views_enh/game_messages.cpp
    engines/mm/mm1/views_enh/scroll_text.cpp


diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index a2e55f4fcc4..5938636fdde 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -974,15 +974,15 @@ maps:
 		training: "\"Amazonia's Training\""
 
 		blacksmith_inside: "\"Busily forging a long sword,an extremely\nbeautiful young girl says with a\nseductive smile, \"Can i help you (Y/N)?\""
-		inn_inside: "lara, the inkeepers voluptuous\ndaughter, asks if you will be spending\nthe night... sign in (Y/N)?"
+		inn_inside: "Lara, the inkeepers voluptuous\ndaughter, asks if you will be spending\nthe night... sign in (Y/N)?"
 		market_inside: "From behind the fruit stand\na sultry voice asks, \"See anything\nyou like (Y/N)?\""
 		temple_inside: "The once magnificent temple shows\nsigns of neglect and decay. the high\npriestess asks,\"Need help (Y/N)?\""
 		training_inside: "A tall, muscular female clad in leather\narmor approaches asking, \"Strangers,\nare you here for training (Y/N)?\""
 
 		males_drained: "Males are drained!"
 		secret: "A sensuous female voice speaks from\nwithin an intoxicating mist,\n\"You've discovered my secret!\""
-		zam0: "Note: zam 12,2"
-		zam1: "\"I am zam, astral brother of zom and\nonly living male residing in portsmith\n"
+		zam0: "Note: Zam 12,2"
+		zam1: "\"I am Zam, astral brother of Zom and\nonly living male residing in Portsmith\n"
 		zam2: "My clue is c-15\""
 		zam3: "You're not the couriers!\""
 
diff --git a/engines/mm/mm1/views_enh/game_messages.cpp b/engines/mm/mm1/views_enh/game_messages.cpp
index 32f313ef27a..7dd337f29cb 100644
--- a/engines/mm/mm1/views_enh/game_messages.cpp
+++ b/engines/mm/mm1/views_enh/game_messages.cpp
@@ -84,8 +84,7 @@ bool GameMessages::msgInfo(const InfoMessage &msg) {
 	// Process the lines
 	clear();
 	for (const auto &line : msg._lines)
-		addText(line._text, line.y, 0,
-			(line.x > 0) ? ALIGN_MIDDLE : line._align, 0);
+		addText(line._text, -1, 0, (line.x > 0) ? ALIGN_MIDDLE : line._align, 0);
 
 	if (msg._delaySeconds)
 		delaySeconds(msg._delaySeconds);
diff --git a/engines/mm/mm1/views_enh/scroll_text.cpp b/engines/mm/mm1/views_enh/scroll_text.cpp
index 33084a20601..b30aeeb0eed 100644
--- a/engines/mm/mm1/views_enh/scroll_text.cpp
+++ b/engines/mm/mm1/views_enh/scroll_text.cpp
@@ -63,22 +63,25 @@ void ScrollText::addText(const Common::String &s,
 		int lineNum, byte color, TextAlign align, int xp) {
 	const int LINE_HEIGHT = 10;
 	Common::String str = s;
+
+	if (lineNum == -1)
+		lineNum = (int)_lines.size();
 	Common::Point pt(xp, lineNum * LINE_HEIGHT);
 
 	// Split the lines
 	Common::StringArray lines = splitLines(s);
 
 	// Add them in
-	for (uint i = 0; i < lines.size(); ++i, ++lineNum, pt.y += LINE_HEIGHT)
+	for (uint i = 0; i < lines.size(); ++i, ++lineNum, pt.y += LINE_HEIGHT) {
 		_lines.push_back(Line(lines[i], pt, color, align));
+	}
 }
 
 void ScrollText::draw() {
 	ScrollView::draw();
 
 	// Iterate through displaying any text
-	for (Lines::const_iterator i = begin();
-		i != end(); ++i) {
+	for (Lines::const_iterator i = begin(); i != end(); ++i) {
 		setTextColor(i->_color);
 		writeString(i->_pos.x, i->_pos.y, i->_str, i->_align);
 	}




More information about the Scummvm-git-logs mailing list