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 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; }
static int done_action(int tok, int val) { audio_play(AUD_MENU, 1.0f); switch (tok) { case GUI_BACK: return goto_state(&st_exit); case GUI_NAME: return goto_name(&st_done, &st_done, 0); case GUI_SCORE: gui_score_set(val); return goto_state(&st_done); } return 1; }
static int start_action(int tok, int val) { audio_play(AUD_MENU, 1.0f); switch (tok) { case GUI_BACK: return goto_state(&st_set); case START_CHALLENGE: if (config_cheat()) { progress_init(curr_mode() == MODE_CHALLENGE ? MODE_NORMAL : MODE_CHALLENGE); gui_toggle(challenge_id); return 1; } else { progress_init(MODE_CHALLENGE); return start_action(START_LEVEL, 0); } break; case GUI_SCORE: gui_score_set(val); start_over(gui_active(), 0); return 1; case START_LOCK_GOALS: config_set_d(CONFIG_LOCK_GOALS, val); return goto_state(&st_start); case START_LEVEL: if (progress_play(get_level(val))) return goto_state(&st_level); break; } return 1; }