static void play_loop_timer(int id, float dt) { float k = (fast_rotate ? (float) config_get_d(CONFIG_ROTATE_FAST) / 100.0f : (float) config_get_d(CONFIG_ROTATE_SLOW) / 100.0f); float r = 0.0f; gui_timer(id, dt); hud_timer(dt); switch (rot_get(&r)) { case ROT_HOLD: /* * Cam 3 could be anything. But let's assume it's a manual cam * and holding down both rotation buttons freezes the camera * rotation. */ game_set_rot(0.0f); game_set_cam(CAM_3); break; case ROT_ROTATE: case ROT_NONE: game_set_rot(r * k); game_set_cam(config_get_d(CONFIG_CAMERA)); break; } game_step_fade(dt); game_server_step(dt); game_client_sync(demo_fp); game_client_blend(game_server_blend()); switch (curr_status()) { case GAME_GOAL: progress_stat(GAME_GOAL); goto_state(&st_goal); break; case GAME_FALL: progress_stat(GAME_FALL); goto_state(&st_fail); break; case GAME_TIME: progress_stat(GAME_TIME); goto_state(&st_fail); break; default: progress_step(); break; } }
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 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; }