[Scummvm-git-logs] scummvm master -> 7f5be17cb927c2872c0a9806c5975e5679de1114

sev- noreply at scummvm.org
Thu Aug 14 21:23:50 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:
7f5be17cb9 PINK: Add keymapper support


Commit: 7f5be17cb927c2872c0a9806c5975e5679de1114
    https://github.com/scummvm/scummvm/commit/7f5be17cb927c2872c0a9806c5975e5679de1114
Author: aunnoman1 (aunnoman123 at outlook.com)
Date: 2025-08-14T23:23:46+02:00

Commit Message:
PINK: Add keymapper support

Changed paths:
    engines/pink/POTFILES
    engines/pink/metaengine.cpp
    engines/pink/objects/actors/lead_actor.cpp
    engines/pink/objects/actors/lead_actor.h
    engines/pink/pink.cpp
    engines/pink/pink.h


diff --git a/engines/pink/POTFILES b/engines/pink/POTFILES
index f1159a9a1a7..f5e8c0a3a49 100644
--- a/engines/pink/POTFILES
+++ b/engines/pink/POTFILES
@@ -1 +1,2 @@
 engines/pink/gui.cpp
+engines/pink/metaengine.cpp
diff --git a/engines/pink/metaengine.cpp b/engines/pink/metaengine.cpp
index 3f6d929b8ea..77df794a1ef 100644
--- a/engines/pink/metaengine.cpp
+++ b/engines/pink/metaengine.cpp
@@ -25,6 +25,12 @@
 
 #include "pink/pink.h"
 
+#include "common/translation.h"
+
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
 namespace Pink {
 
 Common::Language PinkEngine::getLanguage() const {
@@ -47,6 +53,7 @@ public:
 	SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
 
 	Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const override;
+	Common::KeymapArray initKeymaps(const char *target) const override;
 };
 
 bool PinkMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -108,6 +115,70 @@ Common::Error PinkMetaEngine::createInstance(OSystem *syst, Engine **engine, con
 	return Common::kNoError;
 }
 
+Common::KeymapArray PinkMetaEngine::initKeymaps(const char *target) const {
+	using namespace Common;
+	using namespace Pink;
+
+	Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "pink-default", "Default keymappings");
+
+	Action *act;
+
+	String gameId = ConfMan.get("gameid", target);
+
+	act = new Action(kStandardActionLeftClick, _("Interact / Select"));
+	act->setLeftClickEvent();
+	act->addDefaultInputMapping("MOUSE_LEFT");
+	act->addDefaultInputMapping("JOY_A");
+	engineKeyMap->addAction(act);
+
+	if (gameId == "peril") {
+		// I18N: (Game Name: Pink Panther) The player normally clicks on a target (character/object) to move toward it and interact (talk,use etc.) with it. This action makes the player still walk to the target but not start interacting when they arrive.
+		act = new Action(kStandardActionRightClick, _("Cancel interaction"));
+		act->setRightClickEvent();
+		act->addDefaultInputMapping("MOUSE_RIGHT");
+		act->addDefaultInputMapping("JOY_B");
+		engineKeyMap->addAction(act);
+	}
+
+	// I18N: (Game Name: Pink Panther) The player normally clicks on a target (character/object) to move toward it and interact (talk,use etc.) with it. This action skips the walking animation and immediately start interacting.
+	act = new Action("SKIPWALK", _("Skip walk"));
+	act->setCustomEngineActionEvent(kActionSkipWalk);
+	act->addDefaultInputMapping("SPACE");
+	act->addDefaultInputMapping("JOY_X");
+	engineKeyMap->addAction(act);
+
+	// I18N: (Game Name: Pink Panther) The player normally clicks on a target (character/object) to move toward it and interact (talk,use etc.) with it. This action skips the walking animation and also prevents the interaction, instead instantly placing the player next to the target.
+	act = new Action("SKIPWALKANDCANCEL", _("Skip walk and cancel interaction"));
+	act->setCustomEngineActionEvent(kActionSkipWalkAndCancelInteraction);
+	act->addDefaultInputMapping("ESCAPE");
+	act->addDefaultInputMapping("JOY_Y");
+	engineKeyMap->addAction(act);
+
+	// I18N: (Game Name: Pink Panther) This action fully skips the current running sequence (cutscene, dialog, interaction, etc).
+	act = new Action("SKIPSEQUENCE", _("Skip sequence"));
+	act->setCustomEngineActionEvent(kActionSkipSequence);
+	act->addDefaultInputMapping("ESCAPE");
+	act->addDefaultInputMapping("JOY_UP");
+	engineKeyMap->addAction(act);
+
+	// I18N: (Game Name: Pink Panther) This action skips part of the current running sequence (cutscene, dialog, interaction, etc).
+	act = new Action("SKIPSUBSEQUENCE", _("Skip sub-sequence"));
+	act->setCustomEngineActionEvent(kActionSkipSubSequence);
+	act->addDefaultInputMapping("SPACE");
+	act->addDefaultInputMapping("RIGHT");
+	act->addDefaultInputMapping("JOY_RIGHT");
+	engineKeyMap->addAction(act);
+
+	// I18N: (Game Name: Pink Panther) This action restarts the current running sequence (cutscene, dialog, interaction, etc).
+	act = new Action("RESTARTSEQUENCE", _("Restart sequence"));
+	act->setCustomEngineActionEvent(kActionRestartSequence);
+	act->addDefaultInputMapping("LEFT");
+	act->addDefaultInputMapping("JOY_LEFT");
+	engineKeyMap->addAction(act);
+
+	return Keymap::arrayOf(engineKeyMap);
+}
+
 #if PLUGIN_ENABLED_DYNAMIC(PINK)
 	REGISTER_PLUGIN_DYNAMIC(PINK, PLUGIN_TYPE_ENGINE, PinkMetaEngine);
 #else
diff --git a/engines/pink/objects/actors/lead_actor.cpp b/engines/pink/objects/actors/lead_actor.cpp
index 45f43f3f238..1c4457cc34d 100644
--- a/engines/pink/objects/actors/lead_actor.cpp
+++ b/engines/pink/objects/actors/lead_actor.cpp
@@ -167,14 +167,14 @@ void LeadActor::loadPDA(const Common::String &pageName) {
 	_page->getGame()->getPdaMgr().goToPage(pageName);
 }
 
-void LeadActor::onKeyboardButtonClick(Common::KeyCode code) {
+void LeadActor::onActionClick(Common::CustomEventType action) {
 	switch (_state) {
 	case kMoving:
-		switch (code) {
-		case Common::KEYCODE_ESCAPE:
+		switch (action) {
+		case kActionSkipWalkAndCancelInteraction:
 			cancelInteraction();
 			// fall through
-		case Common::KEYCODE_SPACE:
+		case kActionSkipWalk:
 			_walkMgr->skip();
 			break;
 		default:
@@ -183,15 +183,14 @@ void LeadActor::onKeyboardButtonClick(Common::KeyCode code) {
 		break;
 	case kPlayingSequence:
 	case kPlayingExitSequence:
-		switch (code) {
-		case Common::KEYCODE_SPACE:
-		case Common::KEYCODE_RIGHT:
+		switch (action) {
+		case kActionSkipSubSequence:
 			_sequencer->skipSubSequence();
 			break;
-		case Common::KEYCODE_ESCAPE:
+		case kActionSkipSequence:
 			_sequencer->skipSequence();
 			break;
-		case Common::KEYCODE_LEFT:
+		case kActionRestartSequence:
 			_sequencer->restartSequence();
 			break;
 		default:
diff --git a/engines/pink/objects/actors/lead_actor.h b/engines/pink/objects/actors/lead_actor.h
index 41663ea67cd..1e394ae8b01 100644
--- a/engines/pink/objects/actors/lead_actor.h
+++ b/engines/pink/objects/actors/lead_actor.h
@@ -22,6 +22,7 @@
 #ifndef PINK_LEAD_ACTOR_H
 #define PINK_LEAD_ACTOR_H
 
+#include "common/events.h"
 #include "common/rect.h"
 #include "common/keyboard.h"
 
@@ -67,7 +68,7 @@ public:
 
 	void loadPDA(const Common::String &pageName);
 
-	void onKeyboardButtonClick(Common::KeyCode code);
+	void onActionClick(Common::CustomEventType action);
 	void onLeftButtonClick(Common::Point point);
 	void onLeftButtonUp();
 	virtual void onRightButtonClick(Common::Point point);
diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp
index 422ea57f4c9..eefeaa92c12 100644
--- a/engines/pink/pink.cpp
+++ b/engines/pink/pink.cpp
@@ -164,8 +164,8 @@ Common::Error Pink::PinkEngine::run() {
 				if (isPeril())
 					_actor->onRightButtonClick(event.mouse);
 				break;
-			case Common::EVENT_KEYDOWN:
-				_actor->onKeyboardButtonClick(event.kbd.keycode);
+			case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+				_actor->onActionClick(event.customType);
 				break;
 			default:
 				break;
diff --git a/engines/pink/pink.h b/engines/pink/pink.h
index b664399075f..0fa27ceb567 100644
--- a/engines/pink/pink.h
+++ b/engines/pink/pink.h
@@ -90,6 +90,15 @@ enum {
 	GF_COMPRESSED = 1 << 0,
 };
 
+enum PINKActions {
+	kActionNone,
+	kActionSkipWalk,
+	kActionSkipWalkAndCancelInteraction,
+	kActionSkipSequence,
+	kActionSkipSubSequence,
+	kActionRestartSequence,
+};
+
 extern Graphics::PaletteLookup *g_paletteLookup;
 
 class PinkEngine : public Engine {




More information about the Scummvm-git-logs mailing list