update helpers
[carveJwlIkooP6JGAAIwe30JlM.git] / input.h
diff --git a/input.h b/input.h
index cdb93a3ce7162f1fd7900157a53e6a51d317952f..1595325a4a460e35931e4eb64772af7037f67409 100644 (file)
--- a/input.h
+++ b/input.h
@@ -49,8 +49,6 @@ enum sr_axis{
    k_sraxis_mbrowse_h,
    k_sraxis_mbrowse_v,
    k_sraxis_replay_h,
-   k_sraxis_mworld_h,
-
    k_sraxis_max
 };
 
@@ -70,7 +68,7 @@ static vg_input_op *input_button_list[] = {
    vg_joy_button, SDL_CONTROLLER_BUTTON_B, vg_end
 },
 [k_srbind_trick2] = (vg_input_op[]){ 
-   vg_mode_mul, vg_mouse, SDL_BUTTON_LEFT, vg_mouse, SDL_BUTTON_RIGHT, 
+   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 ),
@@ -88,7 +86,9 @@ static vg_input_op *input_button_list[] = {
 [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_keyboard, SDLK_RETURN, vg_keyboard, SDLK_RETURN2,
+   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 ),
@@ -106,8 +106,8 @@ static vg_input_op *input_axis_list[] = {
    vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, vg_end
 },
 [k_sraxis_mbrowse_h] = (vg_input_op[]){
-   vg_mode_add, vg_keyboard, SDLK_RIGHT,
    vg_mode_sub, vg_keyboard, SDLK_LEFT,
+   vg_mode_add, vg_keyboard, SDLK_RIGHT,
    vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTX,
    vg_end
 },
@@ -131,21 +131,16 @@ 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_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTX, 
    vg_index, 1, vg_mode_add, vg_keyboard, SDLK_s,
                 vg_mode_sub, vg_keyboard, SDLK_w,
-                vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTY,
+                vg_mode_absmax, vg_joy_ls,
    vg_end
 },
 [k_srjoystick_grab] = (vg_input_op[]){
-   vg_index, 0, vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_RIGHTX,
-   vg_index, 1, vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_RIGHTY,
-   vg_end
+   vg_joy_rs, vg_end
 },
 [k_srjoystick_look] = (vg_input_op[]){
-   vg_index, 0, vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_RIGHTX,
-   vg_index, 1, vg_mode_absmax, vg_joy_axis, SDL_CONTROLLER_AXIS_RIGHTY,
-   vg_end
+   vg_joy_rs, vg_end
 },
 [k_srjoystick_max]=NULL
 };
@@ -158,12 +153,14 @@ struct {
    enum input_state {
       k_input_state_enabled,
       k_input_state_resume,
+      k_input_state_resuming,
       k_input_state_pause
    }
    state;
 }
 static srinput;
 
+#if 0
 static const char *controller_glyphs[ SDL_CONTROLLER_BUTTON_MAX ][2] =
 {                                        /* xbox/generic  playstation */
    [ SDL_CONTROLLER_BUTTON_A ]            = { "\x1e\x85","\x1e\x82" },
@@ -274,7 +271,6 @@ static const char *axis_display_string( enum sr_axis axis )
     [k_sraxis_mbrowse_h] = "\x88",
     [k_sraxis_mbrowse_v] = "\x89",
     [k_sraxis_replay_h]  = "\x8f\x90",
-    [k_sraxis_mworld_h]  = "\x93\x95"
    };
 
    const char *keyboard_table[ k_sraxis_max ] = {
@@ -282,7 +278,6 @@ static const char *axis_display_string( enum sr_axis axis )
     [k_sraxis_mbrowse_h] = KEYBOARD_GLYPH("\x93")KEYBOARD_GLYPH("\x95"),
     [k_sraxis_mbrowse_v] = KEYBOARD_GLYPH("\x96")KEYBOARD_GLYPH("\x94"),
     [k_sraxis_replay_h]  = KEYBOARD_GLYPH("Q")KEYBOARD_GLYPH("E"),
-    [k_sraxis_mworld_h] = KEYBOARD_GLYPH("\x93")KEYBOARD_GLYPH("\x95"),
    };
 
    if( vg_input.display_input_method == k_input_method_controller )
@@ -314,6 +309,7 @@ static const char *joystick_display_string( enum sr_joystick joystick,
       return controller_table[ joystick ][axis];
    else  return keyboard_table[ joystick ][axis];
 }
+#endif
 
 static int input_filter_generic(void){
    if( srinput.state != k_input_state_enabled || 
@@ -378,15 +374,13 @@ static float axis_state( enum sr_axis axis ){
       return srinput.axis_states[axis][0];
 }
 
-static void setbtn( enum sr_bind button, u8 value )
-{
-   srinput.button_states[button][0] |= value;
-}
-
 static void skaterift_preupdate_inputs(void){
-   if( srinput.state == k_input_state_resume )
+   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<k_srbind_max; i++ ){
       srinput.button_states[i][1] = srinput.button_states[i][0];
       srinput.button_states[i][0] = 0;
@@ -402,10 +396,6 @@ static void skaterift_preupdate_inputs(void){
       srinput.axis_states[i][0] = 0.0f;
    }
 
-   u32 mouse = SDL_GetMouseState(NULL,NULL),
-       mouse1= (mouse & SDL_BUTTON(SDL_BUTTON_LEFT))? 1: 0,
-       mouse2= (mouse & SDL_BUTTON(SDL_BUTTON_RIGHT))? 1: 0;
-
    for( int i=0; i<k_srbind_max; i++ ){
       vg_input_op *prog = input_button_list[i];
       if( prog ){
@@ -429,6 +419,20 @@ static void skaterift_preupdate_inputs(void){
                                 srinput.joystick_states[i][0] );
       }
    }
+
+   f32 x = srinput.axis_states[k_sraxis_mbrowse_h][0],
+       y = srinput.axis_states[k_sraxis_mbrowse_v][0],
+       sensitivity = 0.35f;
+
+   if( fabsf(x) > 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 */