diff --git a/bin/back b/bin/back index 48616c9..4606abe 100755 Binary files a/bin/back and b/bin/back differ diff --git a/obj/main.o b/obj/main.o index a4d5c43..32c930f 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/menus.o b/obj/menus.o index dfd5e99..194aa90 100644 Binary files a/obj/menus.o and b/obj/menus.o differ diff --git a/src/main.c b/src/main.c index 4456c34..56aef08 100644 --- a/src/main.c +++ b/src/main.c @@ -178,6 +178,7 @@ int main_alt() { init_hashtbl(); init_ent_generator(10); init_proj(); + init_interf(); parse_rooms(6); // ---------------------------------------------------------------------------------------------------------------------------------------------- // @@ -360,6 +361,7 @@ int main_alt() { hashtbl_free(visited); free_proj(); + free_interf(); free_pool(); // optional: de-allocate all resources once they've outlived their purpose: diff --git a/src/menus.c b/src/menus.c index 097a398..33ae8b5 100644 --- a/src/menus.c +++ b/src/menus.c @@ -131,4 +131,17 @@ void gl_drawInteger(unsigned int fragShader, int n, float x, float y, float size void gl_initDrawRect(unsigned int shaderProgram) { glUseProgram(shaderProgram); +} + +static onoff_button* buttonList; +static interface* interfaceList; + +void init_interf() { + buttonList = malloc(sizeof(onoff_button)*256); + interfaceList = malloc(sizeof(interface)*64); +} + +void free_interf() { + free(buttonList); + free(interfaceList); } \ No newline at end of file diff --git a/src/menus.h b/src/menus.h index 9fedcb4..7b465ea 100644 --- a/src/menus.h +++ b/src/menus.h @@ -1,6 +1,33 @@ #ifndef MENUS_H #define MENUS_H +typedef enum button_action {WARP, SET_VAR} button_action ; + +typedef struct onoff_button { + int id; + + char* text; + double x; double y; double w; double h; + int red; + int green; + int blue; + + // {WARP, SET_VAR} + button_action type; + + // the value to change (if SET_VAR) or the destination interface (if WARP) + int* metadata; +} onoff_button; + +typedef struct interface { + int intfid; + + char* title; + + onoff_button* buttons; + int nbuttons; +} interface; + void initMenus(); void gl_drawRect(unsigned int fragShader, float x, float y, float w, float h, int r, int g, int b); @@ -8,4 +35,7 @@ void gl_initDrawRect(unsigned int shaderProgram); void gl_drawInteger(unsigned int fragShader, int n, float x, float y, float size, int r, int g, int b, float width, int side); +void init_interf(); +void free_interf(); + #endif \ No newline at end of file