X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg%2Fvg_console.h;fp=vg%2Fvg_console.h;h=1a4813c7d7437ce1dc0ba2eebdfe6b41dcd7238c;hb=3b9fa3ad6ac1ff919f31fafaeceac689c7c4736b;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=ed4d77304bd5515253b4048fabbc9a4da81a6f44;p=fishladder.git diff --git a/vg/vg_console.h b/vg/vg_console.h index e69de29..1a4813c 100644 --- a/vg/vg_console.h +++ b/vg/vg_console.h @@ -0,0 +1,79 @@ +struct vg_console +{ + struct vg_convar + { + void *data; + const char *name; + + enum vg_convar_dtype + { + k_convar_dtype_i32, + k_convar_dtype_u32, + k_convar_dtype_f32 + } + data_type; + } + *convars; + + char lines[16][512]; + u32 current, len; +} +vg_console; + +static void vg_convar_push( struct vg_convar cv ) +{ + arrpush( vg_console.convars, cv ); +} + +static void vg_console_draw( void ) +{ + int ptr = vg_console.current - vg_console.len; + if( ptr <= 0 ) + ptr += vg_list_size( vg_console.lines ); + ptr --; + + ui_global_ctx.cursor[0] = 0; + ui_global_ctx.cursor[1] = 0; + ui_global_ctx.cursor[3] = vg_console.len*8; + ui_fill_x( &ui_global_ctx ); + + ui_new_node( &ui_global_ctx ); + { + ui_fill_rect( &ui_global_ctx, ui_global_ctx.cursor, 0x77333333 ); + + ui_global_ctx.cursor[3] = 8; + ui_align_bottom( &ui_global_ctx ); + + for( int i = 0; i < vg_console.len; i ++ ) + { + ui_text( &ui_global_ctx, vg_console.lines[ptr], 1, 0 ); + ui_global_ctx.cursor[1] -= 8; + + ptr --; + if( ptr < 0 ) + ptr = vg_list_size( vg_console.lines )-1; + } + } + ui_end_down( &ui_global_ctx ); +} + +void vg_console_println( const char *str ) +{ + if( vg_console.len < vg_list_size( vg_console.lines ) ) + vg_console.len ++; + + strcpy( vg_console.lines[ vg_console.current ++ ], str ); + + if( vg_console.current >= vg_list_size( vg_console.lines ) ) + vg_console.current = 0; +} + +static void vg_console_init(void) +{ + vg_log_callback = vg_console_println; +} + +static void vg_console_free(void) +{ + arrfree( vg_console.convars ); +}