[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