[Scummvm-git-logs] scummvm master -> bb6c701a7a484046ea337b8c5e502300c0647a7e
OMGPizzaGuy
noreply at scummvm.org
Thu Jun 27 22:34:12 UTC 2024
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:
bb6c701a7a MADE: Add keymapper support
Commit: bb6c701a7a484046ea337b8c5e502300c0647a7e
https://github.com/scummvm/scummvm/commit/bb6c701a7a484046ea337b8c5e502300c0647a7e
Author: NabeelShabbir (i210443 at nu.edu.pk)
Date: 2024-06-27T17:34:09-05:00
Commit Message:
MADE: Add keymapper support
Changed paths:
engines/made/made.cpp
engines/made/made.h
engines/made/metaengine.cpp
diff --git a/engines/made/made.cpp b/engines/made/made.cpp
index 80c9dfc0d7b..a41bcf48544 100644
--- a/engines/made/made.cpp
+++ b/engines/made/made.cpp
@@ -189,56 +189,55 @@ void MadeEngine::handleEvents() {
case Common::EVENT_RBUTTONUP:
_eventNum = 3;
break;
-
case Common::EVENT_KEYDOWN:
// Handle any special keys here
// Supported keys taken from https://web.archive.org/web/20141114142447/http://www.allgame.com/game.php?id=13542&tab=controls
-
- switch (event.kbd.keycode) {
- case Common::KEYCODE_KP_PLUS: // action (same as left mouse click)
- _eventNum = 1; // left mouse button up
- break;
- case Common::KEYCODE_KP_MINUS: // inventory (same as right mouse click)
- _eventNum = 3; // right mouse button up
- break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
+ if (event.kbd.keycode == Common::KEYCODE_BACKSPACE) {
+ _eventNum = 5;
+ _eventKey = 9;
+ } else {
+ _eventNum = 5;
+ _eventKey = event.kbd.ascii;
+ }
+ break;
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ switch (event.customType) {
+ case kActionCursorUp:
_eventMouseY = MAX<int16>(0, _eventMouseY - 1);
g_system->warpMouse(_eventMouseX, _eventMouseY);
break;
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
+ case kActionCursorDown:
_eventMouseY = MIN<int16>(199, _eventMouseY + 1);
g_system->warpMouse(_eventMouseX, _eventMouseY);
break;
- case Common::KEYCODE_LEFT:
- case Common::KEYCODE_KP4:
+ case kActionCursorLeft:
_eventMouseX = MAX<int16>(0, _eventMouseX - 1);
g_system->warpMouse(_eventMouseX, _eventMouseY);
break;
- case Common::KEYCODE_RIGHT:
- case Common::KEYCODE_KP6:
+ case kActionCursorRight:
_eventMouseX = MIN<int16>(319, _eventMouseX + 1);
g_system->warpMouse(_eventMouseX, _eventMouseY);
break;
- case Common::KEYCODE_F1: // menu
- case Common::KEYCODE_F2: // save game
- case Common::KEYCODE_F3: // load game
- case Common::KEYCODE_F4: // repeat last message
+ case kActionMenu:
_eventNum = 5;
- _eventKey = (event.kbd.keycode - Common::KEYCODE_F1) + 21;
+ _eventKey = 21; //KEYCODE F1
break;
- case Common::KEYCODE_BACKSPACE:
+ case kActionSaveGame:
_eventNum = 5;
- _eventKey = 9;
+ _eventKey = 22; //KEYCODE F2
break;
- default:
+ case kActionLoadGame:
_eventNum = 5;
- _eventKey = event.kbd.ascii;
+ _eventKey = 23; //KEYCODE F3
+ break;
+ case kActionRepeatMessage:
+ _eventNum = 5;
+ _eventKey = 24; //KEYCODE F4
+ break;
+ default:
break;
}
break;
-
default:
break;
diff --git a/engines/made/made.h b/engines/made/made.h
index 64477a9728c..9f7d05a7110 100644
--- a/engines/made/made.h
+++ b/engines/made/made.h
@@ -52,6 +52,19 @@ class GameDatabase;
class MusicPlayer;
class MadeConsole;
+enum MADEAction {
+ kActionNone,
+ kActionCursorUp,
+ kActionCursorDown,
+ kActionCursorLeft,
+ kActionCursorRight,
+ kActionMenu,
+ kActionSaveGame,
+ kActionLoadGame,
+ kActionRepeatMessage
+};
+
+
class MadeEngine : public ::Engine {
protected:
diff --git a/engines/made/metaengine.cpp b/engines/made/metaengine.cpp
index 4545def13c5..3400154e4dc 100644
--- a/engines/made/metaengine.cpp
+++ b/engines/made/metaengine.cpp
@@ -24,6 +24,10 @@
#include "made/made.h"
#include "made/detection.h"
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
namespace Made {
@@ -72,6 +76,8 @@ public:
bool hasFeature(MetaEngineFeature f) const override;
Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const override;
+
+ Common::KeymapArray initKeymaps(const char *target) const override;
};
bool MadeMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -89,6 +95,95 @@ Common::Error MadeMetaEngine::createInstance(OSystem *syst, Engine **engine, con
return Common::kNoError;
}
+Common::KeymapArray MadeMetaEngine::initKeymaps(const char *target) const {
+ using namespace Common;
+ using namespace Made;
+
+ Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "made-main", "MADE main");
+ Keymap *gameKeyMap = new Keymap(Keymap::kKeymapTypeGame, "game-shortcuts", _("Game Keymappings"));
+
+ Action *act;
+
+ act = new Action(kStandardActionLeftClick, _("Left Click"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ act->addDefaultInputMapping("KP_PLUS");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionRightClick, _("Right Click"));
+ act->setRightClickEvent();
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("JOY_B");
+ act->addDefaultInputMapping("KP_MINUS");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionSkip, _("Skip"));
+ act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_Y");
+ act->allowKbdRepeats();
+ engineKeyMap->addAction(act);
+
+ act = new Action("CRSORUP", _("Cursor Up"));
+ act->setCustomEngineActionEvent(kActionCursorUp);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("KP8");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Action("CRSORDOWN", _("Cursor Down"));
+ act->setCustomEngineActionEvent(kActionCursorDown);
+ act->addDefaultInputMapping("DOWN");
+ act->addDefaultInputMapping("KP2");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Action("CRSORLEFT", _("Cursor Left"));
+ act->setCustomEngineActionEvent(kActionCursorLeft);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("KP4");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Action("CRSORRIGHT", _("Cursor Right"));
+ act->setCustomEngineActionEvent(kActionCursorRight);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("KP6");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Action("MENU", _("Menu"));
+ act->setCustomEngineActionEvent(kActionMenu);
+ act->addDefaultInputMapping("F1");
+ act->addDefaultInputMapping("JOY_GUIDE");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SAVEGAME", _("Save Game"));
+ act->setCustomEngineActionEvent(kActionSaveGame);
+ act->addDefaultInputMapping("F2");
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ gameKeyMap->addAction(act);
+
+ act = new Action("LOADGAME", _("Load Game"));
+ act->setCustomEngineActionEvent(kActionLoadGame);
+ act->addDefaultInputMapping("F3");
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ gameKeyMap->addAction(act);
+
+ act = new Action("RPTMSG", _("Repeat Last Message"));
+ act->setCustomEngineActionEvent(kActionRepeatMessage);
+ act->addDefaultInputMapping("F4");
+ act->addDefaultInputMapping("JOY_X");
+ gameKeyMap->addAction(act);
+
+ KeymapArray keymaps(2);
+ keymaps[0] = engineKeyMap;
+ keymaps[1] = gameKeyMap;
+
+ return keymaps;
+}
+
#if PLUGIN_ENABLED_DYNAMIC(MADE)
REGISTER_PLUGIN_DYNAMIC(MADE, PLUGIN_TYPE_ENGINE, MadeMetaEngine);
#else
More information about the Scummvm-git-logs
mailing list