play_if_exist { yylval.i = DGLCMD_PLAY_IF_EXIST; return TYPE_DGLCMD2; }
submenu { yylval.i = DGLCMD_SUBMENU; return TYPE_DGLCMD1; }
return { yylval.i = DGLCMD_RETURN; return TYPE_DGLCMD0; }
+redraw { yylval.i = DGLCMD_REDRAW; return TYPE_DGLCMD0; }
rawprint { yylval.i = DGLCMD_RAWPRINT; return TYPE_DGLCMD1; }
DEFINE { return TYPE_DEFINE_GAME; }
readprefs ()
{
FILE *upf;
- struct userpref **cpref = &userprefs;
+ struct userpref **cpref;
int prefcount = 0;
char buf[256];
char *p;
freeprefs();
upf = fopen(userpref_path, "r");
if (!upf) return -1;
+ cpref = &userprefs;
while (fgets(buf, 256, upf)) {
/* first token is 'name' - must start with letter */
/* skip over any leading non-letter garbage */
tmpopt = tmpopt->next;
}
}
+ if (redraw_banner) {
+ redraw_banner = 0;
+ freebanner(&ban);
+ loadbanner(menu->banner_fn, &ban);
+ doclear = 1;
+ }
if (return_from_submenu) {
freebanner(&ban);
DGLCMD_PLAYGAME, /* play_game "foo" */
DGLCMD_PLAY_IF_EXIST, /* play_if_exist "game" "file" */
DGLCMD_SUBMENU, /* submenu "foo" */
+ DGLCMD_REDRAW, /* redraw */
DGLCMD_RETURN /* return */
} dglcmd_actions;
extern int selected_game;
extern int return_from_submenu;
+extern int redraw_banner;
extern struct dg_globalconfig globalconfig;
int selected_game = 0;
int return_from_submenu = 0;
+int redraw_banner = 0;
char *userpref_path = NULL;
mode_t default_fmode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
if (p1)
runmenuloop(dgl_find_menu(p1));
break;
+ case DGLCMD_REDRAW:
+ redraw_banner = 1;
+ break;
case DGLCMD_RETURN:
return_from_submenu = 1;
break;