#include "vg/vg_console.h"
#include "vg/vg_input.h"
#include "vg/vg_m.h"
-#include "conf.h"
#include "font.h"
enum sr_bind{
k_srbind_trick0,
k_srbind_trick1,
k_srbind_trick2,
+ k_srbind_sit,
k_srbind_use,
k_srbind_reset,
k_srbind_camera,
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_max,
};
k_sraxis_grab = 0,
k_sraxis_mbrowse_h,
k_sraxis_mbrowse_v,
+ k_sraxis_replay_h,
+ k_sraxis_mworld_h,
+
k_sraxis_max
};
float axis_states[ k_sraxis_max ][2];
v2f joystick_states[ k_srjoystick_max ][2];
u8 button_states[ k_srbind_max ][2];
- u32 ignore_input_frames;
+ u32 enabled;
}
static srinput;
[ SDL_CONTROLLER_BUTTON_GUIDE ] = { "\x91", "\x91" },
};
-static const char *controller_glyph( u32 sdl_index )
-{
+static const char *controller_glyph( u32 sdl_index ){
if( vg_input.display_input_type == SDL_CONTROLLER_TYPE_PS3 ||
vg_input.display_input_type == SDL_CONTROLLER_TYPE_PS4 ||
vg_input.display_input_type == SDL_CONTROLLER_TYPE_PS5 )
[k_srbind_camera] = controller_glyph( SDL_CONTROLLER_BUTTON_RIGHTSHOULDER ),
[k_srbind_mleft] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_LEFT ),
[k_srbind_mright] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_RIGHT ),
+ [k_srbind_world_left] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_LEFT ),
+ [k_srbind_world_right] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_RIGHT ),
+ [k_srbind_home] = controller_glyph( SDL_CONTROLLER_BUTTON_Y ),
[k_srbind_mup] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_UP ),
[k_srbind_mdown] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_DOWN ),
[k_srbind_mback] = controller_glyph( SDL_CONTROLLER_BUTTON_B ),
[k_srbind_maccept]= controller_glyph( SDL_CONTROLLER_BUTTON_A ),
- [k_srbind_mopen] = controller_glyph( SDL_CONTROLLER_BUTTON_GUIDE )
+ [k_srbind_mopen] = controller_glyph( SDL_CONTROLLER_BUTTON_GUIDE ),
+[k_srbind_replay_play]= controller_glyph( SDL_CONTROLLER_BUTTON_X ),
+[k_srbind_replay_freecam]=controller_glyph(SDL_CONTROLLER_BUTTON_Y ),
+[k_srbind_replay_resume]=controller_glyph( SDL_CONTROLLER_BUTTON_A ),
+ [k_srbind_sit] = controller_glyph( SDL_CONTROLLER_BUTTON_B ),
+ [k_srbind_lobby] = controller_glyph( SDL_CONTROLLER_BUTTON_DPAD_LEFT )
};
const char *keyboard_table[ k_srbind_max ] = {
- [k_srbind_jump] = KEYBOARD_GLYPH( "A" ),
+ [k_srbind_jump] = "\xa1",
[k_srbind_push] = KEYBOARD_GLYPH( "W" ),
[k_srbind_trick0] = "\x99",
[k_srbind_trick1] = "\x9a",
[k_srbind_camera] = KEYBOARD_GLYPH( "C" ),
[k_srbind_mleft] = KEYBOARD_GLYPH( "\x93" ),
[k_srbind_mright] = KEYBOARD_GLYPH( "\x95" ),
+ [k_srbind_world_left] = KEYBOARD_GLYPH( "\x93" ),
+ [k_srbind_world_right] = KEYBOARD_GLYPH( "\x95" ),
+ [k_srbind_home] = KEYBOARD_GLYPH( "H" ),
[k_srbind_mup] = KEYBOARD_GLYPH( "\x94" ),
[k_srbind_mdown] = KEYBOARD_GLYPH( "\x96" ),
[k_srbind_mback] = "\xa3",
[k_srbind_maccept]= "\xa2",
[k_srbind_mopen] = "\xa3" ,
+[k_srbind_replay_play]= KEYBOARD_GLYPH( "G" ),
+[k_srbind_replay_freecam] = KEYBOARD_GLYPH( "F" ),
+[k_srbind_replay_resume]= "\xa1",
+ [k_srbind_sit] = KEYBOARD_GLYPH( "Z" ),
+ [k_srbind_lobby] = KEYBOARD_GLYPH( "" ) // FIXME: what is tab?
};
if( vg_input.display_input_method == k_input_method_controller )
const char *controller_table[ k_sraxis_max ] = {
[k_sraxis_grab] = "\x90",
[k_sraxis_mbrowse_h] = "\x88",
- [k_sraxis_mbrowse_v] = "\x89"
+ [k_sraxis_mbrowse_v] = "\x89",
+ [k_sraxis_replay_h] = "\x8f\x90",
+ [k_sraxis_mworld_h] = "\x93\x95"
};
const char *keyboard_table[ k_sraxis_max ] = {
[k_sraxis_grab] = "\x9e",
[k_sraxis_mbrowse_h] = KEYBOARD_GLYPH("\x93")KEYBOARD_GLYPH("\x95"),
- [k_sraxis_mbrowse_v] = KEYBOARD_GLYPH("\x96")KEYBOARD_GLYPH("\x94")
+ [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 )
return keyboard_table[ axis ];
}
-static const char *joystick_display_string( enum sr_joystick joystick )
+static const char *joystick_display_string( enum sr_joystick joystick,
+ u32 axis )
{
- const char *controller_table[ k_srjoystick_max ] = {
- [k_srjoystick_steer] = "\x88",
- [k_srjoystick_grab] = "\x8e",
- [k_srjoystick_look] = "\x8e"
+ const char *controller_table[ k_srjoystick_max ][3] = {
+ [k_srjoystick_steer] = {"\x88","\x89","\x8a"},
+ [k_srjoystick_grab] = {"\x8c","\x8d","\x8e"},
+ [k_srjoystick_look] = {"\x8c","\x8d","\x8e"}
};
- const char *keyboard_table[ k_srjoystick_max ] = {
- [k_srjoystick_steer] = KEYBOARD_GLYPH( "\x93" )KEYBOARD_GLYPH( "\x95" ),
- [k_srjoystick_grab] = "\xa4",
- [k_srjoystick_look] = "\xa4"
+ const char *keyboard_table[ k_srjoystick_max ][3] = {
+ [k_srjoystick_steer] = {KEYBOARD_GLYPH("A")KEYBOARD_GLYPH("D"), /*h*/
+ KEYBOARD_GLYPH("W")KEYBOARD_GLYPH("S"), /*v*/
+
+ KEYBOARD_GLYPH("A")KEYBOARD_GLYPH("D") /*hv*/
+ KEYBOARD_GLYPH("W")KEYBOARD_GLYPH("S"), },
+ [k_srjoystick_grab] = {"\xa4","\xa4","\xa4"},
+ [k_srjoystick_look] = {"\xa4","\xa4","\xa4"}
};
if( vg_input.display_input_method == k_input_method_controller )
- return controller_table[ joystick ];
- else
- return keyboard_table[ joystick ];
+ return controller_table[ joystick ][axis];
+ else return keyboard_table[ joystick ][axis];
}
static int buttons_filter_fixed(void)
{
- if( srinput.ignore_input_frames )
- return 1;
-
- if( vg_console.enabled )
- return 1;
+ if( !srinput.enabled ) return 1;
+ if( vg_ui.wants_mouse ) return 1;
if( vg.engine_stage == k_engine_stage_update_fixed )
if( vg.fixed_iterations > 0 )
/* Rising edge of button */
static int button_down( enum sr_bind button )
{
- if( buttons_filter_fixed() )
- return 0;
+ if( buttons_filter_fixed() ) return 0;
if( srinput.button_states[ button ][0] &&
!srinput.button_states[ button ][1] )
/* Falling edge of button */
static int button_up( enum sr_bind button )
{
- if( buttons_filter_fixed() )
- return 0;
+ if( buttons_filter_fixed() ) return 0;
if( !srinput.button_states[ button ][0] &&
srinput.button_states[ button ][1] )
/* State of button */
static int button_press( enum sr_bind button )
{
- if( vg_console.enabled )
- return 0;
-
+ if( vg_ui.wants_mouse ) return 0;
return srinput.button_states[ button ][0];
}
static void joystick_state( enum sr_joystick joystick, v2f state )
{
- if( vg_console.enabled )
+ if( vg_ui.wants_mouse )
v2_zero( state );
else
v2_copy( srinput.joystick_states[ joystick ][0], state );
}
-static float axis_state( enum sr_axis axis )
-{
- if( vg_console.enabled ) return 0.0f;
+static float axis_state( enum sr_axis axis ){
+ if( vg_ui.wants_mouse ) return 0.0f;
else return srinput.axis_states[axis][0];
}
static void skaterift_preupdate_inputs(void)
{
- if( srinput.ignore_input_frames )
- srinput.ignore_input_frames --;
-
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;
setbtn( k_srbind_camera, vg_getkey(SDLK_c) );
setbtn( k_srbind_mleft, vg_getkey(SDLK_LEFT) );
setbtn( k_srbind_mright, vg_getkey(SDLK_RIGHT) );
+ setbtn( k_srbind_world_left, vg_getkey(SDLK_LEFT) );
+ setbtn( k_srbind_world_right, vg_getkey(SDLK_RIGHT) );
+ setbtn( k_srbind_home, vg_getkey(SDLK_h) );
setbtn( k_srbind_mup, vg_getkey(SDLK_UP) );
setbtn( k_srbind_mdown, vg_getkey(SDLK_DOWN) );
setbtn( k_srbind_mback, vg_getkey(SDLK_ESCAPE) );
setbtn( k_srbind_maccept, vg_getkey(SDLK_e) );
setbtn( k_srbind_maccept, vg_getkey(SDLK_RETURN));
setbtn( k_srbind_maccept, vg_getkey(SDLK_RETURN2));
+ setbtn( k_srbind_replay_play, vg_getkey(SDLK_g) );
+ setbtn( k_srbind_replay_freecam, vg_getkey(SDLK_f) );
+ setbtn( k_srbind_replay_resume, vg_getkey(SDLK_SPACE) );
+ setbtn( k_srbind_sit, vg_getkey(SDLK_z) );
+ setbtn( k_srbind_lobby, vg_getkey(SDLK_TAB) );
/* axis
* --------------------------------------------*/
srinput.axis_states[ k_sraxis_grab ][0] = vg_getkey( SDLK_LSHIFT );
- if( vg_getkey( SDLK_d ) )
+ if( vg_getkey( SDLK_e ) )
+ srinput.axis_states[ k_sraxis_replay_h ][0] += 1.0f;
+ if( vg_getkey( SDLK_q ) )
+ srinput.axis_states[ k_sraxis_replay_h ][0] -= 1.0f;
+
+ if( vg_getkey( SDLK_d ) )
srinput.joystick_states[k_srjoystick_steer][0][0] += 1.0f;
- if( vg_getkey( SDLK_a ) )
+ if( vg_getkey( SDLK_a ) )
srinput.joystick_states[k_srjoystick_steer][0][0] -= 1.0f;
if( vg_getkey( SDLK_w ) )
srinput.joystick_states[k_srjoystick_steer][0][1] -= 1.0f;
srinput.axis_states[ k_sraxis_mbrowse_v ][0] -= 1.0f;
if( vg_getkey( SDLK_UP ) )
srinput.axis_states[ k_sraxis_mbrowse_v ][0] += 1.0f;
- if( vg_getkey( SDLK_LEFT ) )
+
+ if( vg_getkey( SDLK_LEFT ) ){
srinput.axis_states[ k_sraxis_mbrowse_h ][0] -= 1.0f;
- if( vg_getkey( SDLK_RIGHT ) )
+ srinput.axis_states[ k_sraxis_mworld_h ][0] -= 1.0f;
+ }
+ if( vg_getkey( SDLK_RIGHT ) ){
srinput.axis_states[ k_sraxis_mbrowse_h ][0] += 1.0f;
+ srinput.axis_states[ k_sraxis_mworld_h ][0] += 1.0f;
+ }
- if( vg_input.active_controller_index != -1 ){
+ if( vg_input.active_controller_index >= 0 ){
struct vg_controller *controller =
&vg_input.controllers[vg_input.active_controller_index];
setbtn( k_srbind_camera, buttons[ SDL_CONTROLLER_BUTTON_RIGHTSHOULDER ] );
setbtn( k_srbind_mleft, buttons[ SDL_CONTROLLER_BUTTON_DPAD_LEFT ] );
setbtn( k_srbind_mright, buttons[ SDL_CONTROLLER_BUTTON_DPAD_RIGHT ] );
+ setbtn( k_srbind_world_left, buttons[ SDL_CONTROLLER_BUTTON_DPAD_LEFT ] );
+ setbtn( k_srbind_world_right,buttons[ SDL_CONTROLLER_BUTTON_DPAD_RIGHT ]);
+ setbtn( k_srbind_home, buttons[ SDL_CONTROLLER_BUTTON_Y ] );
setbtn( k_srbind_mup, buttons[ SDL_CONTROLLER_BUTTON_DPAD_UP ] );
setbtn( k_srbind_mdown, buttons[ SDL_CONTROLLER_BUTTON_DPAD_DOWN ] );
setbtn( k_srbind_mback, buttons[ SDL_CONTROLLER_BUTTON_B ] );
setbtn( k_srbind_maccept,buttons[ SDL_CONTROLLER_BUTTON_A ] );
- setbtn( k_srbind_mopen, buttons[ SDL_CONTROLLER_BUTTON_GUIDE ] );
+ setbtn( k_srbind_mopen, buttons[ SDL_CONTROLLER_BUTTON_START ] );
+ setbtn( k_srbind_mback, buttons[ SDL_CONTROLLER_BUTTON_START ] );
+ setbtn( k_srbind_replay_resume, buttons[ SDL_CONTROLLER_BUTTON_A ] );
+ setbtn( k_srbind_replay_play, buttons[ SDL_CONTROLLER_BUTTON_X ] );
+ setbtn( k_srbind_replay_freecam, buttons[ SDL_CONTROLLER_BUTTON_Y ] );
+ setbtn( k_srbind_sit, buttons[ SDL_CONTROLLER_BUTTON_B ] );
+ setbtn( k_srbind_lobby, buttons[ SDL_CONTROLLER_BUTTON_DPAD_LEFT ] );
float *axis = controller->axises;
-
float *steer = srinput.joystick_states[ k_srjoystick_steer ][0],
*look = srinput.joystick_states[ k_srjoystick_look ][0],
*grab = srinput.joystick_states[ k_srjoystick_grab ][0],
*axisgrab = &srinput.axis_states[ k_sraxis_grab ][0],
*axisbrowseh = &srinput.axis_states[ k_sraxis_mbrowse_h ][0],
- *axisbrowsev = &srinput.axis_states[ k_sraxis_mbrowse_v ][0];
+ *axisbrowsev = &srinput.axis_states[ k_sraxis_mbrowse_v ][0],
+ *axisreplayh = &srinput.axis_states[ k_sraxis_replay_h ][0];
steer[0] += axis[ SDL_CONTROLLER_AXIS_LEFTX ];
steer[1] += axis[ SDL_CONTROLLER_AXIS_LEFTY ];
axisgrab[0] += vg_maxf( 0.0f, axis[ SDL_CONTROLLER_AXIS_TRIGGERRIGHT ] );
axisbrowseh[0] += axis[ SDL_CONTROLLER_AXIS_LEFTX ];
axisbrowsev[0] += axis[ SDL_CONTROLLER_AXIS_LEFTY ];
+ axisreplayh[0] += vg_maxf(0.0f,axis[SDL_CONTROLLER_AXIS_TRIGGERRIGHT]);
+ axisreplayh[0] -= vg_maxf(0.0f,axis[SDL_CONTROLLER_AXIS_TRIGGERLEFT]);
float lh = axis[ SDL_CONTROLLER_AXIS_LEFTX ],
lv = axis[ SDL_CONTROLLER_AXIS_LEFTY ],
if( lh > sensitivity ) setbtn( k_srbind_mright, 1 );
if( lh < -sensitivity ) setbtn( k_srbind_mleft, 1 );
- if( lv > sensitivity ) setbtn( k_srbind_mup, 1 );
- if( lv < -sensitivity ) setbtn( k_srbind_mdown, 1 );
+ if( lv > sensitivity ) setbtn( k_srbind_mdown, 1 );
+ if( lv < -sensitivity ) setbtn( k_srbind_mup, 1 );
}
srinput.axis_states[ k_sraxis_grab ][0] =