X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=gui.h;h=c60c51be00b975e6f001509b3bb01b8faf4f6f9f;hb=HEAD;hp=c6ebe715b0441ac3a94245f69124d92b80f0a854;hpb=72c12c4df36ca69a84e3681a11945bab72db7eb0;p=carveJwlIkooP6JGAAIwe30JlM.git 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;