static int conf_gui(void) { int id; /* Initialize the configuration GUI. */ if ((id = gui_vstack(0))) { int sound = config_get_d(CONFIG_SOUND_VOLUME); int music = config_get_d(CONFIG_MUSIC_VOLUME); int mouse = MOUSE_RANGE_MAP(config_get_d(CONFIG_MOUSE_SENSE)); const char *player = config_get_s(CONFIG_PLAYER); const char *ball = config_get_s(CONFIG_BALL_FILE); int name_id = 0, ball_id = 0; conf_header(id, _("Options"), GUI_BACK); conf_state(id, _("Graphics"), _("Configure"), CONF_VIDEO); gui_space(id); conf_slider(id, _("Mouse Sensitivity"), CONF_MOUSE_SENSE, mouse, mouse_id, ARRAYSIZE(mouse_id)); gui_space(id); conf_slider(id, _("Sound Volume"), CONF_SOUND_VOLUME, sound, sound_id, ARRAYSIZE(sound_id)); conf_slider(id, _("Music Volume"), CONF_MUSIC_VOLUME, music, music_id, ARRAYSIZE(music_id)); gui_space(id); name_id = conf_state(id, _("Player Name"), " ", CONF_PLAYER); ball_id = conf_state(id, _("Ball Model"), " ", CONF_BALL); gui_layout(id, 0, 0); gui_set_trunc(name_id, TRUNC_TAIL); gui_set_trunc(ball_id, TRUNC_TAIL); gui_set_label(name_id, player); gui_set_label(ball_id, base_name(ball)); } return id; }
static void gui_scores(int id, int e) { const char *s = "1234567"; int j, jd, kd, ld; score_extra_row = e; if ((jd = gui_vstack(id))) { if ((kd = gui_vstack(jd))) { score_label = gui_label(kd, _("Unavailable"), GUI_MED, 0, 0); for (j = RANK_HARD; j < RANK_LAST; j++) if ((ld = gui_hstack(kd))) { score_coin[j] = gui_count(ld, 1000, GUI_MED); score_name[j] = gui_label(ld, s, GUI_MED, gui_yel, gui_wht); score_time[j] = gui_clock(ld, 359999, GUI_MED); gui_set_trunc(score_name[j], TRUNC_TAIL); gui_set_fill (score_name[j]); } gui_set_rect(kd, GUI_ALL); } if (e) { gui_space(jd); if ((kd = gui_hstack(jd))) { j = RANK_LAST; score_coin[j] = gui_count(kd, 1000, GUI_MED); score_name[j] = gui_label(kd, s, GUI_MED, gui_yel, gui_wht); score_time[j] = gui_clock(kd, 359999, GUI_MED); gui_set_trunc(score_name[j], TRUNC_TAIL); gui_set_fill (score_name[j]); gui_set_rect(kd, GUI_ALL); } } } }
static int name_gui(void) { int id, jd; if ((id = gui_vstack(0))) { gui_label(id, _("Player Name"), GUI_MED, 0, 0); gui_space(id); name_id = gui_label(id, " ", GUI_MED, gui_yel, gui_yel); gui_space(id); gui_keyboard(id); gui_space(id); if ((jd = gui_harray(id))) { enter_id = gui_start(jd, _("OK"), GUI_SML, NAME_OK, 0); gui_space(jd); gui_state(jd, _("Cancel"), GUI_SML, GUI_BACK, 0); } gui_layout(id, 0, 0); gui_set_trunc(name_id, TRUNC_HEAD); gui_set_label(name_id, text_input); } return id; }
static int save_gui(void) { int id, jd; if ((id = gui_vstack(0))) { gui_label(id, _("Replay Name"), GUI_MED, 0, 0); gui_space(id); file_id = gui_label(id, " ", GUI_MED, gui_yel, gui_yel); gui_space(id); gui_keyboard(id); gui_space(id); if ((jd = gui_harray(id))) { enter_id = gui_start(jd, _("Save"), GUI_SML, SAVE_SAVE, 0); gui_space(jd); gui_state(jd, _("Cancel"), GUI_SML, GUI_BACK, 0); } gui_layout(id, 0, 0); gui_set_trunc(file_id, TRUNC_HEAD); gui_set_label(file_id, text_input); } return id; }
static int clobber_gui(void) { int id, jd, kd; int file_id; if ((id = gui_vstack(0))) { kd = gui_label(id, _("Overwrite?"), GUI_MED, gui_red, gui_red); file_id = gui_label(id, "MMMMMMMM", GUI_MED, gui_yel, gui_yel); if ((jd = gui_harray(id))) { gui_start(jd, _("Cancel"), GUI_SML, GUI_BACK, 0); gui_state(jd, _("Overwrite"), GUI_SML, SAVE_SAVE, 0); } gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); gui_set_trunc(file_id, TRUNC_TAIL); gui_set_label(file_id, text_input); } return id; }
static int gui_demo_thumbs(int id) { int w = video.device_w; int h = video.device_h; int jd, kd, ld; int i, j; int row = w < h ? DEMO_LINEP : DEMO_LINEL; int iw = (w - 160) / row; int ih = iw * 3 / 4; struct thumb *thumb; if ((jd = gui_varray(id))) for (i = first; i < first + DEMO_STEP; i += row) if ((kd = gui_harray(jd))) { for (j = i + row - 1; j >= i; j--) { thumb = &thumbs[j % DEMO_STEP]; thumb->item = j; if (j < total) { if ((ld = gui_vstack(kd))) { gui_space(ld); thumb->shot = gui_image(ld, " ", iw, ih); thumb->name = gui_label(ld, " ", GUI_SML, gui_wht, gui_wht); gui_set_trunc(thumb->name, TRUNC_TAIL); gui_set_state(ld, DEMO_SELECT, j); } } else { gui_space(kd); thumb->shot = 0; thumb->name = 0; } } } return jd; }
static int gui_demo_thumbs(int id) { int w = config_get_d(CONFIG_WIDTH); int h = config_get_d(CONFIG_HEIGHT); int jd, kd, ld; int i, j; struct thumb *thumb; if ((jd = gui_varray(id))) for (i = first; i < first + DEMO_STEP; i += DEMO_LINE) if ((kd = gui_harray(jd))) { for (j = i + DEMO_LINE - 1; j >= i; j--) { thumb = &thumbs[j % DEMO_STEP]; thumb->item = j; if (j < total) { if ((ld = gui_vstack(kd))) { gui_space(ld); thumb->shot = gui_image(ld, " ", w / 6, h / 6); thumb->name = gui_state(ld, " ", GUI_SML, j, 0); gui_set_trunc(thumb->name, TRUNC_TAIL); gui_active(ld, j, 0); } } else { gui_space(kd); thumb->shot = 0; thumb->name = 0; } } } return jd; }
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; }
static int gui_demo_status(int id) { const char *status; int jd, kd, ld; int s; /* Find the longest status string. */ for (status = "", s = GAME_NONE; s < GAME_MAX; s++) if (strlen(status_to_str(s)) > strlen(status)) status = status_to_str(s); /* Build info bar with dummy values. */ if ((jd = gui_hstack(id))) { gui_filler(jd); if ((kd = gui_hstack(jd))) { if ((ld = gui_vstack(kd))) { gui_filler(ld); time_id = gui_clock(ld, 35000, GUI_SML); coin_id = gui_count(ld, 100, GUI_SML); status_id = gui_label(ld, status, GUI_SML, gui_red, gui_red); gui_filler(ld); } if ((ld = gui_vstack(kd))) { gui_filler(ld); gui_label(ld, _("Time"), GUI_SML, gui_wht, gui_wht); gui_label(ld, _("Coins"), GUI_SML, gui_wht, gui_wht); gui_label(ld, _("Status"), GUI_SML, gui_wht, gui_wht); gui_filler(ld); } gui_set_rect(kd, GUI_ALL); } gui_space(jd); if ((kd = gui_hstack(jd))) { if ((ld = gui_vstack(kd))) { gui_filler(ld); name_id = gui_label(ld, " ", GUI_SML, 0, 0); player_id = gui_label(ld, " ", GUI_SML, 0, 0); date_id = gui_label(ld, date_to_str(time(NULL)), GUI_SML, 0, 0); gui_filler(ld); gui_set_trunc(name_id, TRUNC_TAIL); gui_set_trunc(player_id, TRUNC_TAIL); } if ((ld = gui_vstack(kd))) { gui_filler(ld); gui_label(ld, _("Replay"), GUI_SML, gui_wht, gui_wht); gui_label(ld, _("Player"), GUI_SML, gui_wht, gui_wht); gui_label(ld, _("Date"), GUI_SML, gui_wht, gui_wht); gui_filler(ld); } gui_set_rect(kd, GUI_ALL); } gui_filler(jd); } return jd; }
static int start_gui(void) { int w = video.device_w; int h = video.device_h; int i, j; int id, jd, kd, ld; if ((id = gui_vstack(0))) { if ((jd = gui_hstack(id))) { gui_label(jd, set_name(curr_set()), GUI_SML, gui_yel, gui_red); gui_filler(jd); gui_start(jd, _("Back"), GUI_SML, GUI_BACK, 0); } gui_space(id); if ((jd = gui_harray(id))) { if (config_cheat()) { if ((kd = gui_vstack(jd))) { shot_id = gui_image(kd, set_shot(curr_set()), 6 * w / 16, 6 * h / 16); file_id = gui_label(kd, " ", GUI_SML, gui_yel, gui_red); } } else { shot_id = gui_image(jd, set_shot(curr_set()), 7 * w / 16, 7 * h / 16); } if ((kd = gui_varray(jd))) { for (i = 0; i < 5; i++) if ((ld = gui_harray(kd))) for (j = 4; j >= 0; j--) gui_level(ld, i * 5 + j); challenge_id = gui_state(kd, _("Challenge"), GUI_SML, START_CHALLENGE, 0); gui_set_hilite(challenge_id, curr_mode() == MODE_CHALLENGE); } } gui_space(id); gui_score_board(id, (GUI_SCORE_COIN | GUI_SCORE_TIME | GUI_SCORE_GOAL), 0, 0); gui_space(id); if ((jd = gui_hstack(id))) { gui_filler(jd); if ((kd = gui_harray(jd))) { int btn0, btn1; btn0 = gui_state(kd, _("Unlocked"), GUI_SML, START_LOCK_GOALS, 0); btn1 = gui_state(kd, _("Locked"), GUI_SML, START_LOCK_GOALS, 1); if (config_get_d(CONFIG_LOCK_GOALS)) gui_set_hilite(btn1, 1); else gui_set_hilite(btn0, 1); } gui_space(jd); gui_label(jd, _("Goal State in Completed Levels"), GUI_SML, 0, 0); gui_filler(jd); } gui_layout(id, 0, 0); if (file_id) gui_set_trunc(file_id, TRUNC_HEAD); set_score_board(NULL, -1, NULL, -1, NULL, -1); } return id; }