X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=gui.h;h=e4d0068889de65ee8abc83aa2cc2a1bd7f93c185;hb=74174e4357c402824302174845f89b975dba5981;hp=2ec0a5070afb4640cdf97d3fbef2e8178a9c896e;hpb=223e75026f958029f9664380ed20a5daa3ee2ae7;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/gui.h b/gui.h index 2ec0a50..e4d0068 100644 --- a/gui.h +++ b/gui.h @@ -10,7 +10,11 @@ struct{ helpers[4]; u32 helper_count; - float factive; + char location[64]; + f64 location_time; + + f32 factive; + font3d font; } static gui; @@ -34,6 +38,7 @@ void gui_draw(void) ortho.mtx.p[3][3] = 1.0f; m4x3_identity( ortho.transform ); camera_update_view( &ortho ); + m4x4_mul( ortho.mtx.p, ortho.mtx.v, ortho.mtx.pv ); /* HACK */ camera_finalize( &ortho ); gui.factive = vg_lerpf( gui.factive, gui.helper_count?1.0f:0.0f, @@ -51,14 +56,46 @@ void gui_draw(void) render_fsquad1(); } - font3d *font = &world_global.font; - font3d_bind( font, &ortho ); + f64 loc_t = (vg.time - 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); + + shader_blitcolour_use(); + shader_blitcolour_uColour( (v4f){ 0.0f, 0.0f, 0.0f, o*0.5f } ); + render_fsquad2(); + + f32 dy = ft/0.79f, + scale = dy*0x1p-4f*0.5f; + + m4x3f mmdl; + 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( &gui.font,2,gui.location ); + + mmdl[3][0] = fr*0.5f - w*scale*0.5f; + mmdl[3][1] = 0.3f*ft+pad*2.0f; + + font3d_bind( &gui.font, &ortho ); + shader_model_font_uColour( (v4f){1.2f,1.2f,1.2f,o} ); + font3d_simple_draw( &gui.font, 2, gui.location, &ortho, mmdl ); + } + + font3d_bind( &gui.font, &ortho ); float dy = ft/0.79f, scale = dy*0x1p-4f*0.75f; m4x3f mmdl; - v4f q; m3x3_identity( mmdl ); m3x3_scale( mmdl, (v3f){scale,scale,scale} ); v3_zero( mmdl[3] ); @@ -73,7 +110,7 @@ void gui_draw(void) shader_model_font_uColour( (v4f){1.0f,1.0f,1.0f,1.0f} ); struct font3d_render render; - font3d_begin( font, 2, &ortho, mmdl, &render ); + font3d_begin( &gui.font, 2, &ortho, mmdl, &render ); render.u8pch = (u8*)helper->bindstr; font3d_draw( &render ); @@ -103,4 +140,27 @@ void gui_helper_action( const char *bindstr, const char *text ) helper->text = text; } +VG_STATIC +int gui_location_print_ccmd( int argc, const char *argv[] ){ + if( argc > 0 ){ + char new_loc[64]; + vg_str str; + vg_strnull( &str, new_loc, 64 ); + for( int i=0; i