From a086752f5c2f70275f98b8698598db337fca498a Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 18 Mar 2021 19:18:39 -0400 Subject: main-menu: Add stub actions and init active button --- (limited to 'src') diff --git a/src/main-menu.c b/src/main-menu.c index 243fcdd..3d13986 100644 --- a/src/main-menu.c +++ b/src/main-menu.c @@ -27,15 +27,17 @@ #include "util.h" struct _db_main_menu_button { - SDL_Texture *texture_text; - SDL_Texture *texture_over; - SDL_Rect rect; - struct _db_main_menu_button *u; - struct _db_main_menu_button *d; - struct _db_main_menu_button *l; - struct _db_main_menu_button *r; - struct _db_main_menu_button *p; - struct _db_main_menu_button *n; + SDL_Texture *texture_text; + SDL_Texture *texture_over; + SDL_Rect rect; + struct _db_main_menu_button *u; + struct _db_main_menu_button *d; + struct _db_main_menu_button *l; + struct _db_main_menu_button *r; + struct _db_main_menu_button *p; + struct _db_main_menu_button *n; + void (*action)(void *); + void *user_data; }; static SDL_Texture * @@ -65,6 +67,26 @@ _db_main_menu_text(TTF_Font *font, const char *text, SDL_Color *color, return texture; } +static void +_db_main_menu_help(void *user_data __attribute__((__unused__))) +{ +} + +static void +_db_main_menu_quit(void *user_data __attribute__((__unused__))) +{ +} + +static void +_db_main_menu_game(void *user_data) +{ + struct db_game *game; + + game = user_data; + + db_dbg("Loading game \"%s\"", db_game_get_name(game)); +} + void db_main_menu(void) { @@ -81,6 +103,7 @@ db_main_menu(void) struct _db_main_menu_button **buttons; char *name_desc; int i; + struct _db_main_menu_button *active; games_dir = db_get_games_dir(); font_path = db_strcat(db_get_fonts_dir(), "/UbuntuTitling-Bold.ttf"); @@ -153,6 +176,8 @@ db_main_menu(void) } buttons[0]->rect.x = 640 - 16 - buttons[0]->rect.w; buttons[0]->rect.y = 16; + buttons[0]->action = &_db_main_menu_help; + buttons[0]->user_data = NULL; /* Render quit button */ buttons[1] = malloc(sizeof(**buttons)); @@ -172,6 +197,8 @@ db_main_menu(void) } buttons[1]->rect.x = 640 - 16 - buttons[1]->rect.w; buttons[1]->rect.y = 48; + buttons[1]->action = &_db_main_menu_quit; + buttons[1]->user_data = NULL; /* Render game buttons */ buttons[1]->n = buttons[0]; /* Quit button link (may change below) */ @@ -214,6 +241,8 @@ db_main_menu(void) buttons[i + 2]->r = buttons[0]; buttons[i + 2]->p = buttons[i + 1]; buttons[i + 1]->n = buttons[i + 2]; + buttons[i + 2]->action = &_db_main_menu_game; + buttons[i + 2]->user_data = games[i]; } if (n > 0) { buttons[i + 1]->n = buttons[0]; @@ -242,9 +271,20 @@ db_main_menu(void) buttons[1]->r = NULL; buttons[1]->p = buttons[0]; + if (n > 0) { + active = buttons[2]; + } else { + active = buttons[1]; + } + for (i = 0; i < n + 2; ++i) { - SDL_RenderCopy(renderer, buttons[i]->texture_text, NULL, - &buttons[i]->rect); + if (buttons[i] == active) { + SDL_RenderCopy(renderer, buttons[i]->texture_over, NULL, + &buttons[i]->rect); + } else { + SDL_RenderCopy(renderer, buttons[i]->texture_text, NULL, + &buttons[i]->rect); + } } SDL_RenderPresent(renderer); -- cgit v0.9.1