From: hgn Date: Sun, 14 Apr 2024 23:06:14 +0000 (+0100) Subject: update helpers/location to 'frosted' ui X-Git-Url: https://harrygodden.com/git/?p=carveJwlIkooP6JGAAIwe30JlM.git;a=commitdiff_plain;h=494c85703c76c4123c49937a32584840b6be1470 update helpers/location to 'frosted' ui --- diff --git a/ent_challenge.c b/ent_challenge.c index 861edbd..d30a5dc 100644 --- a/ent_challenge.c +++ b/ent_challenge.c @@ -36,9 +36,9 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) gui_helper_clear(); vg_str text; if( gui_new_helper( input_button_list[k_srbind_maccept], &text )) - vg_strcat( &text, "start" ); + vg_strcat( &text, "Start" ); if( gui_new_helper( input_button_list[k_srbind_mback], &text )) - vg_strcat( &text, "exit" ); + vg_strcat( &text, "Exit" ); } return k_entity_call_result_OK; } diff --git a/ent_route.c b/ent_route.c index f5b51c5..8564eed 100644 --- a/ent_route.c +++ b/ent_route.c @@ -21,14 +21,14 @@ entity_call_result ent_route_call( world_instance *world, ent_call *call ) if( (global_ent_route.helper_weekly = gui_new_helper( input_button_list[k_srbind_mleft], &text ))) - vg_strcat( &text, "weekly" ); + vg_strcat( &text, "Weekly" ); if( (global_ent_route.helper_alltime = gui_new_helper( input_button_list[k_srbind_mright], &text ))) - vg_strcat( &text, "all time" ); + vg_strcat( &text, "All time" ); if( gui_new_helper( input_button_list[k_srbind_mback], &text ) ) - vg_strcat( &text, "exit" ); + vg_strcat( &text, "Exit" ); } return k_entity_call_result_OK; diff --git a/ent_skateshop.c b/ent_skateshop.c index 05999f9..7b41857 100644 --- a/ent_skateshop.c +++ b/ent_skateshop.c @@ -757,7 +757,7 @@ static void ent_skateshop_helpers_pickable( const char *acceptance ) vg_str text; if( gui_new_helper( input_button_list[k_srbind_mback], &text )) - vg_strcat( &text, "exit" ); + vg_strcat( &text, "Exit" ); if( (global_skateshop.helper_pick = gui_new_helper( input_button_list[k_srbind_maccept], &text))){ @@ -766,7 +766,7 @@ static void ent_skateshop_helpers_pickable( const char *acceptance ) if( (global_skateshop.helper_browse = gui_new_helper( input_axis_list[k_sraxis_mbrowse_h], &text ))){ - vg_strcat( &text, "browse" ); + vg_strcat( &text, "Browse" ); } } @@ -823,15 +823,15 @@ entity_call_result ent_skateshop_call( world_instance *world, ent_call *call ) { skateshop_update_viewpage(); vg_loader_start( board_scan_thread, NULL ); - ent_skateshop_helpers_pickable( "pick" ); + ent_skateshop_helpers_pickable( "Pick" ); } else if( shop->type == k_skateshop_type_charshop ) { - ent_skateshop_helpers_pickable( "pick" ); + ent_skateshop_helpers_pickable( "Pick" ); } else if( shop->type == k_skateshop_type_worldshop ) { - ent_skateshop_helpers_pickable( "open rift" ); + ent_skateshop_helpers_pickable( "Open rift" ); vg_loader_start( world_scan_thread, NULL ); } else if( shop->type == k_skateshop_type_server ) diff --git a/font.h b/font.h index c229aa7..34441ca 100644 --- a/font.h +++ b/font.h @@ -57,11 +57,14 @@ enum efont_SRglyph{ k_SRglyph_kbm_return = 0xa2, k_SRglyph_kbm_escape = 0xa3, k_SRglyph_kbm_mousemove = 0xa4, + +#if 0 k_SRglyph_vg_ret = 0xa5, k_SRglyph_vg_link = 0xa6, k_SRglyph_vg_square = 0xa7, k_SRglyph_vg_triangle = 0xa8, k_SRglyph_vg_circle = 0xa9 +#endif }; typedef struct font3d font3d; diff --git a/gui.h b/gui.h index c6ebe71..c60c51b 100644 --- a/gui.h +++ b/gui.h @@ -2,6 +2,7 @@ #include "font.h" #include "input.h" #include "player.h" +#include "vg/vg_imgui.h" enum gui_icon { k_gui_icon_tick = 0, @@ -80,11 +81,8 @@ static struct gui_helper *gui_new_helper( vg_input_op *bind, vg_str *out_text ){ return helper; } -static void gui_draw(void){ - if( gui.active_positional_helper && - (v3_dist2(localplayer.rb.co,gui.trick_co) > 2.0f) ) - gui_helper_clear(); - +static void gui_render_icons(void) +{ vg_camera ortho; float fl = 0.0f, @@ -105,7 +103,6 @@ static void gui_draw(void){ m4x4_mul( ortho.mtx.p, ortho.mtx.v, ortho.mtx.pv ); /* HACK */ vg_camera_finalize( &ortho ); - /* icons */ font3d_bind( &gui.font, k_font_shader_default, 0, NULL, &ortho ); mesh_bind( &gui.icons_mesh ); @@ -132,93 +129,94 @@ static void gui_draw(void){ } gui.icon_draw_count = 0; +} +static void gui_draw(void) +{ + if( gui.active_positional_helper && + (v3_dist2(localplayer.rb.co,gui.trick_co) > 2.0f) ) + gui_helper_clear(); + /* helpers + * ----------------------------------------------------------------- */ gui.factive = vg_lerpf( gui.factive, gui.helper_count?1.0f:0.0f, vg.time_frame_delta*2.0f ); - if( gui.factive > 0.01f ){ - /* draw bottom bar */ - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glBlendEquation(GL_FUNC_ADD); + ui_font_face( &vgf_default_title ); + ui_px height = vg_ui.font->ch + 16; + ui_rect lwr = { 0, vg.window_y - height, vg.window_x, height }; - shader_blitcolour_use(); - shader_blitcolour_uColour( (v4f){ 0.0f, 0.0f, 0.0f, gui.factive*0.8f } ); - render_fsquad1(); + if( gui.factive > 0.01f ) + { + //ui_fill( lwr, ui_opacity( 0xff000000, gui.factive*0.8f ) ); } - f64 loc_t = (vg.time_real - gui.location_time) / 5.0; - if( (loc_t < 1.0) && (gui.location_time != 0.0) ){ - /* yep this code is a mess, i dont care anymore */ - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glBlendEquation(GL_FUNC_ADD); - - f32 t = 1.0f-vg_minf(1.0f,vg_minf(loc_t*20.0f,2.0f-loc_t*2.0f)), - o = 1.0f-t*t*(2.0f-t); + ui_px x = 0; + for( u32 i=0; ibinding, 1 ); - f32 dy = ft/0.79f, - scale = dy*0x1p-4f*0.5f; - - m3x3_identity( mmdl ); - m3x3_scale( mmdl, (v3f){scale,scale,scale} ); - v3_zero( mmdl[3] ); - - f32 pad = dy*0x1p-4f*0.125f; - f32 w = font3d_string_width( 2, gui.location ); - - mmdl[3][0] = fr*0.5f - w*scale*0.5f; - mmdl[3][1] = 0.3f*ft+pad*2.0f; + ui_rect box = { x, lwr[1], 1000, lwr[3] }; + + u32 fg = 0; + f32 opacity = 0.4f; + if( helper->greyed ) + { + fg = ui_colour(k_ui_fg+2); + opacity = 0.1f; + } - font3d_bind( &gui.font, k_font_shader_default, 0, NULL, &ortho ); - shader_model_font_uColour( (v4f){1.2f,1.2f,1.2f,o} ); - font3d_simple_draw( 2, gui.location, &ortho, mmdl ); + struct ui_vert *bg = ui_fill( box, ui_opacity( 0x00000000, opacity ) ); + + u32 w; + box[0] += 16; + w = ui_text( box, buf, 1, k_ui_align_middle_left, fg ); + w *= vg_ui.font->sx; + bg[1].co[0] = x + w + 32; + bg[2].co[0] = x + w + 32; + x += w + 32; + + box[0] = x; + bg = ui_fill( box, ui_opacity( 0x00101010, opacity*0.7f ) ); + box[0] += 8; + w = ui_text( box, helper->text, 1, k_ui_align_middle_left, fg ); + w *= vg_ui.font->sx; + bg[1].co[0] = box[0] + w + 16; + bg[2].co[0] = box[0] + w + 16; + x += w + 32; } - else - font3d_bind( &gui.font, k_font_shader_default, 0, NULL, &ortho ); - float dy = ft/0.79f, - scale = dy*0x1p-4f*0.75f; - - m3x3_identity( mmdl ); - m3x3_scale( mmdl, (v3f){scale,scale,scale} ); - v3_zero( mmdl[3] ); - - float pad = dy*0x1p-4f*0.125f; - mmdl[3][1] = pad; - - for( u32 i=0; ibinding, 1 ); - f32 bs = (f32)vg.window_x / (f32)(gui.helper_count+1), - x = ((f32)i + 1.0f) * bs; - mmdl[3][0] = x - font3d_string_width( 2, buf )*0.5f*scale; + f64 loc_t = (vg.time_real - gui.location_time) / 5.0; + if( (loc_t < 1.0) && (gui.location_time != 0.0) ) + { + f32 t = 1.0f-vg_minf(1.0f,vg_minf(loc_t*20.0f,2.0f-loc_t*2.0f)), + o = 1.0f-t*t*(2.0f-t); - font3d_setcolour( (v4f){1.0f,1.0f,1.0f, helper->greyed? 0.5f: 1.0f} ); - font3d_simple_draw( 2, buf, &ortho, mmdl ); + ui_rect box = { 0, (vg.window_y*2)/3 - height/2, vg.window_x, height }; + ui_fill( box, ui_opacity( 0x00101010, 0.5f ) ); + ui_text( box, gui.location, 1, k_ui_align_middle_center, 0 ); - const char *make_smaller = "\x02\xaf\x03 "; - font3d_draw( make_smaller ); - font3d_draw( helper->text ); - - float w = gui_font3d.offset[0]+1.0f; + vg_ui.colour[3] = o; + ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); } + + vg_ui.colour[3] = 1.0f; + ui_font_face( &vgf_default_small ); } -static int gui_location_print_ccmd( int argc, const char *argv[] ){ +static int gui_location_print_ccmd( int argc, const char *argv[] ) +{ if( argc > 0 ){ char new_loc[64]; vg_str str; diff --git a/input.h b/input.h index 12d27db..e66a860 100644 --- a/input.h +++ b/input.h @@ -131,21 +131,21 @@ static vg_input_op *input_axis_list[] = { vg_end }, [k_sraxis_mbrowse_v] = (vg_input_op[]){ - vg_mode_add, vg_keyboard, SDLK_UP, vg_mode_sub, vg_keyboard, SDLK_DOWN, + vg_mode_add, vg_keyboard, SDLK_UP, vg_mode_sub, vg_joy_axis, SDL_CONTROLLER_AXIS_LEFTY, vg_end }, [k_sraxis_replay_h] = (vg_input_op[]){ - vg_mode_add, vg_keyboard, SDLK_e, vg_mode_sub, vg_keyboard, SDLK_q, - vg_mode_add, vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + vg_mode_add, vg_keyboard, SDLK_e, vg_mode_sub, vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERLEFT, + vg_mode_add, vg_joy_axis, SDL_CONTROLLER_AXIS_TRIGGERRIGHT, vg_end }, [k_sraxis_skid] = (vg_input_op[]){ - vg_mode_add, vg_joy_button, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, vg_mode_sub, vg_joy_button, SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + vg_mode_add, vg_joy_button, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, vg_end }, [k_sraxis_max]=NULL @@ -153,10 +153,10 @@ static vg_input_op *input_axis_list[] = { static vg_input_op *input_joy_list[] = { [k_srjoystick_steer] = (vg_input_op[]){ - vg_index, 0, vg_mode_add, vg_keyboard, SDLK_d, - vg_mode_sub, vg_keyboard, SDLK_a, - vg_index, 1, vg_mode_add, vg_keyboard, SDLK_s, - vg_mode_sub, vg_keyboard, SDLK_w, + vg_index, 0, vg_mode_sub, vg_keyboard, SDLK_a, + vg_mode_add, vg_keyboard, SDLK_d, + vg_index, 1, vg_mode_sub, vg_keyboard, SDLK_w, + vg_mode_add, vg_keyboard, SDLK_s, vg_mode_absmax, vg_joy_ls, vg_end }, diff --git a/maps_src/dev_tutorial/main.mdl b/maps_src/dev_tutorial/main.mdl index 2ec47c5..4539d9f 100644 Binary files a/maps_src/dev_tutorial/main.mdl and b/maps_src/dev_tutorial/main.mdl differ diff --git a/player_dead.c b/player_dead.c index 1dd8c76..72eba26 100644 --- a/player_dead.c +++ b/player_dead.c @@ -178,14 +178,14 @@ void player__dead_transition( enum player_die_type type ) struct gui_helper *h; if( (h = gui_new_helper(input_button_list[k_srbind_reset], &str) )){ - vg_strcat( &str, "rewind" ); + vg_strcat( &str, "Rewind" ); if( world_static.active_instance == k_world_purpose_hub ) h->greyed = 1; } if( gui_new_helper(input_button_list[k_srbind_dead_respawn], &str )) - vg_strcat( &str, "spawn" ); + vg_strcat( &str, "Spawn" ); } void player__dead_animator_exchange( bitpack_ctx *ctx, void *data ) diff --git a/player_remote.c b/player_remote.c index 5b6aef0..43c5607 100644 --- a/player_remote.c +++ b/player_remote.c @@ -442,6 +442,12 @@ void remote_player_network_imgui( m4x4f pv ) ui_rect panel = { (vg.window_x / 2) - 200, 0, 400, 600 }; ui_fill( panel, (ui_colour(k_ui_bg)&0x00ffffff)|0x50000000 ); + ui_font_face( &vgf_default_title ); + ui_info( panel, "Network" ); + ui_font_face( &vgf_default_large ); + ui_info( panel, "Status" ); + ui_font_face( &vgf_default_small ); + char buf[512]; const char *netstatus = "PROGRAMMING ERROR"; @@ -859,13 +865,14 @@ static int player_tag_position( m4x4f pv, v3f root_co, ui_point out_point ){ /* * Draw chat box relative to the root tag position on the screen */ -static void chat_box( ui_point tag_root, f64 time, const char *message ){ +static void chat_box( ui_point tag_root, f64 time, const char *message ) +{ if( (vg.time_real - time) > 15.0 ) return; ui_rect wr; wr[2] = ui_text_line_width( message ) + 8; - wr[3] = vg_ui.font->glyph_height + 2; + wr[3] = vg_ui.font->ch + 2; wr[0] = tag_root[0]-(wr[2]/2); wr[1] = tag_root[1] - wr[3] - 8; @@ -877,8 +884,9 @@ static void chat_box( ui_point tag_root, f64 time, const char *message ){ * Draw full imgui for remote player */ static void remote_player_nametag( ui_point tag_root, - struct network_player *player ){ - vg_ui.font = &vg_ui_font_big; + struct network_player *player ) +{ + ui_font_face( &vgf_default_large ); ui_rect wr; wr[2] = VG_MAX( ui_text_line_width( player->username ), 140 ) + 8; @@ -889,7 +897,7 @@ static void remote_player_nametag( ui_point tag_root, ui_fill( wr, ui_opacity( ui_colour(k_ui_bg), 0.23f ) ); ui_text( wr, player->username, 1, k_ui_align_middle_center, 0 ); - vg_ui.font = &vg_ui_font_small; + ui_font_face( &vgf_default_small ); /* medals */ int cols = 0; @@ -907,10 +915,12 @@ static void remote_player_nametag( ui_point tag_root, for( int i=0; i<3; i ++ ){ if( player->medals[i] ){ ui_rect col = { wr[0] + (f32)cols*w, wr[1] + wr[3], w, - vg_ui.font->glyph_height }; + vg_ui.font->ch }; vg_strnull( &str, buf, 32 ); +#if 0 vg_strcatch( &str, (char)k_SRglyph_vg_circle ); +#endif vg_strcati32( &str, player->medals[i] ); ui_text( col, buf, 1, k_ui_align_middle_center, @@ -967,9 +977,9 @@ static void remote_player_gui_info( ui_rect box, else fg = ui_colour( in_world? k_ui_fg: k_ui_fg+4 ); - vg_ui.font = &vg_ui_font_big; + ui_font_face( &vgf_default_large ); ui_text( top, username, 1, k_ui_align_middle_center, fg ); - vg_ui.font = &vg_ui_font_small; + ui_font_face( &vgf_default_small ); ui_text( bottom, activity, 1, k_ui_align_middle_center, fg ); } @@ -987,10 +997,10 @@ void remote_players_imgui_lobby(void) ui_px y = 50, width = 200, height = 42, gap = 2, x = vg.window_x - width; - vg_ui.font = &vg_ui_font_big; + ui_font_face( &vgf_default_large ); ui_text( (ui_rect){ x, 0, width, height }, "In World", 1, k_ui_align_middle_center, 0 ); - vg_ui.font = &vg_ui_font_small; + ui_font_face( &vgf_default_small ); ui_rect us = { x, y, width, height }; diff --git a/player_replay.c b/player_replay.c index 7abd993..5a6323c 100644 --- a/player_replay.c +++ b/player_replay.c @@ -726,7 +726,7 @@ static void skaterift_replay_update_helpers(void) vg_strnull( &freecam_text, player_replay.helper_freecam->text, GUI_HELPER_TEXT_LENGTH ); vg_strcat( &freecam_text, - player_replay.use_freecam? "exit freecam": "freecam" ); + player_replay.use_freecam? "Exit freecam": "Freecam" ); } static void replay_show_helpers(void) @@ -735,14 +735,14 @@ static void replay_show_helpers(void) vg_str text; if( gui_new_helper( input_axis_list[k_sraxis_replay_h], &text ) ) - vg_strcat( &text, "scrub" ); + vg_strcat( &text, "Scrub" ); if( (player_replay.helper_resume = gui_new_helper( input_button_list[k_srbind_replay_resume], &text )) ) - vg_strcat( &text, "resume" ); + vg_strcat( &text, "Resume" ); if( gui_new_helper( input_button_list[k_srbind_replay_play], &text )) - vg_strcat( &text, "playback" ); + vg_strcat( &text, "Playback" ); player_replay.helper_freecam = gui_new_helper( input_button_list[k_srbind_replay_freecam], &text ); diff --git a/skaterift.c b/skaterift.c index 01f2768..d661fbf 100644 --- a/skaterift.c +++ b/skaterift.c @@ -696,13 +696,16 @@ void vg_render(void) glDisable(GL_DEPTH_TEST); vg_lines_drawall(); glViewport( 0,0, vg.window_x, vg.window_y ); - gui_draw(); + + gui_render_icons(); } void vg_gui(void) { if( skaterift.op == k_async_op_clientloading ) return; + gui_draw(); + if( k_tools_mode ){ ui_rect null; ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; diff --git a/world_map.c b/world_map.c index bc2ab5c..3465776 100644 --- a/world_map.c +++ b/world_map.c @@ -203,11 +203,11 @@ void world_map_enter(void) vg_str text; if( gui_new_helper( input_joy_list[k_srjoystick_steer], &text ) ) - vg_strcat( &text, "move" ); + vg_strcat( &text, "Move" ); if( gui_new_helper( input_button_list[k_srbind_maccept], &text ) ) - vg_strcat( &text, "spawn" ); + vg_strcat( &text, "Spawn" ); if( gui_new_helper( input_button_list[k_srbind_mback], &text ) ) - vg_strcat( &text, "exit" ); + vg_strcat( &text, "Exit" ); }