X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2Fconfig%2Freader.cpp;h=0335faf3fcf5d5f988831b1fe2c0730e7393a607;hb=6234dc8ac6f39176121740b756828f0cba565149;hp=2d1d677360c61639e546280f0796c8e729456c65;hpb=9d049dcaf022e500e643d6e46bb29412aa419653;p=physics.git diff --git a/src/config/reader.cpp b/src/config/reader.cpp index 2d1d677..0335faf 100644 --- a/src/config/reader.cpp +++ b/src/config/reader.cpp @@ -19,32 +19,42 @@ #include "../debug.h" #include +using std::cerr; +using std::cout; +using std::endl; + #include #include +#include "keys.h" + using std::ifstream; using std::string; -typedef std::map kMap; +typedef std::map kMap; kMap keyMap; /// ***** Private Method Headers ***** -void processLine(const string& str, inputMap* map); +void processLine(const string& str); bool extractLine(const string& str, string* name, string* value); +void createKeyMap(); /// ***** Private Variables ***** -char* configDir = "../configs/"; +const char* configDir = "configs/"; +const char* testFile = "keys.cfg"; /// ***** Public Methods ***** -void readConfigs(inputMap* map) +void readConfigs() { char fileName[64]; + createKeyMap(); + strcpy(fileName, configDir); - strcat(fileName, "test.cfg"); + strcat(fileName, testFile); ifstream file(fileName); @@ -62,7 +72,7 @@ void readConfigs(inputMap* map) if(file.eof()) break; - processLine(line, map); + processLine(line); } file.close(); @@ -70,7 +80,7 @@ void readConfigs(inputMap* map) /// ***** Private Methods ***** -void processLine(const string& str, inputMap* map) +void processLine(const string& str) { string name; string value; @@ -81,9 +91,12 @@ void processLine(const string& str, inputMap* map) if(extracted) { - //map->insert(name, value); - cout << name << endl; - cout << value << endl; + SDLKey key = keyMap[value]; + + if(0 != key) + { + *(key::sdlMap[name]) = key; + } } } @@ -105,11 +118,11 @@ bool extractLine(const string& str, string* name, string* value) int char_pos = 0; - int name_start; - int name_end; + int name_start = 0; + int name_end = 0; - int value_start; - int value_end; + int value_start = 0; + int value_end = 0; const char* c_str = str.c_str(); @@ -141,14 +154,17 @@ bool extractLine(const string& str, string* name, string* value) char_pos--; // decrement to stay on this char break; case 2: - if(c_str[char_pos] == '=') - state++; - if(c_str[char_pos] != ' ' - && c_str[char_pos] != '\t') + && c_str[char_pos] != '\t' + && c_str[char_pos] != '=') { return false; } + + if(c_str[char_pos] == '=') + { + state++; + } break; case 3: if(c_str[char_pos] != ' ' @@ -178,31 +194,34 @@ bool extractLine(const string& str, string* name, string* value) name->clear(); value->clear(); - name->replace(0, 0, c_str, name_start, name_end-name_start); - value->replace(0, 0, c_str, value_start, value_end-value_start); + name->replace (0, 0, c_str, name_start, name_end - name_start); + value->replace (0, 0, c_str, value_start, value_end - value_start); return true; } -bool extractKey(const string& str, Uint8* key) -{ -// if(str.length() != 1) -// return false; - - return false; -} - void createKeyMap() { + char buf[2] = {0,0}; + // add all the letters for (int i = 'A'; i <= 'Z'; i++) // uppercase - keyMap["" + (char)i] = (SDLKey)i; + { + buf[0] = (char)i; + keyMap[buf] = (SDLKey)(i + 'a' - 'A'); + } for (int i = 'a'; i <= 'z'; i++) // lowercase - keyMap["" + (char)i] = (SDLKey)i; + { + buf[0] = (char)i; + keyMap[buf] = (SDLKey)i; + } // add all the numbers for (int i = '0'; i <= '9'; i++) - keyMap["" + (char)i] = (SDLKey)i; + { + buf[0] = (char)i; + keyMap[buf] = (SDLKey)i; + } /* // add the function keys @@ -214,68 +233,68 @@ void createKeyMap() } */ - keyMap["LCtrl"] = SDLK_LCTRL; - keyMap["LeftControl"] = SDLK_LCTRL; - keyMap["LAlt"] = SDLK_LALT; - keyMap["LeftAlt"] = SDLK_LALT; - keyMap["LShift"] = SDLK_LSHIFT; - keyMap["LeftShift"] = SDLK_LSHIFT; - keyMap["LWin"] = SDLK_LSUPER; - keyMap["LeftWindows"] = SDLK_LSUPER; - keyMap["LeftMeta"] = SDLK_LMETA; - keyMap["LMeta"] = SDLK_LMETA; - - keyMap["RCtrl"] = SDLK_RCTRL; - keyMap["RightControl"] = SDLK_RCTRL; - keyMap["RAlt"] = SDLK_RALT; - keyMap["RightAlt"] = SDLK_RALT; - keyMap["RShift"] = SDLK_RSHIFT; - keyMap["RightShift"] = SDLK_RSHIFT; - keyMap["RWin"] = SDLK_RSUPER; - keyMap["RightWindows"] = SDLK_RSUPER; - keyMap["RightMeta"] = SDLK_RMETA; - keyMap["RMeta"] = SDLK_RMETA; - - keyMap["Esc"] = SDLK_ESCAPE; - keyMap["Escape"] = SDLK_ESCAPE; - - keyMap["Return"] = SDLK_RETURN; - keyMap["Enter"] = SDLK_RETURN; - - keyMap["Insert"] = SDLK_INSERT; - keyMap["Home"] = SDLK_HOME; - keyMap["Delete"] = SDLK_DELETE; - keyMap["End"] = SDLK_END; - keyMap["PageUp"] = SDLK_PAGEUP; - keyMap["PageDown"] = SDLK_PAGEDOWN; - - keyMap["Minus"] = SDLK_MINUS; - keyMap["Equal"] = SDLK_EQUALS; - keyMap["Equals"] = SDLK_EQUALS; - keyMap["LeftBracket"] = SDLK_LEFTBRACKET; - keyMap["LBracket"] = SDLK_LEFTBRACKET; - keyMap["RightBracket"] = SDLK_RIGHTBRACKET; - keyMap["RBracket"] = SDLK_RIGHTBRACKET; - keyMap["Backslash"] = SDLK_BACKSLASH; - keyMap["Slash"] = SDLK_SLASH; - keyMap["Semicolon"] = SDLK_SEMICOLON; - keyMap["Semi"] = SDLK_SEMICOLON; - keyMap["Quote"] = SDLK_QUOTE; - keyMap["Comma"] = SDLK_COMMA; - keyMap["Period"] = SDLK_PERIOD; - keyMap["Space"] = SDLK_SPACE; - keyMap["BSpace"] = SDLK_BACKSPACE; - keyMap["Backspace"] = SDLK_BACKSPACE; - keyMap["BackSpace"] = SDLK_BACKSPACE; - - keyMap["Tab"] = SDLK_TAB; - keyMap["BackQuote"] = SDLK_BACKQUOTE; - keyMap["BQuote"] = SDLK_BACKQUOTE; - keyMap["CapsLock"] = SDLK_CAPSLOCK; - keyMap["Caps"] = SDLK_CAPSLOCK; - - keyMap["Up"] = SDLK_UP; - keyMap["Down"] = SDLK_DOWN; - keyMap["Left"] = SDLK_LEFT; - keyMap["Right"] = SDLK_RIGHT; + keyMap["LCtrl"] = SDLK_LCTRL; + keyMap["LeftControl"] = SDLK_LCTRL; + keyMap["LAlt"] = SDLK_LALT; + keyMap["LeftAlt"] = SDLK_LALT; + keyMap["LShift"] = SDLK_LSHIFT; + keyMap["LeftShift"] = SDLK_LSHIFT; + keyMap["LWin"] = SDLK_LSUPER; + keyMap["LeftWindows"] = SDLK_LSUPER; + keyMap["LeftMeta"] = SDLK_LMETA; + keyMap["LMeta"] = SDLK_LMETA; + + keyMap["RCtrl"] = SDLK_RCTRL; + keyMap["RightControl"] = SDLK_RCTRL; + keyMap["RAlt"] = SDLK_RALT; + keyMap["RightAlt"] = SDLK_RALT; + keyMap["RShift"] = SDLK_RSHIFT; + keyMap["RightShift"] = SDLK_RSHIFT; + keyMap["RWin"] = SDLK_RSUPER; + keyMap["RightWindows"] = SDLK_RSUPER; + keyMap["RightMeta"] = SDLK_RMETA; + keyMap["RMeta"] = SDLK_RMETA; + + keyMap["Esc"] = SDLK_ESCAPE; + keyMap["Escape"] = SDLK_ESCAPE; + + keyMap["Return"] = SDLK_RETURN; + keyMap["Enter"] = SDLK_RETURN; + + keyMap["Insert"] = SDLK_INSERT; + keyMap["Home"] = SDLK_HOME; + keyMap["Delete"] = SDLK_DELETE; + keyMap["End"] = SDLK_END; + keyMap["PageUp"] = SDLK_PAGEUP; + keyMap["PageDown"] = SDLK_PAGEDOWN; + + keyMap["Minus"] = SDLK_MINUS; + keyMap["Equal"] = SDLK_EQUALS; + keyMap["Equals"] = SDLK_EQUALS; + keyMap["LeftBracket"] = SDLK_LEFTBRACKET; + keyMap["LBracket"] = SDLK_LEFTBRACKET; + keyMap["RightBracket"] = SDLK_RIGHTBRACKET; + keyMap["RBracket"] = SDLK_RIGHTBRACKET; + keyMap["Backslash"] = SDLK_BACKSLASH; + keyMap["Slash"] = SDLK_SLASH; + keyMap["Semicolon"] = SDLK_SEMICOLON; + keyMap["Semi"] = SDLK_SEMICOLON; + keyMap["Quote"] = SDLK_QUOTE; + keyMap["Comma"] = SDLK_COMMA; + keyMap["Period"] = SDLK_PERIOD; + keyMap["Space"] = SDLK_SPACE; + keyMap["BSpace"] = SDLK_BACKSPACE; + keyMap["Backspace"] = SDLK_BACKSPACE; + keyMap["BackSpace"] = SDLK_BACKSPACE; + + keyMap["Tab"] = SDLK_TAB; + keyMap["BackQuote"] = SDLK_BACKQUOTE; + keyMap["BQuote"] = SDLK_BACKQUOTE; + keyMap["CapsLock"] = SDLK_CAPSLOCK; + keyMap["Caps"] = SDLK_CAPSLOCK; + + keyMap["Up"] = SDLK_UP; + keyMap["Down"] = SDLK_DOWN; + keyMap["Left"] = SDLK_LEFT; + keyMap["Right"] = SDLK_RIGHT; }