static int demo_compat_gui(void) { int id; if ((id = gui_vstack(0))) { gui_label(id, _("Warning!"), GUI_MED, 0, 0); gui_space(id); gui_multi(id, _("The current replay was recorded with a\\" "different (or unknown) version of this level.\\" "Be prepared to encounter visual errors.\\"), GUI_SML, gui_wht, gui_wht); 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, "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 hud_init(void) { static const GLubyte *color[5] = { gui_wht, gui_red, gui_grn, gui_blu, gui_yel }; int i = curr_player(); #ifdef __MOBILE__ if ((Shud_id = gui_vstack(0))) { gui_label(Shud_id, _(" S "), GUI_SML, gui_wht, gui_wht); gui_label(Shud_id, _(" W "), GUI_SML, gui_wht, gui_wht); gui_label(Shud_id, _(" I "), GUI_SML, gui_wht, gui_wht); gui_label(Shud_id, _(" N "), GUI_SML, gui_wht, gui_wht); gui_label(Shud_id, _(" G "), GUI_SML, gui_wht, gui_wht); gui_set_rect(Shud_id, GUI_RGT); gui_layout(Shud_id, -1, 0); } #endif if ((Lhud_id = gui_hstack(0))) { gui_label(Lhud_id, curr_scr(), GUI_MED, color[i], gui_wht); gui_label(Lhud_id, _("Shot"), GUI_SML, gui_wht, gui_wht); gui_set_rect(Lhud_id, GUI_NE); gui_layout(Lhud_id, -1, -1); } if ((Rhud_id = gui_hstack(0))) { gui_label(Rhud_id, curr_par(), GUI_MED, color[i], gui_wht); gui_label(Rhud_id, _("Par"), GUI_SML, gui_wht, gui_wht); gui_set_rect(Rhud_id, GUI_NW); gui_layout(Rhud_id, +1, -1); } if ((fps_id = gui_count(0, 1000, GUI_SML))) { gui_set_rect(fps_id, GUI_SE); gui_layout(fps_id, -1, +1); } }
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 next_enter(void) { int id; char str[MAXSTR]; sprintf(str, _("Hole %02d"), curr_hole()); if ((id = gui_vstack(0))) { gui_label(id, str, GUI_MED, GUI_ALL, 0, 0); gui_space(id); gui_label(id, _("Player"), GUI_SML, GUI_TOP, 0, 0); switch (curr_player()) { case 1: gui_label(id, "1", GUI_LRG, GUI_BOT, gui_red, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER1, 1.f); break; case 2: gui_label(id, "2", GUI_LRG, GUI_BOT, gui_grn, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER2, 1.f); break; case 3: gui_label(id, "3", GUI_LRG, GUI_BOT, gui_blu, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER3, 1.f); break; case 4: gui_label(id, "4", GUI_LRG, GUI_BOT, gui_yel, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER4, 1.f); break; } gui_layout(id, 0, 0); } hud_init(); game_set_fly(1.f); if (paused) paused = 0; return id; }
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; }
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_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_enter(void) { int id, jd; if (items) demo_dir_free(items); items = demo_dir_scan(); total = array_len(items); id = gui_vstack(0); if (total) { if ((jd = gui_hstack(id))) { gui_label(jd, _("Select Replay"), GUI_SML, GUI_ALL, 0,0); gui_filler(jd); gui_navig(jd, first > 0, first + DEMO_STEP < total); } gui_demo_thumbs(id); gui_filler(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, GUI_ALL, 0, 0); gui_layout(id, 0, 0); } audio_music_fade_to(0.5f, "bgm/inter.ogg"); 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_play_enter(void) { int id; if (demo_paused) { demo_paused = 0; audio_music_fade_in(0.5f); return 0; } /* * Post-1.5.1 replays include view data in the first update, these * two lines are currently left in for compatibility with older * replays. */ game_set_fly(0.f, game_client_file()); game_client_step(NULL); if (check_compat && !game_compat_map) { goto_state(&st_demo_compat); return 0; } if ((id = gui_vstack(0))) { gui_label(id, _("Replay"), GUI_LRG, GUI_ALL, gui_blu, gui_grn); gui_layout(id, 0, 0); gui_pulse(id, 1.2f); } show_hud = 1; hud_update(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 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 demo_gui(void) { int id, jd; id = gui_vstack(0); if (total) { if ((jd = gui_hstack(id))) { gui_label(jd, _("Select Replay"), GUI_SML, 0,0); 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_SML, GUI_BACK, 0); gui_layout(id, 0, 0); } return id; }
static int done_gui(void) { const char *s1 = _("New Set Record"); const char *s2 = _("Set Complete"); int id; int high = progress_set_high(); if ((id = gui_vstack(0))) { int gid; if (high) gid = gui_label(id, s1, GUI_MED, gui_grn, gui_grn); else gid = gui_label(id, s2, GUI_MED, gui_blu, gui_grn); gui_space(id); gui_score_board(id, GUI_SCORE_COIN | GUI_SCORE_TIME, 1, high); gui_space(id); gui_start(id, _("Select Level"), GUI_SML, GUI_BACK, 0); if (!resume) gui_pulse(gid, 1.2f); gui_layout(id, 0, 0); } set_score_board(set_score(curr_set(), SCORE_COIN), progress_score_rank(), set_score(curr_set(), SCORE_TIME), progress_times_rank(), NULL, -1); 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 i; back_init("back/gui.png"); /* Initialize the configuration GUI. */ if ((id = gui_vstack(0))) { if ((jd = gui_harray(id))) { gui_label(jd, _("Options"), GUI_SML, 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))) { gui_state(kd, _("Configure"), GUI_SML, CONF_VIDEO, 0); gui_label(jd, _("Graphics"), GUI_SML, 0, 0); } gui_space(id); if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { /* A series of empty buttons forms the sound volume control. */ int s = config_get_d(CONFIG_SOUND_VOLUME); 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, 0, 0); } if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { /* A series of empty buttons forms the music volume control. */ int m = config_get_d(CONFIG_MUSIC_VOLUME); 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, 0, 0); } gui_space(id); if ((jd = gui_harray(id)) && (kd = gui_harray(jd))) { gui_state(kd, _("Select"), GUI_SML, CONF_LANG, 0); gui_label(jd, _("Language"), GUI_SML, 0, 0); } gui_layout(id, 0, 0); } audio_music_fade_to(0.5f, "bgm/inter.ogg"); return id; }
static int goal_gui(void) { const char *s1 = _("New Record"); const char *s2 = _("GOAL"); int id, jd, kd, ld, md; int high = progress_lvl_high(); if ((id = gui_vstack(0))) { int gid = 0; if (curr_mode() == MODE_CHALLENGE) { int coins, score, balls; int i; /* Reverse-engineer initial score and balls. */ if (resume) { coins = 0; score = curr_score(); balls = curr_balls(); } else { coins = curr_coins(); score = curr_score() - coins; balls = curr_balls(); for (i = curr_score(); i > score; i--) if (progress_reward_ball(i)) balls--; } /*if ((jd = gui_hstack(id))) { gui_filler(jd);*/ if ((kd = gui_vstack(id))) { if ((ld = video.device_w < video.device_h ? gui_vstack(kd) : gui_hstack(kd))) { if ((md = gui_harray(ld))) { balls_id = gui_count(md, 100, GUI_MED); gui_label(md, _("Balls"), GUI_MED, gui_wht, gui_wht); } if ((md = gui_harray(ld))) { score_id = gui_count(md, 1000, GUI_MED); gui_label(md, _("Score"), GUI_MED, gui_wht, gui_wht); } if ((md = gui_harray(ld))) { coins_id = gui_count(md, 100, GUI_MED); gui_label(md, _("Coins"), GUI_MED, gui_wht, gui_wht); } gui_set_count(balls_id, balls); gui_set_count(score_id, score); gui_set_count(coins_id, coins); } if ((ld = gui_harray(kd))) { const struct level *l; gui_label(ld, "", GUI_SML, 0, 0); for (i = MAXLVL - 1; i >= 0; i--) if ((l = get_level(i)) && level_bonus(l)) { const GLubyte *c = (level_opened(l) ? gui_grn : gui_gry); gui_label(ld, level_name(l), GUI_SML, c, c); } gui_label(ld, "", GUI_SML, 0, 0); } gui_set_rect(kd, GUI_ALL); } /*gui_filler(jd); }*/ gui_space(id); } else { gid = gui_label(id, high ? s1 : s2, GUI_LRG, gui_blu, gui_grn); gui_space(id); balls_id = score_id = coins_id = 0; } gui_score_board(id, (GUI_SCORE_COIN | GUI_SCORE_TIME | GUI_SCORE_GOAL | GUI_SCORE_SAVE), 1, high); gui_space(id); if ((jd = gui_harray(id))) { if (progress_done()) gui_start(jd, _("Finish"), GUI_MED, GOAL_DONE, 0); else if (progress_last()) gui_start(jd, _("Finish"), GUI_MED, GOAL_LAST, 0); if (progress_next_avail()) gui_start(jd, _("Next"), GUI_MED, GOAL_NEXT, 0); if (progress_same_avail()) gui_start(jd, _("Retry"), GUI_MED, GOAL_SAME, 0); if (!progress_done() && !progress_last()) gui_start(jd, _("Quit"), GUI_MED, GOAL_DONE, 0); //if (demo_saved()) // gui_state(jd, _("Save Replay"), GUI_SML, GOAL_SAVE, 0); } if (!resume && gid) gui_pulse(gid, 1.2f); gui_layout(id, 0, 0); } set_score_board(level_score(curr_level(), SCORE_COIN), progress_coin_rank(), level_score(curr_level(), SCORE_TIME), progress_time_rank(), level_score(curr_level(), SCORE_GOAL), progress_goal_rank()); 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 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_enter(void) { int w = config_get_d(CONFIG_WIDTH); int h = config_get_d(CONFIG_HEIGHT); int id, jd, kd, ld; if ((id = gui_vstack(0))) { if ((jd = gui_harray(id))) { gui_label(jd, "Level", GUI_SML, GUI_ALL, gui_yel, gui_red); gui_filler(jd); gui_filler(jd); gui_start(jd, "Back", GUI_SML, START_BACK, 0); } if ((jd = gui_harray(id))) { shot_id = gui_image(jd, "shot-rlk/easy.png", 7 * w / 16, 7 * h / 16); if ((kd = gui_varray(jd))) { if ((ld = gui_harray(kd))) { gui_level(ld, "05", 5); gui_level(ld, "04", 4); gui_level(ld, "03", 3); gui_level(ld, "02", 2); gui_level(ld, "01", 1); } if ((ld = gui_harray(kd))) { gui_level(ld, "10", 10); gui_level(ld, "09", 9); gui_level(ld, "08", 8); gui_level(ld, "07", 7); gui_level(ld, "06", 6); } if ((ld = gui_harray(kd))) { gui_level(ld, "15", 15); gui_level(ld, "14", 14); gui_level(ld, "13", 13); gui_level(ld, "12", 12); gui_level(ld, "11", 11); } if ((ld = gui_harray(kd))) { gui_level(ld, "20", 20); gui_level(ld, "19", 19); gui_level(ld, "18", 18); gui_level(ld, "17", 17); gui_level(ld, "16", 16); } if ((ld = gui_harray(kd))) { gui_level(ld, "25", 25); gui_level(ld, "24", 24); gui_level(ld, "23", 23); gui_level(ld, "22", 22); gui_level(ld, "21", 21); } } } gui_space(id); if ((jd = gui_harray(id))) { gui_most_coins(jd, 3, 4); gui_best_times(jd, 3, 4); } gui_layout(id, 0, 0); set_most_coins(0, 3); set_best_times(0, 3); } start_point(id,80,396,0,0); return id; }
static int score_card(const char *title, const float *c0, const float *c1) { int id, jd, kd, ld; int p1 = (curr_party() >= 1) ? 1 : 0, l1 = (curr_party() == 1) ? 1 : 0; int p2 = (curr_party() >= 2) ? 1 : 0, l2 = (curr_party() == 2) ? 1 : 0; int p3 = (curr_party() >= 3) ? 1 : 0, l3 = (curr_party() == 3) ? 1 : 0; int p4 = (curr_party() >= 4) ? 1 : 0, l4 = (curr_party() == 4) ? 1 : 0; int i; int n = curr_count() - 1; int m = curr_count() / 2; if ((id = gui_vstack(0))) { gui_label(id, title, GUI_MED, GUI_ALL, c0, c1); gui_space(id); if ((jd = gui_hstack(id))) { if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("O"), 0, GUI_NE, 0, 0); if (p1) gui_label(kd, hole_out(0), 0, 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_out(1), 0, GUI_SE * l1, gui_red, gui_wht); if (p2) gui_label(kd, hole_out(2), 0, GUI_SE * l2, gui_grn, gui_wht); if (p3) gui_label(kd, hole_out(3), 0, GUI_SE * l3, gui_blu, gui_wht); if (p4) gui_label(kd, hole_out(4), 0, GUI_SE * l4, gui_yel, gui_wht); } if ((kd = gui_harray(jd))) for (i = m; i > 0; i--) if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, number(i), 0, (i == 1) ? GUI_NW : 0, 0, 0); if (p1) gui_label(ld, hole_score(i, 0), 0, 0, gui_wht, gui_wht); if (p1) gui_label(ld, hole_score(i, 1), 0, 0, gui_red, gui_wht); if (p2) gui_label(ld, hole_score(i, 2), 0, 0, gui_grn, gui_wht); if (p3) gui_label(ld, hole_score(i, 3), 0, 0, gui_blu, gui_wht); if (p4) gui_label(ld, hole_score(i, 4), 0, 0, gui_yel, gui_wht); } if ((kd = gui_varray(jd))) { gui_filler(kd); if (p1) gui_label(kd, _("Par"), 0, GUI_NW, gui_wht, gui_wht); if (p1) gui_label(kd, _("P1"), 0, GUI_SW * l1, gui_red, gui_wht); if (p2) gui_label(kd, _("P2"), 0, GUI_SW * l2, gui_grn, gui_wht); if (p3) gui_label(kd, _("P3"), 0, GUI_SW * l3, gui_blu, gui_wht); if (p4) gui_label(kd, _("P4"), 0, GUI_SW * l4, gui_yel, gui_wht); } } gui_space(id); if ((jd = gui_hstack(id))) { if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("Tot"), 0, GUI_TOP, 0, 0); if (p1) gui_label(kd, hole_tot(0), 0, 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_tot(1), 0, GUI_BOT * l1, gui_red, gui_wht); if (p2) gui_label(kd, hole_tot(2), 0, GUI_BOT * l2, gui_grn, gui_wht); if (p3) gui_label(kd, hole_tot(3), 0, GUI_BOT * l3, gui_blu, gui_wht); if (p4) gui_label(kd, hole_tot(4), 0, GUI_BOT * l4, gui_yel, gui_wht); } if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("I"), 0, GUI_NE, 0, 0); if (p1) gui_label(kd, hole_in(0), 0, 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_in(1), 0, GUI_SE * l1, gui_red, gui_wht); if (p2) gui_label(kd, hole_in(2), 0, GUI_SE * l2, gui_grn, gui_wht); if (p3) gui_label(kd, hole_in(3), 0, GUI_SE * l3, gui_blu, gui_wht); if (p4) gui_label(kd, hole_in(4), 0, GUI_SE * l4, gui_yel, gui_wht); } if ((kd = gui_harray(jd))) for (i = n; i > m; i--) if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, number(i), 0, (i == m+1) ? GUI_NW : 0, 0, 0); if (p1) gui_label(ld, hole_score(i, 0), 0, 0, gui_wht, gui_wht); if (p1) gui_label(ld, hole_score(i, 1), 0, 0, gui_red, gui_wht); if (p2) gui_label(ld, hole_score(i, 2), 0, 0, gui_grn, gui_wht); if (p3) gui_label(ld, hole_score(i, 3), 0, 0, gui_blu, gui_wht); if (p4) gui_label(ld, hole_score(i, 4), 0, 0, gui_yel, gui_wht); } if ((kd = gui_varray(jd))) { gui_filler(kd); if (p1) gui_label(kd, _("Par"), 0, GUI_NW, gui_wht, gui_wht); if (p1) gui_label(kd, _("P1"), 0, GUI_SW * l1, gui_red, gui_wht); if (p2) gui_label(kd, _("P2"), 0, GUI_SW * l2, gui_grn, gui_wht); if (p3) gui_label(kd, _("P3"), 0, GUI_SW * l3, gui_blu, gui_wht); if (p4) gui_label(kd, _("P4"), 0, GUI_SW * l4, gui_yel, gui_wht); } } gui_layout(id, 0, 0); } return id; }
void gui_score_board(int pd, unsigned int types, int e, int h) { int id, jd;//, kd; assert((types & GUI_SCORE_COIN) || (types & GUI_SCORE_TIME) || (types & GUI_SCORE_GOAL) ); /* Make sure current score type matches the spec. */ while (!(types & score_type)) score_type = GUI_SCORE_NEXT(score_type); if ((id = video.device_w < video.device_h ? gui_vstack(pd) : gui_hstack(pd))) { gui_filler(id); if (video.device_w < video.device_h) { gui_scores(id, e); gui_space(id); gui_filler(id); } if ((jd = gui_vstack(id))) { gui_filler(jd); if (types & GUI_SCORE_COIN) { coin_btn_id = gui_state(jd, _("Most Coins"), GUI_MED, GUI_SCORE, GUI_SCORE_COIN); gui_set_hilite(coin_btn_id, score_type == GUI_SCORE_COIN); } if (types & GUI_SCORE_TIME) { time_btn_id = gui_state(jd, _("Best Times"), GUI_MED, GUI_SCORE, GUI_SCORE_TIME); gui_set_hilite(time_btn_id, score_type == GUI_SCORE_TIME); } if (types & GUI_SCORE_GOAL) { goal_btn_id = gui_state(jd, _("Fast Unlock"), GUI_MED, GUI_SCORE, GUI_SCORE_GOAL); gui_set_hilite(goal_btn_id, score_type == GUI_SCORE_GOAL); } if (h || (types & GUI_SCORE_SAVE)) gui_space(jd); if (h) { gui_state(jd, _("Change Name"), GUI_MED, GUI_NAME, 0); } if ((types & GUI_SCORE_SAVE)) { gui_state(jd, _("Save Replay"), GUI_MED, GUI_SAVE, 0); } gui_filler(jd); } if (video.device_w >= video.device_h) { gui_space(id); gui_filler(id); gui_scores(id, e); } gui_filler(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; }
void gui_keyboard(int id) { int jd, kd, ld; lock = 1; if ((jd = gui_hstack(id))) { gui_filler(jd); if ((kd = gui_vstack(jd))) { if ((ld = gui_hstack(kd))) { gui_filler(ld); keyd['9'] = gui_state(ld, "9", GUI_MED, GUI_CHAR, '9'); keyd['8'] = gui_state(ld, "8", GUI_MED, GUI_CHAR, '8'); keyd['7'] = gui_state(ld, "7", GUI_MED, GUI_CHAR, '7'); keyd['6'] = gui_state(ld, "6", GUI_MED, GUI_CHAR, '6'); keyd['5'] = gui_state(ld, "5", GUI_MED, GUI_CHAR, '5'); keyd['4'] = gui_state(ld, "4", GUI_MED, GUI_CHAR, '4'); keyd['3'] = gui_state(ld, "3", GUI_MED, GUI_CHAR, '3'); keyd['2'] = gui_state(ld, "2", GUI_MED, GUI_CHAR, '2'); keyd['1'] = gui_state(ld, "1", GUI_MED, GUI_CHAR, '1'); keyd['0'] = gui_state(ld, "0", GUI_MED, GUI_CHAR, '0'); gui_filler(ld); } if ((ld = gui_hstack(kd))) { gui_filler(ld); keyd['J'] = gui_state(ld, "J", GUI_MED, GUI_CHAR, 'J'); keyd['I'] = gui_state(ld, "I", GUI_MED, GUI_CHAR, 'I'); keyd['H'] = gui_state(ld, "H", GUI_MED, GUI_CHAR, 'H'); keyd['G'] = gui_state(ld, "G", GUI_MED, GUI_CHAR, 'G'); keyd['F'] = gui_state(ld, "F", GUI_MED, GUI_CHAR, 'F'); keyd['E'] = gui_state(ld, "E", GUI_MED, GUI_CHAR, 'E'); keyd['D'] = gui_state(ld, "D", GUI_MED, GUI_CHAR, 'D'); keyd['C'] = gui_state(ld, "C", GUI_MED, GUI_CHAR, 'C'); keyd['B'] = gui_state(ld, "B", GUI_MED, GUI_CHAR, 'B'); keyd['A'] = gui_state(ld, "A", GUI_MED, GUI_CHAR, 'A'); gui_filler(ld); } if ((ld = gui_hstack(kd))) { gui_filler(ld); keyd['T'] = gui_state(ld, "T", GUI_MED, GUI_CHAR, 'T'); keyd['S'] = gui_state(ld, "S", GUI_MED, GUI_CHAR, 'S'); keyd['R'] = gui_state(ld, "R", GUI_MED, GUI_CHAR, 'R'); keyd['Q'] = gui_state(ld, "Q", GUI_MED, GUI_CHAR, 'Q'); keyd['P'] = gui_state(ld, "P", GUI_MED, GUI_CHAR, 'P'); keyd['O'] = gui_state(ld, "O", GUI_MED, GUI_CHAR, 'O'); keyd['N'] = gui_state(ld, "N", GUI_MED, GUI_CHAR, 'N'); keyd['M'] = gui_state(ld, "M", GUI_MED, GUI_CHAR, 'M'); keyd['L'] = gui_state(ld, "L", GUI_MED, GUI_CHAR, 'L'); keyd['K'] = gui_state(ld, "K", GUI_MED, GUI_CHAR, 'K'); gui_filler(ld); } if ((ld = gui_hstack(kd))) { gui_filler(ld); gui_state(ld, "<", GUI_MED, GUI_BS, 0); keyd['Z'] = gui_state(ld, "Z", GUI_MED, GUI_CHAR, 'Z'); keyd['Y'] = gui_state(ld, "Y", GUI_MED, GUI_CHAR, 'Y'); keyd['X'] = gui_state(ld, "X", GUI_MED, GUI_CHAR, 'X'); keyd['W'] = gui_state(ld, "W", GUI_MED, GUI_CHAR, 'W'); keyd['V'] = gui_state(ld, "V", GUI_MED, GUI_CHAR, 'V'); keyd['U'] = gui_state(ld, "U", GUI_MED, GUI_CHAR, 'U'); gui_state(ld, _("caps"), GUI_MED, GUI_CL, 0); gui_filler(ld); } } gui_filler(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 score_card(const char *title, const GLubyte *c0, const GLubyte *c1) { int id, jd, kd, ld; int p1 = (curr_party() >= 1) ? 1 : 0; int p2 = (curr_party() >= 2) ? 1 : 0; int p3 = (curr_party() >= 3) ? 1 : 0; int p4 = (curr_party() >= 4) ? 1 : 0; int i; int n = curr_count() - 1; int m = curr_count() / 2; if ((id = gui_vstack(0))) { gui_label(id, title, GUI_MED, c0, c1); gui_space(id); if ((jd = gui_hstack(id))) { if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("O"), 0, 0, 0); if (p1) gui_label(kd, hole_out(0), 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_out(1), 0, gui_red, gui_wht); if (p2) gui_label(kd, hole_out(2), 0, gui_grn, gui_wht); if (p3) gui_label(kd, hole_out(3), 0, gui_blu, gui_wht); if (p4) gui_label(kd, hole_out(4), 0, gui_yel, gui_wht); gui_set_rect(kd, GUI_RGT); } if ((kd = gui_harray(jd))) { for (i = m; i > 0; i--) if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, number(i), 0, 0, 0); if (p1) gui_label(ld, hole_score(i, 0), 0, gui_wht, gui_wht); if (p1) gui_label(ld, hole_score(i, 1), 0, gui_red, gui_wht); if (p2) gui_label(ld, hole_score(i, 2), 0, gui_grn, gui_wht); if (p3) gui_label(ld, hole_score(i, 3), 0, gui_blu, gui_wht); if (p4) gui_label(ld, hole_score(i, 4), 0, gui_yel, gui_wht); } gui_set_rect(kd, GUI_LFT); } if ((kd = gui_vstack(jd))) { gui_space(kd); if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, _("Par"), 0, gui_wht, gui_wht); if (p1) gui_label(ld, _("P1"), 0, gui_red, gui_wht); if (p2) gui_label(ld, _("P2"), 0, gui_grn, gui_wht); if (p3) gui_label(ld, _("P3"), 0, gui_blu, gui_wht); if (p4) gui_label(ld, _("P4"), 0, gui_yel, gui_wht); gui_set_rect(ld, GUI_ALL); } } } gui_space(id); if ((jd = gui_hstack(id))) { if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("Tot"), 0, 0, 0); if (p1) gui_label(kd, hole_tot(0), 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_tot(1), 0, gui_red, gui_wht); if (p2) gui_label(kd, hole_tot(2), 0, gui_grn, gui_wht); if (p3) gui_label(kd, hole_tot(3), 0, gui_blu, gui_wht); if (p4) gui_label(kd, hole_tot(4), 0, gui_yel, gui_wht); gui_set_rect(kd, GUI_ALL); } if ((kd = gui_varray(jd))) { if (p1) gui_label(kd, _("I"), 0, 0, 0); if (p1) gui_label(kd, hole_in(0), 0, gui_wht, gui_wht); if (p1) gui_label(kd, hole_in(1), 0, gui_red, gui_wht); if (p2) gui_label(kd, hole_in(2), 0, gui_grn, gui_wht); if (p3) gui_label(kd, hole_in(3), 0, gui_blu, gui_wht); if (p4) gui_label(kd, hole_in(4), 0, gui_yel, gui_wht); gui_set_rect(kd, GUI_RGT); } if ((kd = gui_harray(jd))) { for (i = n; i > m; i--) if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, number(i), 0, 0, 0); if (p1) gui_label(ld, hole_score(i, 0), 0, gui_wht, gui_wht); if (p1) gui_label(ld, hole_score(i, 1), 0, gui_red, gui_wht); if (p2) gui_label(ld, hole_score(i, 2), 0, gui_grn, gui_wht); if (p3) gui_label(ld, hole_score(i, 3), 0, gui_blu, gui_wht); if (p4) gui_label(ld, hole_score(i, 4), 0, gui_yel, gui_wht); } gui_set_rect(kd, GUI_LFT); } if ((kd = gui_vstack(jd))) { gui_space(kd); if ((ld = gui_varray(kd))) { if (p1) gui_label(ld, _("Par"), 0, gui_wht, gui_wht); if (p1) gui_label(ld, _("P1"), 0, gui_red, gui_wht); if (p2) gui_label(ld, _("P2"), 0, gui_grn, gui_wht); if (p3) gui_label(ld, _("P3"), 0, gui_blu, gui_wht); if (p4) gui_label(ld, _("P4"), 0, gui_yel, gui_wht); gui_set_rect(ld, GUI_ALL); } } } gui_layout(id, 0, 0); } return id; }
static int course_enter(struct state *st, struct state *prev) { int w = config_get_d(CONFIG_WIDTH); int h = config_get_d(CONFIG_HEIGHT); int id, jd, kd, ld, md; int i, j, r, c, n; n = course_count(); r = comp_rows(n); c = comp_cols(n); if ((id = gui_vstack(0))) { gui_label(id, _("Select Course"), GUI_MED, 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 < r; i++) { if ((ld = gui_harray(kd))) { for (j = c - 1; j >= 0; j--) { int k = i * c + j; if (k < n) { md = gui_image(ld, course_shot(k), w / 3 / c, h / 3 / r); gui_set_state(md, k, 0); if (k == 0) gui_focus(md); } else gui_space(ld); } } } } } gui_space(id); desc_id = gui_multi(id, _(course_desc(0)), GUI_SML, 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; }
static int help_enter(void) { const char *s0 = "Move the mouse or joystick to tilt the floor\\" "causing the ball to roll. Roll over coins to\\" "collect them. Collect coins to unlock the goal\\" "and finish the level. Earn an extra ball for\\" "each 100 coins collected.\\"; const char *s4 = "Left and right mouse buttons rotate the view."; const char *s5 = "Hold Shift for faster view rotation."; const char *s6 = "Pause / Release Pointer"; const char *s7 = "Exit / Cancel Menu"; const char *s8 = "Chase View"; const char *s9 = "Lazy View"; const char *sA = "Manual View"; const char *sB = "Comments? Problems? [email protected]"; const char *k0 = "Spacebar"; const char *k1 = "Escape"; const char *k2 = SDL_GetKeyName((SDLKey)config_get_d(CONFIG_KEY_CAMERA_1)); const char *k3 = SDL_GetKeyName((SDLKey)config_get_d(CONFIG_KEY_CAMERA_2)); const char *k4 = SDL_GetKeyName((SDLKey)config_get_d(CONFIG_KEY_CAMERA_3)); int id, jd; if ((id = gui_vstack(0))) { gui_multi(id, s0, GUI_SML, GUI_ALL, gui_wht, gui_wht); gui_space(id); if ((jd = gui_harray(id))) { gui_label(jd, s6, GUI_SML, GUI_NE, gui_wht, gui_wht); gui_label(jd, k0, GUI_SML, GUI_NW, gui_yel, gui_yel); } if ((jd = gui_harray(id))) { gui_label(jd, s7, GUI_SML, 0, gui_wht, gui_wht); gui_label(jd, k1, GUI_SML, 0, gui_yel, gui_yel); } if ((jd = gui_harray(id))) { gui_label(jd, s8, GUI_SML, 0, gui_wht, gui_wht); gui_label(jd, k2, GUI_SML, 0, gui_yel, gui_yel); } if ((jd = gui_harray(id))) { gui_label(jd, s9, GUI_SML, 0, gui_wht, gui_wht); gui_label(jd, k3, GUI_SML, 0, gui_yel, gui_yel); } if ((jd = gui_harray(id))) { gui_label(jd, sA, GUI_SML, GUI_SE, gui_wht, gui_wht); gui_label(jd, k4, GUI_SML, GUI_SW, gui_yel, gui_yel); } gui_space(id); gui_label(id, s4, GUI_SML, GUI_TOP, gui_wht, gui_wht); gui_label(id, s5, GUI_SML, GUI_BOT, gui_wht, gui_wht); gui_space(id); gui_label(id, sB, GUI_SML, GUI_ALL, gui_wht, gui_wht); gui_layout(id, 0, 0); } return id; }