[Scummvm-cvs-logs] scummvm master -> 27e38d16ee66367f7589e545c1377825a36e8891

lordhoto lordhoto at gmail.com
Fri Dec 30 20:48:33 CET 2011


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
548a3e2534 KYRA: Add basic keymapper support to EoB 1+2.
27e38d16ee KYRA: Clean up LoL keymap setup a bit.


Commit: 548a3e25342c44cd8ebaecf7a62968f8b62c15f7
    https://github.com/scummvm/scummvm/commit/548a3e25342c44cd8ebaecf7a62968f8b62c15f7
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2011-12-30T11:40:06-08:00

Commit Message:
KYRA: Add basic keymapper support to EoB 1+2.

Changed paths:
    engines/kyra/eobcommon.cpp
    engines/kyra/eobcommon.h



diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp
index 15cabd9..f1a6c5d 100644
--- a/engines/kyra/eobcommon.cpp
+++ b/engines/kyra/eobcommon.cpp
@@ -30,12 +30,17 @@
 #include "kyra/debugger.h"
 
 #include "common/config-manager.h"
+#include "common/translation.h"
 
 #include "audio/mididrv.h"
 #include "audio/mixer.h"
 
+#include "backends/keymapper/keymapper.h"
+
 namespace Kyra {
 
+const char *const EoBCoreEngine::kKeymapName = "eob";
+
 EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
 	: KyraRpgEngine(system, flags), _numLargeItemShapes(flags.gameID == GI_EOB1 ? 14 : 11),
 	  _numSmallItemShapes(flags.gameID == GI_EOB1 ? 23 : 26),
@@ -308,6 +313,50 @@ EoBCoreEngine::~EoBCoreEngine() {
 	_txt = 0;
 }
 
+void EoBCoreEngine::initKeymap() {
+#ifdef ENABLE_KEYMAPPER
+	Common::Keymapper *const mapper = _eventMan->getKeymapper();
+
+	// Do not try to recreate same keymap over again
+	if (mapper->getKeymap(kKeymapName) != 0)
+		return;
+
+	Common::Keymap *const engineKeyMap = new Common::Keymap(kKeymapName);
+
+	const Common::KeyActionEntry keyActionEntries[] = {
+		{ Common::KeyState(Common::KEYCODE_UP), "MVF", _("Move Forward") },
+		{ Common::KeyState(Common::KEYCODE_DOWN), "MVB", _("Move Back") },
+		{ Common::KeyState(Common::KEYCODE_LEFT), "MVL", _("Move Left") },
+		{ Common::KeyState(Common::KEYCODE_RIGHT), "MVR", _("Move Right") },
+		{ Common::KeyState(Common::KEYCODE_HOME), "TL", _("Turn Left") },
+		{ Common::KeyState(Common::KEYCODE_PAGEUP), "TR", _("Turn Right") },
+		{ Common::KeyState(Common::KEYCODE_i), "INV", _("Open/Close Inventory") },
+		{ Common::KeyState(Common::KEYCODE_p), "SCE", _("Switch Inventory/Character screen") },
+		{ Common::KeyState(Common::KEYCODE_c), "CMP", _("Camp") },
+		{ Common::KeyState(Common::KEYCODE_SPACE), "CSP", _("Cast Spell") },
+		// TODO: Spell cursor, but this needs more thought, since different
+		// game versions use different keycodes.
+		{ Common::KeyState(Common::KEYCODE_1), "SL1", _("Spell Level 1") },
+		{ Common::KeyState(Common::KEYCODE_2), "SL2", _("Spell Level 2") },
+		{ Common::KeyState(Common::KEYCODE_3), "SL3", _("Spell Level 3") },
+		{ Common::KeyState(Common::KEYCODE_4), "SL4", _("Spell Level 4") },
+		{ Common::KeyState(Common::KEYCODE_5), "SL5", _("Spell Level 5") }
+	};
+
+	for (uint i = 0; i < ARRAYSIZE(keyActionEntries); ++i) {
+		Common::Action *const act = new Common::Action(engineKeyMap, keyActionEntries[i].id, keyActionEntries[i].description, Common::kGenericActionType, Common::kActionKeyType);
+		act->addKeyEvent(keyActionEntries[i].ks);
+	}
+	
+	if (_flags.gameID == GI_EOB2) {
+		Common::Action *const act = new Common::Action(engineKeyMap, "SL6", _("Spell Level 6"), Common::kGenericActionType, Common::kActionKeyType);
+		act->addKeyEvent(Common::KeyState(Common::KEYCODE_6));
+	}
+
+	mapper->addGameKeymap(engineKeyMap);
+#endif
+}
+
 Common::Error EoBCoreEngine::init() {
 	// In EOB the timer proc is directly invoked via interrupt 0x1c, 18.2 times per second.
 	// This makes a tick length of 54.94.
@@ -439,6 +488,10 @@ Common::Error EoBCoreEngine::init() {
 	// Prevent autosave on game startup
 	_lastAutosave = _system->getMillis();
 
+#ifdef ENABLE_KEYMAPPER
+	_eventMan->getKeymapper()->pushKeymap(kKeymapName, true);
+#endif
+
 	return Common::kNoError;
 }
 
diff --git a/engines/kyra/eobcommon.h b/engines/kyra/eobcommon.h
index f02b76d..e7b3a73 100644
--- a/engines/kyra/eobcommon.h
+++ b/engines/kyra/eobcommon.h
@@ -250,6 +250,8 @@ public:
 	EoBCoreEngine(OSystem *system, const GameFlags &flags);
 	virtual ~EoBCoreEngine();
 
+	virtual void initKeymap();
+
 	Screen *screen() { return _screen; }
 	GUI *gui() const { return _gui; }
 
@@ -1127,9 +1129,12 @@ protected:
 	// sound
 	void snd_playSoundEffect(int id, int volume=0xFF);
 	void snd_stopSound();
+
+	// keymap
+	static const char *const kKeymapName;
 };
 
-}	// End of namespace Kyra
+} // End of namespace Kyra
 
 #endif // ENABLE_EOB
 


Commit: 27e38d16ee66367f7589e545c1377825a36e8891
    https://github.com/scummvm/scummvm/commit/27e38d16ee66367f7589e545c1377825a36e8891
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2011-12-30T11:41:47-08:00

Commit Message:
KYRA: Clean up LoL keymap setup a bit.

Changed paths:
    engines/kyra/lol.cpp



diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp
index 290c3ba..b24ab4f 100644
--- a/engines/kyra/lol.cpp
+++ b/engines/kyra/lol.cpp
@@ -466,15 +466,13 @@ Common::Error LoLEngine::init() {
 
 void LoLEngine::initKeymap() {
 #ifdef ENABLE_KEYMAPPER
-
-	Common::Keymapper *mapper = _eventMan->getKeymapper();
+	Common::Keymapper *const mapper = _eventMan->getKeymapper();
 
 	// Do not try to recreate same keymap over again
 	if (mapper->getKeymap(kKeymapName) != 0)
 		return;
 
-	Common::Action *act;
-	Common::Keymap *engineKeyMap = new Common::Keymap(kKeymapName);
+	Common::Keymap *const engineKeyMap = new Common::Keymap(kKeymapName);
 
 	const Common::KeyActionEntry keyActionEntries[] = {
 		{Common::KeyState(Common::KEYCODE_F1, Common::ASCII_F1), "AT1", _("Attack 1")},
@@ -492,14 +490,12 @@ void LoLEngine::initKeymap() {
 		{Common::KeyState(), 0, 0}
 	};
 
-	const Common::KeyActionEntry *entry;
-	for (entry = keyActionEntries; entry->id; ++entry) {
-		act = new Common::Action(engineKeyMap, entry->id, Common::String(entry->description), Common::kGenericActionType, Common::kActionKeyType);
-		act->addKeyEvent(Common::KeyState(entry->ks));
+	for (const Common::KeyActionEntry *entry = keyActionEntries; entry->id; ++entry) {
+		Common::Action *const act = new Common::Action(engineKeyMap, entry->id, entry->description, Common::kGenericActionType, Common::kActionKeyType);
+		act->addKeyEvent(entry->ks);
 	}
 
 	mapper->addGameKeymap(engineKeyMap);
-
 #endif
 }
 






More information about the Scummvm-git-logs mailing list