From: hgn Date: Thu, 18 Apr 2024 21:06:39 +0000 (+0100) Subject: input joy sleep wake, revisit string cat code X-Git-Url: https://harrygodden.com/git/?p=vg.git;a=commitdiff_plain;h=f8364997f9cd4c55e26522aa1e1f1ad93511b297 input joy sleep wake, revisit string cat code --- diff --git a/src/fonts/vg_font_thin_3.png b/src/fonts/vg_font_thin_3.png index 18139a2..7bb79d8 100644 Binary files a/src/fonts/vg_font_thin_3.png and b/src/fonts/vg_font_thin_3.png differ diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 1e40c46..43aa0bf 100644 Binary files a/src/fonts/vg_font_thin_3.xcf and b/src/fonts/vg_font_thin_3.xcf differ diff --git a/vg_build_font.h b/vg_build_font.h index 5ee5e10..48aba86 100644 --- a/vg_build_font.h +++ b/vg_build_font.h @@ -111,7 +111,7 @@ void vg_build_default_font(void) 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 = @@ -129,7 +129,7 @@ void vg_build_default_font(void) 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 = diff --git a/vg_input.c b/vg_input.c index c536c1f..d4e51bc 100644 --- a/vg_input.c +++ b/vg_input.c @@ -128,13 +128,33 @@ void vg_input_device_event( SDL_Event *ev ) } } +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; itype == SDL_CONTROLLERAXISMOTION ) + { + for( int i=0; icaxis.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 || @@ -146,6 +166,8 @@ void vg_input_controller_event( SDL_Event *ev ) 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; @@ -153,50 +175,26 @@ void vg_input_controller_event( SDL_Event *ev ) } } } - 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; icbutton.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; iinstance_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; itype == SDL_CONTROLLERBUTTONUP ) + { + for( int i=0; icbutton.which == esta->instance_id ){ + if( ev->cbutton.which == esta->instance_id ) + { esta->buttons[ ev->cbutton.button ] = 0; break; } diff --git a/vg_string.c b/vg_string.c index 1261f5b..ef29ef3 100644 --- a/vg_string.c +++ b/vg_string.c @@ -69,37 +69,49 @@ static i32 vg_str_dynamic_grow( vg_str *str ) } } -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 --; } /*