From: hgn <hgodden00@gmail.com>
Date: Tue, 21 Sep 2021 22:34:40 +0000 (+0100)
Subject: fix
X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=ad02b7b8ea3a30296b11887c5e9bf252a9e32e95;p=fishladder.git

fix
---

ad02b7b8ea3a30296b11887c5e9bf252a9e32e95
diff --cc fishladder.c
index 62ed2a1,38361e6..0000000
deleted file mode 100644,100644
--- a/fishladder.c
+++ /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){}