static int camera_gui(void) { int id, jd; if ((id = gui_vstack(0))) { conf_header(id, _("Camera"), GUI_BACK); int rot_speed = ROT_SPEED_RANGE_MAP(config_get_d(CONFIG_ROTATE_FAST)); int normal_rot_accel = config_get_d(CONFIG_ROTATE_ACCEL_NORMAL); int finesse_rot_accel = config_get_d(CONFIG_ROTATE_ACCEL_FINESSE); conf_slider(id, _("Max rotation speed"), CAMERA_ROT_SPEED, rot_speed, rot_speed_id, ARRAYSIZE(rot_speed_id)); conf_slider(id, _("Normal rotation accel."), CAMERA_NORMAL_ROT_ACCEL, normal_rot_accel, normal_rot_accel_id, ARRAYSIZE(normal_rot_accel_id)); conf_slider(id, _("Finesse-mode rotation accel."), CAMERA_FINESSE_ROT_ACCEL, finesse_rot_accel, finesse_rot_accel_id, ARRAYSIZE(finesse_rot_accel_id)); gui_space(id); conf_toggle(id, _("Reversed camera rotation"), CAMERA_REVERSED_CAMERA_ROTATION, config_get_d(CONFIG_REVERSED_CAMERA_ROTATION), _("On"), 1, _("Off"), 0); conf_toggle(id, _("Draw floor tilt"), CAMERA_SCREEN_TILT_ENABLED, config_get_d(CONFIG_SCREEN_TILT_ENABLED), _("On"), 1, _("Off"), 0); gui_layout(id, 0, 0); } return id; }
static int conf_video_gui(void) { static const struct option multisample_opts[] = { { N_("Off"), 0 }, { N_("2x"), 2 }, { N_("4x"), 4 }, { N_("8x"), 8 }, }; int id; if ((id = gui_vstack(0))) { char resolution[sizeof ("12345678 x 12345678")]; sprintf(resolution, "%d x %d", config_get_d(CONFIG_WIDTH), config_get_d(CONFIG_HEIGHT)); conf_header(id, _("Graphics"), GUI_BACK); conf_state (id, _("Resolution"), resolution, CONF_VIDEO_RESOLUTION); conf_toggle(id, _("Fullscreen"), CONF_VIDEO_FULLSCREEN, config_get_d(CONFIG_FULLSCREEN), _("On"), 1, _("Off"), 0); #ifdef ENABLE_HMD conf_toggle(id, _("HMD"), CONF_VIDEO_HMD, config_get_d(CONFIG_HMD), _("On"), 1, _("Off"), 0); #endif gui_space(id); conf_toggle(id, _("V-Sync"), CONF_VIDEO_VSYNC, config_get_d(CONFIG_VSYNC), _("On"), 1, _("Off"), 0); conf_select(id, _("Antialiasing"), CONF_VIDEO_MULTISAMPLE, config_get_d(CONFIG_MULTISAMPLE), multisample_opts, ARRAYSIZE(multisample_opts)); gui_space(id); conf_toggle(id, _("Reflection"), CONF_VIDEO_REFLECTION, config_get_d(CONFIG_REFLECTION), _("On"), 1, _("Off"), 0); conf_toggle(id, _("Background"), CONF_VIDEO_BACKGROUND, config_get_d(CONFIG_BACKGROUND), _("On"), 1, _("Off"), 0); conf_toggle(id, _("Shadow"), CONF_VIDEO_SHADOW, config_get_d(CONFIG_SHADOW), _("On"), 1, _("Off"), 0); gui_layout(id, 0, 0); } return id; }
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 int resol_gui(void) { int id, jd, kd; if ((id = gui_vstack(0))) { const int W = config_get_d(CONFIG_WIDTH); const int H = config_get_d(CONFIG_HEIGHT); int i, j, n = ARRAYSIZE(modes); char buff[sizeof ("1234567890 x 1234567890")] = ""; conf_header(id, _("Resolution"), GUI_BACK); for (i = 0; i < n; i += 4) { if ((jd = gui_harray(id))) { for (j = 3; j >= 0; j--) { int m = i + j; if (m < n) { sprintf(buff, "%d x %d", modes[m].w, modes[m].h); kd = gui_state(jd, buff, GUI_SML, RESOL_MODE, m); gui_set_hilite(kd, (modes[m].w == W && modes[m].h == H)); } else { gui_space(jd); } } } } gui_layout(id, 0, 0); } return id; }
static int display_gui(void) { int id, jd; int i, n = SDL_GetNumVideoDisplays(); if ((id = gui_vstack(0))) { conf_header(id, _("Display"), GUI_BACK); for (i = 0; i < n; i++) { const char *name = SDL_GetDisplayName(i); jd = gui_state(id, name, GUI_SML, DISPLAY_SELECT, i); gui_set_hilite(jd, (i == config_get_d(CONFIG_DISPLAY))); } 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; }