summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-03-18 19:18:39 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-03-18 19:24:59 (EDT)
commita086752f5c2f70275f98b8698598db337fca498a (patch)
treee687c4b58b545bb9845ac9d6b05cac36386d1d8c
parentb9b74df6999a4caa1832e52982a40e6d7a656cc0 (diff)
downloaddodge-balls-a086752f5c2f70275f98b8698598db337fca498a.zip
dodge-balls-a086752f5c2f70275f98b8698598db337fca498a.tar.gz
dodge-balls-a086752f5c2f70275f98b8698598db337fca498a.tar.bz2
main-menu: Add stub actions and init active button
-rw-r--r--src/main-menu.c62
1 files changed, 51 insertions, 11 deletions
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);