static void gui_demo_update_status(int i) { const struct demo *d; if (!total) return; d = DEMO_GET(items, i < total ? i : 0); if (!d) return; gui_set_label(name_id, d->name); gui_set_label(date_id, date_to_str(d->date)); gui_set_label(player_id, d->player); if (d->status == GAME_GOAL) gui_set_color(status_id, gui_grn, gui_grn); else gui_set_color(status_id, gui_red, gui_red); gui_set_label(status_id, status_to_str(d->status)); gui_set_count(coin_id, d->coins); gui_set_clock(time_id, d->timer); }
static void set_score_color(int id, int hi, const GLubyte *c0, const GLubyte *c1) { if (hi >= RANK_HARD) { if (hi < RANK_LAST) gui_set_color(id, c0, c0); else gui_set_color(id, c1, c1); } }
static void gui_set_scores(const char *label, const struct score *s, int hilite) { const char *name; int j, n = score_extra_row ? RANK_LAST : RANK_EASY; if (s == NULL) { gui_set_label(score_label, _("Unavailable")); for (j = RANK_HARD; j <= n; j++) { gui_set_count(score_coin[j], -1); gui_set_label(score_name[j], ""); gui_set_clock(score_time[j], -1); } } else { gui_set_label(score_label, label); for (j = RANK_HARD; j <= n; j++) { name = s->player[j]; if (j == hilite) set_score_color(score_name[j], j, gui_grn, gui_red); else gui_set_color(score_name[j], gui_yel, gui_wht); gui_set_count(score_coin[j], s->coins[j]); gui_set_label(score_name[j], is_special_name(name) ? _(name) : name); gui_set_clock(score_time[j], s->timer[j]); } } }
static int party_enter(void) { int id, jd; if ((id = gui_vstack(0))) { gui_label(id, _("Players?"), GUI_MED, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { int p4 = gui_state(jd, "4", GUI_LRG, PARTY_4, 0); int p3 = gui_state(jd, "3", GUI_LRG, PARTY_3, 0); int p2 = gui_state(jd, "2", GUI_LRG, PARTY_2, 0); int p1 = gui_state(jd, "1", GUI_LRG, PARTY_1, 0); gui_set_color(p1, gui_red, gui_wht); gui_set_color(p2, gui_grn, gui_wht); gui_set_color(p3, gui_blu, gui_wht); gui_set_color(p4, gui_yel, gui_wht); gui_focus(p1); } gui_space(id); if ((jd = gui_hstack(id))) { gui_filler(jd); gui_state(jd, _("Back"), GUI_SML, PARTY_B, 0); } gui_layout(id, 0, 0); } return id; }
static int video_gui(void) { static const struct conf_option multisample_opts[] = { { N_("Off"), 0 }, { N_("2x"), 2 }, { N_("4x"), 4 }, { N_("8x"), 8 }, }; int id, jd; if ((id = gui_vstack(0))) { char resolution[sizeof ("12345678 x 12345678")]; const char *display; int dpy = config_get_d(CONFIG_DISPLAY); sprintf(resolution, "%d x %d", config_get_d(CONFIG_WIDTH), config_get_d(CONFIG_HEIGHT)); if (!(display = SDL_GetDisplayName(dpy))) display = _("Unknown Display"); conf_header(id, _("Graphics"), GUI_BACK); if ((jd = conf_state(id, _("Display"), "Longest Name", VIDEO_DISPLAY))) { gui_set_trunc(jd, TRUNC_TAIL); gui_set_label(jd, display); } conf_toggle(id, _("Fullscreen"), VIDEO_FULLSCREEN, config_get_d(CONFIG_FULLSCREEN), _("On"), 1, _("Off"), 0); if ((jd = conf_state (id, _("Resolution"), resolution, VIDEO_RESOLUTION))) { /* * Because we always use the desktop display mode, disable * display mode switching in fullscreen. */ if (config_get_d(CONFIG_FULLSCREEN)) { gui_set_state(jd, GUI_NONE, 0); gui_set_color(jd, gui_gry, gui_gry); } } #if ENABLE_HMD conf_toggle(id, _("HMD"), VIDEO_HMD, config_get_d(CONFIG_HMD), _("On"), 1, _("Off"), 0); #endif gui_space(id); conf_toggle(id, _("V-Sync"), VIDEO_VSYNC, config_get_d(CONFIG_VSYNC), _("On"), 1, _("Off"), 0); conf_select(id, _("Antialiasing"), VIDEO_MULTISAMPLE, config_get_d(CONFIG_MULTISAMPLE), multisample_opts, ARRAYSIZE(multisample_opts)); gui_space(id); conf_toggle(id, _("Reflection"), VIDEO_REFLECTION, config_get_d(CONFIG_REFLECTION), _("On"), 1, _("Off"), 0); conf_toggle(id, _("Background"), VIDEO_BACKGROUND, config_get_d(CONFIG_BACKGROUND), _("On"), 1, _("Off"), 0); conf_toggle(id, _("Shadow"), VIDEO_SHADOW, config_get_d(CONFIG_SHADOW), _("On"), 1, _("Off"), 0); gui_layout(id, 0, 0); } return id; }