[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