[Scummvm-git-logs] scummvm master -> e7b6593e7820df89774272d4f24eed7d75e06df7
dreammaster
noreply at scummvm.org
Mon Feb 20 06:21:15 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:
7cea92d83d MM: MM1: Remove old debug code
70b65410e4 MM: MM1: Beginnings of selected spell casting
3792c23854 MM: MM1: Creating base class for views that allow switching character
e7b6593e78 MM: MM1: CharacterInfo now derives from PartyView class
Commit: 7cea92d83dd44479e4c2a707198edc4b0b331764
https://github.com/scummvm/scummvm/commit/7cea92d83dd44479e4c2a707198edc4b0b331764
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-19T19:15:03-08:00
Commit Message:
MM: MM1: Remove old debug code
Changed paths:
engines/mm/shared/utils/strings_data.cpp
diff --git a/engines/mm/shared/utils/strings_data.cpp b/engines/mm/shared/utils/strings_data.cpp
index eac84a94baa..7538337245c 100644
--- a/engines/mm/shared/utils/strings_data.cpp
+++ b/engines/mm/shared/utils/strings_data.cpp
@@ -62,10 +62,6 @@ bool StringsData::load(const Common::String &filename) {
key.trim();
value.trim();
- if (value.contains("quick")) {
- warning("%s", value.c_str());
- }
-
// Strip quotes from start and end of string
if (value.hasPrefix("\"") && value.hasSuffix("\"")) {
value.deleteChar(0);
Commit: 70b65410e4f4f5e0eccdded40dc8905132f539de
https://github.com/scummvm/scummvm/commit/70b65410e4f4f5e0eccdded40dc8905132f539de
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-19T19:15:03-08:00
Commit Message:
MM: MM1: Beginnings of selected spell casting
Changed paths:
engines/mm/mm1/game/spells_party.h
engines/mm/mm1/views_enh/spells/spellbook.cpp
engines/mm/mm1/views_enh/spells/spellbook.h
diff --git a/engines/mm/mm1/game/spells_party.h b/engines/mm/mm1/game/spells_party.h
index ec50673d2f2..d31f14a67b6 100644
--- a/engines/mm/mm1/game/spells_party.h
+++ b/engines/mm/mm1/game/spells_party.h
@@ -30,7 +30,8 @@ namespace MM {
namespace MM1 {
namespace Game {
-#define SPELLS_COUNT (47 * 2)
+#define CATEGORY_SPELLS_COUNT 47
+#define SPELLS_COUNT (CATEGORY_SPELLS_COUNT * 2)
enum SpellResult {
SR_SUCCESS_DONE, SR_SUCCESS_SILENT, SR_FAILED
@@ -178,7 +179,6 @@ public:
* Casts a spell
*/
static SpellResult cast(uint spell, Character *destChar);
- static SpellResult cast(uint spellx);
};
} // namespace Game
diff --git a/engines/mm/mm1/views_enh/spells/spellbook.cpp b/engines/mm/mm1/views_enh/spells/spellbook.cpp
index eb442711a39..ef6c41ed0be 100644
--- a/engines/mm/mm1/views_enh/spells/spellbook.cpp
+++ b/engines/mm/mm1/views_enh/spells/spellbook.cpp
@@ -20,6 +20,7 @@
*/
#include "mm/mm1/views_enh/spells/spellbook.h"
+#include "mm/mm1/game/spells_party.h"
#include "mm/mm1/globals.h"
namespace MM {
@@ -115,7 +116,7 @@ void Spellbook::draw() {
// Spell requirements
int lvl, num;
- getSpellLevelNum(47 * (_isWizard ? 1 : 0) + spellIndex, lvl, num);
+ getSpellLevelNum(CATEGORY_SPELLS_COUNT * (_isWizard ? 1 : 0) + spellIndex, lvl, num);
setSpell(g_globals->_currCharacter, lvl, num);
writeString(152, yp, Common::String::format("%d/%d",
@@ -165,17 +166,36 @@ bool Spellbook::msgKeypress(const KeypressMessage &msg) {
}
bool Spellbook::msgAction(const ActionMessage &msg) {
- if (msg._action == KEYBIND_ESCAPE) {
+ switch (msg._action) {
+ case KEYBIND_ESCAPE:
close();
return true;
- } else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
- msg._action <= KEYBIND_VIEW_PARTY6 && !g_events->isInCombat()) {
- uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
+ case KEYBIND_SELECT:
+ close();
+ castSpell();
+ return true;
- if (charNum < g_globals->_party.size())
- selectChar(charNum);
+ case KEYBIND_VIEW_PARTY1:
+ case KEYBIND_VIEW_PARTY2:
+ case KEYBIND_VIEW_PARTY3:
+ case KEYBIND_VIEW_PARTY4:
+ case KEYBIND_VIEW_PARTY5:
+ case KEYBIND_VIEW_PARTY6:
+ // This is unlikely to be triggered. Since normally '1' to '6'
+ // changes the selected character, but in this dialog,
+ // numeric keys are used to select a spell number
+ if (!g_events->isInCombat()) {
+ uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
+
+ if (charNum < g_globals->_party.size())
+ selectChar(charNum);
+ return true;
+ }
return true;
+
+ default:
+ break;
}
return false;
@@ -196,7 +216,7 @@ void Spellbook::updateChar() {
// Update fields
const Character &c = *g_globals->_currCharacter;
- _selectedIndex = (g_events->isInCombat() ? c._combatSpell : c._nonCombatSpell) % 47;
+ _selectedIndex = (g_events->isInCombat() ? c._combatSpell : c._nonCombatSpell) % CATEGORY_SPELLS_COUNT;
if (_selectedIndex == -1)
_selectedIndex = 0;
_topIndex = (_selectedIndex / 10) * 10;
@@ -212,6 +232,35 @@ void Spellbook::updateChar() {
redraw();
}
+void Spellbook::castSpell() {
+ Character &c = *g_globals->_currCharacter;
+ int spellIndex = (_isWizard ? CATEGORY_SPELLS_COUNT : 0) + _selectedIndex;
+
+ // Set the selected spell for the character
+ if (g_events->isInCombat())
+ c._combatSpell = spellIndex;
+ else
+ c._nonCombatSpell = spellIndex;
+
+ // Set the spell
+ int lvl, num;
+ getSpellLevelNum(spellIndex, lvl, num);
+ setSpell(&c, lvl, num);
+ assert(getSpellIndex(&c, lvl, num) == spellIndex);
+
+ if (!canCast()) {
+ Common::String msg = getSpellError();
+ warning("TODO: Show error - %s", msg.c_str());
+
+ } else {
+ if (hasCharTarget()) {
+ // TODO: select a character target
+ } else {
+ // TODO: Cast spell
+ }
+ }
+}
+
} // namespace Spells
} // namespace ViewsEnh
} // namespace MM1
diff --git a/engines/mm/mm1/views_enh/spells/spellbook.h b/engines/mm/mm1/views_enh/spells/spellbook.h
index bb2ddeb4b44..fe3594de27e 100644
--- a/engines/mm/mm1/views_enh/spells/spellbook.h
+++ b/engines/mm/mm1/views_enh/spells/spellbook.h
@@ -56,6 +56,11 @@ private:
*/
void updateChar();
+ /**
+ * Performs the selected spell
+ */
+ void castSpell();
+
public:
Spellbook();
virtual ~Spellbook() {
Commit: 3792c23854b09e65ac34e1ede0e719e43f70811b
https://github.com/scummvm/scummvm/commit/3792c23854b09e65ac34e1ede0e719e43f70811b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-19T22:07:41-08:00
Commit Message:
MM: MM1: Creating base class for views that allow switching character
Changed paths:
A engines/mm/mm1/views_enh/party_view.cpp
A engines/mm/mm1/views_enh/party_view.h
engines/mm/mm1/events.h
engines/mm/mm1/views_enh/game.cpp
engines/mm/mm1/views_enh/game_party.cpp
engines/mm/mm1/views_enh/game_party.h
engines/mm/mm1/views_enh/spells/cast_spell.cpp
engines/mm/mm1/views_enh/spells/cast_spell.h
engines/mm/module.mk
diff --git a/engines/mm/mm1/events.h b/engines/mm/mm1/events.h
index 6dd8a13e98e..c08402d6f24 100644
--- a/engines/mm/mm1/events.h
+++ b/engines/mm/mm1/events.h
@@ -176,6 +176,11 @@ public:
int getRandomNumber(int minNumber, int maxNumber);
int getRandomNumber(int maxNumber);
+ /**
+ * Gets the element's name
+ */
+ Common::String getName() const { return _name; }
+
/**
* Sets the element's bounds
*/
diff --git a/engines/mm/mm1/views_enh/game.cpp b/engines/mm/mm1/views_enh/game.cpp
index 54aa57d4299..6ceed2843c1 100644
--- a/engines/mm/mm1/views_enh/game.cpp
+++ b/engines/mm/mm1/views_enh/game.cpp
@@ -71,21 +71,6 @@ bool Game::msgAction(const ActionMessage &msg) {
case KEYBIND_SPELL:
addView("CastSpell");
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:
- {
- uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
- if (charNum < g_globals->_party.size()) {
- g_globals->_currCharacter = &g_globals->_party[charNum];
- addView("CharacterInfo");
- }
- return true;
- }
default:
break;
}
diff --git a/engines/mm/mm1/views_enh/game_party.cpp b/engines/mm/mm1/views_enh/game_party.cpp
index cf76b06451e..6cc9e9e84f3 100644
--- a/engines/mm/mm1/views_enh/game_party.cpp
+++ b/engines/mm/mm1/views_enh/game_party.cpp
@@ -19,7 +19,7 @@
*
*/
-#include "mm/mm1/views_enh/game_party.h"
+#include "mm/mm1/views_enh/game.h"
#include "mm/mm1/events.h"
#include "mm/mm1/globals.h"
@@ -31,13 +31,13 @@ static const byte CONDITION_COLORS[17] = {
9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
};
-const byte FACE_CONDITION_FRAMES[17] = {
+static const byte FACE_CONDITION_FRAMES[17] = {
2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
};
-const byte CHAR_FACES_X[6] = { 10, 45, 81, 117, 153, 189 };
+static const byte CHAR_FACES_X[6] = { 10, 45, 81, 117, 153, 189 };
-const byte HP_BARS_X[6] = { 13, 50, 86, 122, 158, 194 };
+static const byte HP_BARS_X[6] = { 13, 50, 86, 122, 158, 194 };
GameParty::GameParty(UIElement *owner) : TextView("GameParty", owner),
_restoreSprites("restorex.icn"),
@@ -106,6 +106,43 @@ bool GameParty::msgGame(const GameMessage &msg) {
return false;
}
+bool GameParty::msgMouseDown(const MouseDownMessage &msg) {
+ for (uint i = 0; i < g_globals->_party.size(); ++i) {
+ const Common::Rect r(CHAR_FACES_X[i], 150, CHAR_FACES_X[i] + 30, 180);
+ if (r.contains(msg._pos)) {
+ msgAction(ActionMessage((KeybindingAction)(KEYBIND_VIEW_PARTY1 + i)));
+ return true;
+ }
+ }
+
+ return false;
+}
+
+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
+ addView("CharacterInfo");
+
+ } else {
+ // Another view is focused, so simply call it to update
+ send(g_events->focusedView()->getName(), GameMessage("UPDATE"));
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+}
} // namespace ViewsEnh
} // namespace MM1
diff --git a/engines/mm/mm1/views_enh/game_party.h b/engines/mm/mm1/views_enh/game_party.h
index 65a2afd98eb..5085e4e9536 100644
--- a/engines/mm/mm1/views_enh/game_party.h
+++ b/engines/mm/mm1/views_enh/game_party.h
@@ -52,6 +52,10 @@ public:
* Handle game messages
*/
bool msgGame(const GameMessage &msg) override;
+
+ bool msgMouseDown(const MouseDownMessage &msg) override;
+
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace ViewsEnh
diff --git a/engines/mm/mm1/views_enh/party_view.cpp b/engines/mm/mm1/views_enh/party_view.cpp
new file mode 100644
index 00000000000..83a89e59a17
--- /dev/null
+++ b/engines/mm/mm1/views_enh/party_view.cpp
@@ -0,0 +1,56 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "mm/mm1/views_enh/party_view.h"
+#include "mm/mm1/views_enh/game_party.h"
+#include "mm/mm1/events.h"
+#include "mm/mm1/globals.h"
+#include "mm/mm1/mm1.h"
+
+namespace MM {
+namespace MM1 {
+namespace ViewsEnh {
+
+bool PartyView::msgFocus(const FocusMessage &msg) {
+ // Turn on highlight for selected character
+ if (!g_globals->_currCharacter)
+ g_globals->_currCharacter = &g_globals->_party[0];
+
+ g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)true));
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
+ return true;
+}
+
+bool PartyView::msgUnfocus(const UnfocusMessage &msg) {
+ // Turn off highlight for selected character
+ g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)false));
+
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MENUS);
+ return true;
+}
+
+bool PartyView::msgMouseDown(const MouseDownMessage &msg) {
+ return send("GameParty", msg);
+}
+
+} // 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
new file mode 100644
index 00000000000..b92bfd54ee3
--- /dev/null
+++ b/engines/mm/mm1/views_enh/party_view.h
@@ -0,0 +1,47 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef MM1_VIEWS_ENH_PARTY_VIEW_H
+#define MM1_VIEWS_ENH_PARTY_VIEW_H
+
+#include "mm/mm1/views_enh/scroll_view.h"
+
+namespace MM {
+namespace MM1 {
+namespace ViewsEnh {
+
+class PartyView : public ScrollView {
+public:
+ PartyView(const Common::String &name) : ScrollView(name) {}
+ PartyView(const Common::String &name, UIElement *owner) :
+ ScrollView(name, owner) {}
+ virtual ~PartyView() {}
+
+ bool msgFocus(const FocusMessage &msg) override;
+ bool msgUnfocus(const UnfocusMessage &msg) override;
+ bool msgMouseDown(const MouseDownMessage &msg) override;
+};
+
+} // namespace ViewsEnh
+} // namespace MM1
+} // namespace MM
+
+#endif
diff --git a/engines/mm/mm1/views_enh/spells/cast_spell.cpp b/engines/mm/mm1/views_enh/spells/cast_spell.cpp
index e77b1a01ae9..ead695e0658 100644
--- a/engines/mm/mm1/views_enh/spells/cast_spell.cpp
+++ b/engines/mm/mm1/views_enh/spells/cast_spell.cpp
@@ -27,7 +27,7 @@ namespace MM1 {
namespace ViewsEnh {
namespace Spells {
-CastSpell::CastSpell() : ScrollView("CastSpell") {
+CastSpell::CastSpell() : PartyView("CastSpell") {
_bounds = Common::Rect(225, 0, 320, 146);
_icons.load("cast.icn");
@@ -39,21 +39,8 @@ CastSpell::CastSpell() : ScrollView("CastSpell") {
}
bool CastSpell::msgFocus(const FocusMessage &msg) {
- // Turn on highlight for selected character
- if (!g_globals->_currCharacter)
- g_globals->_currCharacter = &g_globals->_party[0];
+ (void)PartyView::msgFocus(msg);
updateSelectedSpell();
-
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)true));
- MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
- return true;
-}
-
-bool CastSpell::msgUnfocus(const UnfocusMessage &msg) {
- // Turn off highlight for selected character
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)false));
-
- MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MENUS);
return true;
}
diff --git a/engines/mm/mm1/views_enh/spells/cast_spell.h b/engines/mm/mm1/views_enh/spells/cast_spell.h
index 5bc9411024d..108f334f118 100644
--- a/engines/mm/mm1/views_enh/spells/cast_spell.h
+++ b/engines/mm/mm1/views_enh/spells/cast_spell.h
@@ -24,7 +24,7 @@
#include "mm/mm1/messages.h"
#include "mm/mm1/game/spell_casting.h"
-#include "mm/mm1/views_enh/scroll_view.h"
+#include "mm/mm1/views_enh/party_view.h"
namespace MM {
namespace MM1 {
@@ -34,7 +34,7 @@ namespace Spells {
/**
* Dialog for casting a spell
*/
-class CastSpell : public ScrollView, public MM1::Game::SpellCasting {
+class CastSpell : public PartyView, public MM1::Game::SpellCasting {
private:
Shared::Xeen::SpriteResource _icons;
@@ -49,7 +49,6 @@ public:
void draw() override;
bool msgFocus(const FocusMessage &msg) override;
- bool msgUnfocus(const UnfocusMessage &msg) override;
bool msgKeypress(const KeypressMessage &msg) override;
bool msgAction(const ActionMessage &msg) override;
bool msgGame(const GameMessage &msg) override;
diff --git a/engines/mm/module.mk b/engines/mm/module.mk
index 0120fabebcd..d9854c53c10 100644
--- a/engines/mm/module.mk
+++ b/engines/mm/module.mk
@@ -131,6 +131,7 @@ MODULE_OBJS += \
mm1/views_enh/main_menu.o \
mm1/views_enh/map.o \
mm1/views_enh/map_popup.o \
+ mm1/views_enh/party_view.o \
mm1/views_enh/quick_ref.o \
mm1/views_enh/scroll_popup.o \
mm1/views_enh/scroll_text.o \
Commit: e7b6593e7820df89774272d4f24eed7d75e06df7
https://github.com/scummvm/scummvm/commit/e7b6593e7820df89774272d4f24eed7d75e06df7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-19T22:20:58-08:00
Commit Message:
MM: MM1: CharacterInfo now derives from PartyView class
Changed paths:
engines/mm/mm1/views_enh/character_info.cpp
engines/mm/mm1/views_enh/character_info.h
engines/mm/mm1/views_enh/party_view.cpp
engines/mm/mm1/views_enh/party_view.h
engines/mm/mm1/views_enh/spells/cast_spell.cpp
diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index 0a40bab66f2..6c2bbc1dbc0 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -62,7 +62,7 @@ const CharacterInfo::IconPos CharacterInfo::ICONS[CHAR_ICONS_COUNT] = {
CharacterInfo::CharacterInfo() :
- ScrollView("CharacterInfo"), _statInfo("ScrollText") {
+ PartyView("CharacterInfo"), _statInfo("ScrollText") {
_bounds = Common::Rect(0, 0, 320, 146);
_statInfo.setReduced(true);
@@ -82,28 +82,16 @@ CharacterInfo::CharacterInfo() :
bool CharacterInfo::msgFocus(const FocusMessage &msg) {
_viewIcon.load("view.icn");
- MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
-
- // Turn on highlight for selected character
- if (!g_globals->_currCharacter)
- g_globals->_currCharacter = &g_globals->_party[0];
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)true));
-
_cursorCell = 0;
showCursor(true);
delayFrames(CURSOR_BLINK_FRAMES);
- return ScrollView::msgFocus(msg);
+ return PartyView::msgFocus(msg);
}
bool CharacterInfo::msgUnfocus(const UnfocusMessage &msg) {
_viewIcon.clear();
-
- // Turn off highlight for selected character
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)false));
-
- MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MENUS);
- return ScrollView::msgUnfocus(msg);
+ return PartyView::msgUnfocus(msg);
}
bool CharacterInfo::msgKeypress(const KeypressMessage &msg) {
@@ -156,17 +144,8 @@ bool CharacterInfo::msgAction(const ActionMessage &msg) {
if (msg._action == KEYBIND_ESCAPE) {
close();
return true;
- } else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
- msg._action <= KEYBIND_VIEW_PARTY6) {
- uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
- if (charNum < g_globals->_party.size()) {
- g_globals->_currCharacter = &g_globals->_party[
- msg._action - KEYBIND_VIEW_PARTY1];
- g_events->findView("GameParty")->draw();
- redraw();
- }
-
- return true;
+ } else {
+ return PartyView::msgAction(msg);
}
return false;
diff --git a/engines/mm/mm1/views_enh/character_info.h b/engines/mm/mm1/views_enh/character_info.h
index 876af592b47..7e01ab8899d 100644
--- a/engines/mm/mm1/views_enh/character_info.h
+++ b/engines/mm/mm1/views_enh/character_info.h
@@ -22,7 +22,7 @@
#ifndef MM1_VIEWS_ENH_CHARACTER_INFO_H
#define MM1_VIEWS_ENH_CHARACTER_INFO_H
-#include "mm/mm1/views_enh/scroll_view.h"
+#include "mm/mm1/views_enh/party_view.h"
#include "mm/mm1/views_enh/scroll_popup.h"
#include "mm/shared/xeen/sprites.h"
@@ -32,7 +32,7 @@ namespace ViewsEnh {
#define CHAR_ICONS_COUNT 22
-class CharacterInfo : public ScrollView {
+class CharacterInfo : public PartyView {
struct IconPos {
int _frame; int _x; int _y;
};
diff --git a/engines/mm/mm1/views_enh/party_view.cpp b/engines/mm/mm1/views_enh/party_view.cpp
index 83a89e59a17..c93e6f6b2f4 100644
--- a/engines/mm/mm1/views_enh/party_view.cpp
+++ b/engines/mm/mm1/views_enh/party_view.cpp
@@ -34,14 +34,14 @@ bool PartyView::msgFocus(const FocusMessage &msg) {
if (!g_globals->_currCharacter)
g_globals->_currCharacter = &g_globals->_party[0];
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)true));
+ g_events->send("GameParty", GameMessage("CHAR_HIGHLIGHT", (int)true));
MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
return true;
}
bool PartyView::msgUnfocus(const UnfocusMessage &msg) {
// Turn off highlight for selected character
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)false));
+ g_events->send("GameParty", GameMessage("CHAR_HIGHLIGHT", (int)false));
MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MENUS);
return true;
@@ -51,6 +51,22 @@ bool PartyView::msgMouseDown(const MouseDownMessage &msg) {
return send("GameParty", msg);
}
+bool PartyView::msgGame(const GameMessage &msg) {
+ if (msg._name == "UPDATE") {
+ draw();
+ return true;
+ }
+
+ return true;
+}
+
+bool PartyView::msgAction(const ActionMessage &msg) {
+ if (msg._action >= KEYBIND_VIEW_PARTY1 &&
+ msg._action <= KEYBIND_VIEW_PARTY6)
+ return send("GameParty", msg);
+ return false;
+}
+
} // 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 b92bfd54ee3..487a425a7e1 100644
--- a/engines/mm/mm1/views_enh/party_view.h
+++ b/engines/mm/mm1/views_enh/party_view.h
@@ -38,6 +38,8 @@ public:
bool msgFocus(const FocusMessage &msg) override;
bool msgUnfocus(const UnfocusMessage &msg) override;
bool msgMouseDown(const MouseDownMessage &msg) override;
+ bool msgGame(const GameMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace ViewsEnh
diff --git a/engines/mm/mm1/views_enh/spells/cast_spell.cpp b/engines/mm/mm1/views_enh/spells/cast_spell.cpp
index ead695e0658..4b3f02bec57 100644
--- a/engines/mm/mm1/views_enh/spells/cast_spell.cpp
+++ b/engines/mm/mm1/views_enh/spells/cast_spell.cpp
@@ -91,9 +91,9 @@ bool CastSpell::msgKeypress(const KeypressMessage &msg) {
// Select a new spell
addView("Spellbook");
return true;
+ } else {
+ return PartyView::msgKeypress(msg);
}
-
- return false;
}
bool CastSpell::msgAction(const ActionMessage &msg) {
@@ -101,17 +101,8 @@ bool CastSpell::msgAction(const ActionMessage &msg) {
close();
return true;
- } else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
- msg._action <= KEYBIND_VIEW_PARTY6) {
- uint charNum = msg._action - KEYBIND_VIEW_PARTY1;
- if (charNum < g_globals->_party.size()) {
- g_globals->_currCharacter = &g_globals->_party[
- msg._action - KEYBIND_VIEW_PARTY1];
- updateSelectedSpell();
- g_events->send(GameMessage("CHAR_HIGHLIGHT", (int)true));
- redraw();
- return true;
- }
+ } else {
+ return PartyView::msgAction(msg);
}
return false;
More information about the Scummvm-git-logs
mailing list