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 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 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 time_out_keybd(int c, int d) { if (d) { if (config_tst_d(CONFIG_KEY_RESTART, c) && progress_same_avail()) { if (progress_same()) goto_state(&st_play_ready); } } 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 play_loop_keybd(int c, int d) { if (d) { if (config_tst_d(CONFIG_KEY_CAMERA_R, c)) rot_set(DIR_R, 1.0f, 0); if (config_tst_d(CONFIG_KEY_CAMERA_L, c)) rot_set(DIR_L, 1.0f, 0); if (config_tst_d(CONFIG_KEY_ROTATE_FAST, c)) fast_rotate = 1; keybd_camera(c); if (config_tst_d(CONFIG_KEY_RESTART, c) && progress_same_avail()) { if (progress_same()) goto_state(&st_play_ready); } if (c == KEY_EXIT) goto_state(&st_pause); } else { if (config_tst_d(CONFIG_KEY_CAMERA_R, c)) rot_clr(DIR_R); if (config_tst_d(CONFIG_KEY_CAMERA_L, c)) rot_clr(DIR_L); if (config_tst_d(CONFIG_KEY_ROTATE_FAST, c)) fast_rotate = 0; } if (d && c == KEY_LOOKAROUND && config_cheat()) return goto_state(&st_look); if (d && c == KEY_POSE) show_hud = !show_hud; if (d && c == SDLK_c && config_cheat()) { progress_stat(GAME_GOAL); return goto_state(&st_goal); } return 1; }