From 8a657ea287e700cd23d112b3b2e8a48ec5aeee12 Mon Sep 17 00:00:00 2001 From: Benlitz Date: Mon, 12 Aug 2013 15:00:04 +0000 Subject: [PATCH] input: Removed previous input system --- demos/tutorial/07_input.cpp | 6 - src/core.h | 6 +- src/debug/fps.cpp | 5 +- src/eglapp.cpp | 4 - src/input/controller.cpp | 4 - src/input/controller.h | 4 - src/input/input.cpp | 475 ++--------------------------- src/input/input.h | 508 +++++-------------------------- src/input/inputdevice.cpp | 74 ----- src/input/inputdevice.h | 126 -------- src/input/inputdevice_internal.h | 46 --- src/input/keyboard.cpp | 71 ----- src/input/keyboard.h | 47 --- src/input/stick.cpp | 112 ------- src/input/stick.h | 56 ---- src/lolcore.vcxproj | 8 +- src/lolcore.vcxproj.filters | 82 ++--- src/platform/d3d9/d3d9input.cpp | 23 +- src/platform/sdl/sdlapp.cpp | 11 +- src/platform/sdl/sdlinput.cpp | 316 +------------------ src/platform/sdl/sdlinput.h | 7 +- 21 files changed, 158 insertions(+), 1833 deletions(-) delete mode 100644 src/input/inputdevice.cpp delete mode 100644 src/input/inputdevice.h delete mode 100644 src/input/inputdevice_internal.h delete mode 100644 src/input/keyboard.cpp delete mode 100644 src/input/keyboard.h delete mode 100644 src/input/stick.cpp delete mode 100644 src/input/stick.h diff --git a/demos/tutorial/07_input.cpp b/demos/tutorial/07_input.cpp index d3bb3eb1..bc12dd8c 100644 --- a/demos/tutorial/07_input.cpp +++ b/demos/tutorial/07_input.cpp @@ -25,7 +25,6 @@ class InputTutorial : public WorldEntity public: InputTutorial() { -#if LOL_INPUT_V2 m_controller = new Controller(KEY_MAX, AXIS_MAX); m_keyboard = InputDevice::Get("Keyboard"); @@ -46,7 +45,6 @@ public: m_controller->GetAxis(AXIS_PITCH).Bind("Joystick1", "Axis2"); m_controller->GetAxis(AXIS_YAW).Bind("Joystick1", "Axis1"); } -#endif m_pitch_angle = 0; m_yaw_angle = 0; @@ -90,7 +88,6 @@ public: { WorldEntity::TickGame(seconds); -#if LOL_INPUT_V2 /* Handle keyboard */ if (m_keyboard) { @@ -129,7 +126,6 @@ public: m_mouse->GetCursorPixel(0).x, m_mouse->GetCursorPixel(0).y)); } else -#endif { m_text->SetText("no mouse detected"); } @@ -217,10 +213,8 @@ private: AXIS_MAX }; -#if LOL_INPUT_V2 InputDevice *m_keyboard, *m_mouse, *m_joystick; Controller *m_controller; -#endif bool m_autorot; float m_pitch_angle; diff --git a/src/core.h b/src/core.h index af3f158c..f30ce096 100644 --- a/src/core.h +++ b/src/core.h @@ -124,14 +124,10 @@ static inline int isnan(float f) #include "video.h" #include "audio.h" #include "scene.h" -#include "input/input.h" -#include "input/keyboard.h" -#include "input/stick.h" #include "profiler.h" -// Input (v2) +// Input #include "input/input.h" -#include "input/inputdevice.h" #include "input/controller.h" // Entities diff --git a/src/debug/fps.cpp b/src/debug/fps.cpp index 8b45f415..451f60ea 100644 --- a/src/debug/fps.cpp +++ b/src/debug/fps.cpp @@ -87,13 +87,14 @@ void DebugFps::TickGame(float seconds) 1e3f * Profiler::GetMax(Profiler::STAT_TICK_FRAME)); data->lines[4]->SetText(buf); #else - sprintf(buf, "%2.2f/%2.2f/%2.2f/%2.2f %2.2f fps (%i)", + sprintf(buf, "%2.2f/%2.2f/%2.2f/%2.2f %2.2f fps (%i) %2.2f", 1e3f * Profiler::GetAvg(Profiler::STAT_TICK_GAME), 1e3f * Profiler::GetAvg(Profiler::STAT_TICK_DRAW), 1e3f * Profiler::GetAvg(Profiler::STAT_TICK_BLIT), 1e3f * Profiler::GetAvg(Profiler::STAT_TICK_FRAME), 1.0f / Profiler::GetAvg(Profiler::STAT_TICK_FRAME), - Ticker::GetFrameNum()); + 1e3f * Profiler::GetAvg(Profiler::STAT_USER_00), + Ticker::GetFrameNum()); data->lines[0]->SetText(buf); #endif } diff --git a/src/eglapp.cpp b/src/eglapp.cpp index a0c5d1e3..7a1b0751 100644 --- a/src/eglapp.cpp +++ b/src/eglapp.cpp @@ -251,11 +251,7 @@ EglApp::EglApp(char const *title, ivec2 res, float fps) : # endif # if defined USE_SDL -# if defined LOL_INPUT_V2 new SdlInput(res.x, res.y, data->screen_size.x, data->screen_size.y); -# else - new SdlInput(); -# endif # endif /* Initialise everything */ diff --git a/src/input/controller.cpp b/src/input/controller.cpp index 38ecff1f..d8558396 100644 --- a/src/input/controller.cpp +++ b/src/input/controller.cpp @@ -14,8 +14,6 @@ #include "core.h" -#ifdef LOL_INPUT_V2 - namespace lol { @@ -137,5 +135,3 @@ Array Controller::DeactivateAll() } } /* namespace lol */ - -#endif // LOL_INPUT_V2 diff --git a/src/input/controller.h b/src/input/controller.h index af173ce8..926c3940 100644 --- a/src/input/controller.h +++ b/src/input/controller.h @@ -13,8 +13,6 @@ #include "core.h" -#if defined LOL_INPUT_V2 - namespace lol { @@ -98,7 +96,5 @@ private: } /* namespace lol */ -#endif // LOL_INPUT_V2 - #endif // __LOL_INPUT_CONTROLLER_H__ diff --git a/src/input/input.cpp b/src/input/input.cpp index c0cd8c65..2962a82c 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -1,484 +1,69 @@ // // Lol Engine // -// Copyright: (c) 2010-2013 Sam Hocevar +// Copyright: (c) 2010-2013 Benjamin Litzelmann // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://www.wtfpl.net/ for more details. // - #if defined HAVE_CONFIG_H # include "config.h" #endif -#include - #include "core.h" -#ifndef LOL_INPUT_V2 +#include "input/input_internal.h" namespace lol { -/* - * Input implementation class - */ - -InputTracker* Input::m_input_tracker = nullptr; - -static class InputData -{ - friend class Input; - -public: - InputData() - : mouse(-1), - buttons(0), - nentities(0), - lastfocus(0) - { - m_keystate.Resize(Key::Last); - memset(&m_keystate[0], 0, m_keystate.Bytes()); - } - -private: - ivec2 mouse; - uint32_t buttons; - - Array m_keystate; - - static int const MAX_ENTITIES = 100; - WorldEntity *entities[MAX_ENTITIES]; - int nentities; - WorldEntity *lastfocus; - - Array m_sticks; -} -inputdata; - -static InputData * const data = &inputdata; - -/* - * ButtonSetting class - */ - -int ButtonSetting::GetActionSettingIdx(Action a) -{ - for (int i = 0; i < m_associated_action_list.Count(); i++) - if (ACTION_CMP(m_associated_action_list[i].m_action, a)) - return i; - return -1; -} - -/* - * InputTracker class - */ - -InputTracker::InputTracker() -{ - m_gamegroup = GAMEGROUP_BEFORE; - - for (int i = 0; i < Key::Last * 2; ++i) - m_input_status << 0; - - Ticker::Ref(this); -} - -//Internal -int InputTracker::GetButtonSettingIdx(Key k) -{ - for (int i = 0; i < m_input_assocation_list.Count(); i++) - if (m_input_assocation_list[i].m_raw_button == k) - return i; - return -1; -} - -//----- -int InputTracker::GetCurrentButtonStatus(Key k) -{ - if (k < m_input_status.Count()) - return m_input_status[k]; - return 0; -} - -//----- -int InputTracker::GetPreviousButtonStatus(Key k) -{ - if (k < m_input_status.Count()) - return m_input_status[(int)k + (int)Key::Last]; - return 0; -} - -//Internal : Updates the action status & timers -void InputTracker::UpdateActionStatus(float seconds) -{ - Array &keystate = Input::GetKeyboardState(); - - //SOOOoooo ugly. - for (int i = 0; i < Key::Last; ++i) - { - m_input_status[i + Key::Last] = m_input_status[i]; - m_input_status[i] = keystate[i]; - } - - for (int i = 0; i < m_input_assocation_list.Count(); i++) - { - ButtonSetting &CurIT = m_input_assocation_list[i]; - - for (int j = 0; j < CurIT.m_associated_action_list.Count(); j++) - { - ActionSetting &CurAS = CurIT.m_associated_action_list[j]; - - if (CurAS.m_buffered_since <= CurAS.m_buffering_time) - CurAS.m_buffered_since += seconds; - - if (GetCurrentButtonStatus(CurIT.m_raw_button) && - CurAS.m_buffering_time >= .0f) - CurAS.m_buffered_since = .0f; - } - } -} - -//Helps link a software input Action-Id to an hardware input Button-Id. -void InputTracker::LinkActionToKey(Action a, Key k) -{ - int ITIdx = GetButtonSettingIdx(k); - if (ITIdx == -1) - { - ITIdx = m_input_assocation_list.Count(); - m_input_assocation_list << ButtonSetting(k); - } - - ButtonSetting &CurIT = m_input_assocation_list[ITIdx]; - - int ASIdx = CurIT.GetActionSettingIdx(a); - if (ASIdx == -1) - { - ASIdx = CurIT.m_associated_action_list.Count(); - CurIT.m_associated_action_list << ActionSetting(a); - } -} - -//Helps unlink a software input Action-Id to an hardware input k-Id. -void InputTracker::UnlinkAction(Action a) -{ - for (int i = 0; i < m_input_assocation_list.Count(); i++) - { - ButtonSetting &CurIT = m_input_assocation_list[i]; - int ASIdx = CurIT.GetActionSettingIdx(a); - if (ASIdx != -1) - CurIT.m_associated_action_list.Remove(ASIdx); - } -} - -//Returns the current status of a given action -int InputTracker::GetStatus(Action a) -{ - for (int i = 0; i < m_input_assocation_list.Count(); i++) - { - ButtonSetting &CurIT = m_input_assocation_list[i]; - int ASIdx = CurIT.GetActionSettingIdx(a); - if (ASIdx != -1) - { - ActionSetting &CurAS = CurIT.m_associated_action_list[ASIdx]; - - if (CurAS.m_buffering_time >= .0f && CurAS.m_buffered_since <= CurAS.m_buffering_time) - return 1; - return 0; - } - } - return 0; -} - -//Returns TRUE if action status went from Active to Inactive this frame -bool InputTracker::WasReleased(Action a) -{ - for (int i = 0; i < m_input_assocation_list.Count(); i++) - { - ButtonSetting &CurIT = m_input_assocation_list[i]; - int ASIdx = CurIT.GetActionSettingIdx(a); - if (ASIdx != -1) - { - - if (GetPreviousButtonStatus(CurIT.m_raw_button) && - !GetCurrentButtonStatus(CurIT.m_raw_button)) - return true; - return false; - } - } - return false; -} - -//Returns TRUE if action status went from Inactive to Active this frame -bool InputTracker::WasPressed(Action a) -{ - for (int i = 0; i < m_input_assocation_list.Count(); i++) - { - ButtonSetting &CurIT = m_input_assocation_list[i]; - int ASIdx = CurIT.GetActionSettingIdx(a); - if (ASIdx != -1) - { - if (!GetPreviousButtonStatus(CurIT.m_raw_button) && - GetCurrentButtonStatus(CurIT.m_raw_button)) - return true; - return false; - } - } - return false; -} - -//Returns the current status of a given action -int InputTracker::GetStatus(Key k) -{ - return GetCurrentButtonStatus(k); -} - -//Returns TRUE if action status went from Active to Inactive this frame -bool InputTracker::WasReleased(Key k) -{ - if (GetPreviousButtonStatus(k) && - !GetCurrentButtonStatus(k)) - return true; - return false; -} - -//Returns TRUE if action status went from Inactive to Active this frame -bool InputTracker::WasPressed(Key k) -{ - if (!GetPreviousButtonStatus(k) && - GetCurrentButtonStatus(k)) - return true; - return false; -} - -/* - * Public Input class - */ - -#if 0 -vec2 Input::GetAxis(int axis) -{ - vec2 ret; - - /* Simulate a joystick using the keyboard. */ - int left = GetKeyState(Key::D) - (GetKeyState(Key::A) | GetKeyState(Key::Q)); - int up = (GetKeyState(Key::W) | GetKeyState(Key::Z)) - GetKeyState(Key::S); - ret.x += left; - ret.y += up; - if (left && up) - ret = ret * sqrtf(0.5f); - - return ret; -} -#endif - -ivec2 Input::GetMousePos() -{ - return data->mouse; -} - -uint32_t Input::GetMouseButtons() -{ - return data->buttons; -} - -Array &Input::GetKeyboardState() -{ - return data->m_keystate; -} - -int Input::GetKeyState(int key) -{ - return data->m_keystate[key]; -} - -//Helps link a software input Action-Id to an hardware input Button-Id. -void Input::LinkActionToKey(Action a, Key k) -{ - if (CheckInputTrackerInit()) - Input::m_input_tracker->LinkActionToKey(a, k); -} - -//Helps unlink a software input Action-Id to an hardware input Button-Id. -void Input::UnlinkAction(Action a) -{ - if (CheckInputTrackerInit()) - Input::m_input_tracker->UnlinkAction(a); -} - -//Returns the current status of a given action -int Input::GetStatus(Action a) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->GetStatus(a); - return 0; -} - -//Returns TRUE if action status when from Active to Inactive this frame -bool Input::WasPressed(Action a) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->WasPressed(a); - return false; -} - -//Returns TRUE if action status when from Active to Inactive this frame -bool Input::WasReleased(Action a) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->WasReleased(a); - return false; -} - -//Returns the current status of a given action -int Input::GetStatus(Key k) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->GetStatus(k); - return 0; -} - -//Returns TRUE if action status when from Active to Inactive this frame -bool Input::WasPressed(Key k) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->WasPressed(k); - return false; -} - -//Returns TRUE if action status when from Active to Inactive this frame -bool Input::WasReleased(Key k) -{ - if (CheckInputTrackerInit()) - return Input::m_input_tracker->WasReleased(k); - return false; -} - -//-- -void Input::TrackMouse(WorldEntity *e) -{ - if (data->nentities >= InputData::MAX_ENTITIES) - return; - data->entities[data->nentities] = e; - data->nentities++; -} +Array InputDevice::devices; +bool InputDevice::m_capturemouse; -void Input::UntrackMouse(WorldEntity *e) +void InputDeviceInternal::AddKey(const char* name) { - for (int n = 0; n < data->nentities; n++) - { - if (data->entities[n] != e) - continue; - - data->entities[n] = data->entities[data->nentities - 1]; - data->nentities--; - n--; - } + m_keynames.Push(name); + m_keys.Push(false); } -void Input::SetMousePos(ivec2 coord) +void InputDeviceInternal::AddAxis(const char* name, float sensitivity) { - data->mouse = coord; - - WorldEntity *top = nullptr; - - /* Find the top “widget” amongst all entities that match the - * mouse coordinates */ - for (int n = 0; n < data->nentities; n++) - { - if (coord.x < data->entities[n]->m_bbox[0].x - || coord.x >= data->entities[n]->m_bbox[1].x - || coord.y < data->entities[n]->m_bbox[0].y - || coord.y >= data->entities[n]->m_bbox[1].y) - continue; - - if (!top || top->m_bbox[1].z < data->entities[n]->m_bbox[1].z) - top = data->entities[n]; - } - - for (int n = 0; n < data->nentities; n++) - { - if (data->entities[n] == top) - { - data->entities[n]->m_mousepos = coord - (ivec2)top->m_bbox[0].xy; - if (top != data->lastfocus) - data->entities[n]->m_pressed = data->buttons; - else - data->entities[n]->m_clicked = 0; - } - else - { - data->entities[n]->m_mousepos = ivec2(-1); - /* FIXME */ - data->entities[n]->m_released = 0; - data->entities[n]->m_pressed = 0; - data->entities[n]->m_clicked = 0; - } - } - - data->lastfocus = top; + m_axisnames.Push(name); + m_axis.Push(0.0f, sensitivity); } -void Input::SetMouseButton(int index) +void InputDeviceInternal::AddCursor(const char* name) { - uint32_t flag = 1 << index; - data->buttons |= flag; - - if (data->lastfocus) - { - if (!(data->lastfocus->m_pressed & flag)) - data->lastfocus->m_clicked |= flag; - data->lastfocus->m_pressed |= flag; - data->lastfocus->m_released &= ~flag; - } + m_cursornames.Push(name); + m_cursors.Push(vec2(0.0), ivec2(0)); } -void Input::UnsetMouseButton(int index) +InputDeviceInternal* InputDeviceInternal::CreateStandardKeyboard() { - uint32_t flag = 1 << index; - data->buttons &= ~flag; - - if (data->lastfocus) - { - if (!(data->lastfocus->m_pressed & flag)) - data->lastfocus->m_released |= flag; - data->lastfocus->m_pressed &= ~flag; - data->lastfocus->m_clicked &= ~flag; - } + InputDeviceInternal* keyboard = new InputDeviceInternal("Keyboard"); + /* "value" is unused, what matters is the index. */ +# define KEY_FUNC(key, value) \ + keyboard->AddKey(#key); +# undef KEY_FUNC + return keyboard; } -Stick *Input::CreateStick() +InputDeviceInternal* InputDeviceInternal::CreateStandardMouse() { - Stick *stick = new Stick(); - Ticker::Ref(stick); - data->m_sticks.Push(stick); - return stick; -} + InputDeviceInternal* mouse = new InputDeviceInternal("Mouse"); + mouse->AddKey("ButtonLeft"); + mouse->AddKey("ButtonMiddle"); + mouse->AddKey("ButtonRight"); -void Input::DestroyStick(Stick *stick) -{ - for (int i = 0; i < data->m_sticks.Count(); i++) - if (data->m_sticks[i] == stick) - data->m_sticks.Remove(i); - Ticker::Unref(stick); -} + mouse->AddAxis("X"); + mouse->AddAxis("Y"); -Stick *Input::TrackStick(int desired) -{ - /* FIXME: add the possibility to choose amongst sticks */ - if (desired >= data->m_sticks.Count()) - return nullptr; - Ticker::Ref(data->m_sticks[desired]); - return data->m_sticks[desired]; -} + mouse->AddCursor("Cursor"); -void Input::UntrackStick(Stick *stick) -{ - Ticker::Unref(stick); + // TODO: extended button, and wheel (as axis or as buttons? or both?) + return mouse; } } /* namespace lol */ - -#endif // !LOL_INPUT_V2 diff --git a/src/input/input.h b/src/input/input.h index 4d9eb84c..ea6d3391 100644 --- a/src/input/input.h +++ b/src/input/input.h @@ -1,464 +1,122 @@ // // Lol Engine // -// Copyright: (c) 2010-2013 Sam Hocevar +// Copyright: (c) 2010-2013 Benjamin Litzelmann // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://www.wtfpl.net/ for more details. // -// -// The Input static class -// ---------------------- -// - -#if !defined __LOL_INPUT_INPUT_H__ -#define __LOL_INPUT_INPUT_H__ - -#include -#include +#if !defined __LOL_INPUT_H__ +#define __LOL_INPUT_H__ #include "core.h" -#ifndef LOL_INPUT_V2 - -#include "lol/math/vector.h" -#include "input/keyboard.h" -#include "input/stick.h" - namespace lol { -typedef std::string Action; -static inline int ACTION_CMP(Action a, Action b) { return a.compare(b) == 0; } - -class WorldEntity; - -/* - * The key enumeration values match libSDL's so that we can - * easily pass information between Lol and SDL. - */ -struct Key +class InputDevice { - enum Value - { - /* ASCII mapped keys */ - Unknown = 0, - First = 0, - Backspace = 8, - Tab = (int)'\t', - Clear = 12, - Return = 13, - Pause = 19, - Escape = 27, - Space = (int)' ', - Exclaim = (int)'!', - DoubleQuote = (int)'"', - Hash = (int)'#', - Dollar = (int)'$', - Ampersand = (int)'&', - Quote = (int)'\'', - LeftParen = (int)'(', - RightParen = (int)')', - Asterisk = (int)'*', - Plus = (int)'+', - Comma = (int)',', - Minus = (int)'-', - Period = (int)'.', - Slash = (int)'/', - K0 = (int)'0', - K1 = (int)'1', - K2 = (int)'2', - K3 = (int)'3', - K4 = (int)'4', - K5 = (int)'5', - K6 = (int)'6', - K7 = (int)'7', - K8 = (int)'8', - K9 = (int)'9', - Colon = (int)':', - Semicolon = (int)';', - Less = (int)'<', - Equals = (int)'=', - Greater = (int)'>', - Question = (int)'?', - At = (int)'@', - /* XXX: SDL decides to skip uppercase characters */ - LeftBracket = (int)'[', - BackSlash = (int)'\\', - RightBracket = (int)']', - Caret = (int)'^', - Underscore = (int)'_', - Backquote = (int)'`', - A = (int)'a', - B = (int)'b', - C = (int)'c', - D = (int)'d', - E = (int)'e', - F = (int)'f', - G = (int)'g', - H = (int)'h', - I = (int)'i', - J = (int)'j', - K = (int)'k', - L = (int)'l', - M = (int)'m', - N = (int)'n', - O = (int)'o', - P = (int)'p', - Q = (int)'q', - R = (int)'r', - S = (int)'s', - T = (int)'t', - U = (int)'u', - V = (int)'v', - W = (int)'w', - X = (int)'x', - Y = (int)'y', - Z = (int)'z', - Delete = 127, - - /* International keyboard syms */ - World0 = 160, /* 0xA0 */ - World1 = 161, - World2 = 162, - World3 = 163, - World4 = 164, - World5 = 165, - World6 = 166, - World7 = 167, - World8 = 168, - World9 = 169, - World10 = 170, - World11 = 171, - World12 = 172, - World13 = 173, - World14 = 174, - World15 = 175, - World16 = 176, - World17 = 177, - World18 = 178, - World19 = 179, - World20 = 180, - World21 = 181, - World22 = 182, - World23 = 183, - World24 = 184, - World25 = 185, - World26 = 186, - World27 = 187, - World28 = 188, - World29 = 189, - World30 = 190, - World31 = 191, - World32 = 192, - World33 = 193, - World34 = 194, - World35 = 195, - World36 = 196, - World37 = 197, - World38 = 198, - World39 = 199, - World40 = 200, - World41 = 201, - World42 = 202, - World43 = 203, - World44 = 204, - World45 = 205, - World46 = 206, - World47 = 207, - World48 = 208, - World49 = 209, - World50 = 210, - World51 = 211, - World52 = 212, - World53 = 213, - World54 = 214, - World55 = 215, - World56 = 216, - World57 = 217, - World58 = 218, - World59 = 219, - World60 = 220, - World61 = 221, - World62 = 222, - World63 = 223, - World64 = 224, - World65 = 225, - World66 = 226, - World67 = 227, - World68 = 228, - World69 = 229, - World70 = 230, - World71 = 231, - World72 = 232, - World73 = 233, - World74 = 234, - World75 = 235, - World76 = 236, - World77 = 237, - World78 = 238, - World79 = 239, - World80 = 240, - World81 = 241, - World82 = 242, - World83 = 243, - World84 = 244, - World85 = 245, - World86 = 246, - World87 = 247, - World88 = 248, - World89 = 249, - World90 = 250, - World91 = 251, - World92 = 252, - World93 = 253, - World94 = 254, - World95 = 255, /* 0xFF */ - - /* Numeric keypad */ - KP0 = 256, - KP1 = 257, - KP2 = 258, - KP3 = 259, - KP4 = 260, - KP5 = 261, - KP6 = 262, - KP7 = 263, - KP8 = 264, - KP9 = 265, - KPPeriod = 266, - KPDivide = 267, - KPMultiply = 268, - KPMinus = 269, - KPPlus = 270, - KPEnter = 271, - KPEquals = 272, +public: + /** Get the name of this input device */ + const String& GetName(); + + /** Get the index of the corresponding key, needed to call GetKey */ + int GetKeyIndex(const char* name) const { return GetItemIndex(name, m_keynames); } + /** Get the index of the corresponding axis, needed to call GetAxis */ + int GetAxisIndex(const char* name) const { return GetItemIndex(name, m_axisnames); } + /** Get the index of the corresponding cursor, needed to call GetCursor */ + int GetCursorIndex(const char* name) const { return GetItemIndex(name, m_cursornames); } + + /** Get the current state of the given key, true being pressed and false being released */ + bool GetKey(int index) const { return m_keys[index]; } + /** Get the current value of the given axis. Devices should cap this value between -1 and 1 as much as possible, through it is not guaranteed */ + float GetAxis(int index) const { return m_axis[index].m1 * m_axis[index].m2; } + /** Get the current value of the given cursor, 0,0 being the bottom-left corner and 1,1 being the top-right corner */ + vec2 GetCursor(int index) const { return m_cursors[index].m1; } + /** Get the coordinate of the pixel the cursor is currently over, 0,0 being the bottom-left corner. */ + ivec2 GetCursorPixel(int index) const { return m_cursors[index].m2; } + + + /** Set a per-device-axis sensitivity factor. The value returned by the operating system will be multiplied by this value before being returned by GetAxis */ + void SetAxisSensitivity(int index, float sensitivity) { m_axis[index].m2 = sensitivity; } + /** Get the per-device-axis sensitivity factor. The value returned by the operating system will be multiplied by this value before being returned by GetAxis */ + float GetAxisSensitivity(int index) const { return m_axis[index].m2; } + + /** Get a list of the name of all available keys in this device */ + const Array& GetAllKeys() const { return m_keynames; } + /** Get a list of the name of all available axis in this device */ + const Array& GetAllAxis() const { return m_axisnames; } + /** Get a list of the name of all available cursors in this device */ + const Array& GetAllCursors() const { return m_cursornames; } + + /** Get an input device by its name */ + static InputDevice* Get(const char* name) { return GetDevice(name); } + /** Set whether the mouse cursor should be captured. */ + static void CaptureMouse(bool activated) { m_capturemouse = activated; } - /* Arrows + Home/End pad */ - Up = 273, - Down = 274, - Right = 275, - Left = 276, - Insert = 277, - Home = 278, - End = 279, - PageUp = 280, - PageDown = 281, +protected: + // TODO: hide all of this in a InputDeviceData? - /* Function keys */ - F1 = 282, - F2 = 283, - F3 = 284, - F4 = 285, - F5 = 286, - F6 = 287, - F7 = 288, - F8 = 289, - F9 = 290, - F10 = 291, - F11 = 292, - F12 = 293, - F13 = 294, - F14 = 295, - F15 = 296, + String m_name; - /* Modifier keys */ - NumLock = 300, - CapsLock = 301, - ScrollLock= 302, - RightShift = 303, - LeftShift = 304, - RightCtrl = 305, - LeftCtrl = 306, - RightAlt = 307, - LeftAlt = 308, - RightMeta = 309, - LeftMeta = 310, - LeftSuper = 311, /* Left "Windows" key */ - RightSuper = 312, /* Right "Windows" key */ - Mode = 313, /* "Alt Gr" key */ - Compose = 314, /* Multi-key compose key */ + Array m_keynames; + Array m_axisnames; + Array m_cursornames; - /* Miscellaneous function keys */ - Help = 315, - Print = 316, - SysReq = 317, - Break = 318, - Menu = 319, - Power = 320, /* Power Macintosh power key */ - Euro = 321, /* Some european keyboards */ - Undo = 322, /* Atari keyboard has Undo */ + /** key states (pressed/released) */ + Array m_keys; + /** axis states (value and sensitivity) */ + Array m_axis; + /** cursor position */ + Array m_cursors; - /* Add any other keys here */ - Last + static bool m_capturemouse; + InputDevice(const char* name) : m_name(name) + { + devices.Push(this); } - m_value; - //BH : Removed KMod from main enum, because I don't have any idea about handling them correctly for now. - /* - //Enumeration of valid key mods (possibly OR'd together) - KM_NONE = 0x0000, - KM_LSHIFT = 0x0001, - KM_RSHIFT = 0x0002, - KM_LCTRL = 0x0040, - KM_RCTRL = 0x0080, - KM_LALT = 0x0100, - KM_RALT = 0x0200, - KM_LMETA = 0x0400, - KM_RMETA = 0x0800, - KM_NUM = 0x1000, - KM_CAPS = 0x2000, - KM_MODE = 0x4000, - - KM_RESERVED = 0x8000, - - //Left/Right independent key mods definition - KM_CTRL = (KM_LCTRL|KM_RCTRL), - KM_SHIFT = (KM_LSHIFT|KM_RSHIFT), - KM_ALT = (KM_LALT|KM_RALT), - KM_META = (KM_LMETA|KM_RMETA), - */ - - inline Key(Value v) { m_value = v; } - inline operator Value() { return m_value; } - inline bool operator==(const Key& val) + ~InputDevice() { - return m_value == val.m_value; + for (int i = 0; i < devices.Count(); ++i) + { + if (devices[i] == this) + { + devices.Remove(i); + return; + } + } } -}; - -struct ActionSetting -{ - Action m_action; - float m_buffering_time; - float m_buffered_since; - - ActionSetting(Action NewAction) - : m_action(NewAction), - m_buffering_time(.0f), - m_buffered_since(.0f) - { } -}; - -struct ButtonSetting -{ - Key m_raw_button; - Array m_associated_action_list; - - ButtonSetting(Key NewRawButton) - : m_raw_button(NewRawButton) - { } - - int GetActionSettingIdx(Action SearchAction); -}; - -class InputTracker : public Entity -{ - friend class Input; - -public: - InputTracker(); private: - Array m_input_status; - Array m_input_assocation_list; - - int GetButtonSettingIdx(struct Key k); - int GetCurrentButtonStatus(struct Key k); - int GetPreviousButtonStatus(struct Key k); - void UpdateActionStatus(float seconds); + static Array devices; -protected: - virtual char const * GetName() - { - return ""; - } - virtual void TickGame(float seconds) + template + int GetItemIndex(const char* name, const Array& Array) const { - Entity::TickGame(seconds); - - UpdateActionStatus(seconds); + for (int i = 0; i < Array.Count(); ++i) + { + if (Array[i] == name) + return i; + } + return -1; } - void LinkActionToKey(Action a, struct Key k); - void UnlinkAction(Action a); - int GetStatus(Action a); - bool WasPressed(Action a); - bool WasReleased(Action a); - - //You should probably use the Action System - int GetStatus(Key k); - bool WasPressed(Key k); - bool WasReleased(Key k); -}; - -class Input -{ -private: - static InputTracker* m_input_tracker; - - static bool CheckInputTrackerInit() + static InputDevice* GetDevice(const char* name) { - if (Input::m_input_tracker) - return true; - - Input::m_input_tracker = new InputTracker(); - return true; + for (int i = 0; i < devices.Count(); ++i) + { + if (devices[i]->m_name == name) + return devices[i]; + } + return nullptr; } - -public: - - /* These methods are general queries */ - static ivec2 GetMousePos(); - static uint32_t GetMouseButtons(); - - /* Action management */ - static void LinkActionToKey(Action a, struct Key k); - static void UnlinkAction(Action a); - static int GetStatus(Action a); - static bool WasPressed(Action a); - static bool WasReleased(Action a); - - /* Raw Button management. You should use actions. */ - static int GetStatus(Key k); - static bool WasPressed(Key k); - static bool WasReleased(Key k); - - /* Entities can subscribe to events */ - static void TrackMouse(WorldEntity *e); - static void UntrackMouse(WorldEntity *e); - - /* These methods are called by the underlying input listeners */ - /* FIXME: this should disappear and be replaced by an input - * system that abstracts mice */ - static void SetMousePos(ivec2 coord); - static void SetMouseButton(int index); - static void UnsetMouseButton(int index); - - /* Keyboard handling */ - static Array &GetKeyboardState(); - static int GetKeyState(int key); - - static Keyboard *CreateKeyboard(); - static void DestroyKeyboard(Keyboard *keyboard); - - static Keyboard *TrackKeyboard(int desired); - static void UntrackKeyboard(Keyboard *keyboard); - - /* Joystick handling */ - static Stick *CreateStick(); - static void DestroyStick(Stick *stick); - - static Stick *TrackStick(int desired); - static void UntrackStick(Stick *stick); }; } /* namespace lol */ -#endif // !LOL_INPUT_V2 - -#endif // __LOL_INPUT_INPUT_H__ +#endif // __LOL_INPUT_H__ diff --git a/src/input/inputdevice.cpp b/src/input/inputdevice.cpp deleted file mode 100644 index fbabd6b7..00000000 --- a/src/input/inputdevice.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Benjamin Litzelmann -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -#if defined HAVE_CONFIG_H -# include "config.h" -#endif - -#include "core.h" - -#ifdef LOL_INPUT_V2 - -#include "input/inputdevice_internal.h" - -namespace lol -{ - -Array InputDevice::devices; -bool InputDevice::m_capturemouse; - -void InputDeviceInternal::AddKey(const char* name) -{ - m_keynames.Push(name); - m_keys.Push(false); -} - -void InputDeviceInternal::AddAxis(const char* name, float sensitivity) -{ - m_axisnames.Push(name); - m_axis.Push(0.0f, sensitivity); -} - -void InputDeviceInternal::AddCursor(const char* name) -{ - m_cursornames.Push(name); - m_cursors.Push(vec2(0.0), ivec2(0)); -} - -InputDeviceInternal* InputDeviceInternal::CreateStandardKeyboard() -{ - InputDeviceInternal* keyboard = new InputDeviceInternal("Keyboard"); - /* "value" is unused, what matters is the index. */ -# define KEY_FUNC(key, value) \ - keyboard->AddKey(#key); -# include "input/keys.h" -# undef KEY_FUNC - return keyboard; -} - -InputDeviceInternal* InputDeviceInternal::CreateStandardMouse() -{ - InputDeviceInternal* mouse = new InputDeviceInternal("Mouse"); - mouse->AddKey("ButtonLeft"); - mouse->AddKey("ButtonMiddle"); - mouse->AddKey("ButtonRight"); - - mouse->AddAxis("X"); - mouse->AddAxis("Y"); - - mouse->AddCursor("Cursor"); - - // TODO: extended button, and wheel (as axis or as buttons? or both?) - return mouse; -} - -} /* namespace lol */ - -#endif // LOL_INPUT_V2 diff --git a/src/input/inputdevice.h b/src/input/inputdevice.h deleted file mode 100644 index 4e7434d5..00000000 --- a/src/input/inputdevice.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Benjamin Litzelmann -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -#if !defined __LOL_INPUT_DEVICE_H__ -#define __LOL_INPUT_DEVICE_H__ - -#include "core.h" - -#if defined LOL_INPUT_V2 - -namespace lol -{ - -class InputDevice -{ -public: - /** Get the name of this input device */ - const String& GetName(); - - /** Get the index of the corresponding key, needed to call GetKey */ - int GetKeyIndex(const char* name) const { return GetItemIndex(name, m_keynames); } - /** Get the index of the corresponding axis, needed to call GetAxis */ - int GetAxisIndex(const char* name) const { return GetItemIndex(name, m_axisnames); } - /** Get the index of the corresponding cursor, needed to call GetCursor */ - int GetCursorIndex(const char* name) const { return GetItemIndex(name, m_cursornames); } - - /** Get the current state of the given key, true being pressed and false being released */ - bool GetKey(int index) const { return m_keys[index]; } - /** Get the current value of the given axis. Devices should cap this value between -1 and 1 as much as possible, through it is not guaranteed */ - float GetAxis(int index) const { return m_axis[index].m1 * m_axis[index].m2; } - /** Get the current value of the given cursor, 0,0 being the bottom-left corner and 1,1 being the top-right corner */ - vec2 GetCursor(int index) const { return m_cursors[index].m1; } - /** Get the coordinate of the pixel the cursor is currently over, 0,0 being the bottom-left corner. */ - ivec2 GetCursorPixel(int index) const { return m_cursors[index].m2; } - - - /** Set a per-device-axis sensitivity factor. The value returned by the operating system will be multiplied by this value before being returned by GetAxis */ - void SetAxisSensitivity(int index, float sensitivity) { m_axis[index].m2 = sensitivity; } - /** Get the per-device-axis sensitivity factor. The value returned by the operating system will be multiplied by this value before being returned by GetAxis */ - float GetAxisSensitivity(int index) const { return m_axis[index].m2; } - - /** Get a list of the name of all available keys in this device */ - const Array& GetAllKeys() const { return m_keynames; } - /** Get a list of the name of all available axis in this device */ - const Array& GetAllAxis() const { return m_axisnames; } - /** Get a list of the name of all available cursors in this device */ - const Array& GetAllCursors() const { return m_cursornames; } - - /** Get an input device by its name */ - static InputDevice* Get(const char* name) { return GetDevice(name); } - /** Set whether the mouse cursor should be captured. */ - static void CaptureMouse(bool activated) { m_capturemouse = activated; } - -protected: - // TODO: hide all of this in a InputDeviceData? - - String m_name; - - Array m_keynames; - Array m_axisnames; - Array m_cursornames; - - /** key states (pressed/released) */ - Array m_keys; - /** axis states (value and sensitivity) */ - Array m_axis; - /** cursor position */ - Array m_cursors; - - static bool m_capturemouse; - - InputDevice(const char* name) : m_name(name) - { - devices.Push(this); - } - - ~InputDevice() - { - for (int i = 0; i < devices.Count(); ++i) - { - if (devices[i] == this) - { - devices.Remove(i); - return; - } - } - } - -private: - static Array devices; - - template - int GetItemIndex(const char* name, const Array& Array) const - { - for (int i = 0; i < Array.Count(); ++i) - { - if (Array[i] == name) - return i; - } - return -1; - } - - static InputDevice* GetDevice(const char* name) - { - for (int i = 0; i < devices.Count(); ++i) - { - if (devices[i]->m_name == name) - return devices[i]; - } - return nullptr; - } -}; - -} /* namespace lol */ - -#endif // LOL_INPUT_V2 - -#endif // __LOL_INPUT_DEVICE_H__ - diff --git a/src/input/inputdevice_internal.h b/src/input/inputdevice_internal.h deleted file mode 100644 index 66d0d439..00000000 --- a/src/input/inputdevice_internal.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Benjamin Litzelmann -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -#if !defined __LOL_INPUT_DEVICE_INTERNAL_H__ -#define __LOL_INPUT_DEVICE_H__ - -#include "core.h" - -#if defined LOL_INPUT_V2 - -namespace lol -{ - -/** Internal class (not public) that allows to construct an InputDevice dynamically, when the keys, axis and cursors are not known at compile time */ -class InputDeviceInternal : InputDevice -{ -public: - InputDeviceInternal(const char* name) : InputDevice(name) { } - - void AddKey(const char* name); - void AddAxis(const char* name, float sensitivity = 1.0f); - void AddCursor(const char* name); - - void SetKey(int index, bool state) { m_keys[index] = state; } - void SetAxis(int index, float value) { m_axis[index].m1 = value; } - void SetCursor(int index, const vec2& position, const ivec2& pixel) { m_cursors[index].m1 = position; m_cursors[index].m2 = pixel; } - - static bool GetMouseCapture() { return m_capturemouse; } - - static InputDeviceInternal* CreateStandardKeyboard(); - static InputDeviceInternal* CreateStandardMouse(); -}; - -} /* namespace lol */ - -#endif // LOL_INPUT_V2 - -#endif // __LOL_INPUT_DEVICE_INTERNAL_H__ - diff --git a/src/input/keyboard.cpp b/src/input/keyboard.cpp deleted file mode 100644 index 96085c48..00000000 --- a/src/input/keyboard.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Sam Hocevar -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -#if defined HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "core.h" - -#ifndef LOL_INPUT_V2 - -namespace lol -{ - -/* - * Keyboard implementation class - */ - -static class KeyboardData -{ - friend class Keyboard; - -public: - KeyboardData() { } - -private: - Array m_chars; -} -keyboarddata; - -/* - * Public Keyboard class - */ - -Keyboard::Keyboard() - : m_data(new KeyboardData()) -{ -} - -Keyboard::~Keyboard() -{ - delete m_data; -} - -void Keyboard::PushChar(uint32_t ch) -{ - m_data->m_chars.Push(ch); -} - -uint32_t Keyboard::PopChar() -{ - if (!m_data->m_chars.Count()) - return 0; - - uint32_t ret = m_data->m_chars[0]; - m_data->m_chars.Remove(0); - return ret; -} - -} /* namespace lol */ - -#endif // !LOL_INPUT_V2 diff --git a/src/input/keyboard.h b/src/input/keyboard.h deleted file mode 100644 index 49f5ed3f..00000000 --- a/src/input/keyboard.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Sam Hocevar -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -// -// The Keyboard class -// ------------------ -// - -#if !defined __LOL_INPUT_KEYBOARD_H__ -#define __LOL_INPUT_KEYBOARD_H__ - -#include "entity.h" - -#ifndef LOL_INPUT_V2 - -namespace lol -{ - -class KeyboardData; - -class Keyboard : public Entity -{ - friend class Input; - -public: - void PushChar(uint32_t ch); - uint32_t PopChar(); - -private: - Keyboard(); - ~Keyboard(); - KeyboardData *m_data; -}; - -} /* namespace lol */ - -#endif // !LOL_INPUT_V2 - -#endif // __LOL_INPUT_KEYBOARD_H__ - diff --git a/src/input/stick.cpp b/src/input/stick.cpp deleted file mode 100644 index 8d33e545..00000000 --- a/src/input/stick.cpp +++ /dev/null @@ -1,112 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2011 Sam Hocevar -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -#if defined HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "core.h" - -#ifndef LOL_INPUT_V2 - -namespace lol -{ - -/* - * Stick implementation class - */ - -static class StickData -{ - friend class Stick; - -public: - StickData() { } - -private: - /* First element is the remap target */ - Array m_axes; - Array m_buttons; -} -stickdata; - -/* - * Public Stick class - */ - -Stick::Stick() - : m_data(new StickData()) -{ -} - -Stick::~Stick() -{ - delete m_data; -} - -void Stick::SetAxisCount(int n) -{ - m_data->m_axes.Empty(); - for (int i = 0; i < n; i++) - m_data->m_axes.Push(i, 0.f); -} - -void Stick::SetButtonCount(int n) -{ - m_data->m_buttons.Empty(); - for (int i = 0; i < n; i++) - m_data->m_buttons.Push(i, 0); -} - -void Stick::SetAxis(int n, float val) -{ - m_data->m_axes[m_data->m_axes[n].m1].m2 = val; -} - -void Stick::SetButton(int n, int val) -{ - m_data->m_buttons[m_data->m_buttons[n].m1].m2 = val; -} - -void Stick::RemapAxis(int src, int dst) -{ - m_data->m_axes[src].m1 = dst; -} - -void Stick::RemapButton(int src, int dst) -{ - m_data->m_buttons[src].m1 = dst; -} - -int Stick::GetAxisCount() -{ - return m_data->m_axes.Count(); -} - -int Stick::GetButtonCount() -{ - return m_data->m_buttons.Count(); -} - -float Stick::GetAxis(int n) -{ - return m_data->m_axes[n].m2; -} - -int Stick::GetButton(int n) -{ - return m_data->m_buttons[n].m2; -} - -} /* namespace lol */ - -#endif // !LOL_INPUT_V2 diff --git a/src/input/stick.h b/src/input/stick.h deleted file mode 100644 index 7bbc6785..00000000 --- a/src/input/stick.h +++ /dev/null @@ -1,56 +0,0 @@ -// -// Lol Engine -// -// Copyright: (c) 2010-2013 Sam Hocevar -// This program is free software; you can redistribute it and/or -// modify it under the terms of the Do What The Fuck You Want To -// Public License, Version 2, as published by Sam Hocevar. See -// http://www.wtfpl.net/ for more details. -// - -// -// The Stick class -// --------------- -// - -#if !defined __LOL_INPUT_STICK_H__ -#define __LOL_INPUT_STICK_H__ - -#include "entity.h" - -#ifndef LOL_INPUT_V2 - -namespace lol -{ - -class StickData; - -class Stick : public Entity -{ - friend class Input; - -public: - void SetAxisCount(int n); - void SetButtonCount(int n); - void SetAxis(int n, float val); - void SetButton(int n, int val); - void RemapAxis(int src, int dst); - void RemapButton(int src, int dst); - - int GetAxisCount(); - int GetButtonCount(); - float GetAxis(int n); - int GetButton(int n); - -private: - Stick(); - ~Stick(); - StickData *m_data; -}; - -} /* namespace lol */ - -#endif // !LOL_INPUT_V2 - -#endif // __LOL_INPUT_STICK_H__ - diff --git a/src/lolcore.vcxproj b/src/lolcore.vcxproj index cec031dc..326aaea7 100644 --- a/src/lolcore.vcxproj +++ b/src/lolcore.vcxproj @@ -146,9 +146,6 @@ - - - @@ -209,11 +206,8 @@ - - - + - diff --git a/src/lolcore.vcxproj.filters b/src/lolcore.vcxproj.filters index 811ab416..dc05fb99 100644 --- a/src/lolcore.vcxproj.filters +++ b/src/lolcore.vcxproj.filters @@ -43,21 +43,6 @@ {1eaa8df5-7a31-4358-a1e9-0e265de6ed49} - - {a11c55f8-8e10-4270-be24-38e8d4fcf589} - - - {4089421f-2cc2-4036-a6b2-9df8a2f4efc8} - - - {317cb5cc-5dcc-4e14-be90-40a125a2e2ec} - - - {a914e15d-3201-467a-a9c9-d7c5244b13ee} - - - {c6c6b597-ed6c-4d82-a166-964beeeeb525} - {e17b998c-d494-480b-ae29-5d1564f73327} @@ -79,6 +64,21 @@ {01285b11-c6c7-4a9e-8dee-daa2c63901e4} + + {a11c55f8-8e10-4270-be24-38e8d4fcf589} + + + {4089421f-2cc2-4036-a6b2-9df8a2f4efc8} + + + {317cb5cc-5dcc-4e14-be90-40a125a2e2ec} + + + {a914e15d-3201-467a-a9c9-d7c5244b13ee} + + + {c6c6b597-ed6c-4d82-a166-964beeeeb525} + @@ -94,10 +94,10 @@ debug - platform\sdl + mesh\platform\sdl - platform\sdl + mesh\platform\sdl math @@ -151,10 +151,10 @@ image\codec - platform\xbox + mesh\platform\xbox - platform\xbox + mesh\platform\xbox gpu @@ -162,14 +162,8 @@ input - - input - - - input - - platform\d3d9 + mesh\platform\d3d9 ... @@ -268,10 +262,10 @@ generated - platform\ps3 + mesh\platform\ps3 - platform\ps3 + mesh\platform\ps3 gpu @@ -315,9 +309,6 @@ input - - input - @@ -330,10 +321,10 @@ debug - platform\sdl + mesh\platform\sdl - platform\sdl + mesh\platform\sdl lol\image @@ -369,22 +360,16 @@ image - platform\xbox + mesh\platform\xbox - platform\xbox + mesh\platform\xbox input - - input - - - input - - platform\d3d9 + mesh\platform\d3d9 ... @@ -501,13 +486,13 @@ gpu - platform\ps3 + mesh\platform\ps3 - platform\ps3 + mesh\platform\ps3 - platform\ps3 + mesh\platform\ps3 src\... @@ -614,16 +599,13 @@ lol\image - - input - input - + input - + input diff --git a/src/platform/d3d9/d3d9input.cpp b/src/platform/d3d9/d3d9input.cpp index 17ef2ec3..8620f4ca 100644 --- a/src/platform/d3d9/d3d9input.cpp +++ b/src/platform/d3d9/d3d9input.cpp @@ -20,9 +20,7 @@ #include "core.h" #include "d3d9input.h" -#ifdef LOL_INPUT_V2 -#include "input/inputdevice_internal.h" -#endif // LOL_INPUT_V2 +#include "input/input_internal.h" namespace lol { @@ -37,11 +35,7 @@ class D3d9InputData private: #if defined USE_XINPUT -#if defined LOL_INPUT_V2 Array m_joysticks; -#else - Array m_joysticks; -#endif // LOL_INPUT_V2 #endif // USE_XINPUT }; @@ -58,7 +52,6 @@ D3d9Input::D3d9Input() XINPUT_STATE state; if (XInputGetState(i, &state) != ERROR_SUCCESS) continue; -#if defined LOL_INPUT_V2 // TODO: we can put more friendly name here, such as LeftAxisX, ButtonX... InputDeviceInternal* stick = new InputDeviceInternal(String::Printf("Joystick%d", i+1).C()); for (int j = 0; j < 4; ++j) @@ -67,12 +60,6 @@ D3d9Input::D3d9Input() stick->AddKey(String::Printf("Button%d", j+1).C()); m_data->m_joysticks.Push(i, stick); -#else - Stick *stick = Input::CreateStick(); - stick->SetAxisCount(4); - stick->SetButtonCount(16); - m_data->m_joysticks.Push(i, stick); -#endif // LOL_INPUT_V2 } #endif @@ -85,11 +72,7 @@ D3d9Input::~D3d9Input() /* Unregister all the joysticks we added */ while (m_data->m_joysticks.Count()) { -#if defined LOL_INPUT_V2 delete m_data->m_joysticks[0].m2; -#else - Input::DestroyStick(m_data->m_joysticks[0].m2); -#endif // LOL_INPUT_V2 m_data->m_joysticks.Remove(0); } #endif @@ -118,11 +101,7 @@ void D3d9Input::TickDraw(float seconds) m_data->m_joysticks[i].m2->SetAxis(3, -(float)state.Gamepad.sThumbRY / 32768.f); for (int b = 0; b < 16; b++) -#if defined LOL_INPUT_V2 m_data->m_joysticks[i].m2->SetKey(b, ((uint16_t)(state.Gamepad.wButtons) >> b) & 1); -#else - m_data->m_joysticks[i].m2->SetButton(b, ((uint16_t)(state.Gamepad.wButtons) >> b) & 1); -#endif // LOL_INPUT_V2 } #endif } diff --git a/src/platform/sdl/sdlapp.cpp b/src/platform/sdl/sdlapp.cpp index c835b83f..9362e7d6 100644 --- a/src/platform/sdl/sdlapp.cpp +++ b/src/platform/sdl/sdlapp.cpp @@ -66,11 +66,9 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : exit(EXIT_FAILURE); } -# ifdef LOL_INPUT_V2 const SDL_VideoInfo* vidinfo = SDL_GetVideoInfo(); int screen_w = vidinfo->current_w; int screen_h = vidinfo->current_h; -# endif # if defined USE_D3D9 SDL_Surface *video = SDL_SetVideoMode(res.x, res.y, 16, 0); @@ -83,9 +81,8 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : # else SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); -# ifdef LOL_INPUT_V2 - // TODO: when implementing fullscreen, be sure to overwrite screen_w and screen_h with the value of vidinfo after the call to SDL_SetVideoMode -# endif + + // TODO: when implementing fullscreen, be sure to overwrite screen_w and screen_h with the value of vidinfo after the call to SDL_SetVideoMode SDL_Surface *video = SDL_SetVideoMode(res.x, res.y, 0, SDL_OPENGL); # endif if (!video) @@ -109,11 +106,7 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : new D3d9Input(); # endif -# ifdef LOL_INPUT_V2 new SdlInput(video->w, video->h, screen_w, screen_h); -# else - new SdlInput(); -# endif #endif } diff --git a/src/platform/sdl/sdlinput.cpp b/src/platform/sdl/sdlinput.cpp index c7bdc114..e80c548c 100644 --- a/src/platform/sdl/sdlinput.cpp +++ b/src/platform/sdl/sdlinput.cpp @@ -23,9 +23,7 @@ #include "core.h" #include "sdlinput.h" -#ifdef LOL_INPUT_V2 -#include "input/inputdevice_internal.h" -#endif // LOL_INPUT_V2 +#include "input/input_internal.h" /* We force joystick polling because no events are received when * there is no SDL display (eg. on the Raspberry Pi). */ @@ -49,7 +47,6 @@ private: static void SetMousePos(ivec2 position); #if USE_SDL -# ifdef LOL_INPUT_V2 SdlInputData(int app_w, int app_h, int screen_w, int screen_h) : m_prevmouse(ivec2(0)), m_app_w((float)app_w), @@ -68,9 +65,6 @@ private: float m_screen_w; float m_screen_h; bool m_mousecapture; -# else - Array m_joysticks; -# endif // LOL_INPUT_V2 #endif // USE_SDL }; @@ -78,13 +72,8 @@ private: * Public SdlInput class */ -#ifdef LOL_INPUT_V2 SdlInput::SdlInput(int app_w, int app_h, int screen_w, int screen_h) : m_data(new SdlInputData(app_w, app_h, screen_w, screen_h)) -#else -SdlInput::SdlInput() - : m_data(new SdlInputData()) -#endif { #if USE_SDL /* Enable Unicode translation of keyboard events */ @@ -99,10 +88,8 @@ SdlInput::SdlInput() SDL_JoystickEventState(SDL_ENABLE); # endif -#ifdef LOL_INPUT_V2 m_data->m_keyboard = InputDeviceInternal::CreateStandardKeyboard(); m_data->m_mouse = InputDeviceInternal::CreateStandardMouse(); -#endif /* Register all the joysticks we can find, and let the input * system decide what it wants to track. */ @@ -125,7 +112,6 @@ SdlInput::SdlInput() continue; } -# ifdef LOL_INPUT_V2 InputDeviceInternal* stick = new InputDeviceInternal(String::Printf("Joystick%d", i+1).C()); for (int j = 0; j < SDL_JoystickNumAxes(sdlstick); ++j) stick->AddAxis(String::Printf("Axis%d", j + 1).C()); @@ -133,17 +119,6 @@ SdlInput::SdlInput() stick->AddKey(String::Printf("Button%d", j + 1).C()); m_data->m_joysticks.Push(sdlstick, stick); -# else // !LOL_INPUT_V2 - Stick *stick = Input::CreateStick(); - stick->SetAxisCount(SDL_JoystickNumAxes(sdlstick)); - stick->SetButtonCount(SDL_JoystickNumButtons(sdlstick)); - - /* It's possible to remap axes */ - //stick->RemapAxis(4, 2); - //stick->RemapAxis(2, 4); - - m_data->m_joysticks.Push(sdlstick, stick); -# endif } # endif #endif @@ -158,11 +133,7 @@ SdlInput::~SdlInput() while (m_data->m_joysticks.Count()) { SDL_JoystickClose(m_data->m_joysticks[0].m1); -# ifdef LOL_INPUT_V2 delete m_data->m_joysticks[0].m2; -# else - Input::DestroyStick(m_data->m_joysticks[0].m2); -# endif m_data->m_joysticks.Remove(0); } #endif @@ -195,18 +166,10 @@ void SdlInputData::Tick(float seconds) SDL_JoystickUpdate(); for (int j = 0; j < m_joysticks.Count(); j++) { -# ifdef LOL_INPUT_V2 for (int i = 0; i < SDL_JoystickNumButtons(m_joysticks[j].m1); i++) m_joysticks[j].m2->SetKey(i, SDL_JoystickGetButton(m_joysticks[j].m1, i) != 0); for (int i = 0; i < SDL_JoystickNumAxes(m_joysticks[j].m1); i++) m_joysticks[j].m2->SetAxis(i, (float)SDL_JoystickGetAxis(m_joysticks[j].m1, i) / 32768.f); -# else // !LOL_INPUT_V2 - for (int i = 0; i < SDL_JoystickNumButtons(m_joysticks[j].m1); i++) - m_joysticks[j].m2->SetButton(i, SDL_JoystickGetButton(m_joysticks[j].m1, i)); - for (int i = 0; i < SDL_JoystickNumAxes(m_joysticks[j].m1); i++) - m_joysticks[j].m2->SetAxis(i, (float)SDL_JoystickGetAxis(m_joysticks[j].m1, i) / 32768.f); - -# endif } # endif @@ -228,19 +191,11 @@ void SdlInputData::Tick(float seconds) case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { -#ifdef LOL_INPUT_V2 m_mouse->SetKey(event.button.button - 1, event.type == SDL_MOUSEBUTTONDOWN); -#else // !LOL_INPUT_V2 - if (event.type == SDL_MOUSEBUTTONDOWN) - Input::SetMouseButton(event.button.button - 1); - else - Input::UnsetMouseButton(event.button.button - 1); -#endif // LOL_INPUT_V2 break; } # if !SDL_FORCE_POLL_JOYSTICK -# ifdef LOL_INPUT_V2 case SDL_JOYAXISMOTION: m_joysticks[event.jaxis.which].m2->SetAxis(event.jaxis.axis, (float)event.jaxis.value / 32768.f); break; @@ -249,23 +204,12 @@ void SdlInputData::Tick(float seconds) case SDL_JOYBUTTONDOWN: m_joysticks[event.jbutton.which].m2->SetKey(event.jbutton.button, event.jbutton.state); break; -# else // !LOL_INPUT_V2 - case SDL_JOYAXISMOTION: - m_joysticks[event.jaxis.which].m2->SetAxis(event.jaxis.axis, (float)event.jaxis.value / 32768.f); - break; - - case SDL_JOYBUTTONUP: - case SDL_JOYBUTTONDOWN: - m_joysticks[event.jbutton.which].m2->SetButton(event.jbutton.button, event.jbutton.state); - break; -# endif // LOL_INPUT_V2 # endif } } /* Handle mouse input */ ivec2 mouse = SdlInputData::GetMousePos(); -# ifdef LOL_INPUT_V2 if (InputDeviceInternal::GetMouseCapture() != m_mousecapture) { m_mousecapture = InputDeviceInternal::GetMouseCapture(); @@ -289,10 +233,6 @@ void SdlInputData::Tick(float seconds) m_prevmouse = mouse; -# else // !LOL_INPUT_V2 - Input::SetMousePos(mouse); -# endif // LOL_INPUT_V2 - # if SDL_VERSION_ATLEAST(1,3,0) Uint8 *sdlstate = SDL_GetKeyboardState(nullptr); # else @@ -300,262 +240,12 @@ void SdlInputData::Tick(float seconds) # endif int keyindex = 0; -# ifdef LOL_INPUT_V2 # define KEY_FUNC(name, index) \ m_keyboard->SetKey(keyindex++, sdlstate[index] != 0); /* FIXME: we ignore SDLK_WORLD_0, which means our list of * keys and SDL's list of keys could be out of sync. */ -# include "input/keys.h" -# undef KEY_FUNC -# else // !LOL_INPUT_V2 - - /* Send the whole keyboard state to the input system */ - Array &lolstate = Input::GetKeyboardState(); - - lolstate[Key::Unknown] = sdlstate[SDLK_UNKNOWN]; - lolstate[Key::Backspace] = sdlstate[SDLK_BACKSPACE]; - lolstate[Key::Tab] = sdlstate[SDLK_TAB]; - lolstate[Key::Clear] = sdlstate[SDLK_CLEAR]; - lolstate[Key::Return] = sdlstate[SDLK_RETURN]; - lolstate[Key::Pause] = sdlstate[SDLK_PAUSE]; - lolstate[Key::Escape] = sdlstate[SDLK_ESCAPE]; - lolstate[Key::Space] = sdlstate[SDLK_SPACE]; - lolstate[Key::Exclaim] = sdlstate[SDLK_EXCLAIM]; - lolstate[Key::DoubleQuote] = sdlstate[SDLK_QUOTEDBL]; - lolstate[Key::Hash] = sdlstate[SDLK_HASH]; - lolstate[Key::Dollar] = sdlstate[SDLK_DOLLAR]; - lolstate[Key::Ampersand] = sdlstate[SDLK_AMPERSAND]; - lolstate[Key::Quote] = sdlstate[SDLK_QUOTE]; - lolstate[Key::LeftParen] = sdlstate[SDLK_LEFTPAREN]; - lolstate[Key::RightParen] = sdlstate[SDLK_RIGHTPAREN]; - lolstate[Key::Asterisk] = sdlstate[SDLK_ASTERISK]; - lolstate[Key::Plus] = sdlstate[SDLK_PLUS]; - lolstate[Key::Comma] = sdlstate[SDLK_COMMA]; - lolstate[Key::Minus] = sdlstate[SDLK_MINUS]; - lolstate[Key::Period] = sdlstate[SDLK_PERIOD]; - lolstate[Key::Slash] = sdlstate[SDLK_SLASH]; - lolstate[Key::K0] = sdlstate[SDLK_0]; - lolstate[Key::K1] = sdlstate[SDLK_1]; - lolstate[Key::K2] = sdlstate[SDLK_2]; - lolstate[Key::K3] = sdlstate[SDLK_3]; - lolstate[Key::K4] = sdlstate[SDLK_4]; - lolstate[Key::K5] = sdlstate[SDLK_5]; - lolstate[Key::K6] = sdlstate[SDLK_6]; - lolstate[Key::K7] = sdlstate[SDLK_7]; - lolstate[Key::K8] = sdlstate[SDLK_8]; - lolstate[Key::K9] = sdlstate[SDLK_9]; - lolstate[Key::Colon] = sdlstate[SDLK_COLON]; - lolstate[Key::Semicolon] = sdlstate[SDLK_SEMICOLON]; - lolstate[Key::Less] = sdlstate[SDLK_LESS]; - lolstate[Key::Equals] = sdlstate[SDLK_EQUALS]; - lolstate[Key::Greater] = sdlstate[SDLK_GREATER]; - lolstate[Key::Question] = sdlstate[SDLK_QUESTION]; - lolstate[Key::At] = sdlstate[SDLK_AT]; - - lolstate[Key::LeftBracket] = sdlstate[SDLK_LEFTBRACKET]; - lolstate[Key::BackSlash] = sdlstate[SDLK_BACKSLASH]; - lolstate[Key::RightBracket] = sdlstate[SDLK_RIGHTBRACKET]; - lolstate[Key::Caret] = sdlstate[SDLK_CARET]; - lolstate[Key::Underscore] = sdlstate[SDLK_UNDERSCORE]; - lolstate[Key::Backquote] = sdlstate[SDLK_BACKQUOTE]; - lolstate[Key::A] = sdlstate[SDLK_a]; - lolstate[Key::B] = sdlstate[SDLK_b]; - lolstate[Key::C] = sdlstate[SDLK_c]; - lolstate[Key::D] = sdlstate[SDLK_d]; - lolstate[Key::E] = sdlstate[SDLK_e]; - lolstate[Key::F] = sdlstate[SDLK_f]; - lolstate[Key::G] = sdlstate[SDLK_g]; - lolstate[Key::H] = sdlstate[SDLK_h]; - lolstate[Key::I] = sdlstate[SDLK_i]; - lolstate[Key::J] = sdlstate[SDLK_j]; - lolstate[Key::K] = sdlstate[SDLK_k]; - lolstate[Key::L] = sdlstate[SDLK_l]; - lolstate[Key::M] = sdlstate[SDLK_m]; - lolstate[Key::N] = sdlstate[SDLK_n]; - lolstate[Key::O] = sdlstate[SDLK_o]; - lolstate[Key::P] = sdlstate[SDLK_p]; - lolstate[Key::Q] = sdlstate[SDLK_q]; - lolstate[Key::R] = sdlstate[SDLK_r]; - lolstate[Key::S] = sdlstate[SDLK_s]; - lolstate[Key::T] = sdlstate[SDLK_t]; - lolstate[Key::U] = sdlstate[SDLK_u]; - lolstate[Key::V] = sdlstate[SDLK_v]; - lolstate[Key::W] = sdlstate[SDLK_w]; - lolstate[Key::X] = sdlstate[SDLK_x]; - lolstate[Key::Y] = sdlstate[SDLK_y]; - lolstate[Key::Z] = sdlstate[SDLK_z]; - lolstate[Key::Delete] = sdlstate[SDLK_DELETE]; - -#if SDLK_WORLD_0 - lolstate[Key::World0] = sdlstate[SDLK_WORLD_0]; - lolstate[Key::World1] = sdlstate[SDLK_WORLD_1]; - lolstate[Key::World2] = sdlstate[SDLK_WORLD_2]; - lolstate[Key::World3] = sdlstate[SDLK_WORLD_3]; - lolstate[Key::World4] = sdlstate[SDLK_WORLD_4]; - lolstate[Key::World5] = sdlstate[SDLK_WORLD_5]; - lolstate[Key::World6] = sdlstate[SDLK_WORLD_6]; - lolstate[Key::World7] = sdlstate[SDLK_WORLD_7]; - lolstate[Key::World8] = sdlstate[SDLK_WORLD_8]; - lolstate[Key::World9] = sdlstate[SDLK_WORLD_9]; - lolstate[Key::World10] = sdlstate[SDLK_WORLD_10]; - lolstate[Key::World11] = sdlstate[SDLK_WORLD_11]; - lolstate[Key::World12] = sdlstate[SDLK_WORLD_12]; - lolstate[Key::World13] = sdlstate[SDLK_WORLD_13]; - lolstate[Key::World14] = sdlstate[SDLK_WORLD_14]; - lolstate[Key::World15] = sdlstate[SDLK_WORLD_15]; - lolstate[Key::World16] = sdlstate[SDLK_WORLD_16]; - lolstate[Key::World17] = sdlstate[SDLK_WORLD_17]; - lolstate[Key::World18] = sdlstate[SDLK_WORLD_18]; - lolstate[Key::World19] = sdlstate[SDLK_WORLD_19]; - lolstate[Key::World20] = sdlstate[SDLK_WORLD_20]; - lolstate[Key::World21] = sdlstate[SDLK_WORLD_21]; - lolstate[Key::World22] = sdlstate[SDLK_WORLD_22]; - lolstate[Key::World23] = sdlstate[SDLK_WORLD_23]; - lolstate[Key::World24] = sdlstate[SDLK_WORLD_24]; - lolstate[Key::World25] = sdlstate[SDLK_WORLD_25]; - lolstate[Key::World26] = sdlstate[SDLK_WORLD_26]; - lolstate[Key::World27] = sdlstate[SDLK_WORLD_27]; - lolstate[Key::World28] = sdlstate[SDLK_WORLD_28]; - lolstate[Key::World29] = sdlstate[SDLK_WORLD_29]; - lolstate[Key::World30] = sdlstate[SDLK_WORLD_30]; - lolstate[Key::World31] = sdlstate[SDLK_WORLD_31]; - lolstate[Key::World32] = sdlstate[SDLK_WORLD_32]; - lolstate[Key::World33] = sdlstate[SDLK_WORLD_33]; - lolstate[Key::World34] = sdlstate[SDLK_WORLD_34]; - lolstate[Key::World35] = sdlstate[SDLK_WORLD_35]; - lolstate[Key::World36] = sdlstate[SDLK_WORLD_36]; - lolstate[Key::World37] = sdlstate[SDLK_WORLD_37]; - lolstate[Key::World38] = sdlstate[SDLK_WORLD_38]; - lolstate[Key::World39] = sdlstate[SDLK_WORLD_39]; - lolstate[Key::World40] = sdlstate[SDLK_WORLD_40]; - lolstate[Key::World41] = sdlstate[SDLK_WORLD_41]; - lolstate[Key::World42] = sdlstate[SDLK_WORLD_42]; - lolstate[Key::World43] = sdlstate[SDLK_WORLD_43]; - lolstate[Key::World44] = sdlstate[SDLK_WORLD_44]; - lolstate[Key::World45] = sdlstate[SDLK_WORLD_45]; - lolstate[Key::World46] = sdlstate[SDLK_WORLD_46]; - lolstate[Key::World47] = sdlstate[SDLK_WORLD_47]; - lolstate[Key::World48] = sdlstate[SDLK_WORLD_48]; - lolstate[Key::World49] = sdlstate[SDLK_WORLD_49]; - lolstate[Key::World50] = sdlstate[SDLK_WORLD_50]; - lolstate[Key::World51] = sdlstate[SDLK_WORLD_51]; - lolstate[Key::World52] = sdlstate[SDLK_WORLD_52]; - lolstate[Key::World53] = sdlstate[SDLK_WORLD_53]; - lolstate[Key::World54] = sdlstate[SDLK_WORLD_54]; - lolstate[Key::World55] = sdlstate[SDLK_WORLD_55]; - lolstate[Key::World56] = sdlstate[SDLK_WORLD_56]; - lolstate[Key::World57] = sdlstate[SDLK_WORLD_57]; - lolstate[Key::World58] = sdlstate[SDLK_WORLD_58]; - lolstate[Key::World59] = sdlstate[SDLK_WORLD_59]; - lolstate[Key::World60] = sdlstate[SDLK_WORLD_60]; - lolstate[Key::World61] = sdlstate[SDLK_WORLD_61]; - lolstate[Key::World62] = sdlstate[SDLK_WORLD_62]; - lolstate[Key::World63] = sdlstate[SDLK_WORLD_63]; - lolstate[Key::World64] = sdlstate[SDLK_WORLD_64]; - lolstate[Key::World65] = sdlstate[SDLK_WORLD_65]; - lolstate[Key::World66] = sdlstate[SDLK_WORLD_66]; - lolstate[Key::World67] = sdlstate[SDLK_WORLD_67]; - lolstate[Key::World68] = sdlstate[SDLK_WORLD_68]; - lolstate[Key::World69] = sdlstate[SDLK_WORLD_69]; - lolstate[Key::World70] = sdlstate[SDLK_WORLD_70]; - lolstate[Key::World71] = sdlstate[SDLK_WORLD_71]; - lolstate[Key::World72] = sdlstate[SDLK_WORLD_72]; - lolstate[Key::World73] = sdlstate[SDLK_WORLD_73]; - lolstate[Key::World74] = sdlstate[SDLK_WORLD_74]; - lolstate[Key::World75] = sdlstate[SDLK_WORLD_75]; - lolstate[Key::World76] = sdlstate[SDLK_WORLD_76]; - lolstate[Key::World77] = sdlstate[SDLK_WORLD_77]; - lolstate[Key::World78] = sdlstate[SDLK_WORLD_78]; - lolstate[Key::World79] = sdlstate[SDLK_WORLD_79]; - lolstate[Key::World80] = sdlstate[SDLK_WORLD_80]; - lolstate[Key::World81] = sdlstate[SDLK_WORLD_81]; - lolstate[Key::World82] = sdlstate[SDLK_WORLD_82]; - lolstate[Key::World83] = sdlstate[SDLK_WORLD_83]; - lolstate[Key::World84] = sdlstate[SDLK_WORLD_84]; - lolstate[Key::World85] = sdlstate[SDLK_WORLD_85]; - lolstate[Key::World86] = sdlstate[SDLK_WORLD_86]; - lolstate[Key::World87] = sdlstate[SDLK_WORLD_87]; - lolstate[Key::World88] = sdlstate[SDLK_WORLD_88]; - lolstate[Key::World89] = sdlstate[SDLK_WORLD_89]; - lolstate[Key::World90] = sdlstate[SDLK_WORLD_90]; - lolstate[Key::World91] = sdlstate[SDLK_WORLD_91]; - lolstate[Key::World92] = sdlstate[SDLK_WORLD_92]; - lolstate[Key::World93] = sdlstate[SDLK_WORLD_93]; - lolstate[Key::World94] = sdlstate[SDLK_WORLD_94]; - lolstate[Key::World95] = sdlstate[SDLK_WORLD_95]; -#endif // SDLK_WORLD_0 - - lolstate[Key::KP0] = sdlstate[SDLK_KP0]; - lolstate[Key::KP1] = sdlstate[SDLK_KP1]; - lolstate[Key::KP2] = sdlstate[SDLK_KP2]; - lolstate[Key::KP3] = sdlstate[SDLK_KP3]; - lolstate[Key::KP4] = sdlstate[SDLK_KP4]; - lolstate[Key::KP5] = sdlstate[SDLK_KP5]; - lolstate[Key::KP6] = sdlstate[SDLK_KP6]; - lolstate[Key::KP7] = sdlstate[SDLK_KP7]; - lolstate[Key::KP8] = sdlstate[SDLK_KP8]; - lolstate[Key::KP9] = sdlstate[SDLK_KP9]; - lolstate[Key::KPPeriod] = sdlstate[SDLK_KP_PERIOD]; - lolstate[Key::KPDivide] = sdlstate[SDLK_KP_DIVIDE]; - lolstate[Key::KPMultiply] = sdlstate[SDLK_KP_MULTIPLY]; - lolstate[Key::KPMinus] = sdlstate[SDLK_KP_MINUS]; - lolstate[Key::KPPlus] = sdlstate[SDLK_KP_PLUS]; - lolstate[Key::KPEnter] = sdlstate[SDLK_KP_ENTER]; - lolstate[Key::KPEquals] = sdlstate[SDLK_KP_EQUALS]; - - lolstate[Key::Up] = sdlstate[SDLK_UP]; - lolstate[Key::Down] = sdlstate[SDLK_DOWN]; - lolstate[Key::Right] = sdlstate[SDLK_RIGHT]; - lolstate[Key::Left] = sdlstate[SDLK_LEFT]; - lolstate[Key::Insert] = sdlstate[SDLK_INSERT]; - lolstate[Key::Home] = sdlstate[SDLK_HOME]; - lolstate[Key::End] = sdlstate[SDLK_END]; - lolstate[Key::PageUp] = sdlstate[SDLK_PAGEUP]; - lolstate[Key::PageDown] = sdlstate[SDLK_PAGEDOWN]; - - lolstate[Key::F1] = sdlstate[SDLK_F1]; - lolstate[Key::F2] = sdlstate[SDLK_F2]; - lolstate[Key::F3] = sdlstate[SDLK_F3]; - lolstate[Key::F4] = sdlstate[SDLK_F4]; - lolstate[Key::F5] = sdlstate[SDLK_F5]; - lolstate[Key::F6] = sdlstate[SDLK_F6]; - lolstate[Key::F7] = sdlstate[SDLK_F7]; - lolstate[Key::F8] = sdlstate[SDLK_F8]; - lolstate[Key::F9] = sdlstate[SDLK_F9]; - lolstate[Key::F10] = sdlstate[SDLK_F10]; - lolstate[Key::F11] = sdlstate[SDLK_F11]; - lolstate[Key::F12] = sdlstate[SDLK_F12]; - lolstate[Key::F13] = sdlstate[SDLK_F13]; - lolstate[Key::F14] = sdlstate[SDLK_F14]; - lolstate[Key::F15] = sdlstate[SDLK_F15]; - - lolstate[Key::NumLock] = sdlstate[SDLK_NUMLOCK]; - lolstate[Key::CapsLock] = sdlstate[SDLK_CAPSLOCK]; - lolstate[Key::ScrollLock] = sdlstate[SDLK_SCROLLOCK]; - lolstate[Key::RightShift] = sdlstate[SDLK_RSHIFT]; - lolstate[Key::LeftShift] = sdlstate[SDLK_LSHIFT]; - lolstate[Key::RightCtrl] = sdlstate[SDLK_RCTRL]; - lolstate[Key::LeftCtrl] = sdlstate[SDLK_LCTRL]; - lolstate[Key::RightAlt] = sdlstate[SDLK_RALT]; - lolstate[Key::LeftAlt] = sdlstate[SDLK_LALT]; - lolstate[Key::RightMeta] = sdlstate[SDLK_RMETA]; - lolstate[Key::LeftMeta] = sdlstate[SDLK_LMETA]; - lolstate[Key::LeftSuper] = sdlstate[SDLK_LSUPER]; - lolstate[Key::RightSuper] = sdlstate[SDLK_RSUPER]; - lolstate[Key::Mode] = sdlstate[SDLK_MODE]; - lolstate[Key::Compose] = sdlstate[SDLK_COMPOSE]; - - lolstate[Key::Help] = sdlstate[SDLK_HELP]; - lolstate[Key::Print] = sdlstate[SDLK_PRINT]; - lolstate[Key::SysReq] = sdlstate[SDLK_SYSREQ]; - lolstate[Key::Break] = sdlstate[SDLK_BREAK]; - lolstate[Key::Menu] = sdlstate[SDLK_MENU]; - lolstate[Key::Power] = sdlstate[SDLK_POWER]; - lolstate[Key::Euro] = sdlstate[SDLK_EURO]; - lolstate[Key::Undo] = sdlstate[SDLK_UNDO]; - - UNUSED(seconds); -# endif // LOL_INPUT_V2 +# include "input/keys.h" +# undef KEY_FUNC #endif // USE_SDL } diff --git a/src/platform/sdl/sdlinput.h b/src/platform/sdl/sdlinput.h index 50f360db..a30e921c 100644 --- a/src/platform/sdl/sdlinput.h +++ b/src/platform/sdl/sdlinput.h @@ -26,13 +26,10 @@ class SdlInputData; class SdlInput : public Entity { public: -#ifdef LOL_INPUT_V2 /** passing the screen resolution (note: not the windowed app resolution!) allows to make the mouse axis resolution-independent */ SdlInput(int app_w, int app_h, int screen_w, int screen_h); -#else - SdlInput(); -#endif - virtual ~SdlInput(); + + virtual ~SdlInput(); void SetScreenResolution(); protected: