86 lines
1.9 KiB
C
86 lines
1.9 KiB
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "uigamemenu.h"
|
|
#include "ui/frame/uiframe.h"
|
|
#include "ui/frame/settings/uisettings.h"
|
|
#include "util/memory.h"
|
|
#include "display/spritebatch/spritebatch.h"
|
|
#include "display/screen/screen.h"
|
|
#include "assert/assert.h"
|
|
|
|
#define UI_GAME_MENU_INDEX_CHARACTERS 0
|
|
#define UI_GAME_MENU_INDEX_SETTINGS 1
|
|
|
|
uigamemenu_t UI_GAME_MENU;
|
|
|
|
void uiGameMenuSelected(
|
|
const uimenu_t *menu,
|
|
const uint8_t index,
|
|
const uimenuitem_t *item
|
|
) {
|
|
if(index == UI_GAME_MENU_INDEX_SETTINGS) uiSettingsOpen();
|
|
}
|
|
|
|
errorret_t uiGameMenuInit(void) {
|
|
memoryZero(&UI_GAME_MENU, sizeof(uigamemenu_t));
|
|
|
|
uimenu_t *menu = &UI_GAME_MENU.menu;
|
|
uiMenuInit(menu, uiGameMenuSelected, NULL, NULL);
|
|
menu->items = UI_GAME_MENU.items;
|
|
|
|
MENU_BEGIN
|
|
MENU_BUTTON("Characters");
|
|
MENU_BUTTON("Settings");
|
|
|
|
assertTrue(
|
|
menuIndex <= UI_GAME_MENU_ITEM_COUNT,
|
|
"Game menu item count mismatch"
|
|
);
|
|
|
|
uiMenuSetItems(menu, UI_GAME_MENU.items, menuIndex, 1);
|
|
|
|
errorOk();
|
|
}
|
|
|
|
errorret_t uiGameMenuDraw(void) {
|
|
if(!uiMenuIsActive(&UI_GAME_MENU.menu)) errorOk();
|
|
|
|
const float_t width = UI_GAME_MENU_WIDTH;
|
|
const float_t height = (float_t)SCREEN.scanHeight;
|
|
const float_t x = (float_t)(SCREEN.scanX + SCREEN.scanWidth) - width;
|
|
const float_t y = (float_t)SCREEN.scanY;
|
|
|
|
errorChain(uiFrameDraw(x, y, width, height));
|
|
errorChain(uiMenuDraw(
|
|
&UI_GAME_MENU.menu,
|
|
x + UI_FRAME_START_X,
|
|
y + UI_FRAME_START_Y,
|
|
width - (UI_FRAME_START_X * 2),
|
|
height - (UI_FRAME_START_Y * 2)
|
|
));
|
|
|
|
errorChain(spriteBatchFlush());
|
|
errorOk();
|
|
}
|
|
|
|
bool_t uiGameMenuIsOpen(void) {
|
|
return uiMenuIsActive(&UI_GAME_MENU.menu);
|
|
}
|
|
|
|
void uiGameMenuOpen() {
|
|
uiMenuOpen(&UI_GAME_MENU.menu);
|
|
}
|
|
|
|
void uiGameMenuClose() {
|
|
uiMenuClose(&UI_GAME_MENU.menu);
|
|
}
|
|
|
|
errorret_t uiGameMenuDispose(void) {
|
|
errorOk();
|
|
}
|