static void stroke_leave(struct state *st, struct state *next, int id) { hud_free(); video_clr_grab(); config_set_d(CONFIG_CAMERA, 0); stroke_rotate = 0.0f; stroke_mag = 0.0f; }
static int over_enter(struct state *st, struct state *prev) { audio_music_fade_out(2.0f); audio_play(AUD_OVER, 1.f); video_clr_grab(); return over_gui(); }
static int goal_enter(struct state *st, struct state *prev) { if (prev == &st_name) progress_rename(0); audio_music_fade_out(2.0f); video_clr_grab(); resume = (prev == &st_goal || prev == &st_name || prev == &st_save); return goal_gui(); }
static int pause_enter(struct state *st, struct state *prev) { st_continue = prev; video_clr_grab(); audio_pause(1); hud_update(0); return pause_gui(); }
static int over_enter(void) { int id; if (curr_mode() != MODE_CHALLENGE) return 0; if ((id = gui_label(0, _("GAME OVER"), GUI_LRG, GUI_ALL, gui_gry, gui_red))) { gui_layout(id, 0, 0); gui_pulse(id, 1.2f); } audio_music_fade_out(2.0f); audio_play(AUD_OVER, 1.f); video_clr_grab(); 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 void stroke_leave(int id) { hud_free(); video_clr_grab(); config_set_d(CONFIG_CAMERA, 0); }
static int goal_enter(void) { const char *s1 = _("New Record"); const char *s2 = _("GOAL"); int id, jd, kd, ld, md; const struct level *l = get_level(curr_level()); int high = progress_lvl_high(); if (new_name) { progress_rename(0); new_name = 0; } if ((id = gui_vstack(0))) { int gid; if (high) gid = gui_label(id, s1, GUI_MED, GUI_ALL, gui_grn, gui_grn); else gid = gui_label(id, s2, GUI_LRG, GUI_ALL, gui_blu, gui_grn); gui_space(id); if (curr_mode() == MODE_CHALLENGE) { int coins, score, balls; char msg[MAXSTR] = ""; 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--; } sprintf(msg, ngettext("%d new bonus level", "%d new bonus levels", curr_bonus()), curr_bonus()); if ((jd = gui_hstack(id))) { gui_filler(jd); if ((kd = gui_vstack(jd))) { if ((ld = gui_hstack(kd))) { if ((md = gui_harray(ld))) { balls_id = gui_count(md, 100, GUI_MED, GUI_NE); gui_label(md, _("Balls"), GUI_SML, 0, gui_wht, gui_wht); } if ((md = gui_harray(ld))) { score_id = gui_count(md, 1000, GUI_MED, 0); gui_label(md, _("Score"), GUI_SML, 0, gui_wht, gui_wht); } if ((md = gui_harray(ld))) { coins_id = gui_count(md, 100, GUI_MED, 0); gui_label(md, _("Coins"), GUI_SML, GUI_NW, gui_wht, gui_wht); } gui_set_count(balls_id, balls); gui_set_count(score_id, score); gui_set_count(coins_id, coins); } gui_label(kd, msg, GUI_SML, GUI_BOT, 0, 0); } gui_filler(jd); } gui_space(id); } else { balls_id = score_id = coins_id = 0; } gui_score_board(id, (GUI_MOST_COINS | GUI_BEST_TIMES | GUI_FAST_UNLOCK), 1, high); gui_space(id); if ((jd = gui_harray(id))) { if (progress_done()) gui_start(jd, _("Finish"), GUI_SML, GOAL_DONE, 0); else if (progress_last()) gui_start(jd, _("Finish"), GUI_SML, GOAL_LAST, 0); if (progress_next_avail()) gui_start(jd, _("Next Level"), GUI_SML, GOAL_NEXT, 0); if (progress_same_avail()) gui_start(jd, _("Retry Level"), GUI_SML, GOAL_SAME, 0); if (demo_saved()) gui_state(jd, _("Save Replay"), GUI_SML, GOAL_SAVE, 0); } if (!resume) gui_pulse(gid, 1.2f); gui_layout(id, 0, 0); } set_score_board(&l->score.most_coins, progress_coin_rank(), &l->score.best_times, progress_time_rank(), &l->score.fast_unlock, progress_goal_rank()); audio_music_fade_out(2.0f); video_clr_grab(); /* Reset hack. */ resume = 0; return id; }