remove new-style text
authorhgn <hgodden00@gmail.com>
Sun, 23 Jan 2022 21:09:56 +0000 (21:09 +0000)
committerhgn <hgodden00@gmail.com>
Sun, 23 Jan 2022 21:09:56 +0000 (21:09 +0000)
fishladder.c
fishladder_resources.h
fonts/vg_font.png
maps/cmp_add3b.map
vg/vg_pxfont.h

index aca4e406459415dd19ea0edba5a49d063a8807de..493b70401eabe3fec2ad0d5dd8efa1decf3b78d9 100644 (file)
@@ -166,35 +166,6 @@ struct mesh
        u32 elements;
 };
 
-struct
-{
-       GLuint vao;
-       GLuint vbo;
-       GLuint ebo;
-       
-       u32 
-               title_start, title_count,
-               desc_start, desc_count,
-               score_start, score_count,
-               time_start, time_count,
-               grid_start, grid_count
-       ;
-       
-       #pragma pack(push,1)
-       struct vector_glyph_vert
-       {
-               v2f co;
-               v2f uv;
-               
-               u32 colour;
-       } 
-       *buffer;
-       #pragma pack(pop)
-       
-       u16 *indices;
-}
-text_buffers;
-
 static struct world
 {
        // Things that are 'static', aka, initialized once
@@ -339,7 +310,6 @@ static void io_reset(void);
 static struct cell *pcell( v2i pos );
 static void lcell( int id, v2i pos );
 static void map_reclassify( v2i start, v2i end, int update_texbuffer );
-static u32 gen_text_buffer( const char *str, struct sdf_font *font, v2f origin, float size, u32 start );
 static void gen_level_text( struct cmp_level *pLevel );
 static int map_load( const char *str, const char *name );
 static void map_serialize( FILE *stream );
@@ -673,94 +643,8 @@ static void map_reclassify( v2i start, v2i end, int update_texbuffer )
        }
 }
 
-static u32 gen_text_buffer( const char *str, struct sdf_font *font, v2f origin, float size, u32 start )
-{
-       u32 count = 0;
-
-       v2f cursor;
-       v2f invUv;
-       v2_copy( origin, cursor );
-       
-       float invScale = (size / (float)font->size);
-       invUv[0] = 1.0f / (float)font->width;
-       invUv[1] = 1.0f / (float)font->height;
-       
-       u16 base_idx = start * 4;
-       
-       const char *_c = str;
-       char c;
-       while( (c = *(_c ++)) )
-       {
-               if( c == '\n' )
-               {
-                       cursor[1] -= size * 1.25f;
-                       cursor[0] = origin[0];
-               }
-               else if( c >= 32 && c <= 126 )
-               {
-                       struct sdf_char *pch = &font->characters[ c - ' ' ];
-                       struct vector_glyph_vert *vt = &text_buffers.buffer[ count * 4 ];
-                       u16 *ind = &text_buffers.indices[ count * 6 ];
-                       
-                       // Emit quad
-                       v2f p0; v2f uv0;
-                       v2f p1; v2f uv1;
-                       
-                       v2_muladds( cursor, (v2f){ pch->originX, -pch->originY }, -invScale, p0 );
-                       v2_muladds( p0, (v2f){ pch->w, -pch->h }, invScale, p1 );
-                       
-                       v2_mul( (v2f){ pch->uvx, pch->uvy }, invUv, uv0 );                      
-                       v2_muladd( uv0, (v2f){ pch->w, pch->h }, invUv, uv1 );
-                       
-                       v2_copy( p0, vt[0].co );
-                       v2_copy( uv0, vt[0].uv );
-                       vt[0].colour = 0xffffffff;
-                       
-                       v2_copy( (v2f){ p0[0], p1[1] }, vt[1].co );
-                       v2_copy( (v2f){ uv0[0], uv1[1] }, vt[1].uv );
-                       vt[1].colour = 0xffffffff;
-                       
-                       v2_copy( p1, vt[2].co );
-                       v2_copy( uv1, vt[2].uv );
-                       vt[2].colour = 0xffffffff;
-                       
-                       v2_copy( (v2f){ p1[0], p0[1] }, vt[3].co );
-                       v2_copy( (v2f){ uv1[0], uv0[1] }, vt[3].uv );
-                       vt[3].colour = 0xffffffff;
-                       
-                       // Emit indices
-                       ind[0] = base_idx+count*4;
-                       ind[1] = base_idx+count*4+1;
-                       ind[2] = base_idx+count*4+2;
-                       ind[3] = base_idx+count*4;
-                       ind[4] = base_idx+count*4+2;
-                       ind[5] = base_idx+count*4+3;
-                       
-                       cursor[0] += (float)pch->advance * invScale;
-                       count ++;
-               }
-       }
-       
-       glBindVertexArray( text_buffers.vao );
-       
-       glBindBuffer( GL_ARRAY_BUFFER, text_buffers.vbo );
-       glBufferSubData( GL_ARRAY_BUFFER, 
-                       start*4*sizeof( struct vector_glyph_vert ), 
-                       count*4*sizeof( struct vector_glyph_vert ), 
-                       text_buffers.buffer 
-       );
-       
-       glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, text_buffers.ebo );
-       glBufferSubData( GL_ELEMENT_ARRAY_BUFFER, start*6*sizeof(u16), count*6*sizeof(u16), text_buffers.indices );
-       
-       return count;
-}
-
 static void gen_level_text( struct cmp_level *pLevel )
 {
-       text_buffers.title_count = gen_text_buffer( pLevel->title, &font_Ubuntu, (v2f){ -5.0f, -0.6f }, 0.6f, text_buffers.title_start );
-       text_buffers.desc_count = gen_text_buffer( pLevel->description, &font_Ubuntu, (v2f){ -5.0, -0.9f }, 0.25f, text_buffers.desc_start );
-
    // Old style UI.
    ui_px const unit_scale_px = 4*UI_GLYPH_SPACING_X; // 4 char per unit
    ui_begin( &world.st.world_text, world.w*unit_scale_px, world.h*unit_scale_px );
@@ -3071,20 +2955,6 @@ void vg_render(void)
 
        // TEXT ELEMENTS
        // ========================================================================================================
-       SHADER_USE( shader_sdf );
-       glBindVertexArray( text_buffers.vao );
-       glUniformMatrix3fv( SHADER_UNIFORM( shader_sdf, "uPv" ), 1, GL_FALSE, (float *)vg_pv );
-       
-       vg_tex2d_bind( &tex_ubuntu, 0 );
-       glUniform1i( SHADER_UNIFORM( shader_sdf, "uTexGlyphs" ), 0 );
-       
-       glUniform4f( SHADER_UNIFORM( shader_sdf, "uColour" ), 1.0f, 1.0f, 1.0f, 1.0f );
-       glDrawElements( GL_TRIANGLES, text_buffers.title_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.title_start*6*sizeof(u16) ) );
-       glDrawElements( GL_TRIANGLES, text_buffers.desc_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.desc_start*6*sizeof(u16) ) );
-       
-       glUniform4f( SHADER_UNIFORM( shader_sdf, "uColour" ), 1.0f, 1.0f, 1.0f, 0.17f );
-       glDrawElements( GL_TRIANGLES, text_buffers.grid_count*6, GL_UNSIGNED_SHORT, (void*)( text_buffers.grid_start*6*sizeof(u16) ) );
-       
    // Old style
    m3x3f mvp_text;
    m3x3_identity( mvp_text );
@@ -3307,8 +3177,11 @@ void vg_render(void)
 void vg_ui(void) 
 {
    // Drawing world name
-   gui_text( (ui_px [2]){ vg_window_x / 2, 4 }, "THIS IS A WORLD NAME", 2, k_text_align_center );
-   gui_text( (ui_px [2]){ vg_window_x / 2, 28 }, "And here is its cool description yo", 1, k_text_align_center );
+   if( world.pCmpLevel )
+   {
+      gui_text( (ui_px [2]){ vg_window_x / 2, 4 }, world.pCmpLevel->title, 2, k_text_align_center );
+      gui_text( (ui_px [2]){ vg_window_x / 2, 28 }, world.pCmpLevel->description, 1, k_text_align_center );
+   }
 
        if( world.st.state == k_game_state_settings )
        {
@@ -3828,120 +3701,6 @@ void vg_start(void)
       ui_init_context( &world.st.world_text, 15000 );
    }
 
-       // Create text buffers
-       {
-               // Work out the counts for each 'segment'
-               u32 desc_max_size = 0, title_max_size = 0, 
-                       score_max_size = 10,
-                       time_max_size = 10,
-                       
-                       size_level_texts = 6*9*7
-               ;
-               
-               for( int i = 0; i < vg_list_size( career_packs ); i ++ )
-               {
-                       struct career_level_pack *set = &career_packs[i];
-                       for( int j = 0; j < set->count; j ++ )
-                       {
-                               struct cmp_level *lvl = &set->pack[j];
-                               
-                               desc_max_size = VG_MAX( desc_max_size, strlen( lvl->description ) );
-                               title_max_size = VG_MAX( title_max_size, strlen( lvl->title ) );
-                       }
-               }
-               
-               // Full buffer
-               u32 total_characters = 
-                       title_max_size +
-                       desc_max_size +
-                       score_max_size +
-                       time_max_size +
-                       size_level_texts;
-       
-               u32 total_faces = total_characters * 2,
-                       total_vertices = total_characters * 4,
-                       total_indices = total_faces * 3;
-
-               // Working buffer               
-               u32 work_buffer_total_chars = 
-                       VG_MAX( 7, VG_MAX( VG_MAX( desc_max_size, title_max_size ), VG_MAX( score_max_size, time_max_size ) ) );
-                       
-               u32 total_work_faces = work_buffer_total_chars * 2,
-                       total_work_vertices = work_buffer_total_chars * 4,
-                       total_work_indices = total_work_faces * 3;
-
-               text_buffers.title_count = 0;
-               text_buffers.desc_count = 0;
-               text_buffers.score_count = 0;
-               text_buffers.time_count = 0;
-               text_buffers.grid_count = size_level_texts;
-               
-               // Calculate offsets
-               text_buffers.title_start = 0;
-               text_buffers.desc_start = text_buffers.title_start + title_max_size;
-               text_buffers.score_start = text_buffers.desc_start + desc_max_size;
-               text_buffers.time_start = text_buffers.score_start + score_max_size;
-               text_buffers.grid_start = text_buffers.time_start + time_max_size;
-       
-               // Opengl
-               glGenVertexArrays(1, &text_buffers.vao);
-               glGenBuffers( 1, &text_buffers.vbo );
-               glGenBuffers( 1, &text_buffers.ebo );
-               glBindVertexArray( text_buffers.vao );
-               
-               glBindBuffer( GL_ARRAY_BUFFER, text_buffers.vbo );
-               glBufferData( GL_ARRAY_BUFFER, total_vertices * sizeof( struct vector_glyph_vert ), NULL, GL_DYNAMIC_DRAW );
-
-               glBindVertexArray( text_buffers.vao );
-               
-               glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, text_buffers.ebo );
-               glBufferData( GL_ELEMENT_ARRAY_BUFFER, total_indices * sizeof( u16 ), NULL, GL_DYNAMIC_DRAW );
-               
-               u32 const stride = sizeof( struct vector_glyph_vert );
-               
-               // XY
-               glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, stride, (void *)offsetof( struct vector_glyph_vert, co ) );
-               glEnableVertexAttribArray( 0 );
-               
-               // UV
-               glVertexAttribPointer( 1, 2, GL_FLOAT, GL_FALSE, stride, (void *)offsetof( struct vector_glyph_vert, uv ) );
-               glEnableVertexAttribArray( 1 );
-               
-               // COLOUR
-               glVertexAttribPointer( 2, 4, GL_UNSIGNED_BYTE, GL_TRUE, stride, (void *)offsetof( struct vector_glyph_vert, colour ) );
-               glEnableVertexAttribArray( 2 );
-               
-               // Offline memory
-               text_buffers.buffer = (struct vector_glyph_vert *)malloc( total_work_vertices * sizeof(struct vector_glyph_vert) );
-               text_buffers.indices = (u16*)malloc( total_work_indices * sizeof(u16) );
-               
-               char label[8];
-               for( int i = 1; i < 7; i ++ )
-                       label[i] = ' ';
-               label[7] = 0x00;                
-               
-               // Reset grid
-               for( int x = 0; x < 6; x ++ )
-               {
-                       for( int y = 0; y < 9; y ++ )   
-                       {
-                               label[0] = ' ';
-                               
-                               if( x == 0 )
-                               {
-                                       if( y != 8 )
-                                               label[0] = 'A' + y;
-                               }
-                               else if( y == 8 )
-                               {
-                                       label[0] = '0' + x;
-                               }
-                               
-                               gen_text_buffer( label, &font_Ubuntu, (v2f){ -6.0f + x + (x == 0? 0.6f: 0.2f), y + 0.2f }, 0.35f, text_buffers.grid_start+(y*6+x)*7 );
-                       }
-               }
-       }
-       
        // Restore gamestate
        career_local_data_init();
        career_load();
@@ -3956,13 +3715,6 @@ void vg_free(void)
        console_save_map( 0, NULL );
        career_serialize();
 
-       glDeleteVertexArrays( 1, &text_buffers.vao );
-       glDeleteBuffers( 1, &text_buffers.vbo );
-       glDeleteBuffers( 1, &text_buffers.ebo );
-       
-       free( text_buffers.buffer );
-       free( text_buffers.indices );
-
        resource_free_main();
 
        glDeleteTextures( 1, &world.background_data );
index 030a050645ec1d9066c1aef8acf4eea1a912affe..a3a2a87bc08ce8ba3b180035e11d866a00d92661 100644 (file)
@@ -1,119 +1,3 @@
-// FONTS
-
-struct sdf_char
-{
-  u16 uvx, uvy, originX, originY, w, h, advance;
-};
-
-struct sdf_font
-{
-  const char *name;
-  int size, width, height;
-  struct sdf_char *characters;
-};
-
-static struct sdf_char characters_Ubuntu[] = {
-  {655, 167, 9, 9, 18, 18, 11},
-  {561, 64, 6, 42, 25, 52, 13},
-  {435, 167, 6, 45, 32, 30, 20},
-  {797, 64, 7, 42, 46, 51, 32},
-  {362, 0, 6, 46, 39, 60, 27},
-  {918, 0, 7, 43, 55, 52, 41},
-  {973, 0, 7, 43, 47, 52, 32},
-  {467, 167, 6, 45, 23, 30, 11},
-  {142, 0, 5, 46, 30, 64, 15},
-  {172, 0, 9, 46, 30, 64, 15},
-  {291, 167, 7, 42, 38, 37, 23},
-  {171, 167, 6, 35, 40, 42, 27},
-  {410, 167, 7, 14, 25, 31, 12},
-  {625, 167, 8, 26, 30, 22, 14},
-  {558, 167, 6, 15, 25, 24, 12},
-  {0, 0, 10, 46, 39, 64, 18},
-  {88, 64, 7, 43, 41, 52, 27},
-  {532, 116, 5, 42, 32, 51, 27},
-  {370, 64, 6, 43, 39, 52, 27},
-  {409, 64, 6, 43, 39, 52, 27},
-  {176, 116, 7, 42, 42, 51, 27},
-  {448, 64, 6, 42, 39, 52, 27},
-  {170, 64, 6, 42, 40, 52, 27},
-  {343, 116, 6, 42, 40, 51, 27},
-  {854, 0, 6, 43, 40, 53, 27},
-  {210, 64, 7, 43, 40, 52, 27},
-  {146, 167, 6, 34, 25, 43, 12},
-  {564, 116, 7, 34, 26, 51, 12},
-  {211, 167, 6, 34, 40, 39, 27},
-  {370, 167, 6, 30, 40, 32, 27},
-  {251, 167, 6, 34, 40, 39, 27},
-  {525, 64, 8, 43, 36, 52, 19},
-  {401, 0, 6, 43, 57, 59, 45},
-  {700, 64, 9, 42, 49, 51, 32},
-  {218, 116, 5, 42, 42, 51, 31},
-  {769, 0, 6, 43, 44, 53, 30},
-  {935, 64, 5, 42, 45, 51, 34},
-  {383, 116, 5, 42, 40, 51, 27},
-  {423, 116, 5, 42, 38, 51, 26},
-  {724, 0, 6, 43, 45, 53, 32},
-  {45, 116, 5, 42, 44, 51, 34},
-  {590, 116, 5, 42, 23, 51, 13},
-  {487, 64, 9, 42, 38, 52, 24},
-  {89, 116, 5, 42, 44, 51, 30},
-  {461, 116, 5, 42, 38, 51, 25},
-  {646, 64, 6, 42, 54, 51, 42},
-  {0, 116, 5, 42, 45, 51, 35},
-  {674, 0, 6, 43, 50, 53, 37},
-  {302, 116, 5, 42, 41, 51, 29},
-  {312, 0, 6, 43, 50, 61, 37},
-  {133, 116, 5, 42, 43, 51, 30},
-  {813, 0, 7, 43, 41, 53, 25},
-  {0, 64, 8, 42, 44, 52, 27},
-  {44, 64, 5, 42, 44, 52, 33},
-  {749, 64, 8, 42, 48, 51, 31},
-  {586, 64, 8, 42, 60, 51, 44},
-  {843, 64, 8, 42, 46, 51, 30},
-  {889, 64, 9, 42, 46, 51, 28},
-  {260, 116, 7, 42, 42, 51, 27},
-  {202, 0, 4, 46, 29, 64, 16},
-  {39, 0, 10, 46, 39, 64, 18},
-  {231, 0, 9, 46, 29, 64, 16},
-  {329, 167, 7, 42, 41, 36, 27},
-  {583, 167, 9, 4, 42, 22, 23},
-  {490, 167, 6, 46, 27, 28, 18},
-  {695, 116, 7, 34, 38, 44, 25},
-  {458, 0, 5, 46, 40, 56, 28},
-  {733, 116, 7, 34, 37, 44, 22},
-  {498, 0, 7, 46, 40, 56, 28},
-  {655, 116, 7, 34, 40, 44, 27},
-  {641, 0, 5, 46, 33, 55, 18},
-  {250, 64, 7, 34, 40, 52, 27},
-  {603, 0, 5, 46, 38, 55, 27},
-  {894, 0, 6, 44, 24, 53, 12},
-  {282, 0, 12, 44, 30, 62, 12},
-  {564, 0, 5, 46, 39, 55, 25},
-  {538, 0, 5, 46, 26, 56, 13},
-  {860, 116, 5, 34, 52, 43, 41},
-  {0, 167, 5, 34, 38, 43, 27},
-  {613, 116, 7, 34, 42, 44, 28},
-  {290, 64, 5, 34, 40, 52, 28},
-  {330, 64, 7, 34, 40, 52, 28},
-  {113, 167, 5, 34, 33, 43, 18},
-  {770, 116, 7, 34, 36, 44, 21},
-  {499, 116, 5, 42, 33, 51, 19},
-  {38, 167, 5, 34, 38, 43, 27},
-  {912, 116, 8, 34, 41, 43, 24},
-  {806, 116, 8, 34, 54, 43, 37},
-  {953, 116, 8, 34, 41, 43, 24},
-  {129, 64, 9, 34, 41, 52, 24},
-  {76, 167, 7, 34, 37, 43, 22},
-  {78, 0, 7, 46, 32, 64, 16},
-  {260, 0, 4, 46, 22, 64, 13},
-  {110, 0, 9, 46, 32, 64, 16},
-  {517, 167, 7, 27, 41, 26, 27},
-};
-
-static struct sdf_font font_Ubuntu = {"Ubuntu", 48, 1024, 256, characters_Ubuntu};
-
-vg_tex2d tex_ubuntu = { .path = "textures/ubuntu.qoi" };
-
 // TEXTURES
 // ===========================================================================================================
 
@@ -140,7 +24,6 @@ vg_tex2d *texture_list[] = {
    &tex_monofur, 
    &tex_unkown, 
    &tex_buttons, 
-   &tex_ubuntu, 
    &tex_sprites 
 };
 
@@ -590,38 +473,6 @@ SHADER_DEFINE( shader_buttons,
        UNIFORMS({ "uPv", "uOffset", "uTexMain", "uColour" })
 )
 
-SHADER_DEFINE( shader_sdf,
-
-       // VERTEX
-       "layout (location=0) in vec2 a_co;"
-       "layout (location=1) in vec2 a_uv;"
-       "uniform mat3 uPv;"
-       ""
-       "out vec2 aTexCoords;"
-       ""
-       "void main()"
-       "{"
-               "gl_Position = vec4( uPv * vec3( a_co, 1.0 ), 1.0 );"
-               "aTexCoords = a_uv;"
-       "}",
-       
-       // FRAGMENT
-       "uniform sampler2D uTexGlyphs;"
-       "uniform vec4 uColour;"
-       "out vec4 FragColor;"
-       ""
-       "in vec2 aTexCoords;"
-       ""
-       "void main()"
-       "{"
-               "vec4 glyph = texture( uTexGlyphs, aTexCoords );"
-               "FragColor = vec4( uColour.rgb, smoothstep( 0.46, 0.54, glyph.r ) * uColour.a );"
-               //"FragColor = glyph;"
-       "}"
-       ,
-       UNIFORMS({ "uPv", "uTexGlyphs", "uColour" })
-)
-
 SHADER_DEFINE( shader_sprite,
 
        // VERTEX
@@ -663,7 +514,6 @@ void vg_register(void)
        SHADER_INIT( shader_background );
        SHADER_INIT( shader_wire );
        SHADER_INIT( shader_buttons );
-       SHADER_INIT( shader_sdf );
        SHADER_INIT( shader_sprite );
 }
 
@@ -724,7 +574,6 @@ struct cmp_level
 
 static struct cmp_level cmp_levels_tutorials[] = 
 {
-       // r1
        {
                .serial_id = 0,
                .title = "PRINCIPLE 1",
@@ -735,7 +584,6 @@ static struct cmp_level cmp_levels_tutorials[] =
                ._unlock = 1,
                .is_tutorial = 1
        },
-       // r1
        {
                .serial_id = 1,
                .title = "PRINCIPLE 2",
@@ -746,7 +594,6 @@ static struct cmp_level cmp_levels_tutorials[] =
                ._unlock = 2,
                .is_tutorial = 1,
        },
-       // r1
        {
                .serial_id = 2,
                .title = "PRINCIPLE 3",
@@ -757,7 +604,6 @@ static struct cmp_level cmp_levels_tutorials[] =
                ._unlock = 12,
                .is_tutorial = 1
        },
-       // r1
        {
                .serial_id = 12,
                .title = "PRINCIPLE 4",
@@ -768,12 +614,31 @@ static struct cmp_level cmp_levels_tutorials[] =
                ._unlock = 6,
                .is_tutorial = 1,
                .achievement = "TUTORIALS"
+       },
+       {
+               .serial_id = 15,
+               .title = "PRINCIPLE 5",
+               .map_name = "cmp_b10",
+               .description = 
+                       "",
+
+               ._unlock = 16,
+               .is_tutorial = 1
+       },
+       {
+               .serial_id = 17,
+               .title = "PRINCIPLE 6",
+               .map_name = "cmp_b11",
+               .description =
+                       "(Right click)",
+
+               ._unlock = 18,
+               .is_tutorial = 1
        }
 };
 
 static struct cmp_level cmp_levels_basic[] =
 {
-       // r2 GM
        {
                .serial_id = 6,
                .title = "PATCH",
@@ -784,7 +649,6 @@ static struct cmp_level cmp_levels_basic[] =
                ._unlock = 7,
                ._linked = 3
        },
-       // r1 GM
        {
                .serial_id = 3,
                .title = "SUBDIVISION 1",
@@ -795,7 +659,6 @@ static struct cmp_level cmp_levels_basic[] =
                ._linked = 4,
                ._unlock = 5
        },
-       // r1 GM
        {
                .serial_id = 4,
                .title = "SUBDIVISION 2",
@@ -805,7 +668,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._unlock = 7
        },
-       // r1 GM
        {
                .serial_id = 5,
                .title = "RESTRUCTURE",
@@ -815,7 +677,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._unlock = 8
        },
-       // r2 GM
        {
                .serial_id = 7,
                .title = "PATTERNS 1",
@@ -826,7 +687,6 @@ static struct cmp_level cmp_levels_basic[] =
                ._unlock = 15,
                ._linked = 8
        },
-       // r2 GM
        {
                .serial_id = 8,
                .title = "PATTERNS 2",
@@ -836,18 +696,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._unlock = 15
        },
-       // r2 GM
-       {
-               .serial_id = 15,
-               .title = "PRINCIPLE 5",
-               .map_name = "cmp_b10",
-               .description = 
-                       "",
-
-               ._unlock = 16,
-               .is_tutorial = 1
-       },
-       // r2 GM
        {
                .serial_id = 16,
                .title = "ROUTING PROBLEM",
@@ -857,7 +705,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._linked = 9
        },
-       // r2 GM
        {
                .serial_id = 9,
                .title = "MIGHTY CONSUMER",
@@ -878,7 +725,6 @@ static struct cmp_level cmp_levels_basic[] =
 
                ._unlock = 17
        },
-       // r2 GM
        {
                .serial_id = 11,
                .title = "REVERSE",
@@ -888,18 +734,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._unlock = 17
        },
-       // r2 GM
-       {
-               .serial_id = 17,
-               .title = "PRINCIPLE 6",
-               .map_name = "cmp_b11",
-               .description =
-                       "(Right click)",
-
-               ._unlock = 18,
-               .is_tutorial = 1
-       },
-       // r2 GM
        {
                .serial_id = 18,
                .title = "NOT GATE",
@@ -909,7 +743,6 @@ static struct cmp_level cmp_levels_basic[] =
                ._linked = 19,
                ._unlock = 20
        },
-       // r2 GM
        {
                .serial_id = 19,
                .title = "AND GATE",
@@ -918,7 +751,6 @@ static struct cmp_level cmp_levels_basic[] =
                
                ._unlock = 20
        },
-       // r2 GM
        {
                .serial_id = 20,
                .title = "QUALIFICATION PROJECT",
@@ -950,7 +782,6 @@ static struct cmp_level cmp_levels_grad[] =
                ._linked = 21
                
        },
-       // r2 GM
        {
                .serial_id = 21,
                .title = "SIMPLE ADDITION",
@@ -960,7 +791,6 @@ static struct cmp_level cmp_levels_grad[] =
                ._linked = 22,
                ._unlock = 23
        },
-       // r2 GM
        {
                .serial_id = 22,
                .title = "SECRET CODE",
@@ -983,25 +813,25 @@ static struct cmp_level cmp_levels_computer[] =
        },
        {
                .serial_id = 24,
-               .title = "3 BIT ADDITION",
+               .title = "3 BIT ADDER",
                .map_name = "cmp_add3b",
-               .description = "",
+               .description = "binary addition",
       .strings = 
       {
          {
             .placement = k_placement_top,
             //.str ="\t\t\t\t\t\t\t\t\t|      NUMBER A     |       |      NUMBER B     |\n"
             .str =""
-"\t\t\t\t\t\t\t\t\t\x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82       \x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82\n"
-"\t\t\t\t\t\t\t\t\t\x83 4       2       1 \x84  add  \x83 4       2       1 \x84\n"
+"\t\t\t\t\t\t\t\t\t\x8A 4       2       1 \x8B       \x8A 4       2       1 \x8B\n"
+"\t\t\t\t\t\t\t\t\t\x83                   \x84  add  \x83                   \x84\n"
 "\t\t\t\t\t\t\t\t\t\x83                   \x84       \x83                   \x84"
          },
          {
             .placement = k_placement_bottom,
             .str =
 "\t\t\t\x83                           \x84\n"
-"\t\t\t\x83 8       4       2       1 \x84 result a+b\n"
-"\t\t\t\x85\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x87\x86"
+"\t\t\t\x83                           \x84 result a+b\n"
+"\t\t\t\x83 8       4       2       1 \x84"
          }
       },
 
@@ -1032,29 +862,29 @@ career_packs[] =
                .pack = cmp_levels_tutorials,
                .count = vg_list_size( cmp_levels_tutorials ),
                .primary_colour = { 0.204f, 0.345f, 0.553f },
-               .origin = { -5, 0 },
-               .dims = { 1, 4 }
+               .origin = { -5, -2 },
+               .dims = { 1, 7 }
        },
        {
                .pack = cmp_levels_basic,
                .count = vg_list_size( cmp_levels_basic ),
                .primary_colour = { 0.304f, 0.245f, 0.553f },
-               .origin = { -3, 0 },
-               .dims = { 3, 5 }
+               .origin = { -3, -2 },
+               .dims = { 3, 7 }
        },
        {
                .pack = cmp_levels_grad,
                .count = vg_list_size( cmp_levels_grad ),
                .primary_colour = { 0.553f, 0.345f, 0.204f },
                .origin = { -5, 6 },
-               .dims = { 4, 1 }
+               .dims = { 5, 1 }
        },
        {
                .pack = cmp_levels_computer,
                .count = vg_list_size( cmp_levels_computer ),
                .primary_colour = { 0.75f, 0.23f, 0.39f },
                .origin = { -5, 8 },
-               .dims = { 5, 1 }
+               .dims = { 5, 2 }
        }
 };
 
index f669d8ca0b51084eb4994beae941c5ecccf83915..892a6dd421322a70a9a4627b25b0cd24db968d3a 100644 (file)
Binary files a/fonts/vg_font.png and b/fonts/vg_font.png differ
index 59d190ace5ac3423185a2f170a0eae12bdbd7237..5d18ed442db0d0b583a8131657f4d87a3eb22ffb 100644 (file)
@@ -1,5 +1,5 @@
 ########################;
-###-#-#-#-##############;:b:b:b,b:::b,::b:b,b:::
+###-.-.-.-##############;:b:b:b,b:::b,::b:b,b:::
 ##                    ##;
 ##                    ##;
 ##                    ##;
@@ -24,5 +24,5 @@
 ##                    ##;
 ##                    ##;
 ##                    ##;
-#########+#+#+##+#+#+###;::b:b,b::b:b,:b:b:b,:b::b,b:b:b:b,b:b:b:b
+#########+.+.+##+.+.+###;::b:b,b::b:b,:b:b:b,:b::b,b:b:b:b,b:b:b:b
 ########################;
index 0bf1cf5e56a70db6f530b906774b22a5a1e4b8e9..a67a48d30c50dca46162c289176e421f6fa776ad 100644 (file)
@@ -99,7 +99,7 @@
 0,0,0,0,0,0,0,0,
 0x3000000,0,0,0,0,0,0,0,
 0x3000000,0,0,0,0,0,0,0,
-0x1800000,0x6000000,0x600000,0,0x6000180,0x1800600,0x6000000,0,
+0x1800000,0x6000000,0x600000,0,0x6000180,0x1800600,0,0,
 0x800000,0x6000000,0x600000,0,0x6000180,0x1800600,0x6000000,0,
 0x1c0,0x60003c0,0x6003c0,0x1e003c0,0x6000000,0x600,0x60007e0,0x3c007e0,
 0x3e0,0x7c007e0,0x3e007e0,0x3e007e0,0x6000380,0x38006e0,0x6000ff0,0x7e00ff0,
 0x3e0,0x6600600,0x66006e0,0x3000660,0x7e00180,0x1800780,0x6000db0,0x6600c30,
 0x660,0x6600600,0x66007c0,0x3000660,0x6600180,0x18007c0,0x6000c30,0x6600c30,
 0x660,0x6600600,0x6600700,0x3e007e0,0x6600180,0x18006c0,0x6000c30,0x6600e70,
-0x7e0,0x7e007e0,0x7e003e0,0x3c003e0,0x6600180,0x1800660,0x7e00c30,0x6600ff0,
-0x3e0,0x7c003c0,0x3e001c0,0x3000060,0x6600180,0x1800660,0x3e00c30,0x66007e0,
+0x7e0,0x7e007e0,0x7e003e0,0x3c003e0,0x6600180,0x1800660,0x7c00c30,0x6600ff0,
+0x3e0,0x7c003c0,0x3e001c0,0x3000060,0x6600180,0x1800660,0x3c00c30,0x66007e0,
 0,0,0,0x70007e0,0,0x3800000,0,0,
 0,0,0,0x60003c0,0,0x3000000,0,0,
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0xc0,0x300,0,
-0,0,0x3000000,0,0,0x1c0,0x1800380,0,
-0,0,0x3000000,0,0,0x180,0x1800180,0x1ce0,
+0,0,0,0,0,0x1c0,0x1800380,0,
+0,0,0,0,0,0x180,0x1800180,0x1ce0,
 0x3c003c0,0x1c001c0,0x3000660,0xc300c30,0xc300660,0x7e00180,0x1800180,0x3ff0,
 0x7e007e0,0x3c003c0,0x3000660,0xc300c30,0xe700660,0x7e00380,0x18001c0,0x7303ff0,
 0x6600660,0x3000300,0x3c00660,0x6600c30,0x7e00660,0xe00700,0x18000e0,0xfb03ff0,
 0,0x100,0x800100,0x800000,0x8000010,0,0,0,
 0,0,0,0,0x8000010,0,0,0,
 0,0x100,0x800100,0x800000,0x8000010,0,0,0,
-0x1b66db6,0x6d800100,0x800100,0x800000,0x68000016,0,0,0,
+0x1b66db6,0x6d800100,0x800100,0x800000,0x68000016,0x1800180,0,0,
 0,0,0,0,0x8000010,0,0,0,
-0x1000000,0x800100,0x8001b6,0x6d806db6,0x8000010,0,0,0,
-0x1000000,0x800100,0x800000,0,0x8000010,0,0,0,
+0x1000000,0x800100,0x8001b6,0x6d806db6,0x8000010,0x1000080,0,0,
+0x1000000,0x800100,0x800000,0,0x8000010,0x1000080,0,0,
 0,0,0,0,0x8000010,0,0,0,
-0x1000000,0x800100,0x800000,0,0x4000020,0,0,0,
-0x1000000,0x800100,0x800000,0,0x2000040,0,0,0,
+0x1000000,0x800100,0x800000,0,0x4000020,0x1000080,0,0,
+0x1000000,0x800100,0x800000,0,0x2000040,0x1000080,0,0,
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,