aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/input
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/input')
-rw-r--r--src/libjin/input/je_event.cpp8
-rw-r--r--src/libjin/input/je_event.h121
-rw-r--r--src/libjin/input/je_input.h9
-rw-r--r--src/libjin/input/je_joypad.cpp0
-rw-r--r--src/libjin/input/je_joypad.h56
-rw-r--r--src/libjin/input/je_keyboard.cpp0
-rw-r--r--src/libjin/input/je_keyboard.h20
-rw-r--r--src/libjin/input/je_mouse.cpp28
-rw-r--r--src/libjin/input/je_mouse.h49
9 files changed, 291 insertions, 0 deletions
diff --git a/src/libjin/input/je_event.cpp b/src/libjin/input/je_event.cpp
new file mode 100644
index 0000000..318ce59
--- /dev/null
+++ b/src/libjin/input/je_event.cpp
@@ -0,0 +1,8 @@
+#include "SDL2\SDL.h"
+
+#include "je_event.h"
+
+namespace JinEngine
+{
+
+} // namespace JinEngine \ No newline at end of file
diff --git a/src/libjin/input/je_event.h b/src/libjin/input/je_event.h
new file mode 100644
index 0000000..9fe34ff
--- /dev/null
+++ b/src/libjin/input/je_event.h
@@ -0,0 +1,121 @@
+#ifndef __JE_EVENT_H__
+#define __JE_EVENT_H__
+#include "../core/je_configuration.h"
+#if defined(jin_input)
+
+namespace JinEngine
+{
+ namespace Input
+ {
+ #if jin_input == jin_input_sdl
+ #include "SDL.h"
+
+ typedef SDL_Event Event;
+ typedef SDL_Keycode Key;
+ typedef SDL_MouseWheelEvent Wheel;
+
+ ///
+ ///
+ ///
+ enum EventType {
+ QUIT = SDL_QUIT,
+ /* keyboard events */
+ KEY_DOWN = SDL_KEYDOWN,
+ KEY_UP = SDL_KEYUP,
+ /* mouse events */
+ MOUSE_MOTION = SDL_MOUSEMOTION,
+ MOUSE_BUTTON_DOWN = SDL_MOUSEBUTTONDOWN,
+ MOUSE_BUTTON_UP = SDL_MOUSEBUTTONUP,
+ MOUSE_WHEEL = SDL_MOUSEWHEEL,
+ /* joypad events */
+ JOYBUTTONDOWN = SDL_JOYBUTTONDOWN,
+ JOYBUTTONUP = SDL_JOYBUTTONUP,
+ JOYAXISMOTION = SDL_JOYAXISMOTION,
+ JOYBALLMOTION = SDL_JOYBALLMOTION,
+ JOYHATMOTION = SDL_JOYHATMOTION,
+ JOYDEVICEADDED = SDL_JOYDEVICEADDED,
+ JOYDEVICEREMOVED = SDL_JOYDEVICEREMOVED,
+ CONTROLLERBUTTONDOWN = SDL_CONTROLLERBUTTONDOWN,
+ CONTROLLERBUTTONUP = SDL_CONTROLLERBUTTONUP,
+ CONTROLLERAXISMOTION = SDL_CONTROLLERAXISMOTION,
+ /* window evnets */
+ WINDOW_EVENT = SDL_WINDOWEVENT,
+ };
+
+ ///
+ ///
+ ///
+ enum WindowEvent {
+ WINDOW_SHOWN = SDL_WINDOWEVENT_SHOWN ,
+ WINDOW_HIDDEN = SDL_WINDOWEVENT_HIDDEN ,
+ WINDOW_EXPOSED = SDL_WINDOWEVENT_EXPOSED ,
+ WINDOW_MOVED = SDL_WINDOWEVENT_MOVED ,
+ WINDOW_RESIZED = SDL_WINDOWEVENT_RESIZED ,
+ WINDOW_SIZE_CAHNGE = SDL_WINDOWEVENT_SIZE_CHANGED ,
+ WINDOW_MINIMIZED = SDL_WINDOWEVENT_MINIMIZED ,
+ WINDOW_MAXIMIZED = SDL_WINDOWEVENT_MAXIMIZED ,
+ WINDOW_RESTORED = SDL_WINDOWEVENT_RESTORED ,
+ WINDOW_ENTER = SDL_WINDOWEVENT_ENTER ,
+ WINDOW_LEAVE = SDL_WINDOWEVENT_LEAVE ,
+ WINDOW_FOCUS_GAINED = SDL_WINDOWEVENT_FOCUS_GAINED,
+ WINDOW_FOCUS_LOST = SDL_WINDOWEVENT_FOCUS_LOST ,
+ WINDOW_CLOSE = SDL_WINDOWEVENT_CLOSE ,
+ WINDOW_TAKE_FOCUS = SDL_WINDOWEVENT_TAKE_FOCUS ,
+ WINDOW_HIT_TEST = SDL_WINDOWEVENT_HIT_TEST ,
+ };
+
+ ///
+ ///
+ ///
+ inline int pollEvent(Event* e)
+ {
+ return SDL_PollEvent(e);
+ }
+
+ ///
+ ///
+ ///
+ inline const char* getKeyName(Key key)
+ {
+ return SDL_GetKeyName(key);
+ }
+
+ ///
+ ///
+ ///
+ inline const char* getButtonName(int button)
+ {
+ switch (button)
+ {
+ case 1: return "Left";
+ case 2: return "Middle";
+ case 3: return "Right";
+ case 4: return "WheelUp";
+ case 5: return "WheelDown";
+ default: return "?";
+ }
+ }
+
+ /*
+ inline const char* getWheelName(Wheel wheel)
+ {
+ if (wheel.x == -1)
+ return "left";
+ else if (wheel.x == 1)
+ return "right";
+ else if (wheel.y == -1)
+ return "near";
+ else if (wheel.y == 1)
+ return "far";
+ else
+ return "none";
+ }
+ */
+
+ #endif // jin_input == jin_input_sdl
+ } // namespace Input
+} // namespace JinEngine
+
+#endif // defined(jin_input)
+
+#endif // __JE_EVENT_H__
diff --git a/src/libjin/input/je_input.h b/src/libjin/input/je_input.h
new file mode 100644
index 0000000..2abee0a
--- /dev/null
+++ b/src/libjin/input/je_input.h
@@ -0,0 +1,9 @@
+#ifndef __JE_INPUT_H__
+#define __JE_INPUT_H__
+
+#include "je_event.h"
+#include "je_keyboard.h"
+#include "je_mouse.h"
+#include "je_joypad.h"
+
+#endif \ No newline at end of file
diff --git a/src/libjin/input/je_joypad.cpp b/src/libjin/input/je_joypad.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/libjin/input/je_joypad.cpp
diff --git a/src/libjin/input/je_joypad.h b/src/libjin/input/je_joypad.h
new file mode 100644
index 0000000..fb5dc38
--- /dev/null
+++ b/src/libjin/input/je_joypad.h
@@ -0,0 +1,56 @@
+#ifndef __JE_JOYPAD_H__
+#define __JE_JOYPAD_H__
+
+#include <SDL2/SDL.h>
+
+namespace JinEngine
+{
+ namespace Input
+ {
+
+ ///
+ ///
+ ///
+ inline const char* getJoyButtonName(int button)
+ {
+ switch (button)
+ {
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_A: return "A"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_B : return "B"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_X : return "X"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_Y: return "Y"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_BACK: return "Back"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_GUIDE: return "Guide"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_START: return "Start"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_LEFTSTICK: return "LeftStick"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_RIGHTSTICK: return "RightStick"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_LEFTSHOULDER: return "LeftShoulder"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: return "RightShoulder"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_DPAD_UP: return "DpadUp"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_DPAD_DOWN: return "DpadDown"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_DPAD_LEFT: return "DpadLeft"; break;
+ case SDL_GameControllerButton::SDL_CONTROLLER_BUTTON_DPAD_RIGHT: return "DpadRight"; break;
+ default: return NULL;
+ }
+ }
+
+ ///
+ ///
+ ///
+ inline const char* getJoyAxisName(int axis)
+ {
+ switch (axis)
+ {
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTX: return "LeftX"; break;
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_LEFTY: return "LeftY"; break;
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_RIGHTX: return "RightX"; break;
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_RIGHTY: return "RightY"; break;
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_TRIGGERLEFT: return "TriggerLeft"; break;
+ case SDL_GameControllerAxis::SDL_CONTROLLER_AXIS_TRIGGERRIGHT: return "TriggerRight"; break;
+ }
+ }
+
+ } // namespace Input
+} // namespace JinEngine
+
+#endif // __JE_JOYPAD_H__
diff --git a/src/libjin/input/je_keyboard.cpp b/src/libjin/input/je_keyboard.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/libjin/input/je_keyboard.cpp
diff --git a/src/libjin/input/je_keyboard.h b/src/libjin/input/je_keyboard.h
new file mode 100644
index 0000000..25cfd5d
--- /dev/null
+++ b/src/libjin/input/je_keyboard.h
@@ -0,0 +1,20 @@
+#ifndef __JE_KEYBOARD_H__
+#define __JE_KEYBOARD_H__
+
+namespace JinEngine
+{
+ namespace Input
+ {
+
+ ///
+ ///
+ ///
+ class Keyboard
+ {
+
+ };
+
+ } // namespace Input
+} // namespace JinEngine
+
+#endif // __JE_KEYBOARD_H__
diff --git a/src/libjin/input/je_mouse.cpp b/src/libjin/input/je_mouse.cpp
new file mode 100644
index 0000000..476b1a2
--- /dev/null
+++ b/src/libjin/input/je_mouse.cpp
@@ -0,0 +1,28 @@
+#include "../core/je_configuration.h"
+#if defined(jin_input)
+
+#include "SDL.h"
+
+#include "je_mouse.h"
+
+namespace JinEngine
+{
+ namespace Input
+ {
+
+ void Mouse::getState(int* x, int* y)
+ {
+ #ifdef jin_input == jin_input_sdl
+ SDL_GetMouseState(x, y);
+ #endif
+ }
+
+ void Mouse::setVisible(bool visible)
+ {
+ SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE);
+ }
+
+ } // namespace Input
+} // namespace JinEngine
+
+#endif // defined(jin_input) \ No newline at end of file
diff --git a/src/libjin/input/je_mouse.h b/src/libjin/input/je_mouse.h
new file mode 100644
index 0000000..3c4ad9b
--- /dev/null
+++ b/src/libjin/input/je_mouse.h
@@ -0,0 +1,49 @@
+#ifndef __JE_MOUSE_H__
+#define __JE_MOUSE_H__
+#include "../core/je_configuration.h"
+#if defined(jin_input)
+
+#include "../common/je_singleton.hpp"
+
+namespace JinEngine
+{
+ namespace Input
+ {
+
+ ///
+ ///
+ ///
+ class Mouse : public Singleton<Mouse>
+ {
+ public:
+ ///
+ ///
+ ///
+ void getState(int* x, int* y);
+
+ ///
+ ///
+ ///
+ void setVisible(bool visible);
+
+ private:
+ singleton(Mouse);
+
+ ///
+ ///
+ ///
+ Mouse() {};
+
+ ///
+ ///
+ ///
+ ~Mouse() {};
+
+ };
+
+ } // namespace Input
+} // namespace JinEngine
+
+#endif // defined(jin_input)
+
+#endif // __JE_MOUSE_H__