start on options menu

This commit is contained in:
James Lambert 2023-04-22 22:57:50 -06:00
parent e648add422
commit b7d1404868
6 changed files with 68 additions and 0 deletions

View file

@ -72,6 +72,10 @@ enum MainMenuState landingMenuUpdate(struct LandingMenu* landingMenu) {
case 0:
return MainMenuStateNewGame;
break;
case 2:
return MainMenuStateOptions;
break;
}
}

View file

@ -22,6 +22,7 @@ void mainMenuInit(struct MainMenu* mainMenu) {
landingMenuInit(&mainMenu->landingMenu);
newGameInit(&mainMenu->newGameMenu);
optionsMenuInit(&mainMenu->optionsMenu);
mainMenu->state = MainMenuStateLanding;
@ -51,6 +52,9 @@ void mainMenuUpdate(struct MainMenu* mainMenu) {
case MainMenuStateNewGame:
mainMenu->state = newGameUpdate(&mainMenu->newGameMenu);
break;
case MainMenuStateOptions:
mainMenu->state = optionsMenuUpdate(&mainMenu->optionsMenu);
break;
}
}
@ -84,5 +88,8 @@ void mainMenuRender(struct MainMenu* mainMenu, struct RenderState* renderState,
case MainMenuStateNewGame:
newGameRender(&mainMenu->newGameMenu, renderState, task);
break;
case MainMenuStateOptions:
optionsMenuRender(&mainMenu->optionsMenu, renderState, task);
break;
}
}

View file

@ -7,11 +7,13 @@
#include "./landing_menu.h"
#include "./new_game_menu.h"
#include "./options_menu.h"
struct MainMenu {
enum MainMenuState state;
struct LandingMenu landingMenu;
struct NewGameMenu newGameMenu;
struct OptionsMenu optionsMenu;
};
void mainMenuInit(struct MainMenu* mainMenu);

View file

@ -4,6 +4,7 @@
enum MainMenuState {
MainMenuStateLanding,
MainMenuStateNewGame,
MainMenuStateOptions,
};
#endif

View file

@ -0,0 +1,37 @@
#include "options_menu.h"
#include "../font/font.h"
#include "../font/dejavusans.h"
#include "../build/assets/materials/ui.h"
#include "../controls/controller.h"
#define OPTIONS_LEFT 40
#define OPTIONS_TOP 45
void optionsMenuInit(struct OptionsMenu* options) {
options->menuOutline = menuBuildBorder(OPTIONS_LEFT, OPTIONS_TOP, SCREEN_WD - OPTIONS_LEFT * 2, SCREEN_HT - OPTIONS_TOP * 2);
options->optionsText = menuBuildText(&gDejaVuSansFont, "OPTIONS", 48, 48);
}
enum MainMenuState optionsMenuUpdate(struct OptionsMenu* options) {
if (controllerGetButtonDown(0, B_BUTTON)) {
return MainMenuStateLanding;
}
return MainMenuStateOptions;
}
void optionsMenuRender(struct OptionsMenu* options, struct RenderState* renderState, struct GraphicsTask* task) {
gSPDisplayList(renderState->dl++, ui_material_list[DEFAULT_UI_INDEX]);
gSPDisplayList(renderState->dl++, ui_material_list[SOLID_TRANSPARENT_OVERLAY_INDEX]);
gDPFillRectangle(renderState->dl++, 0, 0, SCREEN_WD, SCREEN_HT);
gSPDisplayList(renderState->dl++, ui_material_revert_list[SOLID_TRANSPARENT_OVERLAY_INDEX]);
gSPDisplayList(renderState->dl++, ui_material_list[ROUNDED_CORNERS_INDEX]);
gSPDisplayList(renderState->dl++, options->menuOutline);
gSPDisplayList(renderState->dl++, ui_material_revert_list[ROUNDED_CORNERS_INDEX]);
}

View file

@ -0,0 +1,17 @@
#ifndef __MENU_OPTIONS_MENU_H__
#define __MENU_OPTIONS_MENU_H__
#include "../graphics/graphics.h"
#include "./menu.h"
#include "./menu_state.h"
struct OptionsMenu {
Gfx* menuOutline;
Gfx* optionsText;
};
void optionsMenuInit(struct OptionsMenu* options);
enum MainMenuState optionsMenuUpdate(struct OptionsMenu* options);
void optionsMenuRender(struct OptionsMenu* options, struct RenderState* renderState, struct GraphicsTask* task);
#endif