static int time_out_action(int i) { audio_play(AUD_MENU, 1.0f); switch (i) { case TIME_OUT_BACK: /* Fall through. */ case TIME_OUT_OVER: progress_stop(); return goto_state(&st_over); case TIME_OUT_SAVE: progress_stop(); return goto_save(&st_time_out, &st_time_out); case TIME_OUT_NEXT: if (progress_next()) return goto_state(&st_level); break; case TIME_OUT_SAME: if (progress_same()) return goto_state(&st_level); break; } return 1; }
static int goal_action(int i) { audio_play(AUD_MENU, 1.0f); switch (i) { case GOAL_BACK: /* Fall through. */ case GOAL_OVER: progress_stop(); return goto_state(&st_over); case GOAL_SAVE: resume = 1; progress_stop(); return goto_save(&st_goal, &st_goal); case GUI_NAME: new_name = 1; resume = 1; progress_stop(); return goto_name(&st_goal, &st_goal, 0); case GOAL_DONE: progress_stop(); progress_exit(); return goto_state(&st_done); case GOAL_LAST: progress_stop(); return goto_state(&st_start); case GUI_MOST_COINS: case GUI_BEST_TIMES: case GUI_FAST_UNLOCK: gui_score_set(i); resume = 1; return goto_state(&st_goal); case GOAL_NEXT: if (progress_next()) return goto_state(&st_level); break; case GOAL_SAME: if (progress_same()) return goto_state(&st_level); break; } return 1; }
static int pause_action(int tok, int val) { audio_play(AUD_MENU, 1.0f); switch (tok) { case PAUSE_CONTINUE: audio_pause(0); video_set_grab(0); return goto_state(st_continue); case PAUSE_RESTART: if (progress_same()) { audio_pause(0); video_set_grab(1); return goto_state(&st_play_ready); } break; case PAUSE_EXIT: progress_stat(GAME_NONE); progress_stop(); audio_pause(0); audio_music_stop(); return goto_state(&st_exit); } return 1; }
static int goal_action(int tok, int val) { audio_play(AUD_MENU, 1.0f); switch (tok) { case GUI_BACK: case GOAL_OVER: progress_stop(); return goto_state(&st_exit); case GUI_SAVE: progress_stop(); return goto_save(&st_goal, &st_goal); case GUI_NAME: progress_stop(); return goto_name(&st_goal, &st_goal, 0); case GOAL_DONE: progress_stop(); progress_exit(); return goto_state(&st_exit); case GOAL_LAST: progress_stop(); return goto_state(&st_exit); case GUI_SCORE: gui_score_set(val); return goto_state(&st_goal); case GOAL_NEXT: if (progress_next()) return goto_state(&st_level); break; case GOAL_SAME: if (progress_same()) return goto_state(&st_level); break; } return 1; }
int progress_same(void) { progress_stop(); /* Reset progress and goal enabled state. */ if (status == GAME_GOAL) curr = prev; same_goal_e = 1; return progress_play(level); }
int progress_next(void) { progress_stop(); return progress_play(next); }