[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