summaryrefslogtreecommitdiff
path: root/src/systems/input.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/systems/input.h')
-rw-r--r--src/systems/input.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/systems/input.h b/src/systems/input.h
new file mode 100644
index 0000000..c119016
--- /dev/null
+++ b/src/systems/input.h
@@ -0,0 +1,41 @@
+/**
+ * @brief
+ */
+#pragma once
+
+#include "defines.h"
+#include "keys.h"
+
+struct core;
+struct GLFWWindow;
+
+typedef struct mouse_state {
+ i32 x;
+ i32 y;
+ i32 x_delta;
+ i32 y_delta;
+ bool prev_left_btn_pressed;
+ bool left_btn_pressed;
+} mouse_state;
+
+typedef struct input_state {
+ struct GLFWwindow *window;
+ mouse_state mouse;
+ bool depressed_keys[KEYCODE_MAX];
+ bool just_pressed_keys[KEYCODE_MAX];
+ bool just_released_keys[KEYCODE_MAX];
+} input_state;
+
+/** @brief `key` is currently being held down */
+bool key_is_pressed(keycode key);
+
+/** @brief `key` was just pressed */
+bool key_just_pressed(keycode key);
+
+/** @brief `key` was just released */
+bool key_just_released(keycode key);
+
+// --- Lifecycle
+bool input_system_init(input_state *input, struct GLFWwindow *window);
+void input_system_shutdown(input_state *input);
+void input_update(input_state *state); \ No newline at end of file