X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder.c;h=842bb64846d0af9facf5900e45aa24ad58841134;hb=42fc2b14afbe5a37bdd469b9bac5f642bc50ccc4;hp=74a39ce4de1bcd955e8c5db78b89b5ca3e6222b9;hpb=499bcabb125cdf2618a6be89ccade08b007254f3;p=fishladder.git diff --git a/fishladder.c b/fishladder.c index 74a39ce..842bb64 100644 --- a/fishladder.c +++ b/fishladder.c @@ -23,9 +23,9 @@ Reverse order New things to program: - UI text element renderer (SDF) - Particle system thing for ball collision - Level descriptions / titles + UI text element renderer (SDF) DONE(sorta) + Particle system thing for ball collision + Level descriptions / titles HALF Row Gridlines for I/O Play button / Speed controller @@ -355,7 +355,7 @@ struct world int num_fishes; - char map_name[128]; + char map_name[64]; struct career_level *ptr_career_level; u32 score; @@ -402,9 +402,9 @@ static int map_load( const char *str, const char *name ) // Scan for width for(;; world.w ++) { - if( str[world.w] == ';' ) + if( c[world.w] == ';' ) break; - else if( !str[world.w] ) + else if( !c[world.w] ) { vg_error( "Unexpected EOF when parsing level\n" ); return 0; @@ -1965,6 +1965,27 @@ void vg_render(void) } + // Level title + ui_begin( &ui_global_ctx, 512, 256 ); + + ui_global_ctx.override_colour = 0xff9a8a89; + //ui_text( &ui_global_ctx, world.map_title, 6, 0 ); + ui_global_ctx.override_colour = 0xffffffff; + + ui_resolve( &ui_global_ctx ); + + m3x3f world_text; + m3x3_copy( vg_pv, world_text ); + m3x3_translate( world_text, (v3f){ 1.55f, 1.9f, 0.0f } ); + m3x3_rotate( world_text, VG_PIf*0.5f ); + m3x3_scale( world_text, (v3f){0.01f,-0.01f,0.01f} ); + + ui_draw( &ui_global_ctx, world_text ); + + // Main + // ========================================================================================= + + use_mesh( &world.tile ); SHADER_USE( shader_tile_main ); m2x2f subtransform; @@ -2311,12 +2332,49 @@ void vg_render(void) level_ui_space[1] -= 0.01f; draw_numbers( level_ui_space, i ); } - - //use_mesh( &world.numbers ); - //draw_numbers( (v3f){ 0.0f, -0.5f, 0.1f }, 128765 ); } void vg_ui(void) { + ui_global_ctx.cursor[0] = 0; + ui_global_ctx.cursor[1] = 0; + ui_global_ctx.cursor[2] = 256; + + ui_fill_y( &ui_global_ctx ); + ui_new_node( &ui_global_ctx ); + { + ui_fill_rect( &ui_global_ctx, ui_global_ctx.cursor, 0xff5577ff ); + + ui_text( &ui_global_ctx, "MARBLE COMPUTING", 4, 0 ); + + ui_global_ctx.cursor[1] += 45; + ui_global_ctx.cursor[3] = 709; + + // Level scroll view + ui_new_node( &ui_global_ctx ); + { + ui_fill_rect( &ui_global_ctx, ui_global_ctx.cursor, 0xffff7729 ); + ui_set_clip( &ui_global_ctx, ui_global_ctx.cursor ); + + ui_global_ctx.cursor[3] = 50; + ui_global_ctx.cursor[2] = 240; + + for( int i = 0; i < vg_list_size(cmp_levels_basic); i ++ ) + { + struct cmp_level *lvl_info = &cmp_levels_basic[i]; + + ui_new_node( &ui_global_ctx ); + { + ui_fill_rect( &ui_global_ctx, ui_global_ctx.cursor, i&0x1?0xff23fce45:0xff8722f8 ); + ui_text( &ui_global_ctx, lvl_info->title, 3, 0 ); + } + ui_end_down( &ui_global_ctx ); + } + + ui_release_clip( &ui_global_ctx ); + } + ui_end_down( &ui_global_ctx ); + } + ui_end( &ui_global_ctx ); }