fix
authorhgn <hgodden00@gmail.com>
Tue, 21 Sep 2021 22:34:40 +0000 (23:34 +0100)
committerhgn <hgodden00@gmail.com>
Tue, 21 Sep 2021 22:34:40 +0000 (23:34 +0100)
1  2 
fishladder.c

diff --cc fishladder.c
index 62ed2a19491378cd50b9e62013bfdbe6ea03c236,38361e6bdf06942b550948b3548eb4320d916e71..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,28 -1,321 +1,0 @@@
--// Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved
--
--//#define VG_STEAM
--#include "vg/vg.h"
 -
 -SHADER_DEFINE( shader_tile_colour,
 -
 -      // VERTEX
 -      "layout (location=0) in vec2 a_co;"
 -      "uniform mat3 uPv;"
 -      "uniform vec2 uOffset;"
 -      ""
 -      "void main()"
 -      "{"
 -              "gl_Position = vec4( uPv * vec3( a_co + uOffset, 1.0 ), 1.0 );"
 -      "}",
 -      
 -      // FRAGMENT
 -      "out vec4 FragColor;"
 -      "uniform vec4 uColour;"
 -      ""
 -      "void main()"
 -      "{"
 -              "FragColor = uColour;"
 -      "}"
 -      ,
 -      UNIFORMS({ "uPv", "uOffset", "uColour" })
 -)
--
--m3x3f m_projection;
--m3x3f m_view;
--m3x3f m_mdl;
--
- int main( int argc, char *argv[] ) { vg_init( argc, argv, "FishLadder" ); }
 -#define FLAG_INPUT 0x1
 -#define FLAG_OUTPUT 0x2
 -#define FLAG_CANAL 0x4
 -#define FLAG_WALL 0x8
--
- void vg_register(void){}
- void vg_start(void){}
- void vg_update(void){}
 -struct world
 -{
 -      struct cell
 -      {
 -              u32 state;
 -      } 
 -      *data;
 -      
 -      struct cell_terminal
 -      {
 -              char *conditions;
 -              int id;
 -      }
 -      *io;
 -      
 -      u32 w, h;
 -      
 -      GLuint tile_vao;
 -      GLuint tile_vbo;
 -      
 -      int selected;
 -} world = {};
--
- void vg_render(void) 
 -static void map_free(void)
 -{
 -      for( int i = 0; i < arrlen( world.io ); i ++ )
 -              arrfree( world.io[ i ].conditions );
 -      
 -      arrfree( world.data );
 -      arrfree( world.io );
 -      
 -      world.w = 0;
 -      world.h = 0;
 -      world.data = NULL;
 -      world.io = NULL;
 -}
 -
 -static int map_load( const char *str )
 -{
 -      map_free();
 -
 -      char const *c = str;
 -      
 -      // Scan for width
 -      for(;; world.w ++)
 -      {
 -              if( str[world.w] == ';' )
 -                      break;
 -              else if( !str[world.w] )
 -              {
 -                      vg_error( "Unexpected EOF when parsing level\n" );
 -                      return 0;
 -              }
 -      }
 -      
 -      struct cell *row = arraddnptr( world.data, world.w );
 -      int cx = 0;
 -      int reg_start = 0, reg_end = 0;
 -      
 -      for(;;)
 -      {
 -              if( !*c )
 -                      break;
 -      
 -              if( *c == ';' )
 -              {
 -                      c ++;
 -
 -                      // Parse attribs
 -                      if( *c != '\n' )
 -                      {
 -                              while( *c )
 -                              {
 -                                      if( reg_start < reg_end )
 -                                      {
 -                                              if( *c >= 'a' && *c <= 'z' )
 -                                              {
 -                                                      arrpush( world.io[ reg_start ].conditions, *c );
 -                                              }
 -                                              else
 -                                              {
 -                                                      if( *c == ',' || *c == '\n' )
 -                                                      {
 -                                                              reg_start ++;
 -                                                              
 -                                                              if( *c == '\n' )
 -                                                                      break;
 -                                                      }
 -                                                      else
 -                                                      {
 -                                                              vg_error( "Unkown attribute '%c' (row: %u)\n", *c, world.h );
 -                                                              return 0;
 -                                                      }
 -                                              }
 -                                      }
 -                                      else
 -                                      {
 -                                              vg_error( "Too many values to assign (row: %u)\n", world.h );
 -                                              return 0;
 -                                      }
 -                                      
 -                                      c ++;
 -                              }
 -                      }
 -                      
 -                      if( reg_start != reg_end )
 -                      {
 -                              vg_error( "Not enough values assigned (row: %u, %u of %u)\n", world.h, reg_start, reg_end );
 -                              return 0;
 -                      }
 -                      
 -                      if( cx != world.w )
 -                      {
 -                              vg_error( "Not enough cells to match previous row definition (row: %u, %u<%u)\n", world.h, cx, world.w );
 -                              return 0;
 -                      }
 -                      
 -                      row = arraddnptr( world.data, world.w );
 -                      cx = 0;
 -                      world.h ++;
 -                      reg_end = reg_start = arrlen( world.io );
 -              }
 -              else
 -              {
 -                      if( cx == world.w )
 -                      {
 -                              vg_error( "Too many cells to match previous row definition (row: %u, %u>%u)\n", world.h, cx, world.w );
 -                              return 0;
 -                      }
 -                      
 -                      // Tile initialization
 -                      // row[ cx ] .. etc
 -                      
 -                      if( *c == '+' || *c == '-' )
 -                      {
 -                              struct cell_terminal term = { .id = cx + world.h*world.w };
 -                              arrpush( world.io, term );
 -                              row[ cx ++ ].state = *c == '+'? FLAG_INPUT: FLAG_OUTPUT;
 -                              reg_end ++;
 -                      }
 -                      else if( *c == '#' )
 -                      {
 -                              row[ cx ++ ].state = FLAG_WALL;
 -                      }
 -                      else
 -                      {
 -                              row[ cx ++ ].state = 0x00;
 -                      }
 -              }
 -      
 -              c ++;
 -      }
 -      
 -      vg_success( "Map loaded! (%u:%u)\n", world.w, world.h );
 -      return 1;
 -}
 -
 -int main( int argc, char *argv[] )
 -{
 -      vg_init( argc, argv, "FishLadder" );
 -}
 -
 -void vg_register(void)
 -{
 -      SHADER_INIT( shader_tile_colour );
 -}
 -
 -void vg_start(void)
 -{
 -      glGenVertexArrays( 1, &world.tile_vao );
 -      glGenBuffers( 1, &world.tile_vbo );
 -      
 -      float quad_mesh[] =
 -      {
 -              0.05f, 0.05f, 0.05f, 0.95f, 0.95f, 0.95f,
 -              0.05f, 0.05f, 0.95f, 0.95f, 0.95f, 0.05f
 -      };
 -      
 -      glBindVertexArray( world.tile_vao );
 -      glBindBuffer( GL_ARRAY_BUFFER, world.tile_vbo );
 -      glBufferData
 -      (
 -              GL_ARRAY_BUFFER,
 -              sizeof( quad_mesh ),
 -              quad_mesh,
 -              GL_STATIC_DRAW
 -      );
 -      
 -      glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0 );
 -      glEnableVertexAttribArray( 0 );
 -      
 -      VG_CHECK_GL();  
 -      
 -      map_load
 -      ( 
 -              "#############;\n"
 -              "###-#####-###;aaa,aa\n"
 -              "##         ##;\n"
 -              "##         ##;\n"
 -              "##         ##;\n"
 -              "##         ##;\n"
 -              "##         ##;\n"
 -              "##         ##;\n"
 -              "###+#####+###;aa,aaa\n"
 -              "#############;\n"
 -      );
 -}
 -
 -void vg_free(void)
 -{
 -      glDeleteVertexArrays( 1, &world.tile_vao );
 -      glDeleteBuffers( 1, &world.tile_vbo );
 -      
 -      map_free();
 -}
 -
 -void vg_update(void)
 -{
 -      float ratio = (float)vg_window_y / (float)vg_window_x;
 -      float const size = 9.5f;
 -      
 -      v3f origin;
 -      origin[0] = -0.5f * world.w;
 -      origin[1] = -0.5f * world.h;
 -      origin[2] = 0.0f;
 -      
 -      m3x3_projection( m_projection, -size, size, size*ratio, -size*ratio );
 -      m3x3_identity( m_view );
 -      m3x3_translate( m_view, origin );
 -      m3x3_mul( m_projection, m_view, vg_pv );
 -      vg_projection_update();
 -      
 -      v2f tile_pos;
 -      v2_copy( vg_mouse_ws, tile_pos );
 -      
 -      int tile_x = floorf( tile_pos[0] );
 -      int tile_y = floorf( tile_pos[1] );
 -      
 -      if( tile_x >= 0 && tile_x < world.w && tile_y >= 0 && tile_y <= world.h )
 -              world.selected = tile_y * world.h + tile_x;
 -      else
 -              world.selected = -1;
 -}
 -
 -void vg_render(void)
--{
--      glViewport( 0,0, vg_window_x, vg_window_y );
--
--      glDisable( GL_DEPTH_TEST );
-       glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
 -      glClearColor( 0.01f, 0.01f, 0.01f, 1.0f );
--      glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
--      
-       // Rest of drawing code...
 -      glBindVertexArray( world.tile_vao );
 -      SHADER_USE( shader_tile_colour );
 -      glUniformMatrix3fv( SHADER_UNIFORM( shader_tile_colour, "uPv" ), 1, GL_FALSE, (float *)vg_pv );
 -      
 -      for( int y = 0; y < world.h; y ++ )
 -      {
 -              for( int x = 0; x < world.w; x ++ )
 -              {
 -                      glUniform2f( SHADER_UNIFORM( shader_tile_colour, "uOffset" ), (float)x, (float)y );
 -                      
 -                      v4f colour;
 -                      
 -                      struct cell *cell = &world.data[y*world.h+x];
 -                      
 -                      if( cell->state & FLAG_WALL ) { v4_copy( (v4f){ 0.4f, 0.4f, 0.4f, 1.0f }, colour ); }
 -                      else if( cell->state & FLAG_CANAL ) { v4_copy( (v4f){ 0.6f, 0.6f, 0.6f, 1.0f }, colour ); }
 -                      else if( cell->state & FLAG_INPUT ) { v4_copy( (v4f){ 0.2f, 0.3f, 0.7f, 1.0f }, colour ); }
 -                      else if( cell->state & FLAG_OUTPUT ) { v4_copy( (v4f){ 0.2f, 0.7f, 0.3f, 1.0f }, colour ); }
 -                      else v4_copy( (v4f){ 1.0f, 0.0f, 0.0f, 1.0f }, colour );
 -                      
 -                      if( world.selected == y*world.h + x )
 -                              v3_muls( colour, sinf( vg_time )*0.25f + 0.5f, colour );
 -                              
 -                      glUniform4fv( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 1, colour );
 -                      
 -                      glDrawArrays( GL_TRIANGLES, 0, 6 );
 -              }
 -      }
--}
--
--void vg_ui(void){}
- void vg_free(void){}