From 38b9a4e371744056f3112f8e6751b964f42db0e3 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Tue, 12 Apr 2011 16:47:14 +0000 Subject: [PATCH] - added a keyboard test display area in keyboard setup (shows the key it thinks you pressed) --- .../glest_game/menu/menu_state_keysetup.cpp | 42 +++++++++++++++++++ source/glest_game/menu/menu_state_keysetup.h | 3 ++ 2 files changed, 45 insertions(+) diff --git a/source/glest_game/menu/menu_state_keysetup.cpp b/source/glest_game/menu/menu_state_keysetup.cpp index 2c6bb3cb..5fbc0e32 100644 --- a/source/glest_game/menu/menu_state_keysetup.cpp +++ b/source/glest_game/menu/menu_state_keysetup.cpp @@ -46,6 +46,16 @@ MenuStateKeysetup::MenuStateKeysetup(Program *program, MainMenu *mainMenu): labelTitle.setFont(CoreData::getInstance().getMenuFontBig()); labelTitle.setText(lang.get("Keyboardsetup")); + labelTestTitle.registerGraphicComponent(containerName,"labelTestTitle"); + labelTestTitle.init(50,700); + labelTestTitle.setFont(CoreData::getInstance().getMenuFontBig()); + labelTestTitle.setText(lang.get("KeyboardsetupTest")); + + labelTestValue.registerGraphicComponent(containerName,"labelTestValue"); + labelTestValue.init(50,670); + labelTestValue.setFont(CoreData::getInstance().getMenuFontBig()); + labelTestValue.setText(""); + // mainMassegeBox mainMessageBox.registerGraphicComponent(containerName,"mainMessageBox"); mainMessageBox.init(lang.get("Ok")); @@ -273,6 +283,8 @@ void MenuStateKeysetup::render(){ renderer.renderButton(&buttonDefaults); renderer.renderButton(&buttonOk); renderer.renderLabel(&labelTitle); + renderer.renderLabel(&labelTestTitle); + renderer.renderLabel(&labelTestValue); if(keyScrollBar.getElementCount()!=0 ) { for(int i = keyScrollBar.getVisibleStart(); i <= keyScrollBar.getVisibleEnd(); ++i) { @@ -323,6 +335,36 @@ void MenuStateKeysetup::showMessageBox(const string &text, const string &header, void MenuStateKeysetup::keyDown(char key) { hotkeyChar = key; + string keyName = ""; + if(hotkeyChar > SDLK_UNKNOWN && hotkeyChar < SDLK_LAST) { + if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key); + keyName = SDL_GetKeyName(static_cast(hotkeyChar)); + } + //key = hotkeyChar; + + if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key); + + SDLKey keysym = SDLK_UNKNOWN; + if(keyName == "unknown key" || keyName == "") { + Config &configKeys = Config::getInstance(std::pair(cfgMainKeys,cfgUserKeys)); + keysym = configKeys.translateSpecialStringToSDLKey(hotkeyChar); + + if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keysym [%d]\n",__FILE__,__FUNCTION__,__LINE__,keysym); + + // SDL skips capital letters + if(keysym >= 65 && keysym <= 90) { + keysym = (SDLKey)((int)keysym + 32); + } + //if(keysym < 255) { + // key = keysym; + //} + keyName = SDL_GetKeyName(keysym); + } + + char szBuf[1024] = ""; + sprintf(szBuf,"%s [%d][%d]",keyName.c_str(),key,keysym); + labelTestValue.setText(szBuf); + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d] hotkeyChar [%d]\n",__FILE__,__FUNCTION__,__LINE__,hotkeyChar); } diff --git a/source/glest_game/menu/menu_state_keysetup.h b/source/glest_game/menu/menu_state_keysetup.h index cc2b0d8c..46c114be 100644 --- a/source/glest_game/menu/menu_state_keysetup.h +++ b/source/glest_game/menu/menu_state_keysetup.h @@ -53,6 +53,9 @@ private: int hotkeyIndex; char hotkeyChar; + GraphicLabel labelTestTitle; + GraphicLabel labelTestValue; + public: MenuStateKeysetup(Program *program, MainMenu *mainMenu); virtual ~MenuStateKeysetup();