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

dreammaster noreply at scummvm.org
Wed Feb 8 05:27:58 UTC 2023


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

Summary:
4310afe63a MM: MM1: Remove duplicate statColor implementation
b72471875a MM: MM1: Fix the Escape keybinding action


Commit: 4310afe63a99cf881fabd5fc72bc264b746d5c1b
    https://github.com/scummvm/scummvm/commit/4310afe63a99cf881fabd5fc72bc264b746d5c1b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-07T20:17:54-08:00

Commit Message:
MM: MM1: Remove duplicate statColor implementation

Changed paths:
    engines/mm/mm1/views_enh/character_info.cpp
    engines/mm/mm1/views_enh/character_info.h


diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index ede2cedf11c..ba4b90f29d7 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -242,7 +242,7 @@ void CharacterInfo::drawStats() {
 		if (i < 10)
 			pt.x += 8 + (CURR[i] < 10 ? 8 : 0);
 
-		setTextColor(statColor(CURR[i], BASE[i]));
+		setTextColor(c.statColor(CURR[i], BASE[i]));
 
 		if (i == 16) {
 			// Food
@@ -271,19 +271,6 @@ void CharacterInfo::drawStats() {
 	writeString(196, 120, condStr);
 }
 
-int CharacterInfo::statColor(int amount, int threshold) {
-	if (amount < 1)
-		return 6;
-	else if (amount > threshold)
-		return 2;
-	else if (amount == threshold)
-		return 15;
-	else if (amount >= (threshold / 4))
-		return 9;
-	else
-		return 32;
-}
-
 void CharacterInfo::showCursor(bool flag) {
 	const int CURSOR_X[4] = { 9, 60, 111, 176 };
 	const int CURSOR_Y[5] = { 23, 46, 69, 92, 115 };
diff --git a/engines/mm/mm1/views_enh/character_info.h b/engines/mm/mm1/views_enh/character_info.h
index bc9aca7693d..7d72f8463ed 100644
--- a/engines/mm/mm1/views_enh/character_info.h
+++ b/engines/mm/mm1/views_enh/character_info.h
@@ -59,11 +59,6 @@ private:
 	 */
 	void drawStats();
 
-	/**
-	 * Return the color for a given stat
-	 */
-	int statColor(int amount, int threshold);
-
 	/**
 	 * Toggle display of cursor
 	 */


Commit: b72471875aad8b873fd8cc5bf311f9e6fbe31610
    https://github.com/scummvm/scummvm/commit/b72471875aad8b873fd8cc5bf311f9e6fbe31610
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-07T21:26:52-08:00

Commit Message:
MM: MM1: Fix the Escape keybinding action

I didn't fix it for so long that I ended up adding explicit
checks in msgKeypress in all the various dialogs. Now that
it's fixed, I also have to fix the dialogs to properly
check for the Escape action rather than the key

Changed paths:
    engines/mm/mm1/metaengine.cpp
    engines/mm/mm1/views/character_info.cpp
    engines/mm/mm1/views/create_characters.cpp
    engines/mm/mm1/views/create_characters.h
    engines/mm/mm1/views/game_messages.cpp
    engines/mm/mm1/views/game_messages.h
    engines/mm/mm1/views/locations/blacksmith.cpp
    engines/mm/mm1/views/locations/blacksmith.h
    engines/mm/mm1/views/locations/inn.cpp
    engines/mm/mm1/views/locations/inn.h
    engines/mm/mm1/views/locations/market.cpp
    engines/mm/mm1/views/locations/market.h
    engines/mm/mm1/views/locations/statue.cpp
    engines/mm/mm1/views/locations/statue.h
    engines/mm/mm1/views/locations/tavern.cpp
    engines/mm/mm1/views/locations/tavern.h
    engines/mm/mm1/views/locations/temple.cpp
    engines/mm/mm1/views/locations/temple.h
    engines/mm/mm1/views/locations/training.cpp
    engines/mm/mm1/views/locations/training.h
    engines/mm/mm1/views/order.cpp
    engines/mm/mm1/views/order.h
    engines/mm/mm1/views/protect.cpp
    engines/mm/mm1/views/protect.h
    engines/mm/mm1/views/quick_ref.cpp
    engines/mm/mm1/views/quick_ref.h
    engines/mm/mm1/views/title.cpp
    engines/mm/mm1/views/title.h
    engines/mm/mm1/views_enh/character_info.cpp
    engines/mm/mm1/views_enh/game_messages.cpp
    engines/mm/mm1/views_enh/game_messages.h
    engines/mm/mm1/views_enh/quick_ref.cpp
    engines/mm/mm1/views_enh/scroll_popup.cpp
    engines/mm/mm1/views_enh/scroll_popup.h


diff --git a/engines/mm/mm1/metaengine.cpp b/engines/mm/mm1/metaengine.cpp
index 5f085ea2eda..b0d095b1558 100644
--- a/engines/mm/mm1/metaengine.cpp
+++ b/engines/mm/mm1/metaengine.cpp
@@ -37,7 +37,7 @@ struct KeybindingRecord {
 };
 
 static const KeybindingRecord MENU_KEYS[] = {
-	{ KEYBIND_ESCAPE, "ESCAPE", "Escape", "ESC", nullptr },
+	{ KEYBIND_ESCAPE, "ESCAPE", "Escape", "ESCAPE", nullptr },
 	{ KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr }
 };
 
diff --git a/engines/mm/mm1/views/character_info.cpp b/engines/mm/mm1/views/character_info.cpp
index 57f76fab9c8..9abe445143d 100644
--- a/engines/mm/mm1/views/character_info.cpp
+++ b/engines/mm/mm1/views/character_info.cpp
@@ -122,17 +122,6 @@ void CharacterInfo::timeout() {
 }
 
 bool CharacterInfo::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		if (_state != DISPLAY) {
-			redraw();
-		} else {
-			close();
-		}
-
-		_state = DISPLAY;
-		return true;
-	}
-
 	switch (_state) {
 	case DISPLAY:
 		switch (msg.keycode) {
@@ -265,20 +254,36 @@ bool CharacterInfo::msgKeypress(const KeypressMessage &msg) {
 }
 
 bool CharacterInfo::msgAction(const ActionMessage &msg) {
-	if (msg._action >= KEYBIND_VIEW_PARTY1 &&
-			msg._action <= KEYBIND_VIEW_PARTY6) {
+	switch (msg._action) {
+	case KEYBIND_ESCAPE:
+		if (_state != DISPLAY) {
+			redraw();
+		} else {
+			close();
+		}
+
+		_state = DISPLAY;
+		return true;
+	case KEYBIND_VIEW_PARTY1:
+	case KEYBIND_VIEW_PARTY2:
+	case KEYBIND_VIEW_PARTY3:
+	case KEYBIND_VIEW_PARTY4:
+	case KEYBIND_VIEW_PARTY5:
+	case KEYBIND_VIEW_PARTY6:
 		if (_state == DISPLAY) {
 			g_globals->_currCharacter = &g_globals->_party[
 				msg._action - KEYBIND_VIEW_PARTY1];
 			redraw();
-			return true;
 		} else if (_state == TRADE_WITH) {
 			_state = TRADE_KIND;
 			_tradeWith = msg._action - KEYBIND_VIEW_PARTY1;
 			redraw();
-			return true;
 		}
+		return true;
+	default:
+		break;
 	}
+
 	return false;
 }
 
diff --git a/engines/mm/mm1/views/create_characters.cpp b/engines/mm/mm1/views/create_characters.cpp
index f29f9d36250..bd289dc6d0b 100644
--- a/engines/mm/mm1/views/create_characters.cpp
+++ b/engines/mm/mm1/views/create_characters.cpp
@@ -343,17 +343,6 @@ void CreateCharacters::printSummary(bool promptToSave) {
 }
 
 bool CreateCharacters::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		if (_state == SELECT_CLASS) {
-			close();
-		} else {
-			_state = SELECT_CLASS;
-			_newChar.reroll();
-			redraw();
-		}
-		return true;
-	}
-
 	switch (_state) {
 	case SELECT_CLASS:
 		if (msg.keycode == Common::KEYCODE_RETURN) {
@@ -460,6 +449,21 @@ bool CreateCharacters::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool CreateCharacters::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE) {
+		if (_state == SELECT_CLASS) {
+			close();
+		} else {
+			_state = SELECT_CLASS;
+			_newChar.reroll();
+			redraw();
+		}
+		return true;
+	}
+
+	return false;
+}
+
 } // namespace Views
 } // namespace MM1
 } // namespace MM
diff --git a/engines/mm/mm1/views/create_characters.h b/engines/mm/mm1/views/create_characters.h
index 4e17964d42e..50695f5b299 100644
--- a/engines/mm/mm1/views/create_characters.h
+++ b/engines/mm/mm1/views/create_characters.h
@@ -102,6 +102,7 @@ public:
 	}
 	void draw() override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 };
 
 } // namespace Views
diff --git a/engines/mm/mm1/views/game_messages.cpp b/engines/mm/mm1/views/game_messages.cpp
index ea04d51cff2..6a74c108269 100644
--- a/engines/mm/mm1/views/game_messages.cpp
+++ b/engines/mm/mm1/views/game_messages.cpp
@@ -108,6 +108,26 @@ bool GameMessages::msgKeypress(const KeypressMessage &msg) {
 	return false;
 }
 
+bool GameMessages::msgAction(const ActionMessage &msg) {
+	if (g_globals->_party.isPartyDead()) {
+		// Party is dead, so now that players have read whatever
+		// message was displayed, switch to the Dead screen
+		g_events->clearViews();
+		addView("Dead");
+
+	} else if (g_events->focusedView()) {
+		if (endDelay())
+			return true;
+
+		if (msg._action == KEYBIND_ESCAPE) {
+			close();
+			return true;
+		}
+	}
+
+	return false;
+}
+
 void GameMessages::timeout() {
 	if (_ynCallback) {
 		// _ynCallback is also used for timeout callbacks
diff --git a/engines/mm/mm1/views/game_messages.h b/engines/mm/mm1/views/game_messages.h
index 32c1e94ce48..e9d52175116 100644
--- a/engines/mm/mm1/views/game_messages.h
+++ b/engines/mm/mm1/views/game_messages.h
@@ -42,6 +42,7 @@ public:
 	void draw() override;
 	bool msgInfo(const InfoMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void timeout() override;
 };
 
diff --git a/engines/mm/mm1/views/locations/blacksmith.cpp b/engines/mm/mm1/views/locations/blacksmith.cpp
index 5b5c89a216c..887ea71c9d7 100644
--- a/engines/mm/mm1/views/locations/blacksmith.cpp
+++ b/engines/mm/mm1/views/locations/blacksmith.cpp
@@ -51,9 +51,6 @@ void Blacksmith::draw() {
 
 bool Blacksmith::msgKeypress(const KeypressMessage &msg) {
 	switch (msg.keycode) {
-	case Common::KEYCODE_ESCAPE:
-		leave();
-		break;
 	case Common::KEYCODE_1:
 	case Common::KEYCODE_2:
 	case Common::KEYCODE_3:
@@ -81,6 +78,18 @@ bool Blacksmith::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Blacksmith::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 } // namespace Locations
 } // namespace Views
 } // namespace MM1
diff --git a/engines/mm/mm1/views/locations/blacksmith.h b/engines/mm/mm1/views/locations/blacksmith.h
index d7e0f2204bb..83baaa43892 100644
--- a/engines/mm/mm1/views/locations/blacksmith.h
+++ b/engines/mm/mm1/views/locations/blacksmith.h
@@ -45,6 +45,7 @@ public:
 
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 };
 
diff --git a/engines/mm/mm1/views/locations/inn.cpp b/engines/mm/mm1/views/locations/inn.cpp
index fde5edefc79..5c8848d2f46 100644
--- a/engines/mm/mm1/views/locations/inn.cpp
+++ b/engines/mm/mm1/views/locations/inn.cpp
@@ -103,10 +103,7 @@ void Inn::draw() {
 }
 
 bool Inn::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		replaceView("MainMenu");
-		return true;
-	} else if (msg.keycode >= Common::KEYCODE_a &&
+	if (msg.keycode >= Common::KEYCODE_a &&
 		msg.keycode < (Common::KeyCode)(Common::KEYCODE_a + _charNums.size())) {
 		int charNum = _charNums[msg.keycode - Common::KEYCODE_a];
 
@@ -139,6 +136,15 @@ bool Inn::msgKeypress(const KeypressMessage &msg) {
 	return false;
 }
 
+bool Inn::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE) {
+		replaceView("MainMenu");
+		return true;
+	}
+
+	return false;
+}
+
 } // namespace Locations
 } // namespace Views
 } // namespace MM1
diff --git a/engines/mm/mm1/views/locations/inn.h b/engines/mm/mm1/views/locations/inn.h
index bb2c3a32763..068467f160f 100644
--- a/engines/mm/mm1/views/locations/inn.h
+++ b/engines/mm/mm1/views/locations/inn.h
@@ -45,6 +45,7 @@ public:
 	bool msgFocus(const FocusMessage &msg) override;
 	void draw() override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 };
 
 } // namespace Locations
diff --git a/engines/mm/mm1/views/locations/market.cpp b/engines/mm/mm1/views/locations/market.cpp
index 0b53a6c9ac2..94666bf4f92 100644
--- a/engines/mm/mm1/views/locations/market.cpp
+++ b/engines/mm/mm1/views/locations/market.cpp
@@ -48,9 +48,8 @@ bool Market::msgKeypress(const KeypressMessage &msg) {
 		return true;
 
 	switch (msg.keycode) {
-	case Common::KEYCODE_ESCAPE:
 	case Common::KEYCODE_n:
-		leave();
+		msgAction(ActionMessage(KEYBIND_ESCAPE));
 		break;
 	case Common::KEYCODE_y:
 		buyFood();
@@ -62,6 +61,18 @@ bool Market::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Market::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 void Market::draw() {
 	clearSurface();
 
diff --git a/engines/mm/mm1/views/locations/market.h b/engines/mm/mm1/views/locations/market.h
index a23319f1691..5b1df57f909 100644
--- a/engines/mm/mm1/views/locations/market.h
+++ b/engines/mm/mm1/views/locations/market.h
@@ -50,6 +50,7 @@ public:
 
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 
 	/**
diff --git a/engines/mm/mm1/views/locations/statue.cpp b/engines/mm/mm1/views/locations/statue.cpp
index e3ae7652e0b..344692cdbe2 100644
--- a/engines/mm/mm1/views/locations/statue.cpp
+++ b/engines/mm/mm1/views/locations/statue.cpp
@@ -49,6 +49,18 @@ bool Statue::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Statue::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 void Statue::draw() {
 	switch (_pageNum) {
 	case 0:
diff --git a/engines/mm/mm1/views/locations/statue.h b/engines/mm/mm1/views/locations/statue.h
index da8424a30aa..a975c818fab 100644
--- a/engines/mm/mm1/views/locations/statue.h
+++ b/engines/mm/mm1/views/locations/statue.h
@@ -40,6 +40,7 @@ public:
 	void draw() override;
 	bool msgValue(const ValueMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 };
 
 } // namespace Locations
diff --git a/engines/mm/mm1/views/locations/tavern.cpp b/engines/mm/mm1/views/locations/tavern.cpp
index 93b3986cad4..c9c156a68be 100644
--- a/engines/mm/mm1/views/locations/tavern.cpp
+++ b/engines/mm/mm1/views/locations/tavern.cpp
@@ -40,11 +40,6 @@ bool Tavern::msgFocus(const FocusMessage &msg) {
 }
 
 bool Tavern::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		leave();
-		return true;
-	}
-
 	// If timed message display, end the waiting
 	if (endDelay())
 		return true;
@@ -78,6 +73,18 @@ bool Tavern::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Tavern::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 void Tavern::draw() {
 	Location::draw();
 
diff --git a/engines/mm/mm1/views/locations/tavern.h b/engines/mm/mm1/views/locations/tavern.h
index c781b92b48a..60136563463 100644
--- a/engines/mm/mm1/views/locations/tavern.h
+++ b/engines/mm/mm1/views/locations/tavern.h
@@ -52,6 +52,7 @@ public:
 
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 };
 
diff --git a/engines/mm/mm1/views/locations/temple.cpp b/engines/mm/mm1/views/locations/temple.cpp
index 40e152b952e..699a43a5547 100644
--- a/engines/mm/mm1/views/locations/temple.cpp
+++ b/engines/mm/mm1/views/locations/temple.cpp
@@ -41,11 +41,6 @@ bool Temple::msgFocus(const FocusMessage &msg) {
 }
 
 bool Temple::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		leave();
-		return true;
-	}
-
 	// If a delay is active, end it
 	if (endDelay())
 		return true;
@@ -82,6 +77,18 @@ bool Temple::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Temple::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 void Temple::changeCharacter(uint index) {
 	Maps::Map &map = *g_maps->_currentMap;
 	int i;
diff --git a/engines/mm/mm1/views/locations/temple.h b/engines/mm/mm1/views/locations/temple.h
index 9bcae5b5996..8c7930fb2f6 100644
--- a/engines/mm/mm1/views/locations/temple.h
+++ b/engines/mm/mm1/views/locations/temple.h
@@ -53,6 +53,7 @@ public:
 
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 };
 
diff --git a/engines/mm/mm1/views/locations/training.cpp b/engines/mm/mm1/views/locations/training.cpp
index 360e8cb09f5..88c6eebfb95 100644
--- a/engines/mm/mm1/views/locations/training.cpp
+++ b/engines/mm/mm1/views/locations/training.cpp
@@ -117,11 +117,6 @@ void Training::draw() {
 }
 
 bool Training::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		leave();
-		return true;
-	}
-
 	// If a delay is active, end it
 	if (endDelay())
 		return true;
@@ -150,6 +145,18 @@ bool Training::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Training::msgAction(const ActionMessage &msg) {
+	if (endDelay())
+		return true;
+
+	if (msg._action == KEYBIND_ESCAPE) {
+		leave();
+		return true;
+	}
+
+	return false;
+}
+
 void Training::train() {
 	Character &c = *g_globals->_currCharacter;
 
diff --git a/engines/mm/mm1/views/locations/training.h b/engines/mm/mm1/views/locations/training.h
index 565c0e3e7d8..318f2a0bd1d 100644
--- a/engines/mm/mm1/views/locations/training.h
+++ b/engines/mm/mm1/views/locations/training.h
@@ -69,6 +69,7 @@ public:
 
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 };
 
diff --git a/engines/mm/mm1/views/order.cpp b/engines/mm/mm1/views/order.cpp
index b085fa2b242..26b1a52b816 100644
--- a/engines/mm/mm1/views/order.cpp
+++ b/engines/mm/mm1/views/order.cpp
@@ -41,10 +41,7 @@ bool Order::msgGame(const GameMessage &msg) {
 }
 
 bool Order::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		close();
-
-	} else if (msg.keycode == Common::KEYCODE_BACKSPACE &&
+	if (msg.keycode == Common::KEYCODE_BACKSPACE &&
 			!_indexes.empty()) {
 		_indexes.remove_at(_indexes.size() - 1);
 		redraw();
@@ -76,6 +73,15 @@ bool Order::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Order::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE) {
+		close();
+		return true;
+	}
+
+	return false;
+}
+
 void Order::draw() {
 	clearSurface();
 	writeString(0, 0, STRING["dialogs.order.title"]);
diff --git a/engines/mm/mm1/views/order.h b/engines/mm/mm1/views/order.h
index dc9a927f968..54679d991dc 100644
--- a/engines/mm/mm1/views/order.h
+++ b/engines/mm/mm1/views/order.h
@@ -37,6 +37,7 @@ public:
 
 	bool msgGame(const GameMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	void draw() override;
 };
 
diff --git a/engines/mm/mm1/views/protect.cpp b/engines/mm/mm1/views/protect.cpp
index 2b935b82981..a921a416727 100644
--- a/engines/mm/mm1/views/protect.cpp
+++ b/engines/mm/mm1/views/protect.cpp
@@ -88,19 +88,16 @@ void Protect::printProtectionLevel(uint protectIndex) {
 	newLine();
 }
 
-bool Protect::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		close();
-		return true;
-	}
-
-	return false;
-}
-
 bool Protect::msgAction(const ActionMessage &msg) {
-	if (msg._action == KEYBIND_PROTECT) {
+	switch (msg._action) {
+	case KEYBIND_PROTECT:
 		addView();
 		return true;
+	case KEYBIND_ESCAPE:
+		close();
+		return true;
+	default:
+		break;
 	}
 
 	return false;
diff --git a/engines/mm/mm1/views/protect.h b/engines/mm/mm1/views/protect.h
index 5eac588de5d..fb9856a7aa6 100644
--- a/engines/mm/mm1/views/protect.h
+++ b/engines/mm/mm1/views/protect.h
@@ -37,7 +37,6 @@ public:
 	virtual ~Protect() {}
 
 	void draw() override;
-	bool msgKeypress(const KeypressMessage &msg) override;
 	bool msgAction(const ActionMessage &msg) override;
 };
 
diff --git a/engines/mm/mm1/views/quick_ref.cpp b/engines/mm/mm1/views/quick_ref.cpp
index cae2c8d38a1..031e157490e 100644
--- a/engines/mm/mm1/views/quick_ref.cpp
+++ b/engines/mm/mm1/views/quick_ref.cpp
@@ -94,17 +94,11 @@ void QuickRef::draw() {
 	escToGoBack();
 }
 
-bool QuickRef::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		close();
-		return true;
-	}
-
-	return false;
-}
-
 bool QuickRef::msgAction(const ActionMessage &msg) {
 	switch (msg._action) {
+	case KEYBIND_ESCAPE:
+		close();
+		return true;
 	case KEYBIND_VIEW_PARTY1:
 	case KEYBIND_VIEW_PARTY2:
 	case KEYBIND_VIEW_PARTY3:
diff --git a/engines/mm/mm1/views/quick_ref.h b/engines/mm/mm1/views/quick_ref.h
index 3bf01603abc..0fda61b0f40 100644
--- a/engines/mm/mm1/views/quick_ref.h
+++ b/engines/mm/mm1/views/quick_ref.h
@@ -42,7 +42,6 @@ public:
 	bool msgFocus(const FocusMessage &msg) override;
 	bool msgUnfocus(const UnfocusMessage &msg) override;
 	void draw() override;
-	bool msgKeypress(const KeypressMessage &msg) override;
 	bool msgAction(const ActionMessage &msg) override;
 };
 
diff --git a/engines/mm/mm1/views/title.cpp b/engines/mm/mm1/views/title.cpp
index b366229ad63..1acf177f921 100644
--- a/engines/mm/mm1/views/title.cpp
+++ b/engines/mm/mm1/views/title.cpp
@@ -130,11 +130,7 @@ void Title::timeout() {
 }
 
 bool Title::msgKeypress(const KeypressMessage &msg) {
-	if (msg.keycode == Common::KEYCODE_ESCAPE) {
-		// Show the main menu
-		g_events->replaceView("AreYouReady");
-
-	} else if (msg.keycode == Common::KEYCODE_SPACE) {
+	if (msg.keycode == Common::KEYCODE_SPACE) {
 		// Start showing game screens slideshow
 		cancelDelay();
 		_screenNum = 2;
@@ -145,6 +141,15 @@ bool Title::msgKeypress(const KeypressMessage &msg) {
 	return true;
 }
 
+bool Title::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE) {
+		g_events->replaceView("AreYouReady");
+		return true;
+	}
+
+	return false;
+}
+
 } // namespace Views
 } // namespace MM1
 } // namespace MM
diff --git a/engines/mm/mm1/views/title.h b/engines/mm/mm1/views/title.h
index 068c7286f73..0b1d61ba340 100644
--- a/engines/mm/mm1/views/title.h
+++ b/engines/mm/mm1/views/title.h
@@ -64,6 +64,10 @@ public:
 	 */
 	bool msgKeypress(const KeypressMessage &msg) override;
 
+	/**
+	 * Handle actions
+	 */
+	bool msgAction(const ActionMessage &msg) override;
 };
 
 } // namespace Views
diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index ba4b90f29d7..0daf45a15fa 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -101,9 +101,6 @@ bool CharacterInfo::msgKeypress(const KeypressMessage &msg) {
 	int idx;
 
 	switch (msg.keycode) {
-	case Common::KEYCODE_ESCAPE:
-		close();
-		return true;
 	case Common::KEYCODE_UP:
 		showCursor(false);
 		if (--_cursorCell < 0)
@@ -147,7 +144,10 @@ bool CharacterInfo::msgKeypress(const KeypressMessage &msg) {
 }
 
 bool CharacterInfo::msgAction(const ActionMessage &msg) {
-	if (msg._action >= KEYBIND_VIEW_PARTY1 &&
+	if (msg._action == KEYBIND_ESCAPE) {
+		close();
+		return true;
+	} else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
 			msg._action <= KEYBIND_VIEW_PARTY6) {
 		g_globals->_currCharacter = &g_globals->_party[
 				msg._action - KEYBIND_VIEW_PARTY1];
diff --git a/engines/mm/mm1/views_enh/game_messages.cpp b/engines/mm/mm1/views_enh/game_messages.cpp
index 1557244208c..33ee4cb0df7 100644
--- a/engines/mm/mm1/views_enh/game_messages.cpp
+++ b/engines/mm/mm1/views_enh/game_messages.cpp
@@ -107,6 +107,16 @@ bool GameMessages::msgKeypress(const KeypressMessage &msg) {
 	return false;
 }
 
+bool GameMessages::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE && g_events->focusedView() == this) {
+		close();
+		g_events->drawElements();
+		return true;
+	}
+
+	return false;
+}
+
 bool GameMessages::msgMouseDown(const MouseDownMessage &msg) {
 	// If yes/no prompting, also pass events to buttons view
 	if (_ynCallback)
diff --git a/engines/mm/mm1/views_enh/game_messages.h b/engines/mm/mm1/views_enh/game_messages.h
index fc3740b9e2e..1dbf0802361 100644
--- a/engines/mm/mm1/views_enh/game_messages.h
+++ b/engines/mm/mm1/views_enh/game_messages.h
@@ -47,6 +47,7 @@ public:
 	void draw() override;
 	bool msgInfo(const InfoMessage &msg) override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 	bool msgMouseDown(const MouseDownMessage &msg) override;
 	bool msgMouseUp(const MouseUpMessage &msg) override;
 };
diff --git a/engines/mm/mm1/views_enh/quick_ref.cpp b/engines/mm/mm1/views_enh/quick_ref.cpp
index dc8fd55c8d6..f6f1abd6e24 100644
--- a/engines/mm/mm1/views_enh/quick_ref.cpp
+++ b/engines/mm/mm1/views_enh/quick_ref.cpp
@@ -128,13 +128,11 @@ bool QuickRef::msgAction(const ActionMessage &msg) {
 				replaceView("CharacterInfo");
 			}
 		}
-		break;
+		return true;
 	}
 	default:
-		break;
+		return ScrollPopup::msgAction(msg);
 	}
-
-	return false;
 }
 
 bool QuickRef::isInCombat() const {
diff --git a/engines/mm/mm1/views_enh/scroll_popup.cpp b/engines/mm/mm1/views_enh/scroll_popup.cpp
index 64b600f3d21..a9d970c75f5 100644
--- a/engines/mm/mm1/views_enh/scroll_popup.cpp
+++ b/engines/mm/mm1/views_enh/scroll_popup.cpp
@@ -39,6 +39,16 @@ bool ScrollPopup::msgMouseUp(const MouseUpMessage &msg) {
 	return true;
 }
 
+bool ScrollPopup::msgAction(const ActionMessage &msg) {
+	if (msg._action == KEYBIND_ESCAPE) {
+		close();
+		return true;
+	}
+
+	return false;
+}
+
+
 } // namespace ViewsEnh
 } // namespace MM1
 } // namespace MM
diff --git a/engines/mm/mm1/views_enh/scroll_popup.h b/engines/mm/mm1/views_enh/scroll_popup.h
index dea74ce6a80..d941c7d83e4 100644
--- a/engines/mm/mm1/views_enh/scroll_popup.h
+++ b/engines/mm/mm1/views_enh/scroll_popup.h
@@ -34,6 +34,7 @@ public:
 
 	bool msgKeypress(const KeypressMessage &msg) override;
 	bool msgMouseUp(const MouseUpMessage &msg) override;
+	bool msgAction(const ActionMessage &msg) override;
 };
 
 } // namespace ViewsEnh




More information about the Scummvm-git-logs mailing list