ui gpu clipping
[fishladder.git] / fishladder.c
index 74a39ce4de1bcd955e8c5db78b89b5ca3e6222b9..842bb64846d0af9facf5900e45aa24ad58841134 100644 (file)
@@ -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 );
 }