X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fmenu.h;h=b0b292903565b2949b88a87f5eec6a6be84a9eb1;hb=555a6c929ea8739502282844e6253b3326cb6e2f;hp=ed4a5e994f39d24090f8393b14864ec87adaff00;hpb=534310c1f131bb9a53be865c32d90342ed026734;p=flatwaifu.git diff --git a/src/menu.h b/src/menu.h index ed4a5e9..b0b2929 100644 --- a/src/menu.h +++ b/src/menu.h @@ -19,35 +19,92 @@ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -// Game menus +#ifndef MENU_H_INCLUDED +#define MENU_H_INCLUDED -typedef struct{ +#include "glob.h" + +/* 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; - int n,cur,x; - char *ttl; - char **m; - byte *t; -}menu_t; + char *s; + int maxlen; +} new_str_msg_t; -extern menu_t save_mnu; +typedef struct new_int_msg_t { + byte type; + int i, a, b, s; +} new_int_msg_t; -extern byte *panimp; +typedef union new_msg_t { + byte type; + 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[]; +}; -#define PCOLORN 10 -extern byte pcolortab[PCOLORN]; -extern int p1color; -extern int p2color; +extern byte _warp; -extern char ibuf[24]; +#define GM_MAX_INPUT 24 +extern char ibuf[GM_MAX_INPUT]; extern byte input; +extern int icur; +extern int imax; -extern menu_t *mnu; -extern byte gm_redraw; +extern short lastkey; -void GMV_say(char *); -void GMV_stop(void); +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_init(void); -int GM_act(void); +void GM_key (int key, int down); +void GM_input (int ch); +void G_code (void); +int GM_act (void); +void GM_init (void); -void G_code(void); +#endif /* MENU_H_INCLUDED */