mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
65 lines
No EOL
1.8 KiB
C
65 lines
No EOL
1.8 KiB
C
#ifndef _MENU_H_
|
|
#define _MENU_H_
|
|
|
|
// various length defines
|
|
#define MAX_CHOICE_STRING_LEN 32
|
|
#define MAX_TOP_SCREEN_TEXT 32
|
|
#define MAX_CHOICES 10
|
|
#define MAX_LIST_STRINGS 16
|
|
#define MAX_LIST_STRING_LEN 32
|
|
#define MAX_KEYBOARD_TEXT_LEN 32
|
|
#define MAX_EXTRA_TEXT_STRINGS 10
|
|
#define MAX_EXTRA_TEXT_STRING_LEN 32
|
|
|
|
// options for screens
|
|
#define SCREEN_OPTION_ANIMATED 0x1
|
|
#define SCREEN_OPTION_KEYBOARD 0x2
|
|
#define SCREEN_OPTION_LIST 0x4
|
|
#define SCREEN_OPTION_EXTRAS_CENTERED 0x8
|
|
|
|
// options for screen choices
|
|
#define CHOICE_OPTION_NEEDS_LIST_SELECTION 0x1
|
|
#define CHOICE_OPTION_DISABLED 0x2
|
|
|
|
// a single choice on a screen
|
|
typedef struct MenuScreenChoice
|
|
{
|
|
const char * text;
|
|
int options;
|
|
} MenuScreenChoice;
|
|
|
|
// an instance of a screen
|
|
typedef struct MenuScreen
|
|
{
|
|
struct MenuScreenConfiguration * configuration;
|
|
char extraText[MAX_EXTRA_TEXT_STRINGS][MAX_EXTRA_TEXT_STRING_LEN + 1];
|
|
char list[MAX_LIST_STRINGS][MAX_LIST_STRING_LEN + 1];
|
|
int listSelection; // default -1, no selection
|
|
char keyboardText[MAX_KEYBOARD_TEXT_LEN + 1];
|
|
int numChoices;
|
|
} MenuScreen;
|
|
|
|
// the static configuration for a screen
|
|
typedef struct MenuScreenConfiguration
|
|
{
|
|
const char * topScreenText;
|
|
MenuScreenChoice choices[MAX_CHOICES];
|
|
void (* initFunc)(void);
|
|
void (* choseFunc)(const char * choice);
|
|
void (* thinkFunc)(void);
|
|
int options;
|
|
} MenuScreenConfiguration;
|
|
|
|
// call this to start showing a menu, pass in the initial screen to show
|
|
void StartMenuScreen(MenuScreenConfiguration * configuration);
|
|
|
|
// call this from any of the configuration callback funcs to set the next screen to show
|
|
void SetNextMenuScreen(MenuScreenConfiguration * configuration);
|
|
|
|
// call this to exit the menu
|
|
void ExitMenu(void);
|
|
|
|
// gets the current menu screen
|
|
MenuScreen * GetMenuScreen(void);
|
|
|
|
#endif |