[Scummvm-git-logs] scummvm master -> 433dfc6981c8672a689fd65893db810966bcf8df
aquadran
aquadran at gmail.com
Fri Mar 12 20:45:24 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
433dfc6981 ICB: Added initial support for keymapping
Commit: 433dfc6981c8672a689fd65893db810966bcf8df
https://github.com/scummvm/scummvm/commit/433dfc6981c8672a689fd65893db810966bcf8df
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2021-03-12T21:45:16+01:00
Commit Message:
ICB: Added initial support for keymapping
Changed paths:
engines/icb/direct_input.cpp
engines/icb/icb.cpp
engines/icb/icb.h
engines/icb/metaengine.cpp
diff --git a/engines/icb/direct_input.cpp b/engines/icb/direct_input.cpp
index 4771e3a643..e154968881 100644
--- a/engines/icb/direct_input.cpp
+++ b/engines/icb/direct_input.cpp
@@ -120,7 +120,7 @@ void SetDefaultKeys() {
interact_key = Common::KEYCODE_LCTRL;
inventory_key = Common::KEYCODE_RETURN;
arm_key = Common::KEYCODE_LALT;
- remora_key = Common::KEYCODE_DELETE;
+ remora_key = Common::KEYCODE_r;
crouch_key = Common::KEYCODE_x;
sidestep_key = Common::KEYCODE_LSHIFT;
run_key = Common::KEYCODE_z;
diff --git a/engines/icb/icb.cpp b/engines/icb/icb.cpp
index a52fc86692..4bffe6b6d5 100644
--- a/engines/icb/icb.cpp
+++ b/engines/icb/icb.cpp
@@ -27,10 +27,16 @@
#include "engines/icb/icb.h"
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymap.h"
+#include "backends/keymapper/standard-actions.h"
+
#include "common/config-manager.h"
#include "common/events.h"
#include "common/savefile.h"
#include "common/system.h"
+#include "common/translation.h"
+
#include "audio/mixer.h"
#include "graphics/pixelbuffer.h"
@@ -54,6 +60,81 @@ IcbEngine::~IcbEngine() {
g_icb = NULL;
}
+Common::KeymapArray IcbEngine::initKeymapsIcb(const char *target) {
+ using namespace Common;
+
+ Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "icb", "In Cold Blood");
+ Action *act;
+
+ act = new Action(kStandardActionMoveUp, _("Up"));
+ act->setKeyEvent(KEYCODE_UP);
+ act->addDefaultInputMapping("JOY_UP");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveDown, _("Down"));
+ act->setKeyEvent(KEYCODE_DOWN);
+ act->addDefaultInputMapping("JOY_DOWN");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveLeft, _("Left"));
+ act->setKeyEvent(KEYCODE_LEFT);
+ act->addDefaultInputMapping("JOY_LEFT");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveRight, _("Right"));
+ act->setKeyEvent(KEYCODE_RIGHT);
+ act->addDefaultInputMapping("JOY_RIGHT");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BFIR", _("Fire"));
+ act->setKeyEvent(KeyState(KEYCODE_SPACE));
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BUSE", _("Interact"));
+ act->setKeyEvent(KeyState(KEYCODE_LCTRL));
+ act->addDefaultInputMapping("JOY_A");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BINV", _("Inventory"));
+ act->setKeyEvent(KeyState(KEYCODE_RETURN));
+ act->addDefaultInputMapping("JOY_B");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BARM", _("Arm"));
+ act->setKeyEvent(KeyState(KEYCODE_LALT));
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BREM", _("Remora"));
+ act->setKeyEvent(KeyState(KEYCODE_r));
+ act->addDefaultInputMapping("JOY_X");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BCRU", _("Crouch"));
+ act->setKeyEvent(KeyState(KEYCODE_x));
+ act->addDefaultInputMapping("JOY_Y");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BSID", _("Side Step"));
+ act->setKeyEvent(KeyState(KEYCODE_LSHIFT));
+ act->addDefaultInputMapping("JOY_RIGHT_TRIGGER");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BRUN", _("Run"));
+ act->setKeyEvent(KeyState(KEYCODE_z));
+ act->addDefaultInputMapping("JOY_LEFT_TRIGGER");
+ engineKeyMap->addAction(act);
+
+ act = new Action("BPAS", _("Pause"));
+ act->setKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE));
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_BACK");
+ engineKeyMap->addAction(act);
+
+ return Keymap::arrayOf(engineKeyMap);
+}
+
// TODO: Refactor, this is currently implemented in p4_pc.cpp
void InitEngine(const char *cmdLine);
bool mainLoopIteration();
diff --git a/engines/icb/icb.h b/engines/icb/icb.h
index f7ba13316d..6b8bac0d97 100644
--- a/engines/icb/icb.h
+++ b/engines/icb/icb.h
@@ -41,6 +41,7 @@ public:
virtual ~IcbEngine();
Common::RandomSource *getRandomSource() { return _randomSource; }
+ static Common::Array<Common::Keymap *> initKeymapsIcb(const char *target);
protected:
// Engine APIs
diff --git a/engines/icb/metaengine.cpp b/engines/icb/metaengine.cpp
index c54140d6cf..ba3c8ab478 100644
--- a/engines/icb/metaengine.cpp
+++ b/engines/icb/metaengine.cpp
@@ -24,6 +24,7 @@
#include "common/savefile.h"
#include "common/system.h"
+#include "common/config-manager.h"
namespace ICB {
@@ -35,6 +36,8 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const override { return false; }
virtual Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const override;
+
+ Common::KeymapArray initKeymaps(const char *target) const override;
};
Common::Error IcbMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
@@ -42,6 +45,16 @@ Common::Error IcbMetaEngine::createInstance(OSystem *syst, Engine **engine, cons
return Common::kNoError;
}
+Common::KeymapArray IcbMetaEngine::initKeymaps(const char *target) const {
+ Common::String gameId = ConfMan.get("gameid", target);
+
+ if (gameId == "icb") {
+ return ICB::IcbEngine::initKeymapsIcb(target);
+ }
+
+ return AdvancedMetaEngine::initKeymaps(target);
+}
+
} // End of namespace ICB
#if PLUGIN_ENABLED_DYNAMIC(ICB)
More information about the Scummvm-git-logs
mailing list