From 71532a23200b246f63ed1e0dc3d563bd1184b593 Mon Sep 17 00:00:00 2001 From: Joshua Langley Date: Mon, 16 Jul 2007 15:23:34 +0000 Subject: --- src/keyboardconfig.cpp | 129 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/keyboardconfig.cpp (limited to 'src/keyboardconfig.cpp') diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp new file mode 100644 index 00000000..3185a58a --- /dev/null +++ b/src/keyboardconfig.cpp @@ -0,0 +1,129 @@ +/* + * The Mana World + * Copyright 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "keyboardconfig.h" +#include "configuration.h" +#include "log.h" + +#include + +#include "gui/setup_keyboard.h" + +void KeyboardConfig::destroy() +{ + +} + +void KeyboardConfig::init() +{ + mKey[KEY_MOVE_UP] = KeyFunction("keyMoveUp", SDLK_UP, "Move Up"); + mKey[KEY_MOVE_DOWN] = KeyFunction("keyMoveDown", SDLK_DOWN, "Move Down"); + mKey[KEY_MOVE_LEFT] = KeyFunction("keyMoveLeft", SDLK_LEFT, "Move Left"); + mKey[KEY_MOVE_RIGHT] = + KeyFunction("keyMoveRight", SDLK_RIGHT, "Move Right"); + + mKey[KEY_ATTACK] = KeyFunction("keyAttack", SDLK_LCTRL, "Attack"); + mKey[KEY_TARGET] = KeyFunction("keyTarget", SDLK_LSHIFT, "Target"); + mKey[KEY_TARGET_CLOSEST] = + KeyFunction("mKeyTargetClosest", SDLK_a, "Target Closest"); + mKey[KEY_PICKUP] = KeyFunction("keyPickup", SDLK_z, "Pickup"); + mKey[KEY_HIDE_WINDOWS] = + KeyFunction("keyHideWindows", SDLK_h, "Hide Windows"); + mKey[KEY_SIT] = KeyFunction("keyBeingSit", SDLK_g, "Sit"); + + for (int i = 0; i < KEY_TOTAL; i++) + { + mKey[i].value = KEY_NO_VALUE; + } + mNewKeyIndex = KEY_NO_VALUE; + mEnabled = true; + + retrieve(); +} + +void KeyboardConfig::retrieve() +{ + for (int i = 0; i < KEY_TOTAL; i++) + { + mKey[i].value = (int) config.getValue( + mKey[i].configField, mKey[i].defaultValue); + } +} + +void KeyboardConfig::store() +{ + for (int i = 0; i < KEY_TOTAL; i++) + { + config.setValue(mKey[i].configField, mKey[i].value); + } +} + +void KeyboardConfig::makeDefault() +{ + for (int i = 0; i < KEY_TOTAL; i++) + { + mKey[i].value = mKey[i].defaultValue; + } +} + +bool KeyboardConfig::hasConflicts() +{ + int i, j; + for (i = 0; i < KEY_TOTAL; i++) + { + for (j = 0; j < KEY_TOTAL; j++) + { + if (i != j && mKey[i].value == mKey[j].value) + { + return true; + } + } + } + return false; +} + +void KeyboardConfig::callbackNewKey() +{ + mSetupKey->newKeyCallback((const int) mNewKeyIndex); +} + +int KeyboardConfig::getKeyIndex(const int keyValue) const +{ + for (int i = 0; i < KEY_TOTAL; i++) + { + if(keyValue == mKey[i].value) + { + return i; + } + } + return KEY_NO_VALUE; +} + +bool KeyboardConfig::isKeyActive(int index) +{ + return mActiveKeys[mKey[index].value]; +} + +void KeyboardConfig::refreshActiveKeys() +{ + mActiveKeys = SDL_GetKeyState(NULL); +} -- cgit v1.2.3-60-g2f50