From b08ef10e82d4993a6c80ab8f0022234c4e2c9050 Mon Sep 17 00:00:00 2001 From: Linus Probert Date: Tue, 26 Feb 2019 11:59:07 +0100 Subject: [PATCH] Code maintenance and cleanup --- src/main.c | 55 ++++++++++++++++++++++++++++++++++++------------------ src/menu.c | 6 ++++++ 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/main.c b/src/main.c index f68028a..23d63b1 100644 --- a/src/main.c +++ b/src/main.c @@ -1120,6 +1120,39 @@ run_game(void) } } +static Menu * +get_active_menu(void) +{ + switch (gGameState) { + case MENU: + return mainMenu; + case CHARACTER_MENU: + return charSelectMenu; + case GAME_SELECT: + return gameSelectMenu; + default: + return NULL; + } +} + +static inline void +render_current_screen(void) +{ + switch (gGameState) { + case CHARACTER_MENU: + screen_render(characterSelectScreen, gCamera); + break; + case CREDITS: + screen_render(creditsScreen, gCamera); + break; + case SCORE_SCREEN: + screen_render(scoreScreen, gCamera); + break; + default: + break; + } +} + static void run_menu(void) { @@ -1141,12 +1174,8 @@ run_menu(void) && gGameState != CHARACTER_MENU) return; - if (gGameState == MENU) - menu_update(mainMenu, &input, gCamera); - else if (gGameState == CHARACTER_MENU) - menu_update(charSelectMenu, &input, gCamera); - else if (gGameState == GAME_SELECT) - menu_update(gameSelectMenu, &input, gCamera); + + menu_update(get_active_menu(), &input, gCamera); SDL_SetRenderDrawColor(gRenderer, 0, 0, 0, 0); SDL_RenderClear(gRenderer); @@ -1160,18 +1189,8 @@ run_menu(void) SDL_RenderSetViewport(gRenderer, &mainViewport); - if (gGameState == MENU) - menu_render(mainMenu, gCamera); - else if (gGameState == CHARACTER_MENU) { - screen_render(characterSelectScreen, gCamera); - menu_render(charSelectMenu, gCamera); - } - else if (gGameState == GAME_SELECT) - menu_render(gameSelectMenu, gCamera); - else if (gGameState == CREDITS) - screen_render(creditsScreen, gCamera); - else if (gGameState == SCORE_SCREEN) - screen_render(scoreScreen, gCamera); + render_current_screen(); + menu_render(get_active_menu(), gCamera); #ifdef DEBUG sprite_render(fpsSprite, gCamera); diff --git a/src/menu.c b/src/menu.c index b598341..c6eaad2 100644 --- a/src/menu.c +++ b/src/menu.c @@ -229,6 +229,9 @@ redraw_description(Menu *m, SDL_Renderer *renderer) void menu_update(Menu *m, Input *input, Camera *cam) { + if (!m) + return; + static int lastSelected = -1; if (handle_keyboard_input(m, input)) { @@ -278,6 +281,9 @@ menu_item_add(Menu *m, Sprite *s1, Sprite *s2, void (*event)(void*)) void menu_render(Menu *m, Camera *cam) { + if (!m) + return; + LinkedList *items = m->items; int index = 0;