dsekai
World engine for retrocomputers.
Loading...
Searching...
No Matches
src
menu.h
1
2
#ifndef MENU_H
3
#define MENU_H
4
11
16
#define MENU_TABLE( f ) f( 0, main ) f( 1, items ) f( 2, craft ) f( 3, save ) f( 4, quit )
17
21
#define MENU_TEXT_SZ 20
22
26
void
menu_open
(
struct
DSEKAI_STATE
* state );
27
31
void
menu_close
(
struct
DSEKAI_STATE
* state );
32
36
typedef
void (*
MENU_RENDERER
)(
struct
DSEKAI_STATE
* state );
37
41
typedef
int16_t (*
MENU_HANDLER
)(
42
INPUT_VAL in_char, int16_t click_x, int16_t click_y,
43
struct
DSEKAI_STATE
* state );
44
45
#define MENU_RENDERER_PROTOTYPES( idx, name ) void menu_renderer_ ## name( struct DSEKAI_STATE* state );
46
47
MENU_TABLE
( MENU_RENDERER_PROTOTYPES )
48
49
#define MENU_HANDLER_PROTOTYPES( idx, name ) int16_t menu_handler_ ## name( INPUT_VAL in_char, int16_t click_x, int16_t click_y, struct DSEKAI_STATE* state );
50
51
MENU_TABLE
( MENU_HANDLER_PROTOTYPES )
52
53
58
#define MENU_FLAG_DIRTY 0x80
59
65
#define MENU_FLAG_ITEM_CRAFTABLE 0x40
66
67
#define MENU_FLAG_ITEM_OPEN_SEL_USE 0x01
68
#define MENU_FLAG_ITEM_OPEN_SEL_CRAFT 0x02
69
#define MENU_FLAG_ITEM_OPEN_SEL_DROP 0x03
70
71
#define MENU_FLAG_ITEM_OPEN_SEL_MASK 0x03
72
73
struct
MENU_STATE
{
75
int8_t
menu_id
;
79
int8_t
highlight_id
;
81
uint8_t
flags
;
83
uint32_t
open_ms
;
84
int8_t craft_item_ids[3];
85
int8_t craft_mod_idx;
86
};
87
88
#ifdef MENU_C
89
90
#define MENU_TABLE_RENDERERS( idx, name ) menu_renderer_ ## name,
91
92
RES_CONST
MENU_RENDERER
gc_menu_renderers
[] = {
93
MENU_TABLE
( MENU_TABLE_RENDERERS )
94
};
95
96
#define MENU_TABLE_HANDLERS( idx, name ) menu_handler_ ## name,
97
98
RES_CONST
MENU_HANDLER
gc_menu_handlers
[] = {
99
MENU_TABLE
( MENU_TABLE_HANDLERS )
100
};
101
102
#define MENU_TABLE_TOKENS( idx, name ) #name,
103
104
RES_CONST
char
gc_menu_tokens
[][
MENU_TEXT_SZ
] = {
105
MENU_TABLE
( MENU_TABLE_TOKENS )
106
""
107
};
108
109
#define MENU_TABLE_CONSTS( idx, name ) RES_CONST uint8_t gc_menu_idx_ ## name = idx;
110
111
MENU_TABLE
( MENU_TABLE_CONSTS )
112
113
#else
114
120
extern
RES_CONST
MENU_RENDERER
gc_menu_renderers
[];
121
128
extern
RES_CONST
MENU_HANDLER
gc_menu_handlers
[];
129
133
extern
RES_CONST
char
gc_menu_tokens
[][
MENU_TEXT_SZ
];
134
135
#define MENU_TABLE_CONSTS( idx, name ) extern RES_CONST uint8_t gc_menu_idx_ ## name;
136
137
MENU_TABLE
( MENU_TABLE_CONSTS )
138
139
#endif
/* MENU_C */
140
142
143
#endif
/* !MENU_H */
144
menu_open
void menu_open(struct DSEKAI_STATE *state)
Open the on-screen menu, pausing the current engine.
Definition
menu.c:472
MENU_TEXT_SZ
#define MENU_TEXT_SZ
Maximum length of a menu item's display text.
Definition
menu.h:21
MENU_RENDERER
void(* MENU_RENDERER)(struct DSEKAI_STATE *state)
Render a currently active menu on-screen.
Definition
menu.h:36
gc_menu_renderers
RES_CONST MENU_RENDERER gc_menu_renderers[]
Table of callbacks used to draw menus.
MENU_HANDLER
int16_t(* MENU_HANDLER)(INPUT_VAL in_char, int16_t click_x, int16_t click_y, struct DSEKAI_STATE *state)
Handle input for a currently active menu.
Definition
menu.h:41
gc_menu_handlers
RES_CONST MENU_HANDLER gc_menu_handlers[]
Table of callacks used to handle menu input.
gc_menu_tokens
RES_CONST char gc_menu_tokens[][MENU_TEXT_SZ]
Table of menu item names as strings.
MENU_TABLE
#define MENU_TABLE(f)
Defines the top-level menu items and callbacks used to handle each submenu.
Definition
menu.h:16
menu_close
void menu_close(struct DSEKAI_STATE *state)
Close the on-screen menu, resuming the current engine.
Definition
menu.c:484
DSEKAI_STATE
General/shared state of the running engine in memory.
Definition
engines.h:196
MENU_STATE
Definition
menu.h:73
MENU_STATE::highlight_id
int8_t highlight_id
Currently selected item. Managed by the callback of the menu indicated by MENU_STATE::menu_id.
Definition
menu.h:79
MENU_STATE::menu_id
int8_t menu_id
Currently open menu as an index in the MENU_TABLE.
Definition
menu.h:75
MENU_STATE::open_ms
uint32_t open_ms
graphics_get_ms() at which menu was last opened.
Definition
menu.h:83
MENU_STATE::flags
uint8_t flags
Bitfield used to manage menu behavior.
Definition
menu.h:81
Generated by
1.13.2