summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/keyboardconfig.cpp36
-rw-r--r--src/keyboardconfig.h21
2 files changed, 26 insertions, 31 deletions
diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp
index 73912000..047f576a 100644
--- a/src/keyboardconfig.cpp
+++ b/src/keyboardconfig.cpp
@@ -29,25 +29,33 @@
#include "gui/setup_keyboard.h"
-void KeyboardConfig::init()
+struct KeyData
{
- 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");
+ const char *configField;
+ int defaultValue;
+ const char *caption;
+};
- mKey[KEY_ATTACK] = KeyFunction("keyAttack", SDLK_LCTRL, "Attack");
- mKey[KEY_TARGET] = KeyFunction("keyTarget", SDLK_LSHIFT, "Target");
- mKey[KEY_TARGET_CLOSEST] =
- KeyFunction("keyTargetClosest", 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");
+static KeyData const keyData[KeyboardConfig::KEY_TOTAL] = {
+ {"keyMoveUp", SDLK_UP, "Move Up"},
+ {"keyMoveDown", SDLK_DOWN, "Move Down"},
+ {"keyMoveLeft", SDLK_LEFT, "Move Left"},
+ {"keyMoveRight", SDLK_RIGHT, "Move Right"},
+ {"keyAttack", SDLK_LCTRL, "Attack"},
+ {"keyTarget", SDLK_LSHIFT, "Target"},
+ {"keyTargetClosest", SDLK_a, "Target Closest"},
+ {"keyPickup", SDLK_z, "Pickup"},
+ {"keyHideWindows", SDLK_h, "Hide Windows"},
+ {"keyBeingSit", SDLK_g, "Sit"}
+};
+void KeyboardConfig::init()
+{
for (int i = 0; i < KEY_TOTAL; i++)
{
+ mKey[i].configField = keyData[i].configField;
+ mKey[i].defaultValue = keyData[i].defaultValue;
+ mKey[i].caption = keyData[i].caption;
mKey[i].value = KEY_NO_VALUE;
}
mNewKeyIndex = KEY_NO_VALUE;
diff --git a/src/keyboardconfig.h b/src/keyboardconfig.h
index 64d80629..1a7d84b9 100644
--- a/src/keyboardconfig.h
+++ b/src/keyboardconfig.h
@@ -35,19 +35,9 @@
*/
struct KeyFunction
{
- KeyFunction() {}
-
- KeyFunction(std::string configField,
- int defaultValue,
- std::string caption):
- configField(configField),
- caption(caption),
- defaultValue(defaultValue)
- {}
-
- std::string configField; /** Field index that is in the config file. */
- std::string caption; /** The caption value for the key function. */
+ const char* configField; /** Field index that is in the config file. */
int defaultValue; /** The default key value used. */
+ std::string caption; /** The caption value for the key function. */
int value; /** The actual value that is used. */
};
@@ -105,7 +95,7 @@ class KeyboardConfig
/**
* Get the key caption, providing more meaning to the user.
*/
- std::string const &getKeyCaption(int index) const
+ const std::string &getKeyCaption(int index) const
{ return mKey[index].caption; }
/**
@@ -150,10 +140,7 @@ class KeyboardConfig
/**
* All the key functions.
* KEY_NO_VALUE is used in initialization, and should be unchanged.
- * KEY_MIN and KEY_TOTAL should always be first and last respectively,
- * the bare used in control loops.
- * The third element (after KEY_NO_VALUE and KEY_MIN),
- * should always equal KEY_MIN.
+ * KEY_TOTAL should always be last (used as a conditional in loops).
* The key assignment view gets arranged according to the order of
* these values.
*/