bunch of stuff for pre-alpha build
[fishladder.git] / vg / vg_ui.h
index 45120fd8b03b0740d234459f876e043da28e345a..bf9adc85549d761ecbd833c5df438aa1ad1c3b31 100644 (file)
@@ -35,7 +35,7 @@ SHADER_DEFINE( shader_ui,
 )
 
 #define UI_AUTO_FILL 0
-#define UI_DEBUG
+//#define UI_DEBUG
 
 // Types
 // ===========================================================================================================
@@ -437,6 +437,8 @@ static void ui_text( ui_ctx *ctx, const char *str, ui_px scale, int alignment )
        text_cursor[2] = 7*scale;
        text_cursor[3] = 7*scale;
 
+       u32 current_colour = 0xffffffff;
+
        const char *_c = str;
        char c;
        while( (c = *(_c ++)) )
@@ -457,7 +459,43 @@ static void ui_text( ui_ctx *ctx, const char *str, ui_px scale, int alignment )
                        glyph_base[0] *= 7;
                        glyph_base[1] *= 7;
                        
-                       ui_fill_rect_uv( ctx, text_cursor, 0xffffffff, (ui_px[4]){glyph_base[0],glyph_base[1],glyph_base[0]+7,glyph_base[1]+7} );
+                       ui_fill_rect_uv( ctx, text_cursor, current_colour, (ui_px[4]){glyph_base[0],glyph_base[1],glyph_base[0]+7,glyph_base[1]+7} );
+               }
+               else if( c == '\x1B' )
+               {
+                       _c ++;
+                       u16 colour_id = 0;
+                       for( int i = 0; i < 3; i ++ )
+                       {
+                               if( _c[i] )
+                               {
+                                       if( _c[i] == 'm' )
+                                       {
+                                               _c = _c + i + 1;
+                                               
+                                               switch( colour_id )
+                                               {
+                                                       case '0': current_colour = 0xffffffff; break;
+                                                       case '3'|'1'<<8: current_colour = 0xff201fee; break;
+                                                       case '3'|'2'<<8: current_colour = 0xff37e420; break;
+                                                       case '3'|'3'<<8: current_colour = 0xff0ed8e2; break;
+                                                       case '3'|'4'<<8: current_colour = 0xfff15010; break;
+                                                       case '3'|'5'<<8: current_colour = 0xffee20ee; break;
+                                                       case '3'|'6'<<8: current_colour = 0xffeeee20; break;
+                                                       case '3'|'7'<<8: current_colour = 0xffffffff; break;
+                                               }
+                                               
+                                               break;
+                                       }
+                                       
+                                       colour_id |= _c[i] << (i*8);
+                               } 
+                               else
+                               {
+                                       _c = _c +i;
+                                       break;
+                               }
+                       }
                }
                
                text_cursor[0] += 6*scale;
@@ -646,6 +684,7 @@ static void ui_test(void)
                
        ui_set_mouse( &ui_global_ctx, vg_mouse[0], vg_mouse[1], mouse_state );
        
+       /*
        static struct ui_window window =
        {
                .transform = { 20, 20, 500, 350 },
@@ -689,13 +728,25 @@ static void ui_test(void)
                ui_end_right( &ui_global_ctx );
        }
        ui_end( &ui_global_ctx );
-
+       */
+       
+       ui_rect rbf;
+       ui_rect_copy( ui_global_ctx.cursor, rbf );
+       
+       ui_global_ctx.cursor[0] = 6;
+       ui_global_ctx.cursor[3] = 21;
+       ui_fill_x( &ui_global_ctx );
+       ui_align_bottom( &ui_global_ctx );
+       ui_text( &ui_global_ctx, "Marble computer build 2 -- development version -- (C) Harry Godden 2021\nAknowledgements: 'credits' in console (`)", 1, 0 );
+       
        ui_resolve( &ui_global_ctx );
        
        m3x3f view = M3X3_IDENTITY;
        m3x3_translate( view, (v3f){ -1.0f, 1.0f, 0.0f } );
        m3x3_scale( view, (v3f){ 1.0f/((float)vg_window_x*0.5f), -1.0f/((float)vg_window_y*0.5f), 1.0f } );
-       vg_lines_drawall( (float*)view );
+       //vg_lines_drawall( (float*)view );
        
        ui_draw( &ui_global_ctx );
+       
+       ui_rect_copy( rbf, ui_global_ctx.cursor );
 }