[Scummvm-git-logs] scummvm master -> c6cb6b8dad00ff6f4f99eeb6834eae37791fb405
sev-
noreply at scummvm.org
Thu Jul 10 11:58:40 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:
c6cb6b8dad TETRAEDGE: Add keymapper support
Commit: c6cb6b8dad00ff6f4f99eeb6834eae37791fb405
https://github.com/scummvm/scummvm/commit/c6cb6b8dad00ff6f4f99eeb6834eae37791fb405
Author: aunnoman1 (aunnoman123 at outlook.com)
Date: 2025-07-10T13:58:37+02:00
Commit Message:
TETRAEDGE: Add keymapper support
Changed paths:
engines/tetraedge/metaengine.cpp
engines/tetraedge/metaengine.h
engines/tetraedge/te/te_input_mgr.cpp
engines/tetraedge/te/te_input_mgr.h
engines/tetraedge/tetraedge.cpp
engines/tetraedge/tetraedge.h
diff --git a/engines/tetraedge/metaengine.cpp b/engines/tetraedge/metaengine.cpp
index fc7a16c9b0d..cc75126bce3 100644
--- a/engines/tetraedge/metaengine.cpp
+++ b/engines/tetraedge/metaengine.cpp
@@ -79,6 +79,44 @@ void TetraedgeMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
Tetraedge::TetraedgeEngine::getSavegameThumbnail(thumb);
}
+Common::KeymapArray TetraedgeMetaEngine::initKeymaps(const char *target) const {
+ using namespace Common;
+ using namespace Tetraedge;
+
+ Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "tetraedge-default", _("Default keymappings"));
+
+ Common::Action *act;
+
+ Common::String gameId = ConfMan.get("gameid", target);
+
+ act = new Common::Action(kStandardActionLeftClick, _("Move / Interact / Select"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ engineKeyMap->addAction(act);
+
+ act = new Common::Action("SKIP", _("Skip dialog"));
+ act->setCustomEngineActionEvent(kActionSkip);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_B");
+ engineKeyMap->addAction(act);
+
+ act = new Common::Action("LOAD", _("Load game"));
+ act->setCustomEngineActionEvent(kActionLoad);
+ act->addDefaultInputMapping("l");
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ engineKeyMap->addAction(act);
+
+ act = new Common::Action("SAVE", _("Save game"));
+ act->setCustomEngineActionEvent(kActionSave);
+ act->addDefaultInputMapping("s");
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ engineKeyMap->addAction(act);
+
+ return Common::Keymap::arrayOf(engineKeyMap);
+
+}
+
#if PLUGIN_ENABLED_DYNAMIC(TETRAEDGE)
REGISTER_PLUGIN_DYNAMIC(TETRAEDGE, PLUGIN_TYPE_ENGINE, TetraedgeMetaEngine);
diff --git a/engines/tetraedge/metaengine.h b/engines/tetraedge/metaengine.h
index 4bb0d92b5ec..d38fb330b80 100644
--- a/engines/tetraedge/metaengine.h
+++ b/engines/tetraedge/metaengine.h
@@ -25,6 +25,10 @@
#include "engines/achievements.h"
#include "engines/advancedDetector.h"
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
#define GAMEOPTION_CORRECT_MOVIE_ASPECT GUIO_GAMEOPTIONS1
#define GAMEOPTION_RESTORE_SCENES GUIO_GAMEOPTIONS2
@@ -45,6 +49,8 @@ public:
*/
bool hasFeature(MetaEngineFeature f) const override;
+ Common::KeymapArray initKeymaps(const char *target) const override;
+
};
#endif
diff --git a/engines/tetraedge/te/te_input_mgr.cpp b/engines/tetraedge/te/te_input_mgr.cpp
index 84c6f4b1f40..c04c1fe5fb2 100644
--- a/engines/tetraedge/te/te_input_mgr.cpp
+++ b/engines/tetraedge/te/te_input_mgr.cpp
@@ -30,37 +30,43 @@ TeInputMgr::TeInputMgr() {
void TeInputMgr::handleEvent(const Common::Event &e) {
switch (e.type) {
- case Common::EVENT_KEYDOWN:
- _keyDownSignal.call(e.kbd);
- break;
- case Common::EVENT_KEYUP:
- _keyUpSignal.call(e.kbd);
- break;
- case Common::EVENT_MOUSEMOVE:
- _mouseMoveSignal.call(e.mouse);
- _lastMousePos = e.mouse;
- break;
- case Common::EVENT_LBUTTONDOWN:
- _mouseLDownSignal.call(e.mouse);
- _lastMousePos = e.mouse;
- break;
- case Common::EVENT_LBUTTONUP:
- _mouseLUpSignal.call(e.mouse);
- _lastMousePos = e.mouse;
- break;
- case Common::EVENT_RBUTTONDOWN:
- _mouseRDownSignal.call(e.mouse);
- _lastMousePos = e.mouse;
- break;
- case Common::EVENT_RBUTTONUP:
- _mouseRUpSignal.call(e.mouse);
- _lastMousePos = e.mouse;
- break;
- case Common::EVENT_MAINMENU:
- g_engine->getGame()->_returnToMainMenu = true;
- break;
- default:
- break;
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ _customActionStartSignal.call(e.customType);
+ break;
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
+ _customActionEndSignal.call(e.customType);
+ break;
+ case Common::EVENT_KEYDOWN:
+ _keyDownSignal.call(e.kbd);
+ break;
+ case Common::EVENT_KEYUP:
+ _keyUpSignal.call(e.kbd);
+ break;
+ case Common::EVENT_MOUSEMOVE:
+ _mouseMoveSignal.call(e.mouse);
+ _lastMousePos = e.mouse;
+ break;
+ case Common::EVENT_LBUTTONDOWN:
+ _mouseLDownSignal.call(e.mouse);
+ _lastMousePos = e.mouse;
+ break;
+ case Common::EVENT_LBUTTONUP:
+ _mouseLUpSignal.call(e.mouse);
+ _lastMousePos = e.mouse;
+ break;
+ case Common::EVENT_RBUTTONDOWN:
+ _mouseRDownSignal.call(e.mouse);
+ _lastMousePos = e.mouse;
+ break;
+ case Common::EVENT_RBUTTONUP:
+ _mouseRUpSignal.call(e.mouse);
+ _lastMousePos = e.mouse;
+ break;
+ case Common::EVENT_MAINMENU:
+ g_engine->getGame()->_returnToMainMenu = true;
+ break;
+ default:
+ break;
}
}
diff --git a/engines/tetraedge/te/te_input_mgr.h b/engines/tetraedge/te/te_input_mgr.h
index f1413d1b53a..aa138132496 100644
--- a/engines/tetraedge/te/te_input_mgr.h
+++ b/engines/tetraedge/te/te_input_mgr.h
@@ -41,6 +41,8 @@ public:
TeSignal1Param<const Common::Point &> _mouseLUpSignal;
TeSignal1Param<const Common::Point &> _mouseRDownSignal;
TeSignal1Param<const Common::Point &> _mouseRUpSignal;
+ TeSignal1Param<const Common::CustomEventType &> _customActionStartSignal;
+ TeSignal1Param<const Common::CustomEventType &> _customActionEndSignal;
const Common::Point &lastMousePos() {
return _lastMousePos;
diff --git a/engines/tetraedge/tetraedge.cpp b/engines/tetraedge/tetraedge.cpp
index 77b9aaed1b5..dd25f0b4655 100644
--- a/engines/tetraedge/tetraedge.cpp
+++ b/engines/tetraedge/tetraedge.cpp
@@ -237,16 +237,16 @@ int TetraedgeEngine::getDefaultScreenHeight() const {
return gameIsAmerzone() ? 800 : 600;
}
-bool TetraedgeEngine::onKeyUp(const Common::KeyState &state) {
- switch (state.keycode) {
- case Common::KEYCODE_l:
+bool TetraedgeEngine::onActionEnd(const Common::CustomEventType &state) {
+ switch (state) {
+ case kActionLoad:
if (loadGameDialog())
_game->initLoadedBackupData();
break;
- case Common::KEYCODE_s:
+ case kActionSave:
saveGameDialog();
break;
- case Common::KEYCODE_ESCAPE:
+ case kActionSkip:
closeGameDialogs();
break;
default:
@@ -290,7 +290,7 @@ Common::Error TetraedgeEngine::run() {
_renderer->init(getDefaultScreenWidth(), getDefaultScreenHeight());
_renderer->reset();
- getInputMgr()->_keyUpSignal.add(this, &TetraedgeEngine::onKeyUp);
+ getInputMgr()->_customActionEndSignal.add(this, &TetraedgeEngine::onActionEnd);
// If a savegame was selected from the launcher, load it.
// Should be before application->create() because it only
diff --git a/engines/tetraedge/tetraedge.h b/engines/tetraedge/tetraedge.h
index 28904d8614e..dbb6850903a 100644
--- a/engines/tetraedge/tetraedge.h
+++ b/engines/tetraedge/tetraedge.h
@@ -44,6 +44,13 @@ namespace Tetraedge {
struct TetraedgeGameDescription;
+enum TETRAEDGEAction {
+ kActionNone,
+ kActionSkip,
+ kActionLoad,
+ kActionSave,
+};
+
class Application;
class Game;
class TeCore;
@@ -179,7 +186,7 @@ public:
bool gameIsAmerzone() const { return _gameType == kAmerzone; }
void openConfigDialog();
- bool onKeyUp(const Common::KeyState &state);
+ bool onActionEnd(const Common::CustomEventType &state);
static Common::StringArray splitString(const Common::String &text, char c);
More information about the Scummvm-git-logs
mailing list