[Scummvm-git-logs] scummvm master -> 9b3b00b598aaea156208dfd1cae2cd3d5a3f0dbc
dreammaster
noreply at scummvm.org
Thu Feb 9 03:44:17 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:
779a1c76ea MM: MM1: Handle escape/select actions in messages view
9b3b00b598 MM: MM1: update remaining views to use Escape/Select actions
Commit: 779a1c76ea10de377c65a1f6397e336d7da3c410
https://github.com/scummvm/scummvm/commit/779a1c76ea10de377c65a1f6397e336d7da3c410
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-08T18:49:40-08:00
Commit Message:
MM: MM1: Handle escape/select actions in messages view
Changed paths:
engines/mm/mm1/views/game_messages.cpp
engines/mm/mm1/views_enh/game_messages.cpp
diff --git a/engines/mm/mm1/views/game_messages.cpp b/engines/mm/mm1/views/game_messages.cpp
index 493d9df1b76..994bf1255ff 100644
--- a/engines/mm/mm1/views/game_messages.cpp
+++ b/engines/mm/mm1/views/game_messages.cpp
@@ -121,11 +121,19 @@ bool GameMessages::msgAction(const ActionMessage &msg) {
switch (msg._action) {
case KEYBIND_ESCAPE:
- close();
+ if (_keyCallback) {
+ _keyCallback(Common::KeyState(Common::KEYCODE_ESCAPE));
+ } else {
+ close();
+ }
return true;
case KEYBIND_SELECT:
- close();
- _ynCallback();
+ if (_keyCallback) {
+ _keyCallback(Common::KeyState(Common::KEYCODE_RETURN));
+ } else {
+ close();
+ _ynCallback();
+ }
return true;
default:
break;
diff --git a/engines/mm/mm1/views_enh/game_messages.cpp b/engines/mm/mm1/views_enh/game_messages.cpp
index c6039d6c349..6f01c5a5cb7 100644
--- a/engines/mm/mm1/views_enh/game_messages.cpp
+++ b/engines/mm/mm1/views_enh/game_messages.cpp
@@ -111,13 +111,21 @@ bool GameMessages::msgAction(const ActionMessage &msg) {
if (g_events->focusedView()) {
switch (msg._action) {
case KEYBIND_ESCAPE:
- close();
- g_events->drawElements();
+ if (_keyCallback) {
+ _keyCallback(Common::KeyState(Common::KEYCODE_ESCAPE));
+ } else {
+ close();
+ g_events->drawElements();
+ }
return true;
case KEYBIND_SELECT:
- close();
- g_events->drawElements();
- _ynCallback();
+ if (_keyCallback) {
+ _keyCallback(Common::KeyState(Common::KEYCODE_RETURN));
+ } else {
+ close();
+ g_events->drawElements();
+ _ynCallback();
+ }
return true;
default:
break;
Commit: 9b3b00b598aaea156208dfd1cae2cd3d5a3f0dbc
https://github.com/scummvm/scummvm/commit/9b3b00b598aaea156208dfd1cae2cd3d5a3f0dbc
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-08T19:43:59-08:00
Commit Message:
MM: MM1: update remaining views to use Escape/Select actions
Changed paths:
engines/mm/mm1/views/character_base.cpp
engines/mm/mm1/views/character_base.h
engines/mm/mm1/views/character_manage.cpp
engines/mm/mm1/views/characters.cpp
engines/mm/mm1/views/characters.h
engines/mm/mm1/views/combat.cpp
engines/mm/mm1/views/locations/blacksmith_subview.cpp
engines/mm/mm1/views/locations/blacksmith_subview.h
engines/mm/mm1/views/maps/dog_statue.cpp
engines/mm/mm1/views/maps/dog_statue.h
engines/mm/mm1/views/rest.cpp
engines/mm/mm1/views/rest.h
engines/mm/mm1/views/search.cpp
engines/mm/mm1/views/search.h
engines/mm/mm1/views/spells/cast_spell.cpp
engines/mm/mm1/views/spells/cast_spell.h
engines/mm/mm1/views/spells/duplication.cpp
engines/mm/mm1/views/spells/duplication.h
engines/mm/mm1/views/spells/fly.cpp
engines/mm/mm1/views/spells/fly.h
engines/mm/mm1/views/spells/recharge_item.cpp
engines/mm/mm1/views/spells/recharge_item.h
engines/mm/mm1/views/spells/teleport.cpp
engines/mm/mm1/views/spells/teleport.h
engines/mm/mm1/views/text_entry.cpp
engines/mm/mm1/views/text_entry.h
engines/mm/mm1/views/unlock.cpp
engines/mm/mm1/views/unlock.h
engines/mm/mm1/views_enh/locations/market.cpp
engines/mm/mm1/views_enh/locations/market.h
engines/mm/mm1/views_enh/locations/temple.cpp
engines/mm/mm1/views_enh/locations/temple.h
diff --git a/engines/mm/mm1/views/character_base.cpp b/engines/mm/mm1/views/character_base.cpp
index 75b6f9bcdd8..5706081faae 100644
--- a/engines/mm/mm1/views/character_base.cpp
+++ b/engines/mm/mm1/views/character_base.cpp
@@ -165,8 +165,8 @@ void CharacterBase::draw() {
printStats();
}
-bool CharacterBase::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
+bool CharacterBase::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
close();
return true;
}
diff --git a/engines/mm/mm1/views/character_base.h b/engines/mm/mm1/views/character_base.h
index 44e7bac42c5..7ddc4140f3b 100644
--- a/engines/mm/mm1/views/character_base.h
+++ b/engines/mm/mm1/views/character_base.h
@@ -48,7 +48,7 @@ public:
CharacterBase(const Common::String &name) : TextView(name) {}
~CharacterBase() {}
- bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
void draw() override;
};
diff --git a/engines/mm/mm1/views/character_manage.cpp b/engines/mm/mm1/views/character_manage.cpp
index 454b558cb7e..3fc45a4ba7c 100644
--- a/engines/mm/mm1/views/character_manage.cpp
+++ b/engines/mm/mm1/views/character_manage.cpp
@@ -51,17 +51,6 @@ void CharacterManage::draw() {
}
bool CharacterManage::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- if (_state != DISPLAY) {
- redraw();
- } else {
- close();
- }
-
- _state = DISPLAY;
- return true;
- }
-
switch (_state) {
case DISPLAY:
if ((msg.flags & Common::KBD_CTRL) && msg.keycode == Common::KEYCODE_n) {
@@ -108,7 +97,16 @@ bool CharacterManage::msgKeypress(const KeypressMessage &msg) {
}
bool CharacterManage::msgAction(const ActionMessage &msg) {
- if (msg._action >= KEYBIND_VIEW_PARTY1 &&
+ if (msg._action == KEYBIND_ESCAPE) {
+ if (_state != DISPLAY) {
+ redraw();
+ } else {
+ close();
+ }
+
+ _state = DISPLAY;
+ return true;
+ } else if (msg._action >= KEYBIND_VIEW_PARTY1 &&
msg._action <= KEYBIND_VIEW_PARTY6 &&
_state == DISPLAY) {
g_globals->_currCharacter = &g_globals->_party[
diff --git a/engines/mm/mm1/views/characters.cpp b/engines/mm/mm1/views/characters.cpp
index bc8eeb07b6b..93b0ce69694 100644
--- a/engines/mm/mm1/views/characters.cpp
+++ b/engines/mm/mm1/views/characters.cpp
@@ -73,9 +73,7 @@ void Characters::draw() {
}
bool Characters::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- close();
- } else if (msg.keycode >= Common::KEYCODE_a &&
+ if (msg.keycode >= Common::KEYCODE_a &&
msg.keycode <= (Common::KEYCODE_a + (int)_charIndexes.size() - 1)) {
// Character selected
uint charIndex = _charIndexes[msg.keycode - Common::KEYCODE_a];
@@ -86,6 +84,15 @@ bool Characters::msgKeypress(const KeypressMessage &msg) {
return false;
}
+bool Characters::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Views
} // namespace MM1
} // namespace MM
diff --git a/engines/mm/mm1/views/characters.h b/engines/mm/mm1/views/characters.h
index 637af201acd..7196995cae6 100644
--- a/engines/mm/mm1/views/characters.h
+++ b/engines/mm/mm1/views/characters.h
@@ -43,6 +43,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/combat.cpp b/engines/mm/mm1/views/combat.cpp
index 45c4db65828..dd9913b8697 100644
--- a/engines/mm/mm1/views/combat.cpp
+++ b/engines/mm/mm1/views/combat.cpp
@@ -232,11 +232,6 @@ bool Combat::msgKeypress(const KeypressMessage &msg) {
return true;
if (_mode == SELECT_OPTION && _option != OPTION_NONE) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- combatLoop();
- return true;
- }
-
switch (_option) {
case OPTION_FIGHT:
case OPTION_SHOOT:
diff --git a/engines/mm/mm1/views/locations/blacksmith_subview.cpp b/engines/mm/mm1/views/locations/blacksmith_subview.cpp
index ec6869900ee..3e6db4516d3 100644
--- a/engines/mm/mm1/views/locations/blacksmith_subview.cpp
+++ b/engines/mm/mm1/views/locations/blacksmith_subview.cpp
@@ -58,9 +58,6 @@ void BlacksmithSubview::drawIsAllowed() {
bool BlacksmithSubview::msgKeypress(const KeypressMessage &msg) {
switch (msg.keycode) {
- case Common::KEYCODE_ESCAPE:
- close();
- break;
case Common::KEYCODE_a:
case Common::KEYCODE_b:
case Common::KEYCODE_c:
@@ -77,6 +74,15 @@ bool BlacksmithSubview::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool BlacksmithSubview::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ return true;
+ }
+
+ return false;
+}
+
void BlacksmithSubview::selectItem(uint index) {
switch (g_globals->_currCharacter->buyItem(
_items[index])) {
diff --git a/engines/mm/mm1/views/locations/blacksmith_subview.h b/engines/mm/mm1/views/locations/blacksmith_subview.h
index 8fac8ced4bf..1e680ac60dd 100644
--- a/engines/mm/mm1/views/locations/blacksmith_subview.h
+++ b/engines/mm/mm1/views/locations/blacksmith_subview.h
@@ -53,6 +53,7 @@ public:
BlacksmithSubview(const Common::String &name) : Location(name) {}
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Locations
diff --git a/engines/mm/mm1/views/maps/dog_statue.cpp b/engines/mm/mm1/views/maps/dog_statue.cpp
index db87f6179ba..bb71443a676 100644
--- a/engines/mm/mm1/views/maps/dog_statue.cpp
+++ b/engines/mm/mm1/views/maps/dog_statue.cpp
@@ -65,8 +65,7 @@ void DogStatue::draw() {
}
bool DogStatue::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_y || msg.keycode == Common::KEYCODE_n ||
- msg.keycode == Common::KEYCODE_ESCAPE) {
+ if (msg.keycode == Common::KEYCODE_y || msg.keycode == Common::KEYCODE_n) {
MM1::Maps::Map42 &map = *static_cast<MM1::Maps::Map42 *>(g_maps->_currentMap);
close();
@@ -78,6 +77,21 @@ bool DogStatue::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool DogStatue::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE || msg._action == KEYBIND_SELECT) {
+ MM1::Maps::Map42 &map = *static_cast<MM1::Maps::Map42 *>(g_maps->_currentMap);
+ close();
+
+ if (msg._action == KEYBIND_SELECT)
+ map.dogDesecrate();
+
+ return true;
+ }
+
+ return false;
+}
+
+
} // namespace Maps
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/maps/dog_statue.h b/engines/mm/mm1/views/maps/dog_statue.h
index 18076bcbc7d..74ce5192ace 100644
--- a/engines/mm/mm1/views/maps/dog_statue.h
+++ b/engines/mm/mm1/views/maps/dog_statue.h
@@ -39,6 +39,7 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Maps
diff --git a/engines/mm/mm1/views/rest.cpp b/engines/mm/mm1/views/rest.cpp
index 7752f27e8f6..77afd761240 100644
--- a/engines/mm/mm1/views/rest.cpp
+++ b/engines/mm/mm1/views/rest.cpp
@@ -57,8 +57,7 @@ void Rest::draw() {
bool Rest::msgKeypress(const KeypressMessage &msg) {
if (_mode == CONFIRM) {
- if (msg.keycode == Common::KEYCODE_ESCAPE ||
- msg.keycode == Common::KEYCODE_n) {
+ if (msg.keycode == Common::KEYCODE_n) {
close();
} else if (msg.keycode == Common::KEYCODE_y) {
close();
@@ -69,6 +68,19 @@ bool Rest::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Rest::msgAction(const ActionMessage &msg) {
+ if (_mode == CONFIRM) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ } else if (msg._action == KEYBIND_SELECT) {
+ close();
+ Game::Rest::check();
+ }
+ }
+
+ return true;
+}
+
void Rest::tooDangerous() {
_mode = TOO_DANGEROUS;
clearSurface();
diff --git a/engines/mm/mm1/views/rest.h b/engines/mm/mm1/views/rest.h
index 85c3effe68d..de204cf6d32 100644
--- a/engines/mm/mm1/views/rest.h
+++ b/engines/mm/mm1/views/rest.h
@@ -41,6 +41,7 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
bool msgGame(const GameMessage &msg) override;
void timeout() override;
};
diff --git a/engines/mm/mm1/views/search.cpp b/engines/mm/mm1/views/search.cpp
index 2d6bff703cd..6f99f8df561 100644
--- a/engines/mm/mm1/views/search.cpp
+++ b/engines/mm/mm1/views/search.cpp
@@ -122,9 +122,6 @@ bool Search::msgKeypress(const KeypressMessage &msg) {
case OPTIONS:
switch (msg.keycode) {
- case Common::KEYCODE_ESCAPE:
- close();
- break;
case Common::KEYCODE_1:
openContainer();
break;
@@ -144,11 +141,7 @@ bool Search::msgKeypress(const KeypressMessage &msg) {
break;
case WHO_WILL_TRY:
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- _mode = OPTIONS;
- draw();
-
- } else if (msg.keycode >= Common::KEYCODE_1 &&
+ if (msg.keycode >= Common::KEYCODE_1 &&
msg.keycode <= (Common::KEYCODE_0 + (int)g_globals->_party.size())) {
// Character selected
g_globals->_currCharacter = &g_globals->_party[
@@ -167,7 +160,7 @@ bool Search::msgKeypress(const KeypressMessage &msg) {
break;
case GET_TREASURE:
-
+ break;
default:
break;
@@ -176,6 +169,29 @@ bool Search::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Search::msgAction(const ActionMessage &msg) {
+ if (endDelay())
+ return true;
+
+ if (msg._action == KEYBIND_ESCAPE) {
+ switch (_mode) {
+ case OPTIONS:
+ close();
+ break;
+ case WHO_WILL_TRY:
+ _mode = OPTIONS;
+ draw();
+ break;
+ default:
+ break;
+ }
+
+ return true;
+ }
+
+ return true;
+}
+
void Search::timeout() {
switch (_mode) {
case INITIAL: {
diff --git a/engines/mm/mm1/views/search.h b/engines/mm/mm1/views/search.h
index 6c18b6cd2d4..5ab9fa6569e 100644
--- a/engines/mm/mm1/views/search.h
+++ b/engines/mm/mm1/views/search.h
@@ -85,6 +85,7 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
void timeout() override;
};
diff --git a/engines/mm/mm1/views/spells/cast_spell.cpp b/engines/mm/mm1/views/spells/cast_spell.cpp
index bfed318fb8a..09b09b81a3e 100644
--- a/engines/mm/mm1/views/spells/cast_spell.cpp
+++ b/engines/mm/mm1/views/spells/cast_spell.cpp
@@ -160,21 +160,15 @@ void CastSpell::spellNumberEntered(uint num) {
}
}
-bool CastSpell::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
+bool CastSpell::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
close();
- } else if (_state == PRESS_ENTER) {
- if (msg.keycode == Common::KEYCODE_RETURN) {
- // Time to execute the spell
- performSpell();
- }
- }
- return true;
-}
+ } else if (msg._action == KEYBIND_SELECT) {
+ // Time to execute the spell
+ performSpell();
-bool CastSpell::msgAction(const ActionMessage &msg) {
- if (_state == SELECT_CHAR &&
+ } else if (_state == SELECT_CHAR &&
msg._action >= KEYBIND_VIEW_PARTY1 &&
msg._action <= KEYBIND_VIEW_PARTY6) {
uint charIndex = (int)(msg._action - KEYBIND_VIEW_PARTY1);
diff --git a/engines/mm/mm1/views/spells/cast_spell.h b/engines/mm/mm1/views/spells/cast_spell.h
index 21275e20487..1c8e44a0f12 100644
--- a/engines/mm/mm1/views/spells/cast_spell.h
+++ b/engines/mm/mm1/views/spells/cast_spell.h
@@ -74,7 +74,6 @@ public:
bool msgValue(const ValueMessage &msg) override;
bool msgUnfocus(const UnfocusMessage &msg) override;
void draw() override;
- bool msgKeypress(const KeypressMessage &msg) override;
bool msgAction(const ActionMessage &msg) override;
void timeout() override;
};
diff --git a/engines/mm/mm1/views/spells/duplication.cpp b/engines/mm/mm1/views/spells/duplication.cpp
index 7a291c48c69..fb5b01ed19a 100644
--- a/engines/mm/mm1/views/spells/duplication.cpp
+++ b/engines/mm/mm1/views/spells/duplication.cpp
@@ -49,10 +49,7 @@ void Duplication::draw() {
bool Duplication::msgKeypress(const KeypressMessage &msg) {
Inventory &inv = g_globals->_currCharacter->_backpack;
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- spellFailed();
-
- } else if (msg.keycode >= Common::KEYCODE_a &&
+ if (msg.keycode >= Common::KEYCODE_a &&
msg.keycode < (Common::KEYCODE_a + (int)inv.size())) {
int itemIndex = msg.keycode - Common::KEYCODE_a;
@@ -79,6 +76,15 @@ bool Duplication::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Duplication::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ spellFailed();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Spells
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/spells/duplication.h b/engines/mm/mm1/views/spells/duplication.h
index 72035b665cb..949f056b6d9 100644
--- a/engines/mm/mm1/views/spells/duplication.h
+++ b/engines/mm/mm1/views/spells/duplication.h
@@ -67,6 +67,11 @@ public:
* Keypress handler
*/
bool msgKeypress(const KeypressMessage &msg) override;
+
+ /**
+ * Action handler
+ */
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Spells
diff --git a/engines/mm/mm1/views/spells/fly.cpp b/engines/mm/mm1/views/spells/fly.cpp
index 31c726a29be..fcf4195c359 100644
--- a/engines/mm/mm1/views/spells/fly.cpp
+++ b/engines/mm/mm1/views/spells/fly.cpp
@@ -65,11 +65,7 @@ void Fly::draw() {
}
bool Fly::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- close();
- _callback(-1);
-
- } else if (_mode == SELECT_X && msg.keycode >= Common::KEYCODE_a
+ if (_mode == SELECT_X && msg.keycode >= Common::KEYCODE_a
&& msg.keycode <= Common::KEYCODE_d) {
// X map selected
_mode = SELECT_Y;
@@ -93,6 +89,16 @@ bool Fly::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Fly::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ _callback(-1);
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Spells
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/spells/fly.h b/engines/mm/mm1/views/spells/fly.h
index 7d178eb8bcc..cdf5abdede6 100644
--- a/engines/mm/mm1/views/spells/fly.h
+++ b/engines/mm/mm1/views/spells/fly.h
@@ -74,6 +74,11 @@ public:
* Keypress handler
*/
bool msgKeypress(const KeypressMessage &msg) override;
+
+ /**
+ * Action handler
+ */
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Spells
diff --git a/engines/mm/mm1/views/spells/recharge_item.cpp b/engines/mm/mm1/views/spells/recharge_item.cpp
index 70976a88944..79a6c9fe807 100644
--- a/engines/mm/mm1/views/spells/recharge_item.cpp
+++ b/engines/mm/mm1/views/spells/recharge_item.cpp
@@ -49,10 +49,7 @@ void RechargeItem::draw() {
bool RechargeItem::msgKeypress(const KeypressMessage &msg) {
Inventory &inv = g_globals->_currCharacter->_backpack;
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- spellFailed();
-
- } else if (msg.keycode >= Common::KEYCODE_a &&
+ if (msg.keycode >= Common::KEYCODE_a &&
msg.keycode < (Common::KEYCODE_a + (int)inv.size())) {
int itemIndex = msg.keycode - Common::KEYCODE_a;
Item *item = g_globals->_items.getItem(inv[itemIndex]._id);
@@ -73,6 +70,15 @@ bool RechargeItem::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool RechargeItem::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ spellFailed();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Spells
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/spells/recharge_item.h b/engines/mm/mm1/views/spells/recharge_item.h
index 3f08909e1d8..4982b08efc7 100644
--- a/engines/mm/mm1/views/spells/recharge_item.h
+++ b/engines/mm/mm1/views/spells/recharge_item.h
@@ -55,6 +55,11 @@ public:
* Keypress handler
*/
bool msgKeypress(const KeypressMessage &msg) override;
+
+ /**
+ * Action handler
+ */
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Spells
diff --git a/engines/mm/mm1/views/spells/teleport.cpp b/engines/mm/mm1/views/spells/teleport.cpp
index c3605fd522a..56713cbda4c 100644
--- a/engines/mm/mm1/views/spells/teleport.cpp
+++ b/engines/mm/mm1/views/spells/teleport.cpp
@@ -62,10 +62,7 @@ void Teleport::draw() {
}
bool Teleport::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- close();
-
- } else if (_mode == SELECT_DIRECTION && (
+ if (_mode == SELECT_DIRECTION && (
msg.keycode == Common::KEYCODE_n ||
msg.keycode == Common::KEYCODE_s ||
msg.keycode == Common::KEYCODE_e ||
@@ -88,6 +85,15 @@ bool Teleport::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Teleport::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ return true;
+ }
+
+ return false;
+}
+
void Teleport::teleport() {
Maps::Maps &maps = *g_maps;
Maps::Map &map = *maps._currentMap;
diff --git a/engines/mm/mm1/views/spells/teleport.h b/engines/mm/mm1/views/spells/teleport.h
index bd7c0d5fec4..8917d0948fc 100644
--- a/engines/mm/mm1/views/spells/teleport.h
+++ b/engines/mm/mm1/views/spells/teleport.h
@@ -72,6 +72,11 @@ public:
* Keypress handler
*/
bool msgKeypress(const KeypressMessage &msg) override;
+
+ /**
+ * Action handler
+ */
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Spells
diff --git a/engines/mm/mm1/views/text_entry.cpp b/engines/mm/mm1/views/text_entry.cpp
index ef0b6bc0447..a04694d2ce5 100644
--- a/engines/mm/mm1/views/text_entry.cpp
+++ b/engines/mm/mm1/views/text_entry.cpp
@@ -51,12 +51,7 @@ void TextEntry::drawText() {
bool TextEntry::msgKeypress(const KeypressMessage &msg) {
Common::KeyCode kc = msg.keycode;
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- drawText();
- close();
- _abortFn();
- return true;
- } else if (msg.keycode == Common::KEYCODE_BACKSPACE &&
+ if (msg.keycode == Common::KEYCODE_BACKSPACE &&
!_text.empty()) {
_text.deleteLastChar();
drawText();
@@ -85,6 +80,17 @@ bool TextEntry::msgKeypress(const KeypressMessage &msg) {
return false;
}
+bool TextEntry::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ drawText();
+ close();
+ _abortFn();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Views
} // namespace MM1
} // namespace MM
diff --git a/engines/mm/mm1/views/text_entry.h b/engines/mm/mm1/views/text_entry.h
index a1faddeb373..ed7f39fcf4b 100644
--- a/engines/mm/mm1/views/text_entry.h
+++ b/engines/mm/mm1/views/text_entry.h
@@ -52,6 +52,8 @@ public:
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
+
void display(int x, int y, int maxLen, bool isNumeric,
Abort abortFn, Enter enterFn);
};
diff --git a/engines/mm/mm1/views/unlock.cpp b/engines/mm/mm1/views/unlock.cpp
index bef7d72c39e..01f9849b493 100644
--- a/engines/mm/mm1/views/unlock.cpp
+++ b/engines/mm/mm1/views/unlock.cpp
@@ -80,10 +80,7 @@ void Unlock::draw() {
}
bool Unlock::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_ESCAPE) {
- close();
-
- } else if (msg.keycode >= Common::KEYCODE_1 &&
+ if (msg.keycode >= Common::KEYCODE_1 &&
msg.keycode <= (Common::KEYCODE_0 + (int)g_globals->_party.size())) {
// Character selected
charSelected(msg.keycode - Common::KEYCODE_1);
@@ -92,6 +89,15 @@ bool Unlock::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Unlock::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_ESCAPE) {
+ close();
+ return true;
+ }
+
+ return false;
+}
+
void Unlock::charSelected(uint charIndex) {
Character &c = g_globals->_party[charIndex];
g_globals->_currCharacter = &c;
diff --git a/engines/mm/mm1/views/unlock.h b/engines/mm/mm1/views/unlock.h
index 41db9d33ed0..c2d4fa837b8 100644
--- a/engines/mm/mm1/views/unlock.h
+++ b/engines/mm/mm1/views/unlock.h
@@ -40,6 +40,7 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Views
diff --git a/engines/mm/mm1/views_enh/locations/market.cpp b/engines/mm/mm1/views_enh/locations/market.cpp
index 04178149743..15818feb1d8 100644
--- a/engines/mm/mm1/views_enh/locations/market.cpp
+++ b/engines/mm/mm1/views_enh/locations/market.cpp
@@ -71,7 +71,6 @@ bool Market::msgKeypress(const KeypressMessage &msg) {
buyFood();
return true;
case Common::KEYCODE_n:
- case Common::KEYCODE_ESCAPE:
leave();
return true;
default:
@@ -82,6 +81,19 @@ bool Market::msgKeypress(const KeypressMessage &msg) {
return false;
}
+bool Market::msgAction(const ActionMessage &msg) {
+ if (msg._action == KEYBIND_SELECT) {
+ buyFood();
+ return true;
+ } else if (msg._action == KEYBIND_ESCAPE) {
+ leave();
+ return true;
+ }
+
+ return false;
+}
+
+
void Market::buyFood() {
int numPurchases = 0;
diff --git a/engines/mm/mm1/views_enh/locations/market.h b/engines/mm/mm1/views_enh/locations/market.h
index 3399ccd2aca..365360b0c65 100644
--- a/engines/mm/mm1/views_enh/locations/market.h
+++ b/engines/mm/mm1/views_enh/locations/market.h
@@ -51,6 +51,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_enh/locations/temple.cpp b/engines/mm/mm1/views_enh/locations/temple.cpp
index f3cda000f18..19a29e47984 100644
--- a/engines/mm/mm1/views_enh/locations/temple.cpp
+++ b/engines/mm/mm1/views_enh/locations/temple.cpp
@@ -38,12 +38,18 @@ Temple::Temple() : Location("Temple") {
}
bool Temple::msgFocus(const FocusMessage &msg) {
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
send("View", ValueMessage(LOC_TEMPLE));
changeCharacter(0);
return true;
}
+bool Temple::msgUnfocus(const UnfocusMessage &msg) {
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MENUS);
+ return true;
+}
+
void Temple::draw() {
Location::draw();
@@ -77,9 +83,6 @@ void Temple::draw() {
bool Temple::msgKeypress(const KeypressMessage &msg) {
switch (msg.keycode) {
- case Common::KEYCODE_ESCAPE:
- leave();
- break;
case Common::KEYCODE_h:
restoreHealth();
break;
@@ -96,14 +99,6 @@ bool Temple::msgKeypress(const KeypressMessage &msg) {
g_globals->_currCharacter->gatherGold();
redraw();
break;
- case Common::KEYCODE_1:
- case Common::KEYCODE_2:
- case Common::KEYCODE_3:
- case Common::KEYCODE_4:
- case Common::KEYCODE_5:
- case Common::KEYCODE_6:
- changeCharacter(msg.keycode - Common::KEYCODE_1);
- break;
default:
break;
}
@@ -111,6 +106,26 @@ bool Temple::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool Temple::msgAction(const ActionMessage &msg) {
+ switch (msg._action) {
+ case KEYBIND_ESCAPE:
+ leave();
+ 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:
+ changeCharacter(msg._action - KEYBIND_VIEW_PARTY1);
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+}
+
void Temple::changeCharacter(uint index) {
Maps::Map &map = *g_maps->_currentMap;
int i;
diff --git a/engines/mm/mm1/views_enh/locations/temple.h b/engines/mm/mm1/views_enh/locations/temple.h
index 9b578c7e2f1..3c485e76687 100644
--- a/engines/mm/mm1/views_enh/locations/temple.h
+++ b/engines/mm/mm1/views_enh/locations/temple.h
@@ -52,8 +52,10 @@ public:
Temple();
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;
};
} // namespace Locations
More information about the Scummvm-git-logs
mailing list