summaryrefslogtreecommitdiff
path: root/src/util/input.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/input.h')
-rw-r--r--src/util/input.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/util/input.h b/src/util/input.h
new file mode 100644
index 0000000..e174fe6
--- /dev/null
+++ b/src/util/input.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <SDL_events.h>
+#include <functional>
+#include "vector.h"
+#include "allocator.h"
+
+const U32 MOUSEEV_MOVE = 0x0;
+const U32 MOUSEEV_DOWN = 0x1;
+const U32 MOUSEEV_UP = 0x2;
+
+const U32 MOUSE_LEFT = 0x1;
+const U32 MOUSE_RIGHT = 0x2;
+const U32 MOUSE_MIDDLE = 0x3;
+const U32 MOUSE_WHEEL = 0x4;
+
+struct MOUSE_DATA {
+ VEC2 pos;
+ U8 left;
+ U8 right;
+ U8 middle;
+ U8 wheel;
+};
+
+using ON_INPUT_FN = std::function<void( SDL_Event* )>;
+
+struct INPUT_DATA {
+ MOUSE_DATA mouse;
+ U8 keys[0xff];
+
+ LIST<ON_INPUT_FN> on_input;
+};
+
+extern INPUT_DATA input;
+
+extern void input_frame_end();
+extern void input_on_event( SDL_Event* e );
+extern void input_on_mouse( I32 type, I32 x, I32 y );
+extern void input_is_key_down( U32 key );
+
+#define kb_down( key ) input_is_key_down( key )