[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