static int handle_key_up(SDL_Event *e) { int d = 1; int c = e->key.keysym.sym; switch (c) { case SDLK_RETURN: d = st_buttn(config_get_d(CONFIG_JOYSTICK_BUTTON_A), 0); break; case KEY_EXIT: d = st_keybd(KEY_EXIT, 0); break; default: if (config_tst_d(CONFIG_KEY_FORWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y0), 0); else if (config_tst_d(CONFIG_KEY_BACKWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y0), 0); else if (config_tst_d(CONFIG_KEY_LEFT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X0), 0); else if (config_tst_d(CONFIG_KEY_RIGHT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X0), 0); else d = st_keybd(e->key.keysym.sym, 0); } return d; }
static void title_stick(int id, int a, int v) { if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a)) gui_pulse(gui_stick(id, v, 0), 1.2f); if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a)) gui_pulse(gui_stick(id, 0, v), 1.2f); }
static void stroke_stick(int id, int a, float v, int bump) { if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a)) stroke_rotate = 6 * v; else if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a)) stroke_mag = -6 * v; }
static int handle_key_dn(SDL_Event *e) { int d = 1; int c = e->key.keysym.sym; /* SDL made me do it. */ #ifdef __APPLE__ if (c == SDLK_q && e->key.keysym.mod & KMOD_META) return 0; #endif #ifdef WIN32 if (c == SDLK_F4 && e->key.keysym.mod & KMOD_ALT) return 0; #endif switch (c) { case KEY_SCREENSHOT: shot_prep(); break; case KEY_FPS: config_tgl_d(CONFIG_FPS); break; case KEY_WIREFRAME: if (config_cheat()) toggle_wire(); break; case KEY_LERP: if (config_cheat()) toggle_lerp(); break; case SDLK_RETURN: d = st_buttn(config_get_d(CONFIG_JOYSTICK_BUTTON_A), 1); break; case SDLK_ESCAPE: d = st_buttn(config_get_d(CONFIG_JOYSTICK_BUTTON_EXIT), 1); break; default: if (config_tst_d(CONFIG_KEY_FORWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y), -1.0f); else if (config_tst_d(CONFIG_KEY_BACKWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y), +1.0f); else if (config_tst_d(CONFIG_KEY_LEFT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X), -1.0f); else if (config_tst_d(CONFIG_KEY_RIGHT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X), +1.0f); /* FIXME: SDL_EnableUNICODE() is not available */ /*if (SDL_EnableUNICODE(-1)) d = st_keybd(e->key.keysym.unicode, 1); else*/ d = st_keybd(e->key.keysym.sym, 1); } return d; }
static int handle_key_dn(SDL_Event *e) { int d = 1; int c = e->key.keysym.sym; /* SDL made me do it. */ #ifdef __APPLE__ if (c == SDLK_q && e->key.keysym.mod & KMOD_GUI) return 0; #endif #ifdef _WIN32 if (c == SDLK_F4 && e->key.keysym.mod & KMOD_ALT) return 0; #endif switch (c) { case KEY_SCREENSHOT: shot(); break; case KEY_FPS: config_tgl_d(CONFIG_FPS); break; case KEY_WIREFRAME: if (config_cheat()) toggle_wire(); break; case KEY_RESOURCES: if (config_cheat()) { light_load(); mtrl_reload(); } break; case SDLK_RETURN: d = st_buttn(config_get_d(CONFIG_JOYSTICK_BUTTON_A), 1); break; case KEY_EXIT: d = st_keybd(KEY_EXIT, 1); break; default: if (config_tst_d(CONFIG_KEY_FORWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y0), -1.0f); else if (config_tst_d(CONFIG_KEY_BACKWARD, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_Y0), +1.0f); else if (config_tst_d(CONFIG_KEY_LEFT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X0), -1.0f); else if (config_tst_d(CONFIG_KEY_RIGHT, c)) st_stick(config_get_d(CONFIG_JOYSTICK_AXIS_X0), +1.0f); else d = st_keybd(e->key.keysym.sym, 1); } return d; }
static int over_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b) || config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return goto_state(&st_start); } return 1; }
static int roll_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b) || config_tst_d(CONFIG_JOYSTICK_BUTTON_START, b)) return goto_pause(&st_over); } return 1; }
static void stroke_stick(int id, int a, int v) { if (v == 1) /* See 'loop' in main.c */ v = 0; if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a)) stroke_rotate = (6 * v) / JOY_MAX; else if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a)) stroke_mag = -((6 * v) / JOY_MAX); }
static int course_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return course_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return course_action(COURSE_BACK); } return 1; }
static int conf_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return conf_action(gui_token(gui_active())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return goto_state(&st_title); } return 1; }
static int demo_compat_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return goto_state(&st_demo_play); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return goto_state(&st_demo_end); } return 1; }
static int title_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return title_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return title_action(TITLE_EXIT); } return 1; }
static int stroke_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return goto_state(&st_roll); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return goto_pause(&st_over, 1); } return 1; }
static int pause_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return pause_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return pause_action(PAUSE_CONTINUE); } return 1; }
static int set_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return set_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return set_action(GUI_BACK); } return 1; }
static int party_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return party_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return party_action(PARTY_B); } return 1; }
static int demo_del_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return demo_del_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return demo_del_action(DEMO_KEEP); } return 1; }
static int poser_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return goto_state(&st_next); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return goto_state(&st_next); } return 1; }
static int time_out_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return time_out_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return time_out_action(TIME_OUT_BACK); } return 1; }
static int goal_keybd(int c, int d) { if (d) { if (config_tst_d(CONFIG_KEY_SCORE_NEXT, c)) return goal_action(gui_score_next(gui_score_get())); if (config_tst_d(CONFIG_KEY_RESTART, c) && progress_same_avail()) return goal_action(GOAL_SAME); } return 1; }
static void click_camera(int b) { if (config_tst_d(CONFIG_MOUSE_CAMERA_1, b)) set_camera(CAM_1); if (config_tst_d(CONFIG_MOUSE_CAMERA_2, b)) set_camera(CAM_2); if (config_tst_d(CONFIG_MOUSE_CAMERA_3, b)) set_camera(CAM_3); if (config_tst_d(CONFIG_MOUSE_CAMERA_TOGGLE, b)) toggle_camera(); }
static void keybd_camera(int c) { if (config_tst_d(CONFIG_KEY_CAMERA_1, c)) set_camera(CAM_1); if (config_tst_d(CONFIG_KEY_CAMERA_2, c)) set_camera(CAM_2); if (config_tst_d(CONFIG_KEY_CAMERA_3, c)) set_camera(CAM_3); if (config_tst_d(CONFIG_KEY_CAMERA_TOGGLE, c)) toggle_camera(); }
static int goal_buttn(int b, int d) { if (d) { int active = gui_active(); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return goal_action(gui_token(active), gui_value(active)); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return goal_action(GUI_BACK, 0); } return 1; }
static int demo_play_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b) || config_tst_d(CONFIG_JOYSTICK_BUTTON_START, b)) { demo_paused = 1; return goto_state(&st_demo_end); } } return 1; }
static int demo_del_buttn(int b, int d) { if (d) { int active = gui_active(); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return demo_del_action(gui_token(active), gui_value(active)); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return demo_del_action(DEMO_KEEP, 0); } return 1; }
static int start_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return start_action(gui_token(gui_click())); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_B, b)) return goto_state(&st_title); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return goto_state(&st_title); } return 1; }
static int title_buttn(int b, int d) { if (d) { int active = gui_active(); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return title_action(gui_token(active), gui_value(active)); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return 0; } return 1; }
static int play_set_buttn(int b, int d) { if (d) { buttn_camera(b); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) return goto_state(&st_play_loop); if (config_tst_d(CONFIG_JOYSTICK_BUTTON_START, b)) return goto_state(&st_pause); } return 1; }
static int goal_keybd(int c, int d) { if (d) { if (c == KEY_EXIT) return goal_action(GUI_BACK, 0); if (config_tst_d(CONFIG_KEY_SCORE_NEXT, c)) return goal_action(GUI_SCORE, GUI_SCORE_NEXT(gui_score_get())); if (config_tst_d(CONFIG_KEY_RESTART, c) && progress_same_avail()) return goal_action(GOAL_SAME, 0); } return 1; }
static int flyby_buttn(int b, int d) { if (d) { if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b)) { game_set_fly(0.f); return goto_state(&st_stroke); } if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b)) return goto_pause(&st_over, 1); } return 1; }