This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
LEFTONE/core/loui/menu.h

87 lines
1.6 KiB
C

#pragma once
#include "util/glyphas/block.h"
#include "util/glyphas/cache.h"
#include "util/math/vector.h"
#include "core/locommon/input.h"
#include "core/locommon/screen.h"
#include "core/locommon/ticker.h"
#include "core/loplayer/player.h"
#include "core/loplayer/stance.h"
#include "core/loresource/set.h"
#include "core/loshader/set.h"
typedef struct {
glyphas_block_t* name;
glyphas_block_t* desc;
glyphas_block_t* note;
vec2_t pos;
float highlight;
} loui_menu_stance_t;
typedef struct {
loshader_set_t* shaders;
const locommon_ticker_t* ticker;
loplayer_t* player;
struct {
struct {
glyphas_cache_t* big;
glyphas_cache_t* normal;
} sans;
struct {
glyphas_cache_t* small;
} serif;
} font;
struct {
vec2_t big_fontpx;
vec2_t big_fontsz;
vec2_t normal_fontpx;
vec2_t normal_fontsz;
vec2_t small_fontpx;
vec2_t small_fontsz;
vec2_t stance_icon_interval;
vec2_t stance_iconsz;
} geo;
loui_menu_stance_t stances[LOPLAYER_STANCE_COUNT+1];
loui_menu_stance_t* hovered_stance;
glyphas_block_t* exit_text;
bool request_exit;
float alpha;
} loui_menu_t;
void
loui_menu_initialize(
loui_menu_t* menu,
loresource_set_t* res,
loshader_set_t* shaders,
const locommon_screen_t* screen,
const locommon_ticker_t* ticker,
loplayer_t* player
);
void
loui_menu_deinitialize(
loui_menu_t* menu
);
void
loui_menu_update(
loui_menu_t* menu,
const locommon_input_t* input /* NULLABLE */
);
void
loui_menu_draw(
const loui_menu_t* menu
);