X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=input.h;h=e66a8600f65911474af95465819d7b685d5203a0;hb=refs%2Fheads%2Fmaster;hp=d60fece386d84e14bfe963c832ea23719a9b4869;hpb=70ff4a83e5a4b35436388d9bb999c939559ac23f;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/input.h b/input.h deleted file mode 100644 index d60fece..0000000 --- a/input.h +++ /dev/null @@ -1,304 +0,0 @@ -#ifndef INPUT_H -#define INPUT_H - -#define VG_GAME -#include "vg/vg.h" -#include "vg/vg_platform.h" -#include "vg/vg_console.h" -#include "vg/vg_input.h" -#include "vg/vg_m.h" -#include "font.h" - -enum sr_bind{ - k_srbind_jump = 0, - k_srbind_push, - k_srbind_trick0, - k_srbind_trick1, - k_srbind_trick2, - k_srbind_sit, - k_srbind_use, - k_srbind_reset, - k_srbind_dead_respawn, - k_srbind_camera, - k_srbind_mleft, - k_srbind_mright, - k_srbind_mup, - k_srbind_mdown, - k_srbind_mback, - k_srbind_maccept, - k_srbind_mopen, - k_srbind_replay_play, - k_srbind_replay_freecam, - k_srbind_replay_resume, - k_srbind_world_left, - k_srbind_world_right, - k_srbind_home, - k_srbind_lobby, - k_srbind_chat, - - k_srbind_miniworld_teleport, - k_srbind_miniworld_resume, - - k_srbind_max, -}; - -enum sr_joystick{ - k_srjoystick_steer = 0, - k_srjoystick_grab, - k_srjoystick_look, - k_srjoystick_max -}; - -enum sr_axis{ - k_sraxis_grab = 0, - k_sraxis_mbrowse_h, - k_sraxis_mbrowse_v, - k_sraxis_replay_h, - k_sraxis_max -}; - - -#define INPUT_BASIC( KB, JS ) \ - (vg_input_op[]){vg_keyboard, KB, vg_joy_button, JS, vg_end} - -static vg_input_op *input_button_list[] = { -[k_srbind_jump] = INPUT_BASIC( SDLK_SPACE, SDL_CONTROLLER_BUTTON_A ), -[k_srbind_push] = INPUT_BASIC( SDLK_w, SDL_CONTROLLER_BUTTON_B ), -[k_srbind_trick0] = (vg_input_op[]){ - vg_mouse, SDL_BUTTON_LEFT, - vg_joy_button, SDL_CONTROLLER_BUTTON_A, vg_end -}, -[k_srbind_trick1] = (vg_input_op[]){ - vg_mouse, SDL_BUTTON_RIGHT, - vg_joy_button, SDL_CONTROLLER_BUTTON_B, vg_end -}, -[k_srbind_trick2] = (vg_input_op[]){ - vg_mouse, SDL_BUTTON_LEFT, vg_mode_mul, vg_mouse, SDL_BUTTON_RIGHT, - vg_mode_absmax, vg_joy_button, SDL_CONTROLLER_BUTTON_X, vg_end -}, -[k_srbind_use] = INPUT_BASIC( SDLK_e, SDL_CONTROLLER_BUTTON_Y ), -[k_srbind_reset] = INPUT_BASIC( SDLK_r, SDL_CONTROLLER_BUTTON_LEFTSHOULDER ), -[k_srbind_dead_respawn] = - INPUT_BASIC( SDLK_q, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER ), -[k_srbind_camera]= INPUT_BASIC( SDLK_c, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER ), -[k_srbind_mleft] = INPUT_BASIC( SDLK_LEFT, SDL_CONTROLLER_BUTTON_DPAD_LEFT ), -[k_srbind_mright]= INPUT_BASIC( SDLK_RIGHT, SDL_CONTROLLER_BUTTON_DPAD_RIGHT ), -[k_srbind_world_left] = - INPUT_BASIC( SDLK_LEFT, SDL_CONTROLLER_BUTTON_DPAD_LEFT ), -[k_srbind_world_right] = - INPUT_BASIC( SDLK_RIGHT, SDL_CONTROLLER_BUTTON_DPAD_RIGHT ), -[k_srbind_home] = INPUT_BASIC( SDLK_h, SDL_CONTROLLER_BUTTON_Y ), -[k_srbind_mup] = INPUT_BASIC( SDLK_UP, SDL_CONTROLLER_BUTTON_DPAD_UP ), -[k_srbind_mdown] = INPUT_BASIC( SDLK_DOWN, SDL_CONTROLLER_BUTTON_DPAD_DOWN ), -[k_srbind_mback] = INPUT_BASIC( SDLK_ESCAPE, SDL_CONTROLLER_BUTTON_B ), -[k_srbind_mopen] = INPUT_BASIC( SDLK_ESCAPE, SDL_CONTROLLER_BUTTON_START ), -[k_srbind_maccept] = (vg_input_op[]){ - vg_keyboard, SDLK_e, vg_gui_visible, 0, - vg_keyboard, SDLK_RETURN, vg_keyboard, SDLK_RETURN2, - vg_gui_visible, 1, - vg_joy_button, SDL_CONTROLLER_BUTTON_A, vg_end -}, -[k_srbind_replay_play] = INPUT_BASIC( SDLK_g, SDL_CONTROLLER_BUTTON_X ), -[k_srbind_replay_resume] = INPUT_BASIC( SDLK_SPACE, SDL_CONTROLLER_BUTTON_A ), -[k_srbind_replay_freecam] = INPUT_BASIC( SDLK_f, SDL_CONTROLLER_BUTTON_Y ), -[k_srbind_sit] = INPUT_BASIC( SDLK_z, SDL_CONTROLLER_BUTTON_B ), -[k_srbind_lobby] = INPUT_BASIC( SDLK_TAB, SDL_CONTROLLER_BUTTON_DPAD_LEFT ), -[k_srbind_chat ] = (vg_input_op[]){ vg_keyboard, SDLK_y, vg_end }, - -[k_srbind_miniworld_resume] = (vg_input_op[]){ - vg_keyboard, SDLK_RETURN, vg_gui_visible, 0, - vg_keyboard, SDLK_RETURN2, - vg_gui_visible, 1, - vg_joy_button, SDL_CONTROLLER_BUTTON_X, vg_end -}, -[k_srbind_miniworld_teleport]= INPUT_BASIC( SDLK_q, - SDL_CONTROLLER_BUTTON_LEFTSHOULDER ), - -[k_srbind_max]=NULL -}; - -static vg_input_op *input_axis_list[] = { -[k_sraxis_grab] = (vg_input_op[]){ - vg_keyboard, SDLK_LSHIFT, - vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, vg_end -}, -[k_sraxis_mbrowse_h] = (vg_input_op[]){ - vg_mode_sub, vg_keyboard, SDLK_LEFT, - vg_mode_add, vg_keyboard, SDLK_RIGHT, - vg_mode_add, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTX, - vg_end -}, -[k_sraxis_mbrowse_v] = (vg_input_op[]){ - vg_mode_add, vg_keyboard, SDLK_UP, - vg_mode_sub, vg_keyboard, SDLK_DOWN, - vg_mode_sub, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTY, - vg_end -}, -[k_sraxis_replay_h] = (vg_input_op[]){ - vg_mode_add, vg_keyboard, SDLK_e, - vg_mode_sub, vg_keyboard, SDLK_q, - vg_mode_add, vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, - vg_mode_sub, vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERLEFT, - vg_end -}, -[k_sraxis_max]=NULL -}; - -static vg_input_op *input_joy_list[] = { -[k_srjoystick_steer] = (vg_input_op[]){ - vg_index, 0, vg_mode_add, vg_keyboard, SDLK_d, - vg_mode_sub, vg_keyboard, SDLK_a, - vg_index, 1, vg_mode_add, vg_keyboard, SDLK_s, - vg_mode_sub, vg_keyboard, SDLK_w, - vg_mode_absmax, vg_joy_ls, - vg_end -}, -[k_srjoystick_grab] = (vg_input_op[]){ - vg_joy_rs, vg_end -}, -[k_srjoystick_look] = (vg_input_op[]){ - vg_joy_rs, vg_end -}, -[k_srjoystick_max]=NULL -}; - -struct { - float axis_states[ k_sraxis_max ][2]; - v2f joystick_states[ k_srjoystick_max ][2]; - u8 button_states[ k_srbind_max ][2]; - - enum input_state { - k_input_state_enabled, - k_input_state_resume, - k_input_state_resuming, - k_input_state_pause - } - state; -} -static srinput; - -static int input_filter_generic(void){ - if( srinput.state != k_input_state_enabled || - vg_ui.wants_mouse || vg_console.enabled ) - return 1; - else - return 0; -} - -static int buttons_filter_fixed(void){ - if( input_filter_generic() ) - return 1; - - if( vg.engine_stage == k_engine_stage_update_fixed ) - if( vg.fixed_iterations > 0 ) - return 1; - - return 0; -} - -/* Rising edge of button */ -static int button_down( enum sr_bind button ){ - if( buttons_filter_fixed() ) return 0; - - if( srinput.button_states[ button ][0] && - !srinput.button_states[ button ][1] ) - return 1; - else - return 0; -} - -/* Falling edge of button */ -static int button_up( enum sr_bind button ){ - if( buttons_filter_fixed() ) return 0; - - if( !srinput.button_states[ button ][0] && - srinput.button_states[ button ][1] ) - return 1; - else - return 0; -} - -/* State of button */ -static int button_press( enum sr_bind button ){ - if( input_filter_generic() ) - return 0; - return - srinput.button_states[ button ][0]; -} - -static void joystick_state( enum sr_joystick joystick, v2f state ){ - if( input_filter_generic() ) - v2_zero( state ); - else - v2_copy( srinput.joystick_states[ joystick ][0], state ); -} - -static float axis_state( enum sr_axis axis ){ - if( input_filter_generic() ) - return 0.0f; - else - return srinput.axis_states[axis][0]; -} - -static void skaterift_preupdate_inputs(void){ - if( srinput.state == k_input_state_resuming ) - srinput.state = k_input_state_enabled; - - if( srinput.state == k_input_state_resume ) - srinput.state = k_input_state_resuming; - - for( u32 i=0; i sensitivity ){ - if( x > 0.0f ) srinput.button_states[k_srbind_mright][0] = 1; - else srinput.button_states[k_srbind_mleft][0] = 1; - } - - if( fabsf(y) > sensitivity ){ - if( y > 0.0f ) srinput.button_states[k_srbind_mup][0] = 1; - else srinput.button_states[k_srbind_mdown][0] = 1; - } -} - -#endif /* INPUT_H */