[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