[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