[Scummvm-git-logs] scummvm master -> f67fc64460a3cba28e416e9ad05d054e1cfddefa
alxpnv
a04198622 at gmail.com
Fri Jun 18 11:10:15 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f67fc64460 ASYLUM: switch 'Keyboard Config' menu screen to using Keymapper
Commit: f67fc64460a3cba28e416e9ad05d054e1cfddefa
https://github.com/scummvm/scummvm/commit/f67fc64460a3cba28e416e9ad05d054e1cfddefa
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-06-18T14:09:46+03:00
Commit Message:
ASYLUM: switch 'Keyboard Config' menu screen to using Keymapper
Changed paths:
engines/asylum/views/menu.cpp
diff --git a/engines/asylum/views/menu.cpp b/engines/asylum/views/menu.cpp
index 587f1e1a6c..04f6aa095f 100644
--- a/engines/asylum/views/menu.cpp
+++ b/engines/asylum/views/menu.cpp
@@ -20,6 +20,13 @@
*
*/
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/hardware-input.h"
+#include "backends/keymapper/keymap.h"
+#include "backends/keymapper/keymapper.h"
+
+#include "common/keyboard.h"
+
#include "asylum/views/menu.h"
#include "asylum/resources/actor.h"
@@ -1438,45 +1445,15 @@ void Menu::updateKeyboardConfig() {
getText()->loadFont(kFontYellow);
getText()->drawCentered(Common::Point(10, 100), 620, MAKE_RESOURCE(kResourcePackText, 1438));
- char keyCode = 0;
int16 keyIndex = 0;
+ Common::Keymap *keymap = g_system->getEventManager()->getKeymapper()->getKeymap("asylum");
do {
- getText()->loadFont(kFontYellow);
- if ((getScene() && getWorld()->chapter == 9) || keyIndex < 3) {
- getText()->draw(Common::Point(320, (int16)(29 * keyIndex + 150)), MAKE_RESOURCE(kResourcePackText, 1439 + keyIndex));
- } else {
- getText()->draw(Common::Point(320, (int16)(29 * keyIndex + 150)), MAKE_RESOURCE(kResourcePackText, 1445));
- }
-
- switch (keyIndex) {
- default:
- break;
-
- case 0:
- keyCode = Config.keyShowVersion;
- break;
-
- case 1:
- keyCode = Config.keyQuickLoad;
- break;
-
- case 2:
- keyCode = Config.keyQuickSave;
- break;
-
- case 3:
- keyCode = Config.keySwitchToSara;
- break;
-
- case 4:
- keyCode = Config.keySwitchToGrimwall;
- break;
+ Common::Array<Common::HardwareInput> mappings = keymap->getActionMapping(keymap->getActions()[keyIndex]);
+ Common::String keyCode = mappings.size() ? mappings[0].description.encode() : "<Not mapped>";
- case 5:
- keyCode = Config.keySwitchToOlmec;
- break;
- }
+ getText()->loadFont(kFontYellow);
+ getText()->draw(Common::Point(320, (int16)(29 * keyIndex + 150)), MAKE_RESOURCE(kResourcePackText, 1439 + keyIndex));
getText()->setPosition(Common::Point(350, (int16)(29 * keyIndex + 150)));
@@ -1488,15 +1465,15 @@ void Menu::updateKeyboardConfig() {
_caretBlink = (_caretBlink + 1) % 12;
} else {
- switchFont(getCursor()->isHidden() || cursor.x < 350 || cursor.x > (350 + getText()->getWidth(keyCode)) || cursor.y < (29 * keyIndex + 150) || cursor.y > (29 * (keyIndex + 6)));
- getText()->drawChar(keyCode);
+ switchFont(getCursor()->isHidden() || cursor.x < 350 || cursor.x > (350 + getText()->getWidth(keyCode.c_str())) || cursor.y < (29 * keyIndex + 150) || cursor.y > (29 * (keyIndex + 6)));
+ getText()->draw(keyCode.c_str());
}
++keyIndex;
} while (keyIndex < 6);
switchFont(getCursor()->isHidden() || cursor.x < 300 || cursor.x > (300 + getText()->getWidth(MAKE_RESOURCE(kResourcePackText, 1446))) || cursor.y < 340 || cursor.y > (340 + 24));
- getText()->setPosition(Common::Point(340, 340));
+ getText()->setPosition(Common::Point(300, 340));
getText()->draw(MAKE_RESOURCE(kResourcePackText, 1446));
}
@@ -2229,39 +2206,13 @@ void Menu::clickKeyboardConfig() {
if (cursor.x < 300 || cursor.x > (300 + getText()->getWidth(MAKE_RESOURCE(kResourcePackText, 1446))) || cursor.y < 340 || cursor.y > (340 + 24)) {
int32 keyIndex = 0;
- char keyCode = 0;
+ Common::Keymap *keymap = g_system->getEventManager()->getKeymapper()->getKeymap("asylum");
do {
- switch (keyIndex) {
- default:
- break;
-
- case 0:
- keyCode = Config.keyShowVersion;
- break;
-
- case 1:
- keyCode = Config.keyQuickLoad;
- break;
+ Common::Array<Common::HardwareInput> mappings = keymap->getActionMapping(keymap->getActions()[keyIndex]);
+ Common::String keyCode = mappings.size() ? mappings[0].description.encode() : "<Not mapped>";
- case 2:
- keyCode = Config.keyQuickSave;
- break;
-
- case 3:
- keyCode = Config.keySwitchToSara;
- break;
-
- case 4:
- keyCode = Config.keySwitchToGrimwall;
- break;
-
- case 5:
- keyCode = Config.keySwitchToOlmec;
- break;
- }
-
- if (cursor.x >= 350 && cursor.x <= (350 + getText()->getWidth(keyCode)) && cursor.y >= (29 * keyIndex + 150) && cursor.y <= (29 * (keyIndex + 6))) {
+ if (cursor.x >= 350 && cursor.x <= (350 + getText()->getWidth(keyCode.c_str())) && cursor.y >= (29 * keyIndex + 150) && cursor.y <= (29 * (keyIndex + 6))) {
_selectedShortcutIndex = keyIndex;
getCursor()->hide();
}
@@ -2358,45 +2309,20 @@ void Menu::keyKeyboardConfig(const AsylumEvent &evt) {
return;
}
- char *keyCode = NULL;
- switch(_selectedShortcutIndex) {
- default:
- error("[Menu::keyKeyboardConfig] Invalid shortcut index (%d)", _selectedShortcutIndex);
-
- case 0:
- keyCode = &Config.keyShowVersion;
- break;
-
- case 1:
- keyCode = &Config.keyQuickLoad;
- break;
-
- case 2:
- keyCode = &Config.keyQuickSave;
- break;
-
- case 3:
- keyCode = &Config.keySwitchToSara;
- break;
-
- case 4:
- keyCode = &Config.keySwitchToGrimwall;
- break;
-
- case 5:
- keyCode = &Config.keySwitchToOlmec;
- break;
- }
-
// Check for alphanumeric character
if (evt.kbd.ascii > 255 || !Common::isAlnum(evt.kbd.ascii))
return;
- if (!Config.isKeyAssigned((char)evt.kbd.ascii) || *keyCode == (char)evt.kbd.ascii) {
- *keyCode = (char)evt.kbd.ascii;
- _selectedShortcutIndex = -1;
- getCursor()->show();
- }
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+ Common::Keymap *keymap = keymapper->getKeymap("asylum");
+ Common::Action *action = keymap->getActions()[_selectedShortcutIndex];
+
+ keymap->unregisterMapping(action);
+ keymap->registerMapping(action, keymapper->findHardwareInput(evt));
+ keymap->saveMappings();
+
+ _selectedShortcutIndex = -1;
+ getCursor()->show();
}
void Menu::keyShowCredits() {
More information about the Scummvm-git-logs
mailing list