6 #include "vg/vg_platform.h"
7 #include "vg/vg_console.h"
8 #include "vg/vg_input.h"
37 u8 button_states
[ k_srbind_max
][2];
42 static int button_down( enum sr_bind button
)
44 if( vg_console
.enabled
)
47 if( vg
.engine_stage
== k_engine_stage_update_fixed
)
48 if( vg
.fixed_iterations
> 0 )
51 if( srinput
.button_states
[ button
][0] &&
52 !srinput
.button_states
[ button
][1] )
58 static int button_up( enum sr_bind button
)
60 if( vg_console
.enabled
)
63 if( vg
.engine_stage
== k_engine_stage_update_fixed
)
64 if( vg
.fixed_iterations
> 0 )
67 if( !srinput
.button_states
[ button
][0] &&
68 srinput
.button_states
[ button
][1] )
74 static int button_press( enum sr_bind button
)
76 if( vg_console
.enabled
)
79 return srinput
.button_states
[ button
][0];
82 static void setbtn( enum sr_bind button
, u8 value
)
84 srinput
.button_states
[button
][0] |= value
;
87 static void skaterift_preupdate_inputs(void)
89 for( u32 i
=0; i
<k_srbind_max
; i
++ ){
90 srinput
.button_states
[i
][1] = srinput
.button_states
[i
][0];
91 srinput
.button_states
[i
][0] = 0;
94 u32 mouse
= SDL_GetMouseState(NULL
,NULL
),
95 mouse1
= (mouse
& SDL_BUTTON(SDL_BUTTON_LEFT
))? 1: 0,
96 mouse2
= (mouse
& SDL_BUTTON(SDL_BUTTON_RIGHT
))? 1: 0;
99 * ------------------------------------- */
100 setbtn( k_srbind_jump
, vg_getkey(SDLK_SPACE
) );
101 setbtn( k_srbind_push
, vg_getkey(SDLK_w
) );
102 setbtn( k_srbind_trick0
, mouse1
);
103 setbtn( k_srbind_trick1
, mouse2
);
104 setbtn( k_srbind_trick2
, mouse1
& mouse2
);
105 setbtn( k_srbind_use
, vg_getkey(SDLK_e
) );
106 setbtn( k_srbind_reset
, vg_getkey(SDLK_r
) );
107 setbtn( k_srbind_camera
, vg_getkey(SDLK_c
) );
108 setbtn( k_srbind_mleft
, vg_getkey(SDLK_LEFT
) );
109 setbtn( k_srbind_mright
, vg_getkey(SDLK_RIGHT
) );
110 setbtn( k_srbind_mup
, vg_getkey(SDLK_UP
) );
111 setbtn( k_srbind_mdown
, vg_getkey(SDLK_DOWN
) );
112 setbtn( k_srbind_mback
, vg_getkey(SDLK_ESCAPE
) );
113 setbtn( k_srbind_maccept
, vg_getkey(SDLK_e
) );
114 setbtn( k_srbind_maccept
, vg_getkey(SDLK_RETURN
));
115 setbtn( k_srbind_maccept
, vg_getkey(SDLK_RETURN2
));
118 * --------------------------------------------*/
119 srinput
.axis_grab
= vg_getkey( SDLK_LSHIFT
);
121 v2_zero( srinput
.joy_steer
);
122 v2_zero( srinput
.joy_grab
);
123 v2_zero( srinput
.joy_look
);
125 if( vg_getkey( SDLK_d
) ) srinput
.joy_steer
[0] += 1.0f
;
126 if( vg_getkey( SDLK_a
) ) srinput
.joy_steer
[0] -= 1.0f
;
127 if( vg_getkey( SDLK_w
) ) srinput
.joy_steer
[1] -= 1.0f
;
128 if( vg_getkey( SDLK_s
) ) srinput
.joy_steer
[1] += 1.0f
;
130 if( vg_input
.active_controller_index
!= -1 ){
131 struct vg_controller
*controller
=
132 &vg_input
.controllers
[vg_input
.active_controller_index
];
134 u32
*buttons
= controller
->buttons
;
135 setbtn( k_srbind_jump
, buttons
[ SDL_CONTROLLER_BUTTON_A
] );
136 setbtn( k_srbind_push
, buttons
[ SDL_CONTROLLER_BUTTON_B
] );
137 setbtn( k_srbind_trick0
, buttons
[ SDL_CONTROLLER_BUTTON_A
] );
138 setbtn( k_srbind_trick1
, buttons
[ SDL_CONTROLLER_BUTTON_B
] );
139 setbtn( k_srbind_trick2
, buttons
[ SDL_CONTROLLER_BUTTON_X
] );
140 setbtn( k_srbind_use
, buttons
[ SDL_CONTROLLER_BUTTON_Y
] );
141 setbtn( k_srbind_reset
, buttons
[ SDL_CONTROLLER_BUTTON_LEFTSHOULDER
] );
142 setbtn( k_srbind_camera
, buttons
[ SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
] );
143 setbtn( k_srbind_mleft
, buttons
[ SDL_CONTROLLER_BUTTON_DPAD_LEFT
] );
144 setbtn( k_srbind_mright
, buttons
[ SDL_CONTROLLER_BUTTON_DPAD_RIGHT
] );
145 setbtn( k_srbind_mup
, buttons
[ SDL_CONTROLLER_BUTTON_DPAD_UP
] );
146 setbtn( k_srbind_mdown
, buttons
[ SDL_CONTROLLER_BUTTON_DPAD_DOWN
] );
148 float *axis
= controller
->axises
;
150 srinput
.joy_steer
[0] += axis
[ SDL_CONTROLLER_AXIS_LEFTX
],
151 srinput
.joy_steer
[1] += axis
[ SDL_CONTROLLER_AXIS_LEFTY
],
152 srinput
.joy_look
[0] += axis
[ SDL_CONTROLLER_AXIS_RIGHTX
];
153 srinput
.joy_look
[1] += axis
[ SDL_CONTROLLER_AXIS_RIGHTY
];
154 srinput
.joy_grab
[0] += axis
[ SDL_CONTROLLER_AXIS_RIGHTX
];
155 srinput
.joy_grab
[1] += axis
[ SDL_CONTROLLER_AXIS_RIGHTY
];
156 srinput
.axis_grab
+= vg_maxf( 0.0f
,
157 axis
[ SDL_CONTROLLER_AXIS_TRIGGERRIGHT
] );
159 float lh
= axis
[ SDL_CONTROLLER_AXIS_LEFTX
],
160 lv
= axis
[ SDL_CONTROLLER_AXIS_LEFTY
],
163 if( lh
> sensitivity
) setbtn( k_srbind_mright
, 1 );
164 if( lh
< -sensitivity
) setbtn( k_srbind_mleft
, 1 );
165 if( lv
> sensitivity
) setbtn( k_srbind_mup
, 1 );
166 if( lv
< -sensitivity
) setbtn( k_srbind_mdown
, 1 );
169 //v2_normalize_clamp( srinput.joy_steer );
170 //v2_normalize_clamp( srinput.joy_grab );
171 srinput
.axis_grab
= vg_minf( 1.0f
, srinput
.axis_grab
);