ENGINES: Define default bindings for the existing engine keymaps

This commit is contained in:
Bastien Bouclet 2020-01-22 11:36:11 +01:00
parent 576982bc33
commit d60190b12e
6 changed files with 66 additions and 56 deletions

View File

@ -38,8 +38,9 @@ struct HardwareInput;
class Keymap;
struct KeyActionEntry {
const KeyState ks;
const char *id;
const KeyState ks;
const char *defaultHwId;
const char *description;
};

View File

@ -629,14 +629,15 @@ void Engine::initKeymap() {
// Since the game has multiple built-in keys for each of these anyway,
// this just attempts to remap one of them.
const Common::KeyActionEntry keyActionEntries[] = {
{ Common::KeyState(Common::KEYCODE_SPACE, ' ', 0), "PAUS", _("Pause") },
{ Common::KeyState(Common::KEYCODE_ESCAPE, Common::ASCII_ESCAPE, 0), "SKCT", _("Skip") },
{ Common::KeyState(Common::KEYCODE_PERIOD, '.', 0), "SKLI", _("Skip line") }
{ "PAUS", Common::KeyState(Common::KEYCODE_SPACE, ' ', 0), "SPACE", _("Pause") },
{ "SKCT", Common::KeyState(Common::KEYCODE_ESCAPE, Common::ASCII_ESCAPE, 0), "ESCAPE", _("Skip") },
{ "SKLI", Common::KeyState(Common::KEYCODE_PERIOD, '.', 0), "PERIOD", _("Skip line") }
};
for (uint i = 0; i < ARRAYSIZE(keyActionEntries); i++) {
Common::Action *const act = new Common::Action(engineKeyMap, keyActionEntries[i].id, keyActionEntries[i].description);
act->setKeyEvent(keyActionEntries[i].ks);
act->addDefaultInputMapping(keyActionEntries[i].defaultHwId);
}
mapper->addGameKeymap(engineKeyMap);

View File

@ -354,33 +354,35 @@ void EoBCoreEngine::initKeymap() {
Common::Keymap *const engineKeyMap = new Common::Keymap(Common::Keymap::kKeymapTypeGame, kKeymapName);
const Common::KeyActionEntry keyActionEntries[] = {
{ Common::KeyState(Common::KEYCODE_UP), "MVF", _("Move Forward") },
{ Common::KeyState(Common::KEYCODE_DOWN), "MVB", _("Move Back") },
{ Common::KeyState(Common::KEYCODE_LEFT), "MVL", _("Move Left") },
{ Common::KeyState(Common::KEYCODE_RIGHT), "MVR", _("Move Right") },
{ Common::KeyState(Common::KEYCODE_HOME), "TL", _("Turn Left") },
{ Common::KeyState(Common::KEYCODE_PAGEUP), "TR", _("Turn Right") },
{ Common::KeyState(Common::KEYCODE_i), "INV", _("Open/Close Inventory") },
{ Common::KeyState(Common::KEYCODE_p), "SCE", _("Switch Inventory/Character screen") },
{ Common::KeyState(Common::KEYCODE_c), "CMP", _("Camp") },
{ Common::KeyState(Common::KEYCODE_SPACE), "CSP", _("Cast Spell") },
{ "MVF", Common::KEYCODE_UP, "UP", _("Move Forward") },
{ "MVB", Common::KEYCODE_DOWN, "DOWN", _("Move Back") },
{ "MVL", Common::KEYCODE_LEFT, "LEFT", _("Move Left") },
{ "MVR", Common::KEYCODE_RIGHT, "RIGHT", _("Move Right") },
{ "TL", Common::KEYCODE_HOME, "HOME", _("Turn Left") },
{ "TR", Common::KEYCODE_PAGEUP, "PAGEUP", _("Turn Right") },
{ "INV", Common::KEYCODE_i, "i", _("Open/Close Inventory") },
{ "SCE", Common::KEYCODE_p, "p", _("Switch Inventory/Character screen") },
{ "CMP", Common::KEYCODE_c, "c", _("Camp") },
{ "CSP", Common::KEYCODE_SPACE, "SPACE", _("Cast Spell") },
// TODO: Spell cursor, but this needs more thought, since different
// game versions use different keycodes.
{ Common::KeyState(Common::KEYCODE_1), "SL1", _("Spell Level 1") },
{ Common::KeyState(Common::KEYCODE_2), "SL2", _("Spell Level 2") },
{ Common::KeyState(Common::KEYCODE_3), "SL3", _("Spell Level 3") },
{ Common::KeyState(Common::KEYCODE_4), "SL4", _("Spell Level 4") },
{ Common::KeyState(Common::KEYCODE_5), "SL5", _("Spell Level 5") }
{ "SL1", Common::KEYCODE_1, "1", _("Spell Level 1") },
{ "SL2", Common::KEYCODE_2, "2", _("Spell Level 2") },
{ "SL3", Common::KEYCODE_3, "3", _("Spell Level 3") },
{ "SL4", Common::KEYCODE_4, "4", _("Spell Level 4") },
{ "SL5", Common::KEYCODE_5, "5", _("Spell Level 5") }
};
for (uint i = 0; i < ARRAYSIZE(keyActionEntries); ++i) {
Common::Action *const act = new Common::Action(engineKeyMap, keyActionEntries[i].id, keyActionEntries[i].description);
act->setKeyEvent(keyActionEntries[i].ks);
act->addDefaultInputMapping(keyActionEntries[i].defaultHwId);
}
if (_flags.gameID == GI_EOB2) {
Common::Action *const act = new Common::Action(engineKeyMap, "SL6", _("Spell Level 6"));
act->setKeyEvent(Common::KeyState(Common::KEYCODE_6));
act->addDefaultInputMapping("6");
}
mapper->addGameKeymap(engineKeyMap);

View File

@ -472,24 +472,25 @@ void LoLEngine::initKeymap() {
Common::Keymap *const engineKeyMap = new Common::Keymap(Common::Keymap::kKeymapTypeGame, kKeymapName);
const Common::KeyActionEntry keyActionEntries[] = {
{Common::KeyState(Common::KEYCODE_F1, Common::ASCII_F1), "AT1", _("Attack 1")},
{Common::KeyState(Common::KEYCODE_F2, Common::ASCII_F2), "AT2", _("Attack 2")},
{Common::KeyState(Common::KEYCODE_F3, Common::ASCII_F3), "AT3", _("Attack 3")},
{Common::KeyState(Common::KEYCODE_UP), "MVF", _("Move Forward")},
{Common::KeyState(Common::KEYCODE_DOWN), "MVB", _("Move Back")},
{Common::KeyState(Common::KEYCODE_LEFT), "SLL", _("Slide Left")},
{Common::KeyState(Common::KEYCODE_RIGHT), "SLR", _("Slide Right")},
{Common::KeyState(Common::KEYCODE_HOME), "TL", _("Turn Left")},
{Common::KeyState(Common::KEYCODE_PAGEUP), "TR", _("Turn Right")},
{Common::KeyState(Common::KEYCODE_r), "RST", _("Rest")},
{Common::KeyState(Common::KEYCODE_o), "OPT", _("Options")},
{Common::KeyState(Common::KEYCODE_SLASH), "SPL", _("Choose Spell")},
{Common::KeyState(), 0, 0}
{ "AT1", Common::KeyState(Common::KEYCODE_F1, Common::ASCII_F1), "F1", _("Attack 1") },
{ "AT2", Common::KeyState(Common::KEYCODE_F2, Common::ASCII_F2), "F2", _("Attack 2") },
{ "AT3", Common::KeyState(Common::KEYCODE_F3, Common::ASCII_F3), "F3", _("Attack 3") },
{ "MVF", Common::KeyState(Common::KEYCODE_UP), "UP", _("Move Forward") },
{ "MVB", Common::KeyState(Common::KEYCODE_DOWN), "DOWN", _("Move Back") },
{ "SLL", Common::KeyState(Common::KEYCODE_LEFT), "LEFT", _("Slide Left") },
{ "SLR", Common::KeyState(Common::KEYCODE_RIGHT), "RIGHT", _("Slide Right") },
{ "TL", Common::KeyState(Common::KEYCODE_HOME), "HOME", _("Turn Left") },
{ "TR", Common::KeyState(Common::KEYCODE_PAGEUP), "PAGEUP", _("Turn Right") },
{ "RST", Common::KeyState(Common::KEYCODE_r), "r", _("Rest") },
{ "OPT", Common::KeyState(Common::KEYCODE_o), "o", _("Options") },
{ "SPL", Common::KeyState(Common::KEYCODE_SLASH), "SLASH", _("Choose Spell") },
{ 0, Common::KeyState(), 0, 0 }
};
for (const Common::KeyActionEntry *entry = keyActionEntries; entry->id; ++entry) {
Common::Action *const act = new Common::Action(engineKeyMap, entry->id, entry->description);
act->setKeyEvent(entry->ks);
act->addDefaultInputMapping(entry->defaultHwId);
}
mapper->addGameKeymap(engineKeyMap);

View File

@ -879,47 +879,51 @@ void MohawkEngine_Riven::initKeymap() {
Common::Keymapper *const mapper = _eventMan->getKeymapper();
// Do not try to recreate same keymap over again
if (mapper->getKeymap(kKeymapName) != 0)
if (mapper->getKeymap(kKeymapName))
return;
Common::Keymap *const engineKeyMap = new Common::Keymap(Common::Keymap::kKeymapTypeGame, kKeymapName);
const Common::KeyActionEntry keyActionEntries[] = {
{ Common::KEYCODE_UP, "UP", _("Move Forward") },
{ Common::KEYCODE_DOWN, "DWN", _("Move Back") },
{ Common::KEYCODE_LEFT, "TL", _("Turn Left") },
{ Common::KEYCODE_RIGHT, "TR", _("Turn Right") },
{ Common::KEYCODE_PAGEUP, "LKUP", _("Look Up") },
{ Common::KEYCODE_PAGEDOWN, "LKDN", _("Look Down") },
{ Common::KEYCODE_F5, "OPTS", _("Show/Hide Options Menu") },
{ Common::KEYCODE_SPACE, "PAUS", _("Pause") },
{ Common::KeyState(Common::KEYCODE_o, 'o', Common::KBD_CTRL), "LOAD", _("Load Game State") },
{ Common::KeyState(Common::KEYCODE_s, 's', Common::KBD_CTRL), "SAVE", _("Save Game State") }
{ "UP", Common::KEYCODE_UP, "UP", _("Move Forward") },
{ "DWN", Common::KEYCODE_DOWN, "DOWN", _("Move Back") },
{ "TL", Common::KEYCODE_LEFT, "LEFT", _("Turn Left") },
{ "TR", Common::KEYCODE_RIGHT, "RIGHT", _("Turn Right") },
{ "LKUP", Common::KEYCODE_PAGEUP, "PAGEUP", _("Look Up") },
{ "LKDN", Common::KEYCODE_PAGEDOWN, "PAGEDOWN", _("Look Down") },
{ "OPTS", Common::KEYCODE_F5, "F5", _("Show/Hide Options Menu") },
{ "PAUS", Common::KEYCODE_SPACE, "SPACE", _("Pause") },
{ "LOAD", Common::KeyState(Common::KEYCODE_o, 'o', Common::KBD_CTRL), "C+o", _("Load Game State") },
{ "SAVE", Common::KeyState(Common::KEYCODE_s, 's', Common::KBD_CTRL), "C+s", _("Save Game State") }
};
const Common::KeyActionEntry keyActionEntriesDemo[] = {
{ Common::KeyState(Common::KEYCODE_r, 'r', Common::KBD_CTRL), "RMM", _("Return To Main Menu") },
{ Common::KeyState(Common::KEYCODE_p, 'p', Common::KBD_CTRL), "INTV", _("Play Intro Videos") }
{ "RMM", Common::KeyState(Common::KEYCODE_r, 'r', Common::KBD_CTRL), "C+r", _("Return To Main Menu") },
{ "INTV", Common::KeyState(Common::KEYCODE_p, 'p', Common::KBD_CTRL), "C+p", _("Play Intro Videos") }
};
for (uint i = 0; i < ARRAYSIZE(keyActionEntries); i++) {
Common::Action *const act = new Common::Action(engineKeyMap, keyActionEntries[i].id, keyActionEntries[i].description);
act->setKeyEvent(keyActionEntries[i].ks);
act->addDefaultInputMapping(keyActionEntries[i].defaultHwId);
}
if (getFeatures() & GF_DEMO) {
for (uint i = 0; i < ARRAYSIZE(keyActionEntriesDemo); i++) {
Common::Action* const act = new Common::Action(engineKeyMap, keyActionEntriesDemo[i].id, keyActionEntriesDemo[i].description);
act->setKeyEvent(keyActionEntriesDemo[i].ks);
act->addDefaultInputMapping(keyActionEntriesDemo[i].defaultHwId);
}
}
if (getFeatures() & GF_25TH) {
Common::Action* const act = new Common::Action(engineKeyMap, "SMNU", _("Skip / Open main menu"));
act->setKeyEvent(Common::KEYCODE_ESCAPE);
act->addDefaultInputMapping("ESCAPE");
} else {
Common::Action* const act = new Common::Action(engineKeyMap, "SKIP", _("Skip"));
act->setKeyEvent(Common::KEYCODE_ESCAPE);
act->addDefaultInputMapping("ESCAPE");
}
mapper->addGameKeymap(engineKeyMap);

View File

@ -2503,22 +2503,23 @@ void PegasusEngine::initKeymap() {
// Since the game has multiple built-in keys for each of these anyway,
// this just attempts to remap one of them.
const Common::KeyActionEntry keyActionEntries[] = {
{ Common::KEYCODE_UP, "UP", _("Up/Zoom In/Move Forward/Open Doors") },
{ Common::KEYCODE_DOWN, "DWN", _("Down/Zoom Out") },
{ Common::KEYCODE_LEFT, "TL", _("Turn Left") },
{ Common::KEYCODE_RIGHT, "TR", _("Turn Right") },
{ Common::KEYCODE_BACKQUOTE, "TIV", _("Display/Hide Inventory Tray") },
{ Common::KEYCODE_BACKSPACE, "TBI", _("Display/Hide Biochip Tray") },
{ Common::KEYCODE_RETURN, "ENT", _("Action/Select") },
{ Common::KEYCODE_t, "TMA", _("Toggle Center Data Display") },
{ Common::KEYCODE_i, "TIN", _("Display/Hide Info Screen") },
{ Common::KEYCODE_ESCAPE, "PM", _("Display/Hide Pause Menu") },
{ Common::KEYCODE_e, "WTF", "???" } // easter egg key (without being completely upfront about it)
{ "UP", Common::KEYCODE_UP, "UP", _("Up/Zoom In/Move Forward/Open Doors") },
{ "DWN", Common::KEYCODE_DOWN, "DOWN", _("Down/Zoom Out") },
{ "TL", Common::KEYCODE_LEFT, "LEFT", _("Turn Left") },
{ "TR", Common::KEYCODE_RIGHT, "RIGHT", _("Turn Right") },
{ "TIV", Common::KEYCODE_BACKQUOTE, "BACKQUOTE", _("Display/Hide Inventory Tray") },
{ "TBI", Common::KEYCODE_BACKSPACE, "BACKSPACE", _("Display/Hide Biochip Tray") },
{ "ENT", Common::KEYCODE_RETURN, "RETURN", _("Action/Select") },
{ "TMA", Common::KEYCODE_t, "t", _("Toggle Center Data Display") },
{ "TIN", Common::KEYCODE_i, "i", _("Display/Hide Info Screen") },
{ "PM", Common::KEYCODE_ESCAPE, "ESCAPE", _("Display/Hide Pause Menu") },
{ "WTF", Common::KEYCODE_e, "e", "???" } // easter egg key (without being completely upfront about it)
};
for (uint i = 0; i < ARRAYSIZE(keyActionEntries); i++) {
Common::Action *const act = new Common::Action(engineKeyMap, keyActionEntries[i].id, keyActionEntries[i].description);
act->setKeyEvent(keyActionEntries[i].ks);
act->addDefaultInputMapping(keyActionEntries[i].defaultHwId);
}
mapper->addGameKeymap(engineKeyMap);