keyboard
authorhgn <hgodden00@gmail.com>
Sun, 6 Nov 2022 18:50:53 +0000 (18:50 +0000)
committerhgn <hgodden00@gmail.com>
Sun, 6 Nov 2022 18:50:53 +0000 (18:50 +0000)
player.h
player_physics.h
skaterift.c

index 92667821e84363b2ffda5c4134e9a6cc637c31d0..972807b7a9892c1c09caedddd7a3b5a831023d2e 100644 (file)
--- a/player.h
+++ b/player.h
@@ -87,6 +87,20 @@ VG_STATIC struct gplayer
 
    v3f handl_target, handr_target,
        handl, handr;
+
+   /* Input */
+   struct input_binding *input_js1h,
+                        *input_js1v,
+                        *input_js2h,
+                        *input_js2v,
+                        *input_emjs2h,
+                        *input_emjs2v,
+                        *input_jump,
+                        *input_push,
+                        *input_walk,
+                        *input_switch_mode,
+                        *input_reset,
+                        *input_grab;
    
    /* Camera */
    float air_blend;
@@ -203,6 +217,59 @@ VG_STATIC void player_save_rewind_frame(void);
 
 VG_STATIC void player_init(void)                                            /* 1 */
 {
+   player.input_js1h = vg_create_named_input( "steer-h", k_input_type_axis );
+   player.input_js1v = vg_create_named_input( "steer-v", k_input_type_axis );
+   player.input_grab = vg_create_named_input( "grab", k_input_type_axis_norm );
+   player.input_js2h = vg_create_named_input( "grab-h", k_input_type_axis );
+   player.input_js2v = vg_create_named_input( "grab-v", k_input_type_axis );
+   player.input_emjs2h = vg_create_named_input( "kbgrab-h", k_input_type_axis );
+   player.input_emjs2v = vg_create_named_input( "kbgrab-v", k_input_type_axis );
+   player.input_jump = vg_create_named_input( "jump", k_input_type_button );
+   player.input_push = vg_create_named_input( "push", k_input_type_axis_norm );
+   player.input_walk = vg_create_named_input( "walk", k_input_type_axis_norm );
+   player.input_switch_mode = vg_create_named_input( "switch-mode",
+                                                     k_input_type_button );
+   player.input_reset = vg_create_named_input( "reset", k_input_type_button );
+
+   const char *default_cfg[] = 
+   {
+      "bind steer-h gp-ls-h",
+      "bind  steer-h gp-ls-h",
+      "bind -steer-h a",
+      "bind +steer-h d",
+
+      "bind  steer-v gp-ls-v",
+      "bind -steer-v s",
+      "bind +steer-v w",
+
+      "bind grab gp-rt",
+      "bind grab-h gp-rs-h",
+      "bind grab-v gp-rs-v",
+
+      "bind -kbgrab-h left",
+      "bind +kbgrab-h right",
+      "bind -kbgrab-v down",
+      "bind +kbgrab-v up",
+
+      "bind jump space",
+      "bind jump gp-a",
+
+      "bind  push gp-lt",
+      "bind +push shift",
+
+      "bind  walk gp-lt",
+      "bind +walk w",
+
+      "bind reset gp-lb",
+      "bind reset r",
+
+      "bind switch-mode gp-y",
+      "bind switch-mode e",
+   };
+
+   for( int i=0; i<vg_list_size(default_cfg); i++ )
+      execute_console_input(default_cfg[i]);
+
    rb_init( &player.phys.rb );
    rb_init( &player.collide_front );
    rb_init( &player.collide_back  );
@@ -266,6 +333,9 @@ VG_STATIC void player_init(void)                                            /* 1
                        sizeof(struct rewind_frame) * PLAYER_REWIND_FRAMES );
 
    player_model_init();
+
+   /* controls */
+   
 }
 
 VG_STATIC void player_save_rewind_frame(void)
@@ -299,7 +369,7 @@ VG_STATIC void player_update_pre(void)
       return;
    }
 
-   if( vg_get_button_down( "reset" ) )
+   if( vg_input_button_down( player.input_reset ) )
    {
       if( player.is_dead )
       {
@@ -363,7 +433,7 @@ VG_STATIC void player_update_pre(void)
       }
    }
 
-   if( vg_get_button_down( "switchmode" ) )
+   if( vg_input_button_down( player.input_switch_mode ) )
    {
       phys->on_board ^= 0x1;
 
index bb79b850e84f8ac66e4af3ead166d54763a612bf..0213fc7b65a18deb66d756b3d20f4b18e64ce8fb 100644 (file)
@@ -150,7 +150,7 @@ VG_STATIC void player_physics_control(void)
       vel[0] = stable_force( vel[0],vg_signf(vel[0]) * -k_friction_lat*substep);
    }
    
-   if( vg_get_button( "jump" ) )
+   if( player.input_jump->button.value )
    {
       phys->jump += VG_TIMESTEP_FIXED * k_jump_charge_speed;
 
@@ -161,15 +161,15 @@ VG_STATIC void player_physics_control(void)
    }
 
    static int push_thresh_last = 0;
-   float push_amt = vg_get_axis( "walk/push" ) * 0.5f + 0.5f;
-   int push_thresh = push_amt>0.15f? 1: 0;
+   float push = player.input_push->axis.value;
+   int push_thresh = push>0.15f? 1: 0;
    
    if( push_thresh && !push_thresh_last )
       player.phys.start_push = vg.time;
 
    push_thresh_last = push_thresh;
 
-   if( !vg_get_button("jump") && push_thresh )
+   if( !player.input_jump->button.value && push_thresh )
    {
       player.phys.pushing = 1.0f;
       player.phys.push_time = vg.time - player.phys.start_push;
@@ -198,7 +198,7 @@ VG_STATIC void player_physics_control(void)
    
    m3x3_mulv( phys->rb.to_world, vel, phys->rb.v );
    
-   float steer = vg_get_axis( "lookh" ),
+   float steer = player.input_js1h->axis.value,
          steer_scaled = vg_signf(steer) * powf(steer,2.0f) * k_steer_ground;
 
    phys->iY -= steer_scaled * VG_TIMESTEP_FIXED;
@@ -269,10 +269,14 @@ VG_STATIC void player_physics_control_air(void)
       time_to_impact += pstep;
    }
 
-   phys->iY -= vg_get_axis( "lookh" ) * k_steer_air * VG_TIMESTEP_FIXED;
+   float steerh = player.input_js1h->axis.value,
+         steerv = player.input_js1v->axis.value;
+
+   phys->iY -= steerh * k_steer_air * VG_TIMESTEP_FIXED;
+
    {
-      float iX = vg_get_axis( "lookv" ) * 
-         phys->reverse * k_steer_air * limiter * VG_TIMESTEP_FIXED;
+      float iX = steerv * 
+                 phys->reverse * k_steer_air * limiter * VG_TIMESTEP_FIXED;
 
       static float siX = 0.0f;
       siX = vg_lerpf( siX, iX, k_steer_air_lerp );
@@ -282,9 +286,11 @@ VG_STATIC void player_physics_control_air(void)
       q_mul( rotate, phys->rb.q, phys->rb.q );
    }
    
+#if 0
    v2f target = {0.0f,0.0f};
    v2_muladds( target, (v2f){ vg_get_axis("grabh"), vg_get_axis("grabv") },
                phys->grab, target );
+#endif
 }
 
 /*
@@ -374,7 +380,7 @@ VG_STATIC void player_walk_physics(void)
       float const DOWNFORCE = -k_walk_downforce*VG_TIMESTEP_FIXED;
       v3_muladds( phys->rb.v, (v3f){0.0f,-1.0f,0.0f}, DOWNFORCE, phys->rb.v );
 
-      if( vg_get_button("jump") )
+      if( player.input_jump->button.value )
       {
          phys->rb.v[1] = 5.0f;
       }
@@ -389,7 +395,8 @@ VG_STATIC void player_walk_physics(void)
    v3_muladds( phys->rb.co, forward_dir, 2.0f, p1 );
    vg_line( phys->rb.co, p1, 0xff0000ff );
 
-   player.walk = powf( vg_get_axis("walk/push")*0.5f + 0.5f, 4.0f );
+   float walk = player.input_walk->axis.value;
+   player.walk = powf( walk, 4.0f );
 
    if( player.walk > 0.025f )
    {
@@ -525,7 +532,11 @@ VG_STATIC void player_physics(void)
       }
    }
 
-   float grabt = vg_get_axis( "grab" )*0.5f+0.5f;
+   float grabt = vg_maxf( player.input_grab->axis.value,
+                     vg_maxf( fabsf( player.input_emjs2h->axis.value ),
+                              fabsf( player.input_emjs2v->axis.value ) )
+                  );
+
    phys->grab = vg_lerpf( phys->grab, grabt, 0.14f );
    player.phys.pushing = 0.0f;
 
@@ -638,9 +649,6 @@ VG_STATIC void player_do_motion(void)
 {
    struct player_phys *phys = &player.phys;
 
-   float horizontal = vg_get_axis("horizontal"),
-         vertical = vg_get_axis("vertical");
-
    if( world.water.enabled )
    {
       if( (phys->rb.co[1] < 0.0f) && !player.is_dead )
@@ -751,6 +759,7 @@ VG_STATIC void player_mouseview(void)
    static v2f mouse_last,
               view_vel = { 0.0f, 0.0f };
 
+#if 0
    if( vg_get_button_down( "primary" ) )
       v2_copy( vg.mouse, mouse_last );
 
@@ -762,6 +771,7 @@ VG_STATIC void player_mouseview(void)
 
       v2_muladds( view_vel, delta, 0.06f*vg.time_delta, view_vel );
    }
+#endif
    
    v2_muls( view_vel, 1.0f-4.2f*vg.time_delta, view_vel );
    v2_add( view_vel, player.angles, player.angles );
index 91e7e012ababc663c4498cf7d1b8cab5b1eeee00..7c094b0efeb0823e8a2916878b80bbf0da349f3c 100644 (file)
@@ -260,39 +260,6 @@ VG_STATIC void vg_render(void)
 VG_STATIC void vg_ui(void)
 {
 #if 0
-   if( cl_menu )
-   {
-      ui_rect menu =
-      {
-         vg.window_x / 2 - 150,
-         vg.window_y / 2 - 50,
-         300,
-         130
-      };
-
-      ui_fill_rect( &ui_global_ctx, menu, 0xa0000000 );
-
-      ui_text( &ui_global_ctx, (ui_rect){ menu[0]+menu[2]/2,menu[1]+6, 0, 0 },
-                               steam_username_at_startup, 
-                               1, k_text_align_center );
-      menu[1] += 24;
-      menu[3] -= 30;
-
-      ui_rect_pad( menu, 8 );
-      ui_fill_rect( &ui_global_ctx, menu, 0x90ffffff );
-      ui_rect_pad( menu, 2 );
-      ui_fill_rect( &ui_global_ctx, menu, 0xa0000000 );
-
-      menu[1] += 32;
-      ui_text( &ui_global_ctx, (ui_rect){ menu[0]+menu[2]/2,menu[1], 0, 0 },
-                               "Exit", 2, k_text_align_center );
-
-      if( vg_get_button_down( "jump" ) )
-      {
-         glfwSetWindowShouldClose( vg.window, 1 );
-      }
-   }
-   
    if( lightedit )
    {
       ui_global_ctx.cursor[0] = 10;