[Scummvm-git-logs] scummvm master -> 976457f9df65c1b24c1f9a3d571352614efbd711

dreammaster noreply at scummvm.org
Tue Mar 21 05:28:44 UTC 2023


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

Summary:
80d1e88e8c MM: MM1: Add character switching to inventory items
0101f40c94 MM: MM1: Don't allow switching characters in combat mode
9ebde66b31 MM: MM1: Allow mouse clicks to select items
976457f9df MM: MM1: Fix clicking buttons in character info


Commit: 80d1e88e8cecb7ea3221e8585703beb5166daf32
    https://github.com/scummvm/scummvm/commit/80d1e88e8cecb7ea3221e8585703beb5166daf32
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-20T20:55:01-07:00

Commit Message:
MM: MM1: Add character switching to inventory items

Changed paths:
    engines/mm/mm1/views_enh/character_inventory.cpp
    engines/mm/mm1/views_enh/character_inventory.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


diff --git a/engines/mm/mm1/views_enh/character_inventory.cpp b/engines/mm/mm1/views_enh/character_inventory.cpp
index 87105be7851..dee7c4c902a 100644
--- a/engines/mm/mm1/views_enh/character_inventory.cpp
+++ b/engines/mm/mm1/views_enh/character_inventory.cpp
@@ -57,7 +57,7 @@ bool CharacterInventory::msgGame(const GameMessage &msg) {
 		return true;
 	}
 
-	return false;
+	return ItemsView::msgGame(msg);
 }
 
 void CharacterInventory::draw() {
@@ -135,6 +135,11 @@ void CharacterInventory::itemSelected() {
 	// No implementation
 }
 
+void CharacterInventory::selectedCharChanged() {
+	populateItems();
+	redraw();
+}
+
 void CharacterInventory::selectButton(SelectedButton btnMode) {
 	_selectedButton = btnMode;
 
diff --git a/engines/mm/mm1/views_enh/character_inventory.h b/engines/mm/mm1/views_enh/character_inventory.h
index f9a74dd2953..0282d659a81 100644
--- a/engines/mm/mm1/views_enh/character_inventory.h
+++ b/engines/mm/mm1/views_enh/character_inventory.h
@@ -81,6 +81,11 @@ protected:
 	 */
 	void itemSelected() override;
 
+	/**
+	 * When the selected character is changed
+	 */
+	void selectedCharChanged() override;
+
 public:
 	CharacterInventory();
 	virtual ~CharacterInventory() {}
diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index 3dd0ae88708..87ab5deaee0 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -49,7 +49,7 @@ void ItemsView::addButton(int frame, const Common::String &text,
 }
 
 bool ItemsView::msgFocus(const FocusMessage &msg) {
-	ScrollView::msgFocus(msg);
+	PartyView::msgFocus(msg);
 
 	// Disable the normal '1' to '6' character selection keybindings,
 	// since we're using them in this dialog for item selection
@@ -59,6 +59,15 @@ 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 905721b2b56..04051f228e6 100644
--- a/engines/mm/mm1/views_enh/items_view.h
+++ b/engines/mm/mm1/views_enh/items_view.h
@@ -71,11 +71,17 @@ 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 msgAction(const ActionMessage &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 0ecf291ee84..3c00ca5acf9 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.cpp
@@ -184,6 +184,11 @@ void BlacksmithItems::itemSelected() {
 	});
 }
 
+void BlacksmithItems::selectedCharChanged() {
+	populateItems();
+	redraw();
+}
+
 void BlacksmithItems::itemConfirmed() {
 	Character &c = *g_globals->_currCharacter;
 	Inventory &inv = c._backpack;
diff --git a/engines/mm/mm1/views_enh/locations/blacksmith_items.h b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
index 1f6d06b2e39..ca7eac8652e 100644
--- a/engines/mm/mm1/views_enh/locations/blacksmith_items.h
+++ b/engines/mm/mm1/views_enh/locations/blacksmith_items.h
@@ -67,6 +67,11 @@ protected:
 	 */
 	void itemSelected() override;
 
+	/**
+	 * When the selected character is changed
+	 */
+	void selectedCharChanged() override;
+
 public:
 	BlacksmithItems();
 	virtual ~BlacksmithItems() {}


Commit: 0101f40c944d49c6f7cb9c362a2fe43726b98a68
    https://github.com/scummvm/scummvm/commit/0101f40c944d49c6f7cb9c362a2fe43726b98a68
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-20T21:21:57-07:00

Commit Message:
MM: MM1: Don't allow switching characters in combat mode

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


diff --git a/engines/mm/mm1/views_enh/character_inventory.cpp b/engines/mm/mm1/views_enh/character_inventory.cpp
index dee7c4c902a..adf004dfd0f 100644
--- a/engines/mm/mm1/views_enh/character_inventory.cpp
+++ b/engines/mm/mm1/views_enh/character_inventory.cpp
@@ -41,6 +41,8 @@ CharacterInventory::CharacterInventory() : ItemsView("CharacterInventory") {
 
 bool CharacterInventory::msgFocus(const FocusMessage &msg) {
 	ItemsView::msgFocus(msg);
+	_initialChar = g_globals->_currCharacter;
+	assert(_initialChar);
 
 	if (dynamic_cast<WhichItem *>(msg._priorView) == nullptr)
 		_mode = BACKPACK_MODE;
@@ -136,8 +138,16 @@ void CharacterInventory::itemSelected() {
 }
 
 void CharacterInventory::selectedCharChanged() {
-	populateItems();
-	redraw();
+	// 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 {
+		populateItems();
+		redraw();
+	}
 }
 
 void CharacterInventory::selectButton(SelectedButton btnMode) {
diff --git a/engines/mm/mm1/views_enh/character_inventory.h b/engines/mm/mm1/views_enh/character_inventory.h
index 0282d659a81..06961ae47e5 100644
--- a/engines/mm/mm1/views_enh/character_inventory.h
+++ b/engines/mm/mm1/views_enh/character_inventory.h
@@ -23,6 +23,7 @@
 #define MM1_VIEWS_ENH_CHARACTER_INVENTORY_H
 
 #include "mm/mm1/views_enh/items_view.h"
+#include "mm/mm1/data/character.h"
 #include "mm/mm1/game/equip_remove.h"
 
 namespace MM {
@@ -39,6 +40,7 @@ private:
 		BTN_NONE, BTN_EQUIP, BTN_REMOVE, BTN_DISCARD
 	};
 	SelectedButton _selectedButton = BTN_NONE;
+	Character *_initialChar = nullptr;
 
 	/**
 	 * Populates the list of items


Commit: 9ebde66b314d207b3244f8233c24dec25c034ab3
    https://github.com/scummvm/scummvm/commit/9ebde66b314d207b3244f8233c24dec25c034ab3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-20T22:18:26-07:00

Commit Message:
MM: MM1: Allow mouse clicks to select items

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


diff --git a/engines/mm/mm1/views_enh/items_view.cpp b/engines/mm/mm1/views_enh/items_view.cpp
index 87ab5deaee0..f8f3d92f0f5 100644
--- a/engines/mm/mm1/views_enh/items_view.cpp
+++ b/engines/mm/mm1/views_enh/items_view.cpp
@@ -127,6 +127,26 @@ bool ItemsView::msgKeypress(const KeypressMessage &msg) {
 	return PartyView::msgKeypress(msg);
 }
 
+bool ItemsView::msgMouseDown(const MouseDownMessage &msg) {
+	if (msg._pos.x >= (_innerBounds.left + 10) &&
+			msg._pos.x < _innerBounds.right) {
+		int y = msg._pos.y - (_innerBounds.top + 2 * 9);
+
+		if (y >= 0) {
+			int lineNum = y / 9;
+			if (lineNum < (int)_items.size()) {
+				_selectedItem = lineNum;
+				draw();
+
+				itemSelected();
+				return true;
+			}
+		}
+	}
+
+	return PartyView::msgMouseDown(msg);
+}
+
 bool ItemsView::msgAction(const ActionMessage &msg) {
 	if (endDelay())
 		return true;
diff --git a/engines/mm/mm1/views_enh/items_view.h b/engines/mm/mm1/views_enh/items_view.h
index 04051f228e6..56c271decb2 100644
--- a/engines/mm/mm1/views_enh/items_view.h
+++ b/engines/mm/mm1/views_enh/items_view.h
@@ -84,6 +84,7 @@ public:
 	bool msgGame(const GameMessage &msg) override;
 	void draw() override;
 	bool msgKeypress(const KeypressMessage &msg) override;
+	bool msgMouseDown(const MouseDownMessage &msg) override;
 	bool msgAction(const ActionMessage &msg) override;
 	void timeout() override;
 };


Commit: 976457f9df65c1b24c1f9a3d571352614efbd711
    https://github.com/scummvm/scummvm/commit/976457f9df65c1b24c1f9a3d571352614efbd711
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-03-20T22:28:28-07:00

Commit Message:
MM: MM1: Fix clicking buttons in character info

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


diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index 8e91cd2eb0f..23c39b64aa6 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -164,16 +164,33 @@ bool CharacterInfo::msgAction(const ActionMessage &msg) {
 bool CharacterInfo::msgMouseUp(const MouseUpMessage &msg) {
 	// Check if a stat icon was clicked
 	Common::Rect r(25, 22);
-	for (int i = 0; i < ICONS_COUNT; ++i) {
+	for (int i = 0; i < CHAR_ICONS_COUNT; ++i) {
 		r.moveTo(_innerBounds.left + ICONS[i]._x,
 			_innerBounds.top + ICONS[i]._y);
 		if (r.contains(msg._pos)) {
-			showAttribute(i);
+			switch (i) {
+			case 18:
+				msgKeypress(Common::KeyState(Common::KEYCODE_i));
+				break;
+			case 19:
+				msgKeypress(Common::KeyState(Common::KEYCODE_q));
+				break;
+			case 20:
+				msgKeypress(Common::KeyState(Common::KEYCODE_e));
+				break;
+			case 21:
+				msgAction(ActionMessage(KEYBIND_ESCAPE));
+				break;
+			default:
+				showAttribute(i);
+				break;
+			}
+
 			return true;
 		}
 	}
 
-	return ScrollView::msgMouseUp(msg);
+	return PartyView::msgMouseUp(msg);
 }
 
 void CharacterInfo::draw() {




More information about the Scummvm-git-logs mailing list