From f8364997f9cd4c55e26522aa1e1f1ad93511b297 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 18 Apr 2024 22:06:39 +0100 Subject: [PATCH] input joy sleep wake, revisit string cat code --- src/fonts/vg_font_thin_3.png | Bin 21948 -> 21992 bytes src/fonts/vg_font_thin_3.xcf | Bin 632306 -> 632554 bytes vg_build_font.h | 4 +- vg_input.c | 84 +++++++++++++++++------------------ vg_string.c | 40 +++++++++++------ 5 files changed, 69 insertions(+), 59 deletions(-) diff --git a/src/fonts/vg_font_thin_3.png b/src/fonts/vg_font_thin_3.png index 18139a2944e86c8b77988d05d92aa7f33bd06a2c..7bb79d888dd3a15ffa48c230284788e0fb001830 100644 GIT binary patch delta 17095 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 delta 17419 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 ZUS*lUA)r42IDyW<;OXk;vd$@?2>=9br@#OJ diff --git a/src/fonts/vg_font_thin_3.xcf b/src/fonts/vg_font_thin_3.xcf index 1e40c461bac84e22cad69ef8a585c43c5388a91e..43aa0bf167c282bfc209efc9151d02b70139c97a 100644 GIT binary patch delta 3440 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 Sf<5(_HU1g8<)7hcF8LdQJr_p+ 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 --; } /* -- 2.25.1