summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/common.h42
-rw-r--r--src/honey_lua.c (renamed from src/lua/honey_lua.c)2
-rw-r--r--src/input/input.c242
-rw-r--r--src/input/input.h1
5 files changed, 165 insertions, 124 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d2e0ab1..c691224 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,7 +19,7 @@ set(SOURCE_FILES
src/error/error.c
src/honey.c
src/input/input.c
- src/lua/honey_lua.c
+ src/honey_lua.c
src/light/light.c
src/mesh/mesh.c
src/model/model.c
diff --git a/src/common.h b/src/common.h
index ede67cd..1a56b56 100644
--- a/src/common.h
+++ b/src/common.h
@@ -74,4 +74,46 @@ void honey_error_set_string2(char* string);
*/
void honey_human_readable_error(char* error_string, honey_result error);
+/* lua binding functions */
+
+typedef enum {
+ HONEY_INT,
+ HONEY_NUM,
+ HONEY_STRING,
+ HONEY_FUNC
+} honey_lua_type;
+
+/** @brief Wrap C objects for lua. */
+typedef struct {
+ char* name;
+ honey_lua_type type;
+ union {
+ int integer;
+ double number;
+ char* string;
+ int (*function)(lua_State*);
+ } data;
+} honey_lua_element;
+
+/** @brief Push an element to the lua stack.
+ *
+ * @param[in] L The lua state to push the element to.
+ * @param[in] element The honey_lua_element to push to the stack.
+ *
+ * @returns Nothing.
+ */
+void honey_lua_push_element(lua_State* L,
+ honey_lua_element element);
+
+/** @brief Create a lua table populated with various elements.
+ *
+ * @param[in] L The lua state to push the table to.
+ * @param[in] elements Array of elements to populate the table.
+ * @param[in] n_elements The number of elements in the array.
+ *
+ * @returns Nothing.
+ */
+void honey_lua_create_table(lua_State* L,
+ honey_lua_element* elements,
+ unsigned int n_elements);
#endif
diff --git a/src/lua/honey_lua.c b/src/honey_lua.c
index 36ca335..076fb65 100644
--- a/src/lua/honey_lua.c
+++ b/src/honey_lua.c
@@ -1,4 +1,4 @@
-#include "honey_lua.h"
+#include "common.h"
void honey_lua_create_table(lua_State* L,
honey_lua_element* elements,
diff --git a/src/input/input.c b/src/input/input.c
index 66ee093..4d056d2 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -14,127 +14,127 @@ void honey_setup_keyboard()
void honey_setup_input(lua_State* L)
{
honey_lua_element elements[] = {
- { "honey_key_unknown", HONEY_INT, { HONEY_KEY_UNKNOWN } },
- { "honey_key_space", HONEY_INT, { HONEY_KEY_SPACE } },
- { "honey_key_apostrophe", HONEY_INT, { HONEY_KEY_APOSTROPHE } },
- { "honey_key_comma", HONEY_INT, { HONEY_KEY_COMMA } },
- { "honey_key_minus", HONEY_INT, { HONEY_KEY_MINUS } },
- { "honey_key_period", HONEY_INT, { HONEY_KEY_PERIOD } },
- { "honey_key_slash", HONEY_INT, { HONEY_KEY_SLASH } },
- { "honey_key_0", HONEY_INT, { HONEY_KEY_0 } },
- { "honey_key_1", HONEY_INT, { HONEY_KEY_1 } },
- { "honey_key_2", HONEY_INT, { HONEY_KEY_2 } },
- { "honey_key_3", HONEY_INT, { HONEY_KEY_3 } },
- { "honey_key_4", HONEY_INT, { HONEY_KEY_4 } },
- { "honey_key_5", HONEY_INT, { HONEY_KEY_5 } },
- { "honey_key_6", HONEY_INT, { HONEY_KEY_6 } },
- { "honey_key_7", HONEY_INT, { HONEY_KEY_7 } },
- { "honey_key_8", HONEY_INT, { HONEY_KEY_8 } },
- { "honey_key_9", HONEY_INT, { HONEY_KEY_9 } },
- { "honey_key_semicolon", HONEY_INT, { HONEY_KEY_SEMICOLON } },
- { "honey_key_equal", HONEY_INT, { HONEY_KEY_EQUAL } },
- { "honey_key_a", HONEY_INT, { HONEY_KEY_A } },
- { "honey_key_b", HONEY_INT, { HONEY_KEY_B } },
- { "honey_key_c", HONEY_INT, { HONEY_KEY_C } },
- { "honey_key_d", HONEY_INT, { HONEY_KEY_D } },
- { "honey_key_e", HONEY_INT, { HONEY_KEY_E } },
- { "honey_key_f", HONEY_INT, { HONEY_KEY_F } },
- { "honey_key_g", HONEY_INT, { HONEY_KEY_G } },
- { "honey_key_h", HONEY_INT, { HONEY_KEY_H } },
- { "honey_key_i", HONEY_INT, { HONEY_KEY_I } },
- { "honey_key_j", HONEY_INT, { HONEY_KEY_J } },
- { "honey_key_k", HONEY_INT, { HONEY_KEY_K } },
- { "honey_key_l", HONEY_INT, { HONEY_KEY_L } },
- { "honey_key_m", HONEY_INT, { HONEY_KEY_M } },
- { "honey_key_n", HONEY_INT, { HONEY_KEY_N } },
- { "honey_key_o", HONEY_INT, { HONEY_KEY_O } },
- { "honey_key_p", HONEY_INT, { HONEY_KEY_P } },
- { "honey_key_q", HONEY_INT, { HONEY_KEY_Q } },
- { "honey_key_r", HONEY_INT, { HONEY_KEY_R } },
- { "honey_key_s", HONEY_INT, { HONEY_KEY_S } },
- { "honey_key_t", HONEY_INT, { HONEY_KEY_T } },
- { "honey_key_u", HONEY_INT, { HONEY_KEY_U } },
- { "honey_key_v", HONEY_INT, { HONEY_KEY_V } },
- { "honey_key_w", HONEY_INT, { HONEY_KEY_W } },
- { "honey_key_x", HONEY_INT, { HONEY_KEY_X } },
- { "honey_key_y", HONEY_INT, { HONEY_KEY_Y } },
- { "honey_key_z", HONEY_INT, { HONEY_KEY_Z } },
- { "honey_key_left_bracket", HONEY_INT, { HONEY_KEY_LEFT_BRACKET } },
- { "honey_key_backslash", HONEY_INT, { HONEY_KEY_BACKSLASH } },
- { "honey_key_right_bracket", HONEY_INT, { HONEY_KEY_RIGHT_BRACKET } },
- { "honey_key_grave_accent", HONEY_INT, { HONEY_KEY_GRAVE_ACCENT } },
- { "honey_key_world_1", HONEY_INT, { HONEY_KEY_WORLD_1 } },
- { "honey_key_world_2", HONEY_INT, { HONEY_KEY_WORLD_2 } },
- { "honey_key_escape", HONEY_INT, { HONEY_KEY_ESCAPE } },
- { "honey_key_enter", HONEY_INT, { HONEY_KEY_ENTER } },
- { "honey_key_tab", HONEY_INT, { HONEY_KEY_TAB } },
- { "honey_key_backspace", HONEY_INT, { HONEY_KEY_BACKSPACE } },
- { "honey_key_insert", HONEY_INT, { HONEY_KEY_INSERT } },
- { "honey_key_delete", HONEY_INT, { HONEY_KEY_DELETE } },
- { "honey_key_right", HONEY_INT, { HONEY_KEY_RIGHT } },
- { "honey_key_left", HONEY_INT, { HONEY_KEY_LEFT } },
- { "honey_key_down", HONEY_INT, { HONEY_KEY_DOWN } },
- { "honey_key_up", HONEY_INT, { HONEY_KEY_UP } },
- { "honey_key_page_up", HONEY_INT, { HONEY_KEY_PAGE_UP } },
- { "honey_key_page_down", HONEY_INT, { HONEY_KEY_PAGE_DOWN } },
- { "honey_key_home", HONEY_INT, { HONEY_KEY_HOME } },
- { "honey_key_end", HONEY_INT, { HONEY_KEY_END } },
- { "honey_key_caps_lock", HONEY_INT, { HONEY_KEY_CAPS_LOCK } },
- { "honey_key_scroll_lock", HONEY_INT, { HONEY_KEY_SCROLL_LOCK } },
- { "honey_key_num_lock", HONEY_INT, { HONEY_KEY_NUM_LOCK } },
- { "honey_key_print_screen", HONEY_INT, { HONEY_KEY_PRINT_SCREEN } },
- { "honey_key_pause", HONEY_INT, { HONEY_KEY_PAUSE } },
- { "honey_key_f1", HONEY_INT, { HONEY_KEY_F1 } },
- { "honey_key_f2", HONEY_INT, { HONEY_KEY_F2 } },
- { "honey_key_f3", HONEY_INT, { HONEY_KEY_F3 } },
- { "honey_key_f4", HONEY_INT, { HONEY_KEY_F4 } },
- { "honey_key_f5", HONEY_INT, { HONEY_KEY_F5 } },
- { "honey_key_f6", HONEY_INT, { HONEY_KEY_F6 } },
- { "honey_key_f7", HONEY_INT, { HONEY_KEY_F7 } },
- { "honey_key_f8", HONEY_INT, { HONEY_KEY_F8 } },
- { "honey_key_f9", HONEY_INT, { HONEY_KEY_F9 } },
- { "honey_key_f10", HONEY_INT, { HONEY_KEY_F10 } },
- { "honey_key_f11", HONEY_INT, { HONEY_KEY_F11 } },
- { "honey_key_f12", HONEY_INT, { HONEY_KEY_F12 } },
- { "honey_key_f13", HONEY_INT, { HONEY_KEY_F13 } },
- { "honey_key_f14", HONEY_INT, { HONEY_KEY_F14 } },
- { "honey_key_f15", HONEY_INT, { HONEY_KEY_F15 } },
- { "honey_key_f16", HONEY_INT, { HONEY_KEY_F16 } },
- { "honey_key_f17", HONEY_INT, { HONEY_KEY_F17 } },
- { "honey_key_f18", HONEY_INT, { HONEY_KEY_F18 } },
- { "honey_key_f19", HONEY_INT, { HONEY_KEY_F19 } },
- { "honey_key_f20", HONEY_INT, { HONEY_KEY_F20 } },
- { "honey_key_f21", HONEY_INT, { HONEY_KEY_F21 } },
- { "honey_key_f22", HONEY_INT, { HONEY_KEY_F22 } },
- { "honey_key_f23", HONEY_INT, { HONEY_KEY_F23 } },
- { "honey_key_f24", HONEY_INT, { HONEY_KEY_F24 } },
- { "honey_key_f25", HONEY_INT, { HONEY_KEY_F25 } },
- { "honey_key_kp_0", HONEY_INT, { HONEY_KEY_KP_0 } },
- { "honey_key_kp_1", HONEY_INT, { HONEY_KEY_KP_1 } },
- { "honey_key_kp_2", HONEY_INT, { HONEY_KEY_KP_2 } },
- { "honey_key_kp_3", HONEY_INT, { HONEY_KEY_KP_3 } },
- { "honey_key_kp_4", HONEY_INT, { HONEY_KEY_KP_4 } },
- { "honey_key_kp_5", HONEY_INT, { HONEY_KEY_KP_5 } },
- { "honey_key_kp_6", HONEY_INT, { HONEY_KEY_KP_6 } },
- { "honey_key_kp_7", HONEY_INT, { HONEY_KEY_KP_7 } },
- { "honey_key_kp_8", HONEY_INT, { HONEY_KEY_KP_8 } },
- { "honey_key_kp_9", HONEY_INT, { HONEY_KEY_KP_9 } },
- { "honey_key_kp_decimal", HONEY_INT, { HONEY_KEY_KP_DECIMAL } },
- { "honey_key_kp_divide", HONEY_INT, { HONEY_KEY_KP_DIVIDE } },
- { "honey_key_kp_multiply", HONEY_INT, { HONEY_KEY_KP_MULTIPLY } },
- { "honey_key_kp_subtract", HONEY_INT, { HONEY_KEY_KP_SUBTRACT } },
- { "honey_key_kp_add", HONEY_INT, { HONEY_KEY_KP_ADD } },
- { "honey_key_kp_enter", HONEY_INT, { HONEY_KEY_KP_ENTER } },
- { "honey_key_kp_equal", HONEY_INT, { HONEY_KEY_KP_EQUAL } },
- { "honey_key_left_shift", HONEY_INT, { HONEY_KEY_LEFT_SHIFT } },
- { "honey_key_left_control", HONEY_INT, { HONEY_KEY_LEFT_CONTROL } },
- { "honey_key_left_alt", HONEY_INT, { HONEY_KEY_LEFT_ALT } },
- { "honey_key_left_super", HONEY_INT, { HONEY_KEY_LEFT_SUPER } },
- { "honey_key_right_shift", HONEY_INT, { HONEY_KEY_RIGHT_SHIFT } },
- { "honey_key_right_control", HONEY_INT, { HONEY_KEY_RIGHT_CONTROL } },
- { "honey_key_right_alt", HONEY_INT, { HONEY_KEY_RIGHT_ALT } },
- { "honey_key_right_super", HONEY_INT, { HONEY_KEY_RIGHT_SUPER } },
- { "honey_key_menu", HONEY_INT, { HONEY_KEY_MENU } }
+ { "unknown", HONEY_INT, { HONEY_KEY_UNKNOWN } },
+ { "space", HONEY_INT, { HONEY_KEY_SPACE } },
+ { "apostrophe", HONEY_INT, { HONEY_KEY_APOSTROPHE } },
+ { "comma", HONEY_INT, { HONEY_KEY_COMMA } },
+ { "minus", HONEY_INT, { HONEY_KEY_MINUS } },
+ { "period", HONEY_INT, { HONEY_KEY_PERIOD } },
+ { "slash", HONEY_INT, { HONEY_KEY_SLASH } },
+ { "0", HONEY_INT, { HONEY_KEY_0 } },
+ { "1", HONEY_INT, { HONEY_KEY_1 } },
+ { "2", HONEY_INT, { HONEY_KEY_2 } },
+ { "3", HONEY_INT, { HONEY_KEY_3 } },
+ { "4", HONEY_INT, { HONEY_KEY_4 } },
+ { "5", HONEY_INT, { HONEY_KEY_5 } },
+ { "6", HONEY_INT, { HONEY_KEY_6 } },
+ { "7", HONEY_INT, { HONEY_KEY_7 } },
+ { "8", HONEY_INT, { HONEY_KEY_8 } },
+ { "9", HONEY_INT, { HONEY_KEY_9 } },
+ { "semicolon", HONEY_INT, { HONEY_KEY_SEMICOLON } },
+ { "equal", HONEY_INT, { HONEY_KEY_EQUAL } },
+ { "a", HONEY_INT, { HONEY_KEY_A } },
+ { "b", HONEY_INT, { HONEY_KEY_B } },
+ { "c", HONEY_INT, { HONEY_KEY_C } },
+ { "d", HONEY_INT, { HONEY_KEY_D } },
+ { "e", HONEY_INT, { HONEY_KEY_E } },
+ { "f", HONEY_INT, { HONEY_KEY_F } },
+ { "g", HONEY_INT, { HONEY_KEY_G } },
+ { "h", HONEY_INT, { HONEY_KEY_H } },
+ { "i", HONEY_INT, { HONEY_KEY_I } },
+ { "j", HONEY_INT, { HONEY_KEY_J } },
+ { "k", HONEY_INT, { HONEY_KEY_K } },
+ { "l", HONEY_INT, { HONEY_KEY_L } },
+ { "m", HONEY_INT, { HONEY_KEY_M } },
+ { "n", HONEY_INT, { HONEY_KEY_N } },
+ { "o", HONEY_INT, { HONEY_KEY_O } },
+ { "p", HONEY_INT, { HONEY_KEY_P } },
+ { "q", HONEY_INT, { HONEY_KEY_Q } },
+ { "r", HONEY_INT, { HONEY_KEY_R } },
+ { "s", HONEY_INT, { HONEY_KEY_S } },
+ { "t", HONEY_INT, { HONEY_KEY_T } },
+ { "u", HONEY_INT, { HONEY_KEY_U } },
+ { "v", HONEY_INT, { HONEY_KEY_V } },
+ { "w", HONEY_INT, { HONEY_KEY_W } },
+ { "x", HONEY_INT, { HONEY_KEY_X } },
+ { "y", HONEY_INT, { HONEY_KEY_Y } },
+ { "z", HONEY_INT, { HONEY_KEY_Z } },
+ { "left_bracket", HONEY_INT, { HONEY_KEY_LEFT_BRACKET } },
+ { "backslash", HONEY_INT, { HONEY_KEY_BACKSLASH } },
+ { "right_bracket", HONEY_INT, { HONEY_KEY_RIGHT_BRACKET } },
+ { "grave_accent", HONEY_INT, { HONEY_KEY_GRAVE_ACCENT } },
+ { "world_1", HONEY_INT, { HONEY_KEY_WORLD_1 } },
+ { "world_2", HONEY_INT, { HONEY_KEY_WORLD_2 } },
+ { "escape", HONEY_INT, { HONEY_KEY_ESCAPE } },
+ { "enter", HONEY_INT, { HONEY_KEY_ENTER } },
+ { "tab", HONEY_INT, { HONEY_KEY_TAB } },
+ { "backspace", HONEY_INT, { HONEY_KEY_BACKSPACE } },
+ { "insert", HONEY_INT, { HONEY_KEY_INSERT } },
+ { "delete", HONEY_INT, { HONEY_KEY_DELETE } },
+ { "right", HONEY_INT, { HONEY_KEY_RIGHT } },
+ { "left", HONEY_INT, { HONEY_KEY_LEFT } },
+ { "down", HONEY_INT, { HONEY_KEY_DOWN } },
+ { "up", HONEY_INT, { HONEY_KEY_UP } },
+ { "page_up", HONEY_INT, { HONEY_KEY_PAGE_UP } },
+ { "page_down", HONEY_INT, { HONEY_KEY_PAGE_DOWN } },
+ { "home", HONEY_INT, { HONEY_KEY_HOME } },
+ { "end", HONEY_INT, { HONEY_KEY_END } },
+ { "caps_lock", HONEY_INT, { HONEY_KEY_CAPS_LOCK } },
+ { "scroll_lock", HONEY_INT, { HONEY_KEY_SCROLL_LOCK } },
+ { "num_lock", HONEY_INT, { HONEY_KEY_NUM_LOCK } },
+ { "print_screen", HONEY_INT, { HONEY_KEY_PRINT_SCREEN } },
+ { "pause", HONEY_INT, { HONEY_KEY_PAUSE } },
+ { "f1", HONEY_INT, { HONEY_KEY_F1 } },
+ { "f2", HONEY_INT, { HONEY_KEY_F2 } },
+ { "f3", HONEY_INT, { HONEY_KEY_F3 } },
+ { "f4", HONEY_INT, { HONEY_KEY_F4 } },
+ { "f5", HONEY_INT, { HONEY_KEY_F5 } },
+ { "f6", HONEY_INT, { HONEY_KEY_F6 } },
+ { "f7", HONEY_INT, { HONEY_KEY_F7 } },
+ { "f8", HONEY_INT, { HONEY_KEY_F8 } },
+ { "f9", HONEY_INT, { HONEY_KEY_F9 } },
+ { "f10", HONEY_INT, { HONEY_KEY_F10 } },
+ { "f11", HONEY_INT, { HONEY_KEY_F11 } },
+ { "f12", HONEY_INT, { HONEY_KEY_F12 } },
+ { "f13", HONEY_INT, { HONEY_KEY_F13 } },
+ { "f14", HONEY_INT, { HONEY_KEY_F14 } },
+ { "f15", HONEY_INT, { HONEY_KEY_F15 } },
+ { "f16", HONEY_INT, { HONEY_KEY_F16 } },
+ { "f17", HONEY_INT, { HONEY_KEY_F17 } },
+ { "f18", HONEY_INT, { HONEY_KEY_F18 } },
+ { "f19", HONEY_INT, { HONEY_KEY_F19 } },
+ { "f20", HONEY_INT, { HONEY_KEY_F20 } },
+ { "f21", HONEY_INT, { HONEY_KEY_F21 } },
+ { "f22", HONEY_INT, { HONEY_KEY_F22 } },
+ { "f23", HONEY_INT, { HONEY_KEY_F23 } },
+ { "f24", HONEY_INT, { HONEY_KEY_F24 } },
+ { "f25", HONEY_INT, { HONEY_KEY_F25 } },
+ { "kp_0", HONEY_INT, { HONEY_KEY_KP_0 } },
+ { "kp_1", HONEY_INT, { HONEY_KEY_KP_1 } },
+ { "kp_2", HONEY_INT, { HONEY_KEY_KP_2 } },
+ { "kp_3", HONEY_INT, { HONEY_KEY_KP_3 } },
+ { "kp_4", HONEY_INT, { HONEY_KEY_KP_4 } },
+ { "kp_5", HONEY_INT, { HONEY_KEY_KP_5 } },
+ { "kp_6", HONEY_INT, { HONEY_KEY_KP_6 } },
+ { "kp_7", HONEY_INT, { HONEY_KEY_KP_7 } },
+ { "kp_8", HONEY_INT, { HONEY_KEY_KP_8 } },
+ { "kp_9", HONEY_INT, { HONEY_KEY_KP_9 } },
+ { "kp_decimal", HONEY_INT, { HONEY_KEY_KP_DECIMAL } },
+ { "kp_divide", HONEY_INT, { HONEY_KEY_KP_DIVIDE } },
+ { "kp_multiply", HONEY_INT, { HONEY_KEY_KP_MULTIPLY } },
+ { "kp_subtract", HONEY_INT, { HONEY_KEY_KP_SUBTRACT } },
+ { "kp_add", HONEY_INT, { HONEY_KEY_KP_ADD } },
+ { "kp_enter", HONEY_INT, { HONEY_KEY_KP_ENTER } },
+ { "kp_equal", HONEY_INT, { HONEY_KEY_KP_EQUAL } },
+ { "left_shift", HONEY_INT, { HONEY_KEY_LEFT_SHIFT } },
+ { "left_control", HONEY_INT, { HONEY_KEY_LEFT_CONTROL } },
+ { "left_alt", HONEY_INT, { HONEY_KEY_LEFT_ALT } },
+ { "left_super", HONEY_INT, { HONEY_KEY_LEFT_SUPER } },
+ { "right_shift", HONEY_INT, { HONEY_KEY_RIGHT_SHIFT } },
+ { "right_control", HONEY_INT, { HONEY_KEY_RIGHT_CONTROL } },
+ { "right_alt", HONEY_INT, { HONEY_KEY_RIGHT_ALT } },
+ { "right_super", HONEY_INT, { HONEY_KEY_RIGHT_SUPER } },
+ { "menu", HONEY_INT, { HONEY_KEY_MENU } },
};
honey_lua_create_table(L, elements, HONEY_N_KEYS);
diff --git a/src/input/input.h b/src/input/input.h
index f94d520..a8ae206 100644
--- a/src/input/input.h
+++ b/src/input/input.h
@@ -7,7 +7,6 @@
*/
#include "../common.h"
-#include "../lua/honey_lua.h"
#define HONEY_KEY_UNKNOWN 0
#define HONEY_KEY_SPACE 1