diff --git a/BBGE/ActionInput.cpp b/BBGE/ActionInput.cpp index ae68bad..15c7989 100644 --- a/BBGE/ActionInput.cpp +++ b/BBGE/ActionInput.cpp @@ -29,6 +29,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. std::string getInputCodeToString(int k) { + if(k <= 0) + return std::string(); if(k < SDL_NUM_SCANCODES) { const char *name = SDL_GetScancodeName((SDL_Scancode)k); @@ -69,11 +71,11 @@ int getStringToInputCode(const std::string& s) if(s == "MMB") return MOUSE_BUTTON_MIDDLE; if(!strncmp(s.c_str(), "K:", 2)) - return SDL_GetScancodeFromName(s.c_str() + 2); + return atoi(s.c_str() + 2); if(!strncmp(s.c_str(), "JB:", 3)) return JOY_BUTTON_0 + atoi(s.c_str() + 3); - return -1; // FIXME: is this correct? + return SDL_GetScancodeFromName(s.c_str()); } diff --git a/BBGE/ActionMapper.cpp b/BBGE/ActionMapper.cpp index 8ad6188..9ee8fe5 100644 --- a/BBGE/ActionMapper.cpp +++ b/BBGE/ActionMapper.cpp @@ -179,19 +179,7 @@ bool ActionMapper::pollAction(int actionID) bool ActionMapper::getKeyState(int k) { bool keyState = false; - if (k == KEY_ANYKEY) - { - keyState = false; - for (int i = 0; i < KEY_MAXARRAY; i ++) - { - if (core->getKeyState(i)) - { - keyState = true; - break; - } - } - } - else if (k >= 0 && k < KEY_MAXARRAY) + if (k >= 0 && k < KEY_MAXARRAY) { keyState = (core->getKeyState(k)); } diff --git a/BBGE/Core.cpp b/BBGE/Core.cpp index 7137b5f..00cdc2d 100644 --- a/BBGE/Core.cpp +++ b/BBGE/Core.cpp @@ -228,11 +228,6 @@ bool Core::getCtrlState() return getKeyState(KEY_LCONTROL) || getKeyState(KEY_RCONTROL); } -bool Core::getMetaState() -{ - return getKeyState(KEY_LMETA) || getKeyState(KEY_RMETA); -} - void Core::errorLog(const std::string &s) { messageBox("Error!", s); @@ -714,47 +709,9 @@ bool Core::getMouseButtonState(int m) bool Core::getKeyState(int k) { - - if (k >= KEY_MAXARRAY || k < 0) - { - return 0; - } - return keys[k]; - -#ifdef BBGE_BUILD_WINDOWS - if (k >= KEY_MAXARRAY || k < 0) - { - return 0; - } - return keys[k]; -#endif - - return 0; + return k > 0 && k < KEY_MAXARRAY ? keys[k] : 0; } - - -Vector joychange; -Vector lastjoy; -void readJoystickData() -{ - - - -} - -void readMouseData() -{ - -} - -void readKeyData() -{ - -} - - - bool Core::initJoystickLibrary() { @@ -795,18 +752,11 @@ void Core::onUpdate(float dt) core->mouse.lastPosition = core->mouse.position; core->mouse.lastScrollWheel = core->mouse.scrollWheel; - readKeyData(); - readMouseData(); - readJoystickData(); pollEvents(); joystick.update(dt); - - onMouseInput(); - - globalScale.update(dt); core->globalScaleChanged(); @@ -1748,172 +1698,6 @@ bool Core::doMouseConstraint() return false; } - -#if defined(BBGE_BUILD_SDL2) -typedef std::map sdlKeyMap; -#else -typedef std::map sdlKeyMap; -#endif - -static sdlKeyMap *initSDLKeymap(void) -{ - sdlKeyMap *_retval = new sdlKeyMap; - sdlKeyMap &retval = *_retval; - - #define SETKEYMAP(gamekey,sdlkey) retval[sdlkey] = gamekey - -#ifdef BBGE_BUILD_SDL2 - SETKEYMAP(KEY_LSUPER, SDLK_LGUI); - SETKEYMAP(KEY_RSUPER, SDLK_RGUI); - SETKEYMAP(KEY_LMETA, SDLK_LGUI); - SETKEYMAP(KEY_RMETA, SDLK_RGUI); - SETKEYMAP(KEY_PRINTSCREEN, SDLK_PRINTSCREEN); - SETKEYMAP(KEY_NUMPAD1, SDLK_KP_1); - SETKEYMAP(KEY_NUMPAD2, SDLK_KP_2); - SETKEYMAP(KEY_NUMPAD3, SDLK_KP_3); - SETKEYMAP(KEY_NUMPAD4, SDLK_KP_4); - SETKEYMAP(KEY_NUMPAD5, SDLK_KP_5); - SETKEYMAP(KEY_NUMPAD6, SDLK_KP_6); - SETKEYMAP(KEY_NUMPAD7, SDLK_KP_7); - SETKEYMAP(KEY_NUMPAD8, SDLK_KP_8); - SETKEYMAP(KEY_NUMPAD9, SDLK_KP_9); - SETKEYMAP(KEY_NUMPAD0, SDLK_KP_0); -#else - SETKEYMAP(KEY_LSUPER, SDLK_LSUPER); - SETKEYMAP(KEY_RSUPER, SDLK_RSUPER); - SETKEYMAP(KEY_LMETA, SDLK_LMETA); - SETKEYMAP(KEY_RMETA, SDLK_RMETA); - SETKEYMAP(KEY_PRINTSCREEN, SDLK_PRINT); - SETKEYMAP(KEY_NUMPAD1, SDLK_KP1); - SETKEYMAP(KEY_NUMPAD2, SDLK_KP2); - SETKEYMAP(KEY_NUMPAD3, SDLK_KP3); - SETKEYMAP(KEY_NUMPAD4, SDLK_KP4); - SETKEYMAP(KEY_NUMPAD5, SDLK_KP5); - SETKEYMAP(KEY_NUMPAD6, SDLK_KP6); - SETKEYMAP(KEY_NUMPAD7, SDLK_KP7); - SETKEYMAP(KEY_NUMPAD8, SDLK_KP8); - SETKEYMAP(KEY_NUMPAD9, SDLK_KP9); - SETKEYMAP(KEY_NUMPAD0, SDLK_KP0); -#endif - - SETKEYMAP(KEY_BACKSPACE, SDLK_BACKSPACE); - - - - SETKEYMAP(KEY_LALT, SDLK_LALT); - SETKEYMAP(KEY_RALT, SDLK_RALT); - SETKEYMAP(KEY_LSHIFT, SDLK_LSHIFT); - SETKEYMAP(KEY_RSHIFT, SDLK_RSHIFT); - SETKEYMAP(KEY_LCONTROL, SDLK_LCTRL); - SETKEYMAP(KEY_RCONTROL, SDLK_RCTRL); - SETKEYMAP(KEY_NUMPADMINUS, SDLK_KP_MINUS); - SETKEYMAP(KEY_NUMPADPERIOD, SDLK_KP_PERIOD); - SETKEYMAP(KEY_NUMPADPLUS, SDLK_KP_PLUS); - SETKEYMAP(KEY_NUMPADSLASH, SDLK_KP_DIVIDE); - SETKEYMAP(KEY_NUMPADSTAR, SDLK_KP_MULTIPLY); - SETKEYMAP(KEY_PGDN, SDLK_PAGEDOWN); - SETKEYMAP(KEY_PGUP, SDLK_PAGEUP); - SETKEYMAP(KEY_APOSTROPHE, SDLK_QUOTE); - SETKEYMAP(KEY_EQUALS, SDLK_EQUALS); - SETKEYMAP(KEY_SEMICOLON, SDLK_SEMICOLON); - SETKEYMAP(KEY_LBRACKET, SDLK_LEFTBRACKET); - SETKEYMAP(KEY_RBRACKET, SDLK_RIGHTBRACKET); - - SETKEYMAP(KEY_TILDE, SDLK_BACKQUOTE); - SETKEYMAP(KEY_0, SDLK_0); - SETKEYMAP(KEY_1, SDLK_1); - SETKEYMAP(KEY_2, SDLK_2); - SETKEYMAP(KEY_3, SDLK_3); - SETKEYMAP(KEY_4, SDLK_4); - SETKEYMAP(KEY_5, SDLK_5); - SETKEYMAP(KEY_6, SDLK_6); - SETKEYMAP(KEY_7, SDLK_7); - SETKEYMAP(KEY_8, SDLK_8); - SETKEYMAP(KEY_9, SDLK_9); - SETKEYMAP(KEY_A, SDLK_a); - SETKEYMAP(KEY_B, SDLK_b); - SETKEYMAP(KEY_C, SDLK_c); - SETKEYMAP(KEY_D, SDLK_d); - SETKEYMAP(KEY_E, SDLK_e); - SETKEYMAP(KEY_F, SDLK_f); - SETKEYMAP(KEY_G, SDLK_g); - SETKEYMAP(KEY_H, SDLK_h); - SETKEYMAP(KEY_I, SDLK_i); - SETKEYMAP(KEY_J, SDLK_j); - SETKEYMAP(KEY_K, SDLK_k); - SETKEYMAP(KEY_L, SDLK_l); - SETKEYMAP(KEY_M, SDLK_m); - SETKEYMAP(KEY_N, SDLK_n); - SETKEYMAP(KEY_O, SDLK_o); - SETKEYMAP(KEY_P, SDLK_p); - SETKEYMAP(KEY_Q, SDLK_q); - SETKEYMAP(KEY_R, SDLK_r); - SETKEYMAP(KEY_S, SDLK_s); - SETKEYMAP(KEY_T, SDLK_t); - SETKEYMAP(KEY_U, SDLK_u); - SETKEYMAP(KEY_V, SDLK_v); - SETKEYMAP(KEY_W, SDLK_w); - SETKEYMAP(KEY_X, SDLK_x); - SETKEYMAP(KEY_Y, SDLK_y); - SETKEYMAP(KEY_Z, SDLK_z); - - SETKEYMAP(KEY_LEFT, SDLK_LEFT); - SETKEYMAP(KEY_RIGHT, SDLK_RIGHT); - SETKEYMAP(KEY_UP, SDLK_UP); - SETKEYMAP(KEY_DOWN, SDLK_DOWN); - - SETKEYMAP(KEY_DELETE, SDLK_DELETE); - SETKEYMAP(KEY_SPACE, SDLK_SPACE); - SETKEYMAP(KEY_RETURN, SDLK_RETURN); - SETKEYMAP(KEY_PERIOD, SDLK_PERIOD); - SETKEYMAP(KEY_MINUS, SDLK_MINUS); - SETKEYMAP(KEY_CAPSLOCK, SDLK_CAPSLOCK); - SETKEYMAP(KEY_SYSRQ, SDLK_SYSREQ); - SETKEYMAP(KEY_TAB, SDLK_TAB); - SETKEYMAP(KEY_HOME, SDLK_HOME); - SETKEYMAP(KEY_END, SDLK_END); - SETKEYMAP(KEY_COMMA, SDLK_COMMA); - SETKEYMAP(KEY_SLASH, SDLK_SLASH); - - SETKEYMAP(KEY_F1, SDLK_F1); - SETKEYMAP(KEY_F2, SDLK_F2); - SETKEYMAP(KEY_F3, SDLK_F3); - SETKEYMAP(KEY_F4, SDLK_F4); - SETKEYMAP(KEY_F5, SDLK_F5); - SETKEYMAP(KEY_F6, SDLK_F6); - SETKEYMAP(KEY_F7, SDLK_F7); - SETKEYMAP(KEY_F8, SDLK_F8); - SETKEYMAP(KEY_F9, SDLK_F9); - SETKEYMAP(KEY_F10, SDLK_F10); - SETKEYMAP(KEY_F11, SDLK_F11); - SETKEYMAP(KEY_F12, SDLK_F12); - SETKEYMAP(KEY_F13, SDLK_F13); - SETKEYMAP(KEY_F14, SDLK_F14); - SETKEYMAP(KEY_F15, SDLK_F15); - - SETKEYMAP(KEY_ESCAPE, SDLK_ESCAPE); - - - - #undef SETKEYMAP - - return _retval; -} - -#if defined(BBGE_BUILD_SDL2) -static int mapSDLKeyToGameKey(const SDL_Keycode val) -#else -static int mapSDLKeyToGameKey(const SDLKey val) -#endif -{ - static sdlKeyMap *keymap = NULL; - if (keymap == NULL) - keymap = initSDLKeymap(); - - return (*keymap)[val]; -} - - void Core::pollEvents() { bool warpMouse=false; @@ -1979,7 +1763,13 @@ void Core::pollEvents() } else if (_hasFocus) { - keys[mapSDLKeyToGameKey(event.key.keysym.sym)] = 1; +#ifdef BBGE_BUILD_SDL2 + unsigned kidx = event.key.keysym.scancode; +#else + unsigned kidx = event.key.keysym.sym; +#endif + if(kidx < KEY_MAXARRAY) + keys[kidx] = 1; } } break; @@ -1988,7 +1778,13 @@ void Core::pollEvents() { if (_hasFocus) { - keys[mapSDLKeyToGameKey(event.key.keysym.sym)] = 0; +#ifdef BBGE_BUILD_SDL2 + unsigned kidx = event.key.keysym.scancode; +#else + unsigned kidx = event.key.keysym.sym; +#endif + if(kidx < KEY_MAXARRAY) + keys[kidx] = 0; } } break; @@ -3336,6 +3132,7 @@ done: void Core::onJoystickRemoved(int instanceID) { + debugLog("Joystick removed"); for(size_t i = 0; i < joysticks.size(); ++i) if(joysticks[i]->getInstanceID() == instanceID) { diff --git a/BBGE/Core.h b/BBGE/Core.h index c2f798b..b2c6b05 100644 --- a/BBGE/Core.h +++ b/BBGE/Core.h @@ -21,14 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef __core__ #define __core__ -/* -valid BUILD_ flags -WIN32/BUILD_WIN32 -BUILD_MACOSX -BUILD_X360 -BUILD_LINUX -*/ - #include "Base.h" #include "RenderObject.h" #include "SoundManager.h" @@ -44,6 +36,8 @@ BUILD_LINUX #include "Shader.h" #include "Joystick.h" +#include "GameKeys.h" + class ParticleEffect; @@ -80,123 +74,6 @@ class Texture; const int baseVirtualWidth = 800; const int baseVirtualHeight = 600; -enum GameKeys -{ - - - - KEY_LSUPER, - KEY_RSUPER, - KEY_LMETA, - KEY_RMETA, - KEY_BACKSPACE, - KEY_PRINTSCREEN, - - - - KEY_LALT, - KEY_RALT, - KEY_LSHIFT, - KEY_RSHIFT, - KEY_LCONTROL, - KEY_RCONTROL, - KEY_NUMPADMINUS, - KEY_NUMPADPERIOD, - KEY_NUMPADPLUS, - KEY_NUMPADSLASH, - KEY_NUMPADSTAR, - KEY_PGDN, - KEY_PGUP, - KEY_APOSTROPHE, - KEY_EQUALS, - KEY_SEMICOLON, - KEY_LBRACKET, - KEY_RBRACKET, - - KEY_TILDE, - KEY_0, - KEY_1, - KEY_2, - KEY_3, - KEY_4, - KEY_5, - KEY_6, - KEY_7, - KEY_8, - KEY_9, - KEY_A, - KEY_B, - KEY_C, - KEY_D, - KEY_E, - KEY_F, - KEY_G, - KEY_H, - KEY_I, - KEY_J, - KEY_K, - KEY_L, - KEY_M, - KEY_N, - KEY_O, - KEY_P, - KEY_Q, - KEY_R, - KEY_S, - KEY_T, - KEY_U, - KEY_V, - KEY_W, - KEY_X, - KEY_Y, - KEY_Z, - KEY_LEFT, - KEY_RIGHT, - KEY_UP, - KEY_DOWN, - KEY_NUMPAD1, - KEY_NUMPAD2, - KEY_NUMPAD3, - KEY_NUMPAD4, - KEY_NUMPAD5, - KEY_NUMPAD6, - KEY_NUMPAD7, - KEY_NUMPAD8, - KEY_NUMPAD9, - KEY_NUMPAD0, - KEY_DELETE, - KEY_SPACE, - KEY_RETURN, - KEY_PERIOD, - KEY_MINUS, - KEY_CAPSLOCK, - KEY_SYSRQ, - KEY_TAB, - KEY_HOME, - KEY_END, - KEY_COMMA, - KEY_SLASH, - KEY_F1, - KEY_F2, - KEY_F3, - KEY_F4, - KEY_F5, - KEY_F6, - KEY_F7, - KEY_F8, - KEY_F9, - KEY_F10, - KEY_F11, - KEY_F12, - KEY_F13, - KEY_F14, - KEY_F15, - KEY_ESCAPE, - KEY_ANYKEY, - KEY_MAXARRAY -}; - - enum ButtonState { UP = 0, DOWN }; struct MouseButtons @@ -525,7 +402,6 @@ public: bool getShiftState(); bool getAltState(); bool getCtrlState(); - bool getMetaState(); virtual void generateCollisionMask(RenderObject *r){} diff --git a/win/vc90/BBGE.vcproj b/win/vc90/BBGE.vcproj index b3ca351..90c47e6 100644 --- a/win/vc90/BBGE.vcproj +++ b/win/vc90/BBGE.vcproj @@ -284,6 +284,10 @@ RelativePath="..\..\BBGE\FrameBuffer.h" > + +