[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