[Scummvm-git-logs] scummvm master -> 8e2f6b662d7f3312c35b7b32cde2014e856a0af0

dreammaster noreply at scummvm.org
Tue Mar 28 04:27:25 UTC 2023


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

Summary:
e7168e34c0 MM: MM1: Fix combat btns to generate action messages
692b6e265a MM: MM1: Go Back button for combat options
1c9db43757 MM: MM1: Clicking in the monster list can select targets
07754db1aa MM: MM1: Added which character view for combat exchanges
186bfe2755 MM: MM1: Fix combat attack messages
9ec204bbb0 MM: MM1: Fix display of a bunch of other text
8e2f6b662d MM: MM1: Fix hotizontal alignment of ) chars in party list


Commit: e7168e34c01db16e3b8e3dc7864bd76d00c47d0d
    https://github.com/scummvm/scummvm/commit/e7168e34c01db16e3b8e3dc7864bd76d00c47d0d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T18:39:18-07:00

Commit Message:
MM: MM1: Fix combat btns to generate action messages

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


diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index 0e85dae4646..d6a3d7a7bc1 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -349,18 +349,19 @@ bool Combat::msgAction(const ActionMessage &msg) {
 }
 
 bool Combat::msgMouseUp(const MouseUpMessage &msg) {
-	const char *const BTN_KEYS = "afreubsc";
+	const KeybindingAction BTN_ACTIONS[8] = {
+		KEYBIND_COMBAT_ATTACK, KEYBIND_COMBAT_FIGHT,
+		KEYBIND_COMBAT_RETREAT, KEYBIND_COMBAT_EXCHANGE,
+		KEYBIND_COMBAT_USE, KEYBIND_COMBAT_BLOCK,
+		KEYBIND_COMBAT_SHOOT, KEYBIND_COMBAT_CAST
+	};
 
 	for (int col = 0; col < 3; ++col) {
 		for (int row = 0; row < 3; ++row) {
 			if (col != 2 || row != 2) {
 				Common::Rect r = getOptionButtonRect(col, row);
 				if (r.contains(msg._pos)) {
-					char c = BTN_KEYS[col * 3 + row];
-					msgKeypress(KeypressMessage(Common::KeyState(
-						(Common::KeyCode)(Common::KEYCODE_a + (c - 'a')),
-						c
-					)));
+					msgAction(ActionMessage(BTN_ACTIONS[col * 3 + row]));
 					return true;
 				}
 			}


Commit: 692b6e265a57588d1ed6d1e088afa5213d669560
    https://github.com/scummvm/scummvm/commit/692b6e265a57588d1ed6d1e088afa5213d669560
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T19:40:13-07:00

Commit Message:
MM: MM1: Go Back button for combat options

Changed paths:
    devtools/create_mm/files/mm1/strings_en.yml
    engines/mm/mm1/views/combat.cpp
    engines/mm/mm1/views_enh/combat.cpp
    engines/mm/mm1/views_enh/combat.h


diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index 05711deb37b..708524deecc 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -383,7 +383,7 @@ dialogs:
 		monster_wanders: "wanders aimlessly"
 		attacks: "attacks"
 		shoots: "shoots"
-		weapon_no_effect: "weapon has no effect!"
+		weapon_no_effect: "Weapon has no effect!"
 		once: "once"
 		times: "times"
 		and: "and"
@@ -394,9 +394,9 @@ dialogs:
 		point: "point"
 		points: "points"
 		of_damage: "of damage!"
-		fight_which: "fight which 'a'-'%c'?"
-		shoot_which: "shoot which 'a'-'%c'?"
-		set_delay: "set delay (0-9):"
+		fight_which: "Fight which 'A'-'%c'?"
+		shoot_which: "Shoot which 'A'-'%c'?"
+		set_delay: "Set delay (0-9):"
 		delay_currently: "(currently= %d)"
 		infiltration: "infiltrates the ranks!"
 		exchange_places: "exchange places with (1-%c)?"
diff --git a/engines/mm/mm1/views/combat.cpp b/engines/mm/mm1/views/combat.cpp
index dd9913b8697..7c63ed8cbc8 100644
--- a/engines/mm/mm1/views/combat.cpp
+++ b/engines/mm/mm1/views/combat.cpp
@@ -273,8 +273,15 @@ bool Combat::msgAction(const ActionMessage &msg) {
 	if (endDelay())
 		return true;
 
+	if (_mode == SELECT_OPTION && _option != OPTION_NONE &&
+		msg._action == KEYBIND_ESCAPE) {
+		_option = OPTION_NONE;
+		combatLoop();
+		return true;
+	}
+
 	if (_mode != SELECT_OPTION || (_option != OPTION_NONE &&
-			_option != OPTION_EXCHANGE))
+		_option != OPTION_EXCHANGE))
 		return false;
 
 	switch (msg._action) {
@@ -331,12 +338,6 @@ bool Combat::msgAction(const ActionMessage &msg) {
 	case KEYBIND_COMBAT_USE:
 		use();
 		break;
-	case KEYBIND_ESCAPE:
-		if (_mode == SELECT_OPTION) {
-			_option = OPTION_NONE;
-			combatLoop();
-		}
-		break;
 	default:
 		break;
 	}
diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index d6a3d7a7bc1..91bd94496ce 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -39,6 +39,7 @@ Combat::Combat() : ScrollView("Combat") {
 
 void Combat::setMode(Mode newMode) {
 	_mode = newMode;
+	clearButtons();
 
 	if (newMode == SELECT_OPTION) {
 		_option = OPTION_NONE;
@@ -277,6 +278,13 @@ bool Combat::msgAction(const ActionMessage &msg) {
 	if (endDelay())
 		return true;
 
+	if (_mode == SELECT_OPTION && _option != OPTION_NONE &&
+		msg._action == KEYBIND_ESCAPE) {
+		_option = OPTION_NONE;
+		combatLoop();
+		return true;
+	}
+
 	if (_mode != SELECT_OPTION || (_option != OPTION_NONE &&
 			_option != OPTION_EXCHANGE))
 		return false;
@@ -335,12 +343,6 @@ bool Combat::msgAction(const ActionMessage &msg) {
 	case KEYBIND_COMBAT_USE:
 		use();
 		break;
-	case KEYBIND_ESCAPE:
-		if (_mode == SELECT_OPTION) {
-			_option = OPTION_NONE;
-			combatLoop();
-		}
-		break;
 	default:
 		break;
 	}
@@ -372,7 +374,8 @@ bool Combat::msgMouseUp(const MouseUpMessage &msg) {
 }
 
 void Combat::writeOptions() {
-	resetBottom();
+	if (_option != OPTION_NONE)
+		writeString(30, 170, STRING["enhdialogs.misc.go_back"]);
 
 	switch (_option) {
 	case OPTION_NONE:
@@ -435,36 +438,34 @@ void Combat::writeAllOptions() {
 }
 
 void Combat::writeDelaySelect() {
-	resetBottom();
+	error("TODO: delay select");
 	writeString(0, 20, STRING["dialogs.combat.set_delay"]);
 	writeString(0, 23, Common::String::format(
 		STRING["dialogs.combat.delay_currently"].c_str(),
 		g_globals->_delay));
-	escToGoBack(0, 23);
 }
 
 void Combat::writeExchangeSelect() {
-	resetBottom();
-	writeString(7, 20, Common::String::format(
+	writeBottomText(0, 1, Common::String::format(
 		STRING["dialogs.combat.exchange_places"].c_str(),
-		'0' + g_globals->_combatParty.size()));
-	escToGoBack(12, 23);
+		'0' + g_globals->_combatParty.size()),
+		ALIGN_MIDDLE);
 }
 
 void Combat::writeFightSelect() {
 	_attackableCount = MIN(_attackersCount, (int)_remainingMonsters.size());
 
-	writeString(10, 20, Common::String::format(
-		STRING["dialogs.combat.fight_which"].c_str(), 'A' + _attackableCount - 1));
-	escToGoBack(12, 23);
+	writeBottomText(0, 1, Common::String::format(
+		STRING["dialogs.combat.fight_which"].c_str(), 'A' + _attackableCount - 1),
+		ALIGN_MIDDLE);
 }
 
 void Combat::writeShootSelect() {
 	_attackableCount = MIN(_attackersCount, (int)_remainingMonsters.size());
 
-	writeString(10, 20, Common::String::format(
-		STRING["dialogs.combat.shoot_which"].c_str(), 'A' + _attackableCount - 1));
-	escToGoBack(12, 23);
+	writeBottomText(0, 1, Common::String::format(
+		STRING["dialogs.combat.shoot_which"].c_str(), 'A' + _attackableCount - 1),
+		ALIGN_MIDDLE);
 }
 
 void Combat::writeAttackOptions() {
@@ -514,8 +515,9 @@ void Combat::resetBottom() {
 	_allowCast = _allowAttack = false;
 }
 
-void Combat::writeBottomText(int x, int line, const Common::String &msg) {
-	writeString(x, (line + 19) * LINE_H, msg);
+void Combat::writeBottomText(int x, int line, const Common::String &msg,
+		TextAlign align) {
+	writeString(x, (line + 19) * LINE_H, msg, align);
 }
 
 #define BTN_SIZE 10
@@ -919,6 +921,13 @@ void Combat::setOption(SelectedOption option) {
 		KeybindingMode::KBMODE_PARTY_MENUS :
 		KeybindingMode::KBMODE_MENUS);
 	_option = option;
+
+	clearButtons();
+	if (option != OPTION_NONE) {
+		addButton(&g_globals->_escSprites, Common::Point(0, 164),
+			0, KEYBIND_ESCAPE);
+	}
+
 	redraw();
 }
 
diff --git a/engines/mm/mm1/views_enh/combat.h b/engines/mm/mm1/views_enh/combat.h
index db721f2c497..6d673c81a1a 100644
--- a/engines/mm/mm1/views_enh/combat.h
+++ b/engines/mm/mm1/views_enh/combat.h
@@ -34,7 +34,6 @@ private:
 	// TODO: Stuff to refactor
 	void writeSpaces(int count) { error("TODO"); }
 	void clearLines(int y1, int y2) { error("TODO"); }
-	void escToGoBack(int x, int y) { error("TODO"); }
 
 private:
 	LineArray _monsterSpellLines;
@@ -62,7 +61,8 @@ private:
 	void clearBottom();
 	void clearArea(const Common::Rect &r);
 	void resetBottom();
-	void writeBottomText(int x, int line, const Common::String &msg);
+	void writeBottomText(int x, int line, const Common::String &msg,
+		TextAlign align = ALIGN_LEFT);
 	Common::Rect getOptionButtonRect(uint col, uint row);
 	void writeOption(uint col, uint row, char c, const Common::String &msg);
 


Commit: 1c9db43757dbb70d815920b15d0a2808a920f624
    https://github.com/scummvm/scummvm/commit/1c9db43757dbb70d815920b15d0a2808a920f624
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T19:58:44-07:00

Commit Message:
MM: MM1: Clicking in the monster list can select targets

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


diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index 91bd94496ce..483afe257bf 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -358,18 +358,37 @@ bool Combat::msgMouseUp(const MouseUpMessage &msg) {
 		KEYBIND_COMBAT_SHOOT, KEYBIND_COMBAT_CAST
 	};
 
-	for (int col = 0; col < 3; ++col) {
-		for (int row = 0; row < 3; ++row) {
-			if (col != 2 || row != 2) {
-				Common::Rect r = getOptionButtonRect(col, row);
-				if (r.contains(msg._pos)) {
-					msgAction(ActionMessage(BTN_ACTIONS[col * 3 + row]));
-					return true;
+	if (_mode == SELECT_OPTION && _option == OPTION_NONE) {
+		// Check for option buttons being pressed
+		for (int col = 0; col < 3; ++col) {
+			for (int row = 0; row < 3; ++row) {
+				if (col != 2 || row != 2) {
+					Common::Rect r = getOptionButtonRect(col, row);
+					if (r.contains(msg._pos)) {
+						msgAction(ActionMessage(BTN_ACTIONS[col * 3 + row]));
+						return true;
+					}
 				}
 			}
 		}
 	}
 
+	if (_mode == SELECT_OPTION && (_option == OPTION_SHOOT ||
+			_option == OPTION_FIGHT)) {
+		// Check for entries in the monster list being pressed
+		if (msg._pos.x >= MONSTERS_X && msg._pos.x < 310
+				&& msg._pos.y >= _innerBounds.top && msg._pos.y < 100) {
+			uint monsterNum = (msg._pos.y - _innerBounds.top) / LINE_H;
+			if (monsterNum < _remainingMonsters.size()) {
+				char c = 'a' + monsterNum;
+				msgKeypress(KeypressMessage(Common::KeyState(
+					(Common::KeyCode)(Common::KEYCODE_a + (c - 'a')), c
+				)));
+				return true;
+			}
+		}
+	}
+
 	return ScrollView::msgMouseUp(msg);
 }
 
@@ -599,6 +618,7 @@ void Combat::writePartyNumbers() {
 void Combat::writeMonsters() {
 	Common::String mStr = "A)";
 	setReduced(true);
+	clearArea(Common::Rect(MONSTERS_X, 0, 320, 100));
 
 	for (int i = 0; i < (int)_remainingMonsters.size(); ++i) {
 		writeString(MONSTERS_X, i * LINE_H, (i < _attackersCount) ? "+" : " ");


Commit: 07754db1aa0d30b3985040a7b6d4db61d5eb68b0
    https://github.com/scummvm/scummvm/commit/07754db1aa0d30b3985040a7b6d4db61d5eb68b0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T20:43:00-07:00

Commit Message:
MM: MM1: Added which character view for combat exchanges

Changed paths:
    devtools/create_mm/files/mm1/strings_en.yml
    engines/mm/mm1/views_enh/combat.cpp
    engines/mm/mm1/views_enh/which_character.cpp
    engines/mm/mm1/views_enh/which_character.h


diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml
index 708524deecc..ca5e43f0037 100644
--- a/devtools/create_mm/files/mm1/strings_en.yml
+++ b/devtools/create_mm/files/mm1/strings_en.yml
@@ -399,7 +399,7 @@ dialogs:
 		set_delay: "Set delay (0-9):"
 		delay_currently: "(currently= %d)"
 		infiltration: "infiltrates the ranks!"
-		exchange_places: "exchange places with (1-%c)?"
+		exchange_places: "Exchange places with (1-%c)?"
 		status:
 			0: "(paralyze)"
 			1: "(webbed)  "
@@ -595,6 +595,7 @@ enhdialogs:
 		exit: "Exit"
 		go_back: "Go back"
 		no_items: "Inventory empty"
+		exchange: "Exchange with whom?"
 	quickref:
 		title: "Quick Reference Chart"
 		headers:
diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index 483afe257bf..f6742f0440d 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -99,6 +99,12 @@ bool Combat::msgGame(const GameMessage &msg) {
 
 		setMode(SPELL_RESULT);
 		return true;
+
+	} else if (msg._name == "EXCHANGE" && msg._value != -1) {
+		int charNum = msg._value;
+		if (g_globals->_combatParty[charNum] != g_globals->_currCharacter)
+			exchangeWith(charNum);
+		return true;
 	}
 
 	return false;
@@ -942,13 +948,20 @@ void Combat::setOption(SelectedOption option) {
 		KeybindingMode::KBMODE_MENUS);
 	_option = option;
 
-	clearButtons();
-	if (option != OPTION_NONE) {
-		addButton(&g_globals->_escSprites, Common::Point(0, 164),
-			0, KEYBIND_ESCAPE);
-	}
+	if (option == OPTION_EXCHANGE) {
+		// Show the view to select which character
+		_option = OPTION_NONE;
+		addView("WhichCharacter");
 
-	redraw();
+	} else {
+		clearButtons();
+		if (option != OPTION_NONE) {
+			addButton(&g_globals->_escSprites, Common::Point(0, 164),
+				0, KEYBIND_ESCAPE);
+		}
+
+		redraw();
+	}
 }
 
 void Combat::displaySpellResult(const InfoMessage &msg) {
diff --git a/engines/mm/mm1/views_enh/which_character.cpp b/engines/mm/mm1/views_enh/which_character.cpp
index 4dc1856d429..88bdb6d5896 100644
--- a/engines/mm/mm1/views_enh/which_character.cpp
+++ b/engines/mm/mm1/views_enh/which_character.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "mm/mm1/views_enh/which_character.h"
+#include "mm/mm1/views_enh/combat.h"
 #include "mm/mm1/globals.h"
 
 namespace MM {
@@ -32,15 +33,27 @@ WhichCharacter::WhichCharacter() : PartyView("WhichCharacter") {
 }
 
 void WhichCharacter::draw() {
+	if (dynamic_cast<Combat *>(g_events->priorView()) != nullptr) {
+		// For combat view, draw a frame that the party view will be inside
+		const Common::Rect old = _bounds;
+		_bounds = Common::Rect(0, 144, 320, 200);
+		frame();
+		fill();
+
+		_bounds = old;
+		g_events->send("GameParty", GameMessage("CHAR_HIGHLIGHT", (int)true));
+	}
+
 	PartyView::draw();
-	writeString(10, 5, STRING["enhdialogs.trade.dest"]);
+	writeString(10, 5, STRING[g_events->isInCombat() ?
+		"enhdialogs.misc.exchange" : "enhdialogs.trade.dest"]);
 }
 
 bool WhichCharacter::msgAction(const ActionMessage &msg) {
 	switch (msg._action) {
 	case KEYBIND_ESCAPE:
 		close();
-		send("CharacterInventory", GameMessage("TRADE_DEST", -1));
+		selectCharacter(-1);
 		return true;
 
 	case KEYBIND_VIEW_PARTY1:
@@ -52,7 +65,7 @@ bool WhichCharacter::msgAction(const ActionMessage &msg) {
 		uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
 		if (charNum < g_globals->_party.size()) {
 			close();
-			send("CharacterInventory", GameMessage("TRADE_DEST", charNum));
+			selectCharacter(charNum);
 		}
 		return true;
 	}
@@ -62,6 +75,14 @@ bool WhichCharacter::msgAction(const ActionMessage &msg) {
 	}
 }
 
+void WhichCharacter::selectCharacter(int charNum) {
+	if (dynamic_cast<Combat *>(g_events->focusedView()) != nullptr) {
+		send("Combat", GameMessage("EXCHANGE", charNum));
+	} else {
+		send("CharacterInventory", GameMessage("TRADE_DEST", charNum));
+	}
+}
+
 } // namespace ViewsEnh
 } // namespace MM1
 } // namespace MM
diff --git a/engines/mm/mm1/views_enh/which_character.h b/engines/mm/mm1/views_enh/which_character.h
index 2dad8e8091d..d8daa79d78d 100644
--- a/engines/mm/mm1/views_enh/which_character.h
+++ b/engines/mm/mm1/views_enh/which_character.h
@@ -30,6 +30,9 @@ namespace MM1 {
 namespace ViewsEnh {
 
 class WhichCharacter : public PartyView {
+private:
+	void selectCharacter(int charNum);
+
 public:
 	WhichCharacter();
 	virtual ~WhichCharacter() {}


Commit: 186bfe2755d842bac20c4bd3111ea7cee4e0c823
    https://github.com/scummvm/scummvm/commit/186bfe2755d842bac20c4bd3111ea7cee4e0c823
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T21:04:53-07:00

Commit Message:
MM: MM1: Fix combat attack messages

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


diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index f6742f0440d..aa05f4bac5c 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -766,8 +766,8 @@ void Combat::writeMonsterAttack() {
 		attackStyle.c_str(),
 		c._name
 	);
-	writeString(0, 20, line);
-	writeString(0, 21, getAttackString());
+	writeBottomText(0, 0, line);
+	writeBottomText(0, 1, getAttackString());
 
 	if (_damage) {
 		// Attacks wake up sleeping characters
@@ -778,13 +778,13 @@ void Combat::writeMonsterAttack() {
 		// This returns a text line to display, and can also
 		// adjust the damage amount. Another reason why we
 		// can't actually apply damage until here
-		int yp = 22;
+		int yp = 2;
 		if (monsterTouch(line))
-			writeString(0, yp++, line);
+			writeBottomText(0, yp++, line);
 
 		Common::String damageStr = subtractDamageFromChar();
 		if (!damageStr.empty())
-			writeString(0, yp, damageStr);
+			writeBottomText(0, yp, damageStr);
 	}
 }
 
@@ -869,7 +869,7 @@ void Combat::writeMessage() {
 void Combat::writeCharAttackDamage() {
 	resetBottom();
 
-	writeString(0, 20, Common::String::format("%s %s %s",
+	writeBottomText(0, 0, Common::String::format("%s %s %s",
 		g_globals->_currCharacter->_name,
 		STRING[_isShooting ? "dialogs.combat.shoots" :
 		"dialogs.combat.attacks"].c_str(),
@@ -877,10 +877,10 @@ void Combat::writeCharAttackDamage() {
 	));
 	_isShooting = false;
 
-	writeString(0, 21, getAttackString());
+	writeBottomText(0, 1, getAttackString());
 
 	if (_monsterP->_status == MONFLAG_DEAD) {
-		writeString(0, 22, Common::String::format("%s %s",
+		writeBottomText(0, 2, Common::String::format("%s %s",
 			_monsterP->_name.c_str(),
 			STRING["dialogs.combat.goes_down"].c_str()));
 	}


Commit: 9ec204bbb0f882a6e4625d0b75a97cebc638f37e
    https://github.com/scummvm/scummvm/commit/9ec204bbb0f882a6e4625d0b75a97cebc638f37e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T21:26:30-07:00

Commit Message:
MM: MM1: Fix display of a bunch of other text

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


diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index aa05f4bac5c..109ae860eac 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -119,7 +119,7 @@ void Combat::draw() {
 		delaySeconds(1);
 		return;
 	case MONSTER_ADVANCES:
-		writeString(0, 20, _monsterName);
+		writeBottomText(0, 0, _monsterName);
 		writeString(STRING["dialogs.combat.advances"]);
 		writeSpaces(30);
 		writeRound();
@@ -463,9 +463,8 @@ void Combat::writeAllOptions() {
 }
 
 void Combat::writeDelaySelect() {
-	error("TODO: delay select");
-	writeString(0, 20, STRING["dialogs.combat.set_delay"]);
-	writeString(0, 23, Common::String::format(
+	writeBottomText(0, 0, STRING["dialogs.combat.set_delay"]);
+	writeBottomText(0, 3, Common::String::format(
 		STRING["dialogs.combat.delay_currently"].c_str(),
 		g_globals->_delay));
 }
@@ -794,7 +793,7 @@ void Combat::writeInfiltration() {
 		STRING["dialogs.combat.infiltration"].c_str());
 
 	resetBottom();
-	writeString(0, 20, line);
+	writeBottomText(0, 0, line);
 	Sound::sound(SOUND_2);
 	Sound::sound(SOUND_2);
 }
@@ -806,13 +805,13 @@ void Combat::writeWaitsForOpening() {
 	);
 
 	resetBottom();
-	writeString(0, 20, line);
+	writeBottomText(0, 0, line);
 }
 
 void Combat::writeSpellResult() {
 	for (uint i = 0; i < _spellResult._lines.size(); ++i) {
 		const Line &l = _spellResult._lines[i];
-		writeString(l.x, l.y + 20, l._text);
+		writeBottomText(l.x, l.y, l._text);
 	}
 }
 
@@ -889,7 +888,7 @@ void Combat::writeCharAttackDamage() {
 void Combat::writeCharAttackNoEffect() {
 	resetBottom();
 
-	writeString(0, 20, Common::String::format("%s %s %s",
+	writeBottomText(0, 0, Common::String::format("%s %s %s",
 		g_globals->_currCharacter->_name,
 		STRING[_isShooting ? "dialogs.combat.shoots" :
 		"dialogs.combat.attacks"].c_str(),
@@ -897,7 +896,7 @@ void Combat::writeCharAttackNoEffect() {
 	));
 	_isShooting = false;
 
-	writeString(0, 21, STRING["dialogs.combat.weapon_no_effect"]);
+	writeBottomText(0, 1, STRING["dialogs.combat.weapon_no_effect"]);
 }
 
 Common::String Combat::getAttackString() {


Commit: 8e2f6b662d7f3312c35b7b32cde2014e856a0af0
    https://github.com/scummvm/scummvm/commit/8e2f6b662d7f3312c35b7b32cde2014e856a0af0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-27T21:27:13-07:00

Commit Message:
MM: MM1: Fix hotizontal alignment of ) chars in party list

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


diff --git a/engines/mm/mm1/views_enh/combat.cpp b/engines/mm/mm1/views_enh/combat.cpp
index 109ae860eac..ca5b82f4e87 100644
--- a/engines/mm/mm1/views_enh/combat.cpp
+++ b/engines/mm/mm1/views_enh/combat.cpp
@@ -678,13 +678,13 @@ void Combat::writeParty() {
 
 	for (uint i = 0; i < g_globals->_combatParty.size(); ++i) {
 		const Character &c = *g_globals->_combatParty[i];
-		writeString(160 * (i % 2), (15 + (i / 2)) * LINE_H,
-			Common::String::format("%c%c) %s",
-				(c._condition == 0) ? ' ' : '*',
-				'1' + i,
-				c._name
-			)
-		);
+		const int x = 160 * (i % 2);
+		const int y = (15 + (i / 2)) * LINE_H;
+
+		writeChar(x, y, (c._condition == 0) ? ' ' : '*');
+		writeString(x + 15, y, Common::String::format("%c)", '1' + i), ALIGN_RIGHT);
+		writeChar(' ');
+		writeString(c._name);
 	}
 }
 




More information about the Scummvm-git-logs mailing list