[Scummvm-git-logs] scummvm master -> a7ede6d2e2e305459716caf72eee4266748ecd55

bluegr noreply at scummvm.org
Thu Jul 10 23:51:23 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
a7ede6d2e2 TEENAGENT: Add keymapper support


Commit: a7ede6d2e2e305459716caf72eee4266748ecd55
    https://github.com/scummvm/scummvm/commit/a7ede6d2e2e305459716caf72eee4266748ecd55
Author: aunnoman1 (aunnoman123 at outlook.com)
Date: 2025-07-11T02:51:21+03:00

Commit Message:
TEENAGENT: Add keymapper support

Changed paths:
    engines/teenagent/inventory.cpp
    engines/teenagent/metaengine.cpp
    engines/teenagent/scene.cpp
    engines/teenagent/teenagent.cpp
    engines/teenagent/teenagent.h


diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp
index d35d1a48f60..56fd486c9cf 100644
--- a/engines/teenagent/inventory.cpp
+++ b/engines/teenagent/inventory.cpp
@@ -253,12 +253,12 @@ bool Inventory::processEvent(const Common::Event &event) {
 			debugC(0, kDebugInventory, "selected object %s", _selectedObj->name.c_str());
 		return true;
 
-	case Common::EVENT_KEYDOWN:
-		if (_active && event.kbd.keycode == Common::KEYCODE_ESCAPE) {
+	case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+		if (_active && event.customType == kActionCloseInventory) {
 			activate(false);
 			return true;
 		}
-		if (event.kbd.keycode == Common::KEYCODE_RETURN) {
+		if (event.customType == kActionToggleInventory) {
 			activate(!_active);
 			return true;
 		}
diff --git a/engines/teenagent/metaengine.cpp b/engines/teenagent/metaengine.cpp
index 8a5adfe3eba..e4a3103bfeb 100644
--- a/engines/teenagent/metaengine.cpp
+++ b/engines/teenagent/metaengine.cpp
@@ -32,6 +32,10 @@
 #include "teenagent/detection.h"
 #include "graphics/thumbnail.h"
 
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
 enum {
 	MAX_SAVES = 20
 };
@@ -167,8 +171,65 @@ public:
 
 		return ssd;
 	}
+
+		Common::KeymapArray initKeymaps(const char *target) const override;
 };
 
+Common::KeymapArray TeenAgentMetaEngine::initKeymaps(const char *target) const {
+	using namespace Common;
+	using namespace TeenAgent;
+
+	Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "teenagent-default", _("Default keymappings"));
+
+	Common::Action *act;
+
+	act = new Common::Action(kStandardActionLeftClick, _("Move / Examine"));
+	act->setLeftClickEvent();
+	act->addDefaultInputMapping("MOUSE_LEFT");
+	act->addDefaultInputMapping("JOY_A");
+	engineKeyMap->addAction(act);
+
+	act = new Common::Action(kStandardActionRightClick, _("Interact"));
+	act->setRightClickEvent();
+	act->addDefaultInputMapping("MOUSE_RIGHT");
+	act->addDefaultInputMapping("JOY_B");
+	engineKeyMap->addAction(act);
+
+	act = new Common::Action("SKIPDLG", _("Skip dialog"));
+	act->setCustomEngineActionEvent(kActionSkipDialog);
+	act->addDefaultInputMapping("MOUSE_LEFT");
+	act->addDefaultInputMapping("MOUSE_RIGHT");
+	act->addDefaultInputMapping("SPACE");
+	act->addDefaultInputMapping("JOY_Y");
+	engineKeyMap->addAction(act);
+
+	act = new Common::Action("CLOSEINV", _("Close inventory"));
+	act->setCustomEngineActionEvent(kActionCloseInventory);
+	act->addDefaultInputMapping("ESCAPE");
+	engineKeyMap->addAction(act);
+
+	act = new Common::Action("TOGGLEINV", _("Toggle inventory"));
+	act->setCustomEngineActionEvent(kActionToggleInventory);
+	act->addDefaultInputMapping("RETURN");
+	act->addDefaultInputMapping("JOY_X");
+	engineKeyMap->addAction(act);
+
+	act = new Common::Action("SKIPINTRO", _("Skip intro"));
+	act->setCustomEngineActionEvent(kActionSkipIntro);
+	act->addDefaultInputMapping("ESCAPE");
+	act->addDefaultInputMapping("JOY_B");
+	engineKeyMap->addAction(act);
+
+	// I18N: Speeds up the game to twice its normal speed
+	act = new Common::Action("FASTMODE", _("Toggle fast mode"));
+	act->setCustomEngineActionEvent(kActionFastMode);
+	act->addDefaultInputMapping("C+f");
+	act->addDefaultInputMapping("JOY_UP");
+	engineKeyMap->addAction(act);
+
+	return Keymap::arrayOf(engineKeyMap);
+}
+
 #if PLUGIN_ENABLED_DYNAMIC(TEENAGENT)
 	REGISTER_PLUGIN_DYNAMIC(TEENAGENT, PLUGIN_TYPE_ENGINE, TeenAgentMetaEngine);
 #else
diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp
index e69b4927561..171655214c3 100644
--- a/engines/teenagent/scene.cpp
+++ b/engines/teenagent/scene.cpp
@@ -481,21 +481,10 @@ void Scene::push(const SceneEvent &event) {
 
 bool Scene::processEvent(const Common::Event &event) {
 	switch (event.type) {
-	case Common::EVENT_LBUTTONDOWN:
-	case Common::EVENT_RBUTTONDOWN:
-		if (!message.empty() && messageFirstFrame == 0) {
-			_vm->stopTextToSpeech();
-			clearMessage();
-			nextEvent();
-			return true;
-		}
-		return false;
-
-	case Common::EVENT_KEYDOWN:
-		switch (event.kbd.keycode) {
-		case Common::KEYCODE_ESCAPE:
-		case Common::KEYCODE_SPACE: {
-			if (intro && event.kbd.keycode == Common::KEYCODE_ESCAPE) {
+	case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+		switch (event.customType) {
+		case kActionSkipIntro:
+			if (intro) {
 				intro = false;
 				clearMessage();
 				events.clear();
@@ -510,7 +499,8 @@ bool Scene::processEvent(const Common::Event &event) {
 				_vm->setTTSVoice(kMark);
 				return true;
 			}
-
+			break;
+		case kActionSkipDialog:
 			if (!message.empty() && messageFirstFrame == 0) {
 				_vm->stopTextToSpeech();
 				clearMessage();
@@ -518,7 +508,12 @@ bool Scene::processEvent(const Common::Event &event) {
 				return true;
 			}
 			break;
+		default:
+			break;
 		}
+		break;
+	case Common::EVENT_KEYDOWN:
+		switch (event.kbd.keycode) {
 #if 0
 		case '1':
 		case '2':
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index 32e551e4d66..bbd062fd0cb 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -654,10 +654,8 @@ Common::Error TeenAgentEngine::run() {
 
 			debug(5, "event");
 			switch (event.type) {
-			case Common::EVENT_KEYDOWN:
-				if (event.kbd.hasFlags(0) && event.kbd.keycode == Common::KEYCODE_F5) {
-					openMainMenuDialog();
-				} if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_f) {
+			case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+				if (event.customType == kActionFastMode) {
 					_markDelay = _markDelay == 80 ? 40 : 80;
 					debug(5, "markDelay = %u", _markDelay);
 				}
diff --git a/engines/teenagent/teenagent.h b/engines/teenagent/teenagent.h
index e2959361763..0a8f0080d5a 100644
--- a/engines/teenagent/teenagent.h
+++ b/engines/teenagent/teenagent.h
@@ -80,6 +80,15 @@ enum {
 	kDebugSurface,
 };
 
+enum TEENAGENTActions {
+	kActionNone,
+	kActionSkipIntro,
+	kActionSkipDialog,
+	kActionCloseInventory,
+	kActionToggleInventory,
+	kActionFastMode,
+};
+
 const uint16 kScreenWidth = 320;
 const uint16 kScreenHeight = 200;
 




More information about the Scummvm-git-logs mailing list