X-Git-Url: http://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fmenu.h;h=cfb7d439653afadf7383aef7f140a93c148157f5;hp=bb6d829777bcde7f8f7886cb3c1cd13fd2d19a84;hb=7b2f2285593458477b8185e62099d61975faf7d4;hpb=02ddae7ddbb58bee18512188f02b0dcca292b4e5 diff --git a/src/menu.h b/src/menu.h index bb6d829..cfb7d43 100644 --- a/src/menu.h +++ b/src/menu.h @@ -24,32 +24,89 @@ #include "glob.h" -typedef struct { +/* menu types */ +#define GM_BIG 1 +#define GM_SMALL 2 + +/* variant types */ +#define GM_BUTTON 1 +#define GM_SCROLLER 2 +#define GM_TEXTFIELD 3 +#define GM_SMALL_BUTTON 4 +#define GM_TEXTFIELD_BUTTON 5 + +/* menu messages */ +#define GM_GETINT 1 +#define GM_SETINT 2 +#define GM_GETSTR 3 +#define GM_SETSTR 4 +#define GM_SELECT 5 // buttons +#define GM_ENTER 6 // menu +#define GM_LEAVE 7 // menu +#define GM_BEGIN 8 // textfield +#define GM_END 9 // textfield +#define GM_CANCEL 10 // textfield + +typedef struct new_str_msg_t { + byte type; + char *s; + int maxlen; +} new_str_msg_t; + +typedef struct new_int_msg_t { + byte type; + int i, a, b, s; +} new_int_msg_t; + +typedef union new_msg_t { byte type; - int n, cur, x; - char *ttl; - char **m; - byte *t; -} menu_t; - -extern menu_t save_mnu; -extern byte *panimp; + new_str_msg_t string; + new_int_msg_t integer; +} new_msg_t; + +typedef struct new_var_t new_var_t; +typedef struct new_menu_t new_menu_t; + +struct new_var_t { + byte type; + char *caption; + void *data; + int (*handler)(new_msg_t *msg, const new_menu_t *m, void *data); + const new_menu_t *submenu; +}; + +struct new_menu_t { + byte type; + char *title; + void *data; + int (*handler)(new_msg_t *msg, const new_menu_t *m, void *data); + new_var_t entries[]; +}; + extern byte _warp; -#define PCOLORN 10 -extern byte pcolortab[PCOLORN]; -extern int p1color; -extern int p2color; +//#define PCOLORN 10 +//extern byte pcolortab[PCOLORN]; +//extern int p1color; +//extern int p2color; -extern char ibuf[24]; +#define GM_MAX_INPUT 24 +extern char ibuf[GM_MAX_INPUT]; extern byte input; +extern int icur; -extern menu_t *mnu; -extern byte gm_redraw; extern short lastkey; -void GMV_say (const char nm[8]); -void G_keyf (int key, int down); +void GM_push (const new_menu_t *m); +void GM_pop (void); +void GM_popall (void); +const new_menu_t *GM_get (void); +int GM_geti (void); +int GM_send_this (const new_menu_t *m, new_msg_t *msg); +int GM_send (const new_menu_t *m, int i, new_msg_t *msg); + +void GM_key (int key, int down); +void GM_input (int ch); void G_code (void); int GM_act (void); void GM_init (void);