aboutsummaryrefslogtreecommitdiffstats
path: root/src/window/Events.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/window/Events.hpp')
-rw-r--r--src/window/Events.hpp151
1 files changed, 144 insertions, 7 deletions
diff --git a/src/window/Events.hpp b/src/window/Events.hpp
index 6914dca..9374373 100644
--- a/src/window/Events.hpp
+++ b/src/window/Events.hpp
@@ -1,23 +1,158 @@
#ifndef ENGINE_EVENTS_H
#define ENGINE_EVENTS_H
-#define MAX_KEYS GLFW_KEY_LAST + 1 + GLFW_MOUSE_BUTTON_LAST + 1
-#define MOUSE_BUTTONS GLFW_KEY_LAST + 1 /* when start mouse buttons */
+enum keys_name {
+ KEY_UNKNOWN = -1,
+ KEY_SPACE,
+ KEY_APOSTROPHE,
+ KEY_COMMA,
+ KEY_MINUS,
+ KEY_PERIOD,
+ KEY_SLASH,
+ KEY_0,
+ KEY_1,
+ KEY_2,
+ KEY_3,
+ KEY_4,
+ KEY_5,
+ KEY_6,
+ KEY_7,
+ KEY_8,
+ KEY_9,
+ KEY_KEY_SEMICOLON,
+ KEY_EQUAL,
+ 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_BRACKET,
+ KEY_BACKSLASH,
+ KEY_RIGHT_BRACKET,
+ KEY_GRAVE_ACCENT,
+ KEY_WORLD_1,
+ KEY_WORLD_2,
+ KEY_ESCAPE,
+ KEY_ENTER,
+ KEY_TAB,
+ KEY_BACKSPACE,
+ KEY_INSERT,
+ KEY_DELETE,
+ KEY_RIGHT,
+ KEY_LEFT,
+ KEY_DOWN,
+ KEY_UP,
+ KEY_PAGE_UP,
+ KEY_PAGE_DOWN,
+ KEY_HOME,
+ KEY_END,
+ KEY_CAPS_LOCK,
+ KEY_SCROLL_LOCK,
+ KEY_NUM_LOCK,
+ KEY_PRINT_SCREEN,
+ KEY_PAUSE,
+ 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_F16,
+ KEY_F17,
+ KEY_F18,
+ KEY_F19,
+ KEY_F20,
+ KEY_F21,
+ KEY_F22,
+ KEY_F23,
+ KEY_F24,
+ KEY_F25,
+ KEY_KP_0,
+ KEY_KP_1,
+ KEY_KP_2,
+ KEY_KP_3,
+ KEY_KP_4,
+ KEY_KP_5,
+ KEY_KP_6,
+ KEY_KP_7,
+ KEY_KP_8,
+ KEY_KP_9,
+ KEY_KP_DECIMAL,
+ KEY_KP_DIVIDE,
+ KEY_KP_MULTIPLY,
+ KEY_KP_SUBTRACT,
+ KEY_KP_ADD,
+ KEY_KP_ENTER,
+ KEY_KP_EQUAL,
+ KEY_LEFT_SHIFT,
+ KEY_LEFT_CONTROL,
+ KEY_LEFT_ALT,
+ KEY_LEFT_SUPER,
+ KEY_RIGHT_SHIFT,
+ KEY_RIGHT_CONTROL,
+ KEY_RIGHT_ALT,
+ KEY_RIGHT_SUPER,
+ KEY_MENU,
+ KEY_LAST = KEY_MENU
+};
+
+#define MAX_KEYS KEY_LAST + 1 + GLFW_MOUSE_BUTTON_LAST + 1
+#define MOUSE_BUTTONS KEY_LAST + 1 /* when start mouse buttons */
+
+class Window;
class Events {
+ Window *master;
bool *keys;
unsigned int *frames;
unsigned int cur_frame;
bool update_frame;
- float delta_x;
- float delta_y;
- float x;
- float y;
+ double delta_x;
+ double delta_y;
+ double x;
+ double y;
+ double scroll_dx;
+ double scroll_dy;
bool cursor_locked;
public:
- Events();
+ Events(Window *w);
~Events();
+ Window *GetWindow() { return master; }
+ double GetDX() { return delta_x; }
+ double GetDY() { return delta_y; }
+ double GetScrollDX() { return scroll_dx; }
+ double GetScrollDY() { return scroll_dy; }
bool Pressed(int keycode);
bool Jpressed(int keycode);
@@ -28,6 +163,8 @@ public:
void KeyHandle(int key, int scancode, int action, int mode);
void CursorPosHandle(double xpos, double ypos);
void MouseButtonHandle(int button, int action, int mode);
+ void WindowResizeHandle(int width, int height);
+ void MouseScrollHandle(double xoffset, double yoffset);
};
#endif /* ENGINE_EVENTS_H */