vg_build_font_face_run( &small, 'a', 'z', 0, 28 );
vg_build_font_face_run( &small, '0', '9', 208,14 );
vg_build_font_face_run( &small, 0x7f, 0xa4, 0,42 );
- vg_build_font_face_run( &small, 0xb0, 0xb2, 208,28 );
+ vg_build_font_face_run( &small, 0xb0, 0xb3, 208,28 );
vg_build_write_font_face( fp, &small );
vg_font_face large =
vg_build_font_face_run( &large, 'a', 'z', 0, 98 );
vg_build_font_face_run( &large, '0', '9', 312,77 );
vg_build_font_face_run( &large, 0x7f, 0xa4, 0,119 );
- vg_build_font_face_run( &large, 0xb0, 0xb2, 312,98 );
+ vg_build_font_face_run( &large, 0xb0, 0xb3, 312,98 );
vg_build_write_font_face( fp, &large );
vg_font_face title =
}
}
+static void vg_input_set_active_controller( int index, const char *why )
+{
+ if( vg_input.active_controller_index != index )
+ {
+ vg_input.display_input_type =
+ SDL_GameControllerGetType( vg_input.controllers[index].handle );
+ vg_input.active_controller_index = index;
+ vg_info( "Switching controller index to #%d. (%s)\n", index, why );
+ }
+
+ if( vg_input.display_input_method != k_input_method_controller )
+ {
+ vg_input.display_input_method = k_input_method_controller;
+ vg_info( "Switching input method to controller. (%s)\n", why );
+ }
+}
+
void vg_input_controller_event( SDL_Event *ev )
{
- if( ev->type == SDL_CONTROLLERAXISMOTION ){
- for( int i=0; i<VG_MAX_CONTROLLERS; i++ ){
+ if( ev->type == SDL_CONTROLLERAXISMOTION )
+ {
+ for( int i=0; i<VG_MAX_CONTROLLERS; i++ )
+ {
struct vg_controller *esta = &vg_input.controllers[i];
- if( ev->caxis.which == esta->instance_id ){
+ if( ev->caxis.which == esta->instance_id )
+ {
float value = (float)ev->caxis.value / 32767.0f;
if( ev->caxis.axis == SDL_CONTROLLER_AXIS_LEFTX ||
high = vg_maxf( 0.0f, fabsf(value) - deadz );
value = vg_signf(value) * (high / (1.0f-deadz));
+ if( fabsf(value) > 0.5f )
+ vg_input_set_active_controller( i, "Stick pushed >|0.5|" );
}
esta->axises[ ev->caxis.axis ] = value;
}
}
}
- else if( ev->type == SDL_CONTROLLERBUTTONDOWN ){
- struct vg_controller *active = NULL;
-
- if( vg_input.active_controller_index >= 0 )
- active = &vg_input.controllers[vg_input.active_controller_index];
-
- if( !active || (ev->cbutton.which != active->instance_id) ){
- active = NULL;
- vg_input.active_controller_index = -1;
- vg_input.display_input_method = k_input_method_kbm;
-
- for( int i=0; i<VG_MAX_CONTROLLERS; i++ ){
- if( vg_input.controllers[i].instance_id == ev->cbutton.which ){
- active = &vg_input.controllers[i];
- vg_input.active_controller_index = i;
- vg_input.display_input_type =
- SDL_GameControllerGetType(active->handle);
- break;
- }
- }
-
- if( active ){
- vg_info( "Switching active controller index to #%d\n",
- vg_input.active_controller_index );
- }
- else{
- vg_error( "Input out of range (SDL_JoystickID#%d)\n",
- ev->cbutton.which );
- }
- }
-
- if( active ){
- if( vg_input.display_input_method != k_input_method_controller ){
- vg_input.display_input_method = k_input_method_controller;
- vg_info( "display_input: k_input_method_controller\n" );
+ else if( ev->type == SDL_CONTROLLERBUTTONDOWN )
+ {
+ for( int i=0; i<VG_MAX_CONTROLLERS; i++ )
+ {
+ struct vg_controller *esta = &vg_input.controllers[i];
+ if( esta->instance_id == ev->cbutton.which )
+ {
+ vg_input_set_active_controller( i, "Button press" );
+ esta->buttons[ ev->cbutton.button ] = 1;
+ break;
}
- active->buttons[ ev->cbutton.button ] = 1;
}
}
- else if( ev->type == SDL_CONTROLLERBUTTONUP ){
- for( int i=0; i<VG_MAX_CONTROLLERS; i++ ){
+ else if( ev->type == SDL_CONTROLLERBUTTONUP )
+ {
+ for( int i=0; i<VG_MAX_CONTROLLERS; i++ )
+ {
struct vg_controller *esta = &vg_input.controllers[i];
-
- if( ev->cbutton.which == esta->instance_id ){
+ if( ev->cbutton.which == esta->instance_id )
+ {
esta->buttons[ ev->cbutton.button ] = 0;
break;
}
}
}
-void vg_strcat( vg_str *str, const char *append )
+static void _vg_strcatch( vg_str *str, char c )
{
- if( !append || (str->i == -1) ) return;
-
- i32 max = vg_str_storage( str ),
- i = 0;
+ if( str->i == -1 ) return;
-append:
- if( str->i == max ){
+ i32 max = vg_str_storage( str );
+ if( str->i == max )
+ {
if( str->len == -1 )
max = vg_str_dynamic_grow( str );
- else{
+ else
+ {
str->i = -1;
str->buffer[ max-1 ] = '\0';
return;
}
}
- char c = append[ i ++ ];
- str->buffer[ str->i ] = c;
+ str->buffer[ str->i ++ ] = c;
+}
+
+void vg_strcat( vg_str *str, const char *append )
+{
+ if( !append || (str->i == -1) ) return;
+
+ i32 i = 0;
+
+append:;
+ char c = append[ i ++ ];
+ _vg_strcatch( str, c );
if( c == '\0' )
+ {
+ str->i --;
return;
-
- str->i ++;
- goto append;
+ }
+ else goto append;
}
void vg_strcatch( vg_str *str, char c )
{
- vg_strcat( str, (char[]){ c, '\0' } );
+ _vg_strcatch( str, c );
+ _vg_strcatch( str, '\x00' );
+ str->i --;
}
/*