static int pause_gui(void) { int id, jd, title_id; /* Build the pause GUI. */ if ((id = gui_vstack(0))) { title_id = gui_label(id, _("Paused"), GUI_LRG, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { gui_state(jd, _("Quit"), GUI_SML, PAUSE_EXIT, 0); if (progress_same_avail()) gui_state(jd, _("Restart"), GUI_SML, PAUSE_RESTART, 0); gui_start(jd, _("Continue"), GUI_SML, PAUSE_CONTINUE, 0); } gui_pulse(title_id, 1.2f); gui_layout(id, 0, 0); } return id; }
static int demo_end_gui(void) { int id, jd, kd; if ((id = gui_vstack(0))) { if (demo_paused) kd = gui_label(id, _("Replay Paused"), GUI_LRG, gui_gry, gui_red); else kd = gui_label(id, _("Replay Ends"), GUI_LRG, gui_gry, gui_red); if ((jd = gui_harray(id))) { if (standalone) { gui_start(jd, _("Quit"), GUI_SML, DEMO_QUIT, 0); } else { gui_start(jd, _("Keep"), GUI_SML, DEMO_KEEP, 0); gui_state(jd, _("Delete"), GUI_SML, DEMO_DEL, 0); } if (demo_paused) gui_start(jd, _("Continue"), GUI_SML, DEMO_CONTINUE, 0); else gui_state(jd, _("Repeat"), GUI_SML, DEMO_REPLAY, 0); } gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); } return id; }
static int title_enter(void) { int id, jd, kd; /* Build the title GUI. */ if ((id = gui_vstack(0))) { gui_label(id, "Neverputt", GUI_LRG, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { gui_filler(jd); if ((kd = gui_varray(jd))) { gui_start(kd, sgettext("menu^Play"), GUI_MED, TITLE_PLAY, 1); gui_state(kd, sgettext("menu^Options"), GUI_MED, TITLE_CONF, 0); gui_state(kd, sgettext("menu^Exit"), GUI_MED, TITLE_EXIT, 0); } gui_filler(jd); } gui_layout(id, 0, 0); } course_init(); course_rand(); return id; }
static int lang_gui(void) { const int step = (first == 0 ? LANG_STEP - 1 : LANG_STEP); int id, jd; int i; if ((id = gui_vstack(0))) { if ((jd = gui_hstack(id))) { gui_label(jd, _("Language"), GUI_SML, 0, 0); gui_space(jd); gui_space(jd); gui_navig(jd, array_len(langs), first, LANG_STEP); } gui_space(id); if (step < LANG_STEP) { int default_id; default_id = gui_state(id, _("Default"), GUI_SML, LANG_DEFAULT, 0); gui_set_hilite(default_id, !*config_get_s(CONFIG_LANGUAGE)); } for (i = first; i < first + step; i++) { if (i < array_len(langs)) { struct lang_desc *desc = LANG_GET(langs, i); int lang_id; lang_id = gui_state(id, lang_name(desc), GUI_SML, LANG_SELECT, i); gui_set_hilite(lang_id, (strcmp(config_get_s(CONFIG_LANGUAGE), desc->code) == 0)); } else { gui_label(id, " ", GUI_SML, 0, 0); } } gui_layout(id, 0, 0); } return id; }
static void gui_set(int id, int i) { if (set_exists(i)) gui_state(id, set_name(i), GUI_SML, i, 0); else gui_label(id, "", GUI_SML, GUI_ALL, 0, 0); }
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 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 fill_row(int id, SDL_Rect **modes, int i, int n) { int complete; if (n == 0) return 1; if (modes[i]) { char label[20]; int btn; sprintf(label, "%d x %d", modes[i]->w, modes[i]->h); complete = fill_row(id, modes, i + 1, n - 1); btn = gui_state(id, label, GUI_SML, RESOL_SELECT, i); gui_set_hilite(btn, (config_get_d(CONFIG_WIDTH) == modes[i]->w && config_get_d(CONFIG_HEIGHT) == modes[i]->h)); } else { for (; n; gui_space(id), n--); complete = 0; } return complete; }
static int title_enter(struct state *st, struct state *prev) { int id, jd, kd; /* Build the title GUI. */ if ((id = gui_vstack(0))) { #ifdef GCWZERO jd = gui_label(id, "Neverputt", GUI_LRG, 0, 0); if (jd) { gui_set_fill(jd); gui_set_rect(jd, GUI_TOP); } int credit_label; if ((credit_label = gui_label(id, "GCW Zero port by Senquack", GUI_SML, gui_wht, gui_wht))) { gui_set_rect(credit_label, GUI_BOT); } #else gui_label(id, "Neverputt", GUI_LRG, 0, 0); #endif //GCWZERO gui_space(id); if ((jd = gui_harray(id))) { gui_filler(jd); if ((kd = gui_varray(jd))) { gui_start(kd, gt_prefix("menu^Play"), GUI_MED, TITLE_PLAY, 1); gui_state(kd, gt_prefix("menu^Options"), GUI_MED, TITLE_CONF, 0); gui_state(kd, gt_prefix("menu^Exit"), GUI_MED, TITLE_EXIT, 0); } gui_filler(jd); } gui_layout(id, 0, 0); } course_init(); course_rand(); return id; }
static void gui_level(int id, char *text, int i) { int o = level_opened(i); int e = level_exists(i); if (o) gui_state(id, text, GUI_SML, i, 0); else if (e) gui_label(id, text, GUI_SML, GUI_ALL, gui_yel, gui_red); else gui_label(id, text, GUI_SML, GUI_ALL, gui_blk, gui_blk); }
static int demo_end_enter(void) { int id, jd, kd; if ((id = gui_vstack(0))) { if (demo_paused) kd = gui_label(id, _("Replay Paused"), GUI_LRG, GUI_ALL, gui_gry, gui_red); else kd = gui_label(id, _("Replay Ends"), GUI_LRG, GUI_ALL, gui_gry, gui_red); if ((jd = gui_harray(id))) { int start_id = 0; if (standalone) { start_id = gui_start(jd, _("Quit"), GUI_SML, DEMO_QUIT, 1); } else { start_id = gui_start(jd, _("Keep"), GUI_SML, DEMO_KEEP, 1); gui_state(jd, _("Delete"), GUI_SML, DEMO_DEL, 0); } if (demo_paused) { gui_start(jd, _("Continue"), GUI_SML, DEMO_CONTINUE, 1); gui_toggle(start_id); } else gui_state(jd, _("Repeat"), GUI_SML, DEMO_REPLAY, 0); } gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); } audio_music_fade_out(demo_paused ? 0.2f : 2.0f); return id; }
static int title_enter(void) { int id, jd, kd; /* Build the title GUI. */ if ((id = gui_vstack(0))) { gui_label(id, "Neverball", GUI_LRG, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { gui_filler(jd); if ((kd = gui_varray(jd))) { gui_start(kd, "Play", GUI_MED, TITLE_PLAY, 1); gui_state(kd, "Replay", GUI_MED, TITLE_DEMO, 0); gui_state(kd, "Help", GUI_MED, TITLE_HELP, 0); gui_state(kd, "Options", GUI_MED, TITLE_CONF, 0); gui_state(kd, "Exit", GUI_MED, TITLE_EXIT, 0); } gui_filler(jd); } gui_layout(id, 0, 0); } /* Start the title screen music. */ audio_music_fade_to(0.5f, "bgm/tittle.mod"); /* Initialize the first level of the first set for display. */ game_init("map-rlk/title.sol", "map-back/jupiter.sol", "png/space.png", 0, 1); real_time = 0.0f; demo_time = 0.0f; mode = 0; return id; }
void conf_toggle(int id, const char *label, int token, int value, const char *text1, int value1, const char *text0, int value0) { int jd, kd; if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { int btn0, btn1; btn0 = gui_state(kd, text0, GUI_SML, token, value0); btn1 = gui_state(kd, text1, GUI_SML, token, value1); gui_set_hilite(btn0, (value == value0)); gui_set_hilite(btn1, (value == value1)); gui_label(jd, label, GUI_SML, 0, 0); } }
static int title_gui(void) { int id, jd, kd; /* Build the title GUI. */ if ((id = gui_vstack(0))) { if ((jd = gui_label(id, " Neverball ", GUI_LRG, 0, 0))) gui_set_fill(jd); gui_space(id); if ((jd = gui_hstack(id))) { gui_filler(jd); if ((kd = gui_varray(jd))) { if (config_cheat()) play_id = gui_start(kd, sgettext("menu^Cheat"), GUI_MED, TITLE_PLAY, 0); else play_id = gui_start(kd, sgettext("menu^Play"), GUI_MED, TITLE_PLAY, 0); gui_state(kd, sgettext("menu^Replay"), GUI_MED, TITLE_DEMO, 0); gui_state(kd, sgettext("menu^Help"), GUI_MED, TITLE_HELP, 0); gui_state(kd, sgettext("menu^Options"), GUI_MED, TITLE_CONF, 0); gui_state(kd, sgettext("menu^Exit"), GUI_MED, GUI_BACK, 0); /* Hilight the start button. */ gui_set_hilite(play_id, 1); } gui_filler(jd); } gui_layout(id, 0, 0); } return id; }
int conf_state(int id, const char *label, const char *text, int token) { int jd, kd, rd = 0; if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { rd = gui_state(kd, text, GUI_SML, token, 0); gui_label(jd, label, GUI_SML, 0, 0); } return rd; }
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 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; }
void conf_select(int id, const char *text, int token, int value, const struct conf_option *opts, int num) { int jd, kd, ld; int i; if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { for (i = 0; i < num; i++) { ld = gui_state(kd, _(opts[i].text), GUI_SML, token, opts[i].value); gui_set_hilite(ld, (opts[i].value == value)); } gui_label(jd, text, GUI_SML, 0, 0); } }
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 demo_gui(void) { int id, jd; id = gui_vstack(0); if (total) { if (video.device_w < video.device_h && total > DEMO_STEP) { if ((jd = gui_vstack(id))) { gui_navig(jd, total, first, DEMO_STEP); gui_space(jd); gui_filler(jd); gui_label(jd, _("Select Replay"), GUI_MED, 0,0); } } else if ((jd = gui_hstack(id))) { gui_label(jd, _("Select Replay"), GUI_MED, 0,0); gui_space(jd); gui_filler(jd); gui_navig(jd, total, first, DEMO_STEP); } gui_demo_thumbs(id); //gui_space(id); //gui_demo_status(id); gui_layout(id, 0, 0); gui_demo_update_thumbs(); //gui_demo_update_status(last_viewed); } else { gui_label(id, _("No Replays"), GUI_MED, 0, 0); gui_space(id); gui_state(id, _("Back"), GUI_MED, GUI_BACK, 0); gui_layout(id, 0, 0); } return id; }
void conf_slider(int id, const char *text, int token, int value, int *ids, int num) { int jd, kd, i; if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { /* A series of empty buttons forms a "slider". */ for (i = num - 1; i >= 0; i--) { ids[i] = gui_state(kd, NULL, GUI_SML, token, i); gui_set_hilite(ids[i], (i == value)); } gui_label(jd, text, GUI_SML, 0, 0); } }
static int demo_del_gui(void) { int id, jd, kd; if ((id = gui_vstack(0))) { kd = gui_label(id, _("Delete Replay?"), GUI_MED, gui_red, gui_red); if ((jd = gui_harray(id))) { gui_start(jd, _("Keep"), GUI_SML, DEMO_KEEP, 0); gui_state(jd, _("Delete"), GUI_SML, DEMO_DEL, 0); } gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); } return id; }
static int fall_out_enter(void) { int id, jd, kd; /* Reset hack. */ resume = 0; if ((id = gui_vstack(0))) { kd = gui_label(id, _("Fall-out!"), GUI_LRG, GUI_ALL, gui_gry, gui_red); gui_space(id); if ((jd = gui_harray(id))) { if (progress_dead()) gui_start(jd, _("Exit"), GUI_SML, FALL_OUT_OVER, 0); if (progress_next_avail()) gui_start(jd, _("Next Level"), GUI_SML, FALL_OUT_NEXT, 0); if (progress_same_avail()) gui_start(jd, _("Retry Level"), GUI_SML, FALL_OUT_SAME, 0); if (demo_saved()) gui_state(jd, _("Save Replay"), GUI_SML, FALL_OUT_SAVE, 0); } gui_space(id); gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); } audio_music_fade_out(2.0f); /* audio_play(AUD_FALL, 1.0f); */ video_clr_grab(); return id; }
static int demo_del_enter(void) { int id, jd, kd; if ((id = gui_vstack(0))) { kd = gui_label(id, _("Delete Replay?"), GUI_MED, GUI_ALL, gui_red, gui_red); if ((jd = gui_harray(id))) { gui_start(jd, _("No"), GUI_SML, DEMO_KEEP, 1); gui_state(jd, _("Yes"), GUI_SML, DEMO_DEL, 0); } gui_pulse(kd, 1.2f); gui_layout(id, 0, 0); } audio_music_fade_out(2.0f); return id; }
static int demo_del_gui(void) { int id, jd, kd; if ((id = gui_vstack(0))) { kd = gui_label(id, _("Delete?"), GUI_LRG, gui_gry, gui_red); gui_space(id); if ((jd = video.device_w < video.device_h ? gui_vstack(id) : gui_harray(id))) { gui_start(jd, _("Keep"), GUI_MED, DEMO_KEEP, 0); gui_state(jd, _("Delete"), GUI_MED, DEMO_DEL, 0); } gui_pulse(kd, 1.2f); 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 pause_enter(void) { int id, jd, td; audio_music_fade_out(0.2f); if ((id = gui_vstack(0))) { td = gui_label(id, _("Paused"), GUI_LRG, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { gui_state(jd, _("Quit"), GUI_SML, PAUSE_QUIT, 0); gui_start(jd, _("Continue"), GUI_SML, PAUSE_CONTINUE, 1); } gui_pulse(td, 1.2f); gui_layout(id, 0, 0); } hud_init(); return id; }
static int conf_enter(struct state *st, struct state *prev) { int id, jd, kd; int btn0, btn1; int i; back_init("back/gui.png"); /* Initialize the configuration GUI. */ if ((id = gui_vstack(0))) { int f = config_get_d(CONFIG_FULLSCREEN); int t = config_get_d(CONFIG_TEXTURES); int h = config_get_d(CONFIG_SHADOW); int s = config_get_d(CONFIG_SOUND_VOLUME); int m = config_get_d(CONFIG_MUSIC_VOLUME); char resolution[20]; sprintf(resolution, "%d x %d", config_get_d(CONFIG_WIDTH), config_get_d(CONFIG_HEIGHT)); if ((jd = gui_harray(id))) { gui_label(jd, _("Options"), GUI_SML, GUI_ALL, 0, 0); gui_space(jd); gui_start(jd, _("Back"), GUI_SML, CONF_BACK, 0); } gui_space(id); if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { btn0 = gui_state(kd, _("No"), GUI_SML, CONF_WIN, 0); btn1 = gui_state(kd, _("Yes"), GUI_SML, CONF_FULL, 0); if (f) gui_set_hilite(btn1, 1); else gui_set_hilite(btn0, 1); gui_label(jd, _("Fullscreen"), GUI_SML, GUI_ALL, 0, 0); } if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { gui_state(kd, resolution, GUI_SML, CONF_RESOL, 0); gui_label(jd, _("Resolution"), GUI_SML, GUI_ALL, 0, 0); } gui_space(id); if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { btn0 = gui_state(kd, _("Low"), GUI_SML, CONF_TEXLO, 0); btn1 = gui_state(kd, _("High"), GUI_SML, CONF_TEXHI, 0); gui_set_hilite(btn0, (t == 2)); gui_set_hilite(btn1, (t == 1)); gui_label(jd, _("Textures"), GUI_SML, GUI_ALL, 0, 0); } if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { btn0 = gui_state(kd, _("Off"), GUI_SML, CONF_SHDOF, (h == 0)); btn1 = gui_state(kd, _("On"), GUI_SML, CONF_SHDON, (h == 1)); if (h) gui_set_hilite(btn1, 1); else gui_set_hilite(btn0, 1); gui_label(jd, _("Shadow"), GUI_SML, GUI_ALL, 0, 0); } gui_space(id); if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { /* A series of empty buttons forms the sound volume control. */ for (i = 10; i >= 0; i--) { sound_id[i] = gui_state(kd, NULL, GUI_SML, 100 + i, 0); gui_set_hilite(sound_id[i], (s == i)); } gui_label(jd, _("Sound Volume"), GUI_SML, GUI_ALL, 0, 0); } if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { /* A series of empty buttons forms the music volume control. */ for (i = 10; i >= 0; i--) { music_id[i] = gui_state(kd, NULL, GUI_SML, 200 + i, 0); gui_set_hilite(music_id[i], (m == i)); } gui_label(jd, _("Music Volume"), GUI_SML, GUI_ALL, 0, 0); } gui_layout(id, 0, 0); } audio_music_fade_to(0.5f, "bgm/inter.ogg"); return id; }
static int course_enter(void) { int w = config_get_d(CONFIG_WIDTH); int h = config_get_d(CONFIG_HEIGHT); int id, jd, kd, ld, md, i = 0, j, n = course_count(); int m = (int)(sqrt(n/2.0)*2); if ((id = gui_vstack(0))) { gui_label(id, _("Select Course"), GUI_MED, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_hstack(id))) { shot_id = gui_image(jd, course_shot(0), w / 3, h / 3); gui_filler(jd); if ((kd = gui_varray(jd))) { for(i = 0; i < n; i += m) { if ((ld = gui_harray(kd))) { for (j = (m - 1); j >= 0; j--) { if (i + j < n) { md = gui_image(ld, course_shot(i + j), w / 3 / m, h / 3 / m); gui_active(md, i + j, 0); if (i + j == 0) gui_focus(md); } else gui_space(ld); } } } } } gui_space(id); desc_id = gui_multi(id, _(course_desc(0)), GUI_SML, GUI_ALL, gui_yel, gui_wht); gui_space(id); if ((jd = gui_hstack(id))) { gui_filler(jd); gui_state(jd, _("Back"), GUI_SML, COURSE_BACK, 0); } gui_layout(id, 0, 0); } audio_music_fade_to(0.5f, "bgm/inter.ogg"); return id; }