X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=fishladder_resources.h;h=f0371c1eb78dd368d7e77e9fb2f10804f5144892;hb=d8147792a9d9dbf52d2e816ac4593ccf8532fd70;hp=431c8d83611c9b1e21277060d86e3e6ee22bd4ac;hpb=7238ed7ceebb781ebd757990832f55933a768b2c;p=fishladder.git diff --git a/fishladder_resources.h b/fishladder_resources.h index 431c8d8..f0371c1 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -361,6 +361,7 @@ SHADER_DEFINE( shader_tile_main, "uniform vec4 uOffset;" // Tile x/y, uv x/y "uniform mat3 uPv;" "uniform mat2 uSubTransform;" + "uniform float uVisibility;" "" "out vec4 aTexCoords;" "out vec2 aWorldCoords;" @@ -374,13 +375,16 @@ SHADER_DEFINE( shader_tile_main, "" "void main()" "{" + "vec2 hash_val = hash22(uOffset.xy);" + "float scaling_factor = smoothstep( hash_val.x, hash_val.x+1.0, uVisibility );" + // Vertex transform - "vec2 subtransform = uSubTransform * (a_co-0.5) + 0.5;" + "vec2 subtransform = uSubTransform * (a_co-0.5) * scaling_factor + 0.5;" "vec3 worldpos = vec3( subtransform + uOffset.xy, 1.0 );" "gl_Position = vec4( uPv * worldpos, 1.0 );" // Create texture coords - "vec2 random_offset = floor(hash22(uOffset.xy) * 4.0) * 0.25;" + "vec2 random_offset = floor(hash_val * 4.0) * 0.25;" "vec2 edge_safe_coords = a_co * 0.98 + 0.01;" "aTexCoords = vec4((edge_safe_coords + uOffset.zw) * 0.25, edge_safe_coords * 0.25 + random_offset );" "aWorldCoords = worldpos.xy;" @@ -417,7 +421,7 @@ SHADER_DEFINE( shader_tile_main, "FragColor = mix( output_regular, output_ghost, uGhost ) * uColour;" "}" , - UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour", "uForeground" }) + UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour", "uForeground", "uVisibility" }) ) SHADER_DEFINE( shader_background, @@ -441,6 +445,7 @@ SHADER_DEFINE( shader_background, "uniform sampler2D uTexMain;" "uniform sampler2D uSamplerNoise;" "uniform float uVariance;" + "uniform float uVisibility;" "" "in vec2 aTexCoords;" "" @@ -459,7 +464,7 @@ SHADER_DEFINE( shader_background, "ao_accum -= data_this_tile.r;" - "vec3 colour_main = mix( vec3( 0.369768, 0.3654, 0.42 ),vec3( 0.275, 0.388, 0.553 ), data_this_tile.g );" + "vec3 colour_main = mix( vec3( 0.369768, 0.3654, 0.42 ), vec3( 0.275, 0.388, 0.553 ), data_this_tile.g * uVisibility );" "vec2 square_coords = fract( aTexCoords * 64.0 );" "vec2 grid_coords = abs( square_coords - 0.5 );" @@ -471,7 +476,7 @@ SHADER_DEFINE( shader_background, "FragColor = vec4( colour_main * edge_contrast + gridline * 0.02 * gridline_fadeout, 1.0 );" "}" , - UNIFORMS({ "uPv", "uOffset", "uTexMain", "uVariance", "uSamplerNoise" }) + UNIFORMS({ "uPv", "uOffset", "uTexMain", "uVariance", "uSamplerNoise", "uVisibility" }) ) SHADER_DEFINE( shader_wire, @@ -578,21 +583,19 @@ SHADER_DEFINE( shader_sdf, // VERTEX "layout (location=0) in vec2 a_co;" "layout (location=1) in vec2 a_uv;" - "layout (location=2) in vec4 a_colour;" "uniform mat3 uPv;" "" "out vec2 aTexCoords;" - "out vec4 aColour;" "" "void main()" "{" "gl_Position = vec4( uPv * vec3( a_co, 1.0 ), 1.0 );" "aTexCoords = a_uv;" - "aColour = a_colour;" "}", // FRAGMENT "uniform sampler2D uTexGlyphs;" + "uniform vec4 uColour;" "out vec4 FragColor;" "" "in vec2 aTexCoords;" @@ -601,11 +604,11 @@ SHADER_DEFINE( shader_sdf, "void main()" "{" "vec4 glyph = texture( uTexGlyphs, aTexCoords );" - "FragColor = vec4( aColour.rgb, smoothstep( 0.48, 0.52, glyph.r ) * aColour.a );" + "FragColor = vec4( uColour.rgb, smoothstep( 0.46, 0.54, glyph.r ) * uColour.a );" //"FragColor = glyph;" "}" , - UNIFORMS({ "uPv", "uTexGlyphs" }) + UNIFORMS({ "uPv", "uTexGlyphs", "uColour" }) ) void vg_register(void) @@ -643,6 +646,7 @@ struct cmp_level const char *map_name; const char *title; const char *description; + const char *achievement; int unlocked; int completed_score; @@ -652,8 +656,12 @@ struct cmp_level int serial_id; int is_tutorial; - + + struct world_button btn; + + #ifdef VG_STEAM SteamLeaderboard_t steam_leaderboard; + #endif }; static struct cmp_level cmp_levels_tutorials[] = @@ -664,7 +672,7 @@ static struct cmp_level cmp_levels_tutorials[] = .title = "PRINCIPLE 1", .map_name = "cmp_t01", .description = - "Utilize basic transport methods", + "", ._unlock = 1, .is_tutorial = 1 @@ -675,8 +683,7 @@ static struct cmp_level cmp_levels_tutorials[] = .title = "PRINCIPLE 2", .map_name = "cmp_t02", .description = - "Utilize the twisty turny(TM) piece to split the marble\n" - "stream into two", + "", ._unlock = 2, .is_tutorial = 1, @@ -687,7 +694,7 @@ static struct cmp_level cmp_levels_tutorials[] = .title = "PRINCIPLE 3", .map_name = "cmp_t03", .description = - "Merge transport into one path", + "", ._unlock = 12, .is_tutorial = 1 @@ -698,11 +705,11 @@ static struct cmp_level cmp_levels_tutorials[] = .title = "PRINCIPLE 4", .map_name = "cmp_t04", .description = - "Some stages require multiple runs to succeed in order to\n" - "pass", + "", ._unlock = 6, - .is_tutorial = 1 + .is_tutorial = 1, + .achievement = "TUTORIALS" } }; @@ -714,9 +721,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "PATCH", .map_name = "cmp_b04", .description = - "For some reason, the division module our intern built\n" - "for us is sending twice as many yellows as needed. Send\n" - "the excess to be recycled!", + "", ._unlock = 7, ._linked = 3 @@ -727,8 +732,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "SUBDIVISION 1", .map_name = "cmp_b01", .description = - "Sometimes getting the desired amount takes dividing up\n" - "the input and recombining it.", + "", ._linked = 4, ._unlock = 5 @@ -749,8 +753,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "RESTRUCTURE", .map_name = "cmp_b03", .description = - "It is possible to swap these values using simple\n" - "division and addition.", + "", ._unlock = 8 }, @@ -760,8 +763,9 @@ static struct cmp_level cmp_levels_basic[] = .title = "PATTERNS 1", .map_name = "cmp_b05", .description = - "Replicate the pattern", + "", + ._unlock = 15, ._linked = 8 }, // r2 GM @@ -770,7 +774,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "PATTERNS 2", .map_name = "cmp_b06", .description = - "Replicate MORE", + "", ._unlock = 15 }, @@ -780,12 +784,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "PRINCIPLE 5", .map_name = "cmp_b10", .description = - "The sharp engineers among you may have already spotted\n" - "and utilized this part of the system\n" - "\n" - "We forgot to include the relevant principle tasks as\n" - "of your training package, you will now be tasked to\n" - "complete them", + "", ._unlock = 16, .is_tutorial = 1 @@ -796,8 +795,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "ROUTING PROBLEM", .map_name = "cmp_routing", .description = - "Things can get a little chaotic on tight boards, do your\n" - "best to utilize principle 5 to get the job done\n", + "", ._linked = 9 }, @@ -807,10 +805,11 @@ static struct cmp_level cmp_levels_basic[] = .title = "MIGHTY CONSUMER", .map_name = "cmp_b07", .description = - "Build a greedy system", + "", ._linked = 10, - ._unlock = 11 + ._unlock = 11, + .achievement = "MIGHTY_CONSUMER" }, { .serial_id = 10, @@ -827,7 +826,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "REVERSE", .map_name = "cmp_b09", .description = - "Reverse the incoming order. Always length 4", + "", ._unlock = 17 }, @@ -837,14 +836,7 @@ static struct cmp_level cmp_levels_basic[] = .title = "PRINCIPLE 6", .map_name = "cmp_b11", .description = - "Usually the splitter piece will flip flop between left\n" - "and right, however it can be forced to only rotate in\n" - "one direction if trigger wires are attached.\n" - "\n" - "Right click and drag from a regular block, and attach it\n" - "to a splitter. This creates a trigger.\n" - "The default state is left, and once a marble hits the\n" - "trigger it will switch to rotating that direction.", + "(Right click)", ._unlock = 18, .is_tutorial = 1 @@ -854,9 +846,7 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 18, .title = "NOT GATE", .map_name = "cmp_not", - .description = - "Test your knowledge of triggers, build an 'NOT GATE'\n" - "emulated by marble logic.", + .description = "", ._linked = 19, ._unlock = 20 @@ -866,9 +856,7 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 19, .title = "AND GATE", .map_name = "cmp_and", - .description = - "A slightly more complicated gate, but shouldn't be\n" - "too difficult for your skillset.", + .description = "", ._unlock = 20 }, @@ -877,11 +865,10 @@ static struct cmp_level cmp_levels_basic[] = .serial_id = 20, .title = "QUALIFICATION PROJECT", .map_name = "cmp_xor", - .description = - "Significantly more complicated than an AND or NOT gate,\n" - "but possible.", + .description = "", - ._unlock = 13 + ._unlock = 13, + .achievement = "GRADUATE" } }; @@ -892,10 +879,7 @@ static struct cmp_level cmp_levels_grad[] = .serial_id = 13, .title = "SORT", .map_name = "cmp_i01", - .description = - "Devise a scheme to filter and sort the inputs. If you\n" - "believe you lack the tools required to solve this one,\n" - "take a harder look at the inputs.", + .description = "", ._linked = 14 }, @@ -904,10 +888,7 @@ static struct cmp_level cmp_levels_grad[] = .serial_id = 14, .title = "THIRDS", .map_name = "cmp_i02", - .description = - "Split the inputs up into a third of their values\n" - "\n" - "Is this possible? -HG", + .description = "", ._linked = 21 }, @@ -916,42 +897,80 @@ static struct cmp_level cmp_levels_grad[] = .serial_id = 21, .title = "SIMPLE ADDITION", .map_name = "cmp_grad", - .description = - "Take the amount of yellows coming in, and add them\n" - "together. Send your result using the stream of blues.", + .description = "", - ._linked = 22 + ._linked = 22, + ._unlock = 23 }, // r2 GM { .serial_id = 22, .title = "SECRET CODE", .map_name = "cmp_secret", - .description = - "" + .description = "", + + ._unlock = 23 } }; -#define NUM_CAMPAIGN_LEVELS (vg_list_size( cmp_levels_tutorials ) + vg_list_size( cmp_levels_basic ) + vg_list_size( cmp_levels_grad )) +static struct cmp_level cmp_levels_computer[] = +{ + { + .serial_id = 23, + .title = "3 BIT BINARY", + .map_name = "cmp_binary", + .description = "", + + ._unlock = 24 + }, + { + .serial_id = 24, + .title = "3 BIT ADDITION", + .map_name = "cmp_add3b", + .description = "" + } +}; -static struct serializable_set +#define NUM_CAMPAIGN_LEVELS (vg_list_size( cmp_levels_tutorials ) + vg_list_size( cmp_levels_basic ) + vg_list_size( cmp_levels_grad ) + vg_list_size( cmp_levels_computer ) ) + +static struct career_level_pack { struct cmp_level *pack; int count; + + v3f primary_colour; + v2i origin; + v2i dims; } -career_serializable[] = +career_packs[] = { { .pack = cmp_levels_tutorials, - .count = vg_list_size( cmp_levels_tutorials ) + .count = vg_list_size( cmp_levels_tutorials ), + .primary_colour = { 0.204f, 0.345f, 0.553f }, + .origin = { -5, 0 }, + .dims = { 1, 4 } }, { .pack = cmp_levels_basic, - .count = vg_list_size( cmp_levels_basic ) + .count = vg_list_size( cmp_levels_basic ), + .primary_colour = { 0.304f, 0.245f, 0.553f }, + .origin = { -3, 0 }, + .dims = { 3, 5 } }, { .pack = cmp_levels_grad, - .count = vg_list_size( cmp_levels_grad ) + .count = vg_list_size( cmp_levels_grad ), + .primary_colour = { 0.553f, 0.345f, 0.204f }, + .origin = { -5, 6 }, + .dims = { 4, 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 } } }; @@ -961,18 +980,18 @@ static void career_local_data_init(void) struct cmp_level *level_ptrs[ NUM_CAMPAIGN_LEVELS ]; // COllect pointers - for( int i = 0; i < vg_list_size( career_serializable ); i ++ ) + for( int i = 0; i < vg_list_size( career_packs ); i ++ ) { - struct serializable_set *set = &career_serializable[i]; + struct career_level_pack *set = &career_packs[i]; for( int j = 0; j < set->count; j ++ ) level_ptrs[ set->pack[j].serial_id ] = &set->pack[j]; } // Apply - for( int i = 0; i < vg_list_size( career_serializable ); i ++ ) + for( int i = 0; i < vg_list_size( career_packs ); i ++ ) { - struct serializable_set *set = &career_serializable[i]; + struct career_level_pack *set = &career_packs[i]; for( int j = 0; j < set->count; j ++ ) {