2008-07-21 00:11:25 +00:00
|
|
|
#include "backends/common/keymapper.h"
|
|
|
|
#include "backends/common/keymap-manager.h"
|
2008-07-21 15:55:25 +00:00
|
|
|
#include "common/config-manager.h"
|
2008-07-21 00:11:25 +00:00
|
|
|
namespace Common {
|
|
|
|
|
|
|
|
Keymapper::Keymapper(EventManager *evtMgr) {
|
|
|
|
_eventMan = evtMgr;
|
|
|
|
_keymapMan = new KeymapManager();
|
|
|
|
_currentMap = 0;
|
|
|
|
_hardwareKeys = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Keymapper::registerHardwareKeySet(HardwareKeySet *keys) {
|
|
|
|
if (_hardwareKeys)
|
|
|
|
error("Hardware key set already registered!\n");
|
|
|
|
_hardwareKeys = keys;
|
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
const HardwareKeySet *Keymapper::getHardwareKeySet() const {
|
2008-07-21 00:11:25 +00:00
|
|
|
return _hardwareKeys;
|
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void Keymapper::addGlobalKeyMap(const String& name, Keymap *keymap) {
|
2008-07-21 00:11:25 +00:00
|
|
|
_keymapMan->registerGlobalKeymap(name, keymap);
|
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void Keymapper::addGameKeyMap(const String& name, Keymap *keymap) {
|
|
|
|
if (_gameId.size() == 0) {
|
|
|
|
initGame();
|
|
|
|
if (_gameId.size() == 0)
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
_keymapMan->registerGameKeymap(name, keymap);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Keymapper::initGame() {
|
|
|
|
if (ConfMan.getActiveDomain() == 0)
|
|
|
|
error("Call to Keymapper::initGame when no game loaded\n");
|
|
|
|
|
|
|
|
if (_gameId.size() > 0)
|
|
|
|
deInitGame();
|
|
|
|
_gameId = ConfMan.getActiveDomainName();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Keymapper::deInitGame() {
|
|
|
|
_keymapMan->unregisterAllGameKeymaps();
|
|
|
|
_gameId.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool Keymapper::switchKeymap(const String& name) {
|
|
|
|
Keymap *new_map = _keymapMan->getKeymap(name);
|
|
|
|
if (!new_map) {
|
|
|
|
warning("Keymap '%s' could not be found\n", name.c_str());
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
_currentMap = new_map;
|
|
|
|
return true;
|
2008-07-21 00:11:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // end of namespace Common
|