X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=menu.c;h=ed69945eaebd64cb9ba8b8f85122fcec967a043e;hb=494c85703c76c4123c49937a32584840b6be1470;hp=d5c8d5ed1d11401a3c5aac45a1635b7cc5d0f800;hpb=304647a7672165dd35ffe54884ed9aedcc9bf363;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/menu.c b/menu.c index d5c8d5e..ed69945 100644 --- a/menu.c +++ b/menu.c @@ -217,10 +217,16 @@ void menu_open_page( const char *name, */ static void menu_trigger_item( ent_menuitem *item ) { - if ( item->type == k_ent_menuitem_type_event_button ){ + audio_lock(); + audio_oneshot( &audio_ui[0], 1.0f, 0.0f ); + audio_unlock(); + + if ( item->type == k_ent_menuitem_type_event_button ) + { u32 q = item->button.pstr; - if( MDL_CONST_PSTREQ( &menu.model, q, "quit" ) ){ + if( MDL_CONST_PSTREQ( &menu.model, q, "quit" ) ) + { vg.window_should_close = 1; } else if( MDL_CONST_PSTREQ( &menu.model, q, "map" ) ){ @@ -298,20 +304,32 @@ static void menu_setitem_type( ent_menuitem *item, */ void menu_update(void) { + static f32 repeater = 0.0f; + if( repeater > 0.0f ) + repeater -= vg.time_frame_delta; + if( workshop_form.page != k_workshop_form_hidden ){ return; } - int escape = button_down( k_srbind_mback ); - if( menu.credits_open || vg.settings_open ){ - if( escape ){ + bool escape = 0; + + if( menu.credits_open || vg.settings_open ) + { + vg_exec_input_program( k_vg_input_type_button_u8, + input_button_list[k_srbind_mback], &escape ); + if( escape ) + { menu.credits_open = 0; if( vg.settings_open ) vg_settings_close(); + + srinput.state = k_input_state_resume; } return; } + escape = button_down( k_srbind_mback ); if( button_down( k_srbind_mopen ) ){ if( skaterift.activity == k_skaterift_default ){ @@ -469,7 +487,8 @@ void menu_update(void) menu_back_page(); } else if( menu.loc ){ - if( ui_click_down( UI_MOUSE_LEFT ) ){ + if( ui_click_down( UI_MOUSE_LEFT ) ) + { menu_trigger_item( menu.loc ); } } @@ -510,16 +529,21 @@ void menu_update(void) mh = 0; } - if( escape ){ + if( escape ) + { menu_back_page(); + audio_lock(); + audio_oneshot( &audio_ui[3], 1.0f, 0.0f ); + audio_unlock(); } - else if( enter ){ + else if( enter ) + { menu_trigger_item( menu.loc ); } else if( mh||mv ){ v3f opt; v3_zero( opt ); - f32 best = 0.707f; + f32 best = 0.5f; ent_menuitem *nextpos = NULL; opt[0] += mh; @@ -543,8 +567,13 @@ void menu_update(void) } } - if( nextpos ){ + if( nextpos && (repeater <= 0.0f) ) + { menu.loc = nextpos; + audio_lock(); + audio_oneshot( &audio_ui[3], 1.0f, 0.0f ); + audio_unlock(); + repeater += 0.1f; } } }